blade-code 0.10.41 → 0.10.43

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 (110) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-qgez5vw6.js → chunk-0qsssahq.js} +1 -1
  3. package/dist/{chunk-5ygv33qe.js → chunk-26wse17p.js} +2 -2
  4. package/dist/{chunk-eg5sz4bw.js → chunk-2eddqgnh.js} +1 -1
  5. package/dist/{chunk-01jt0mpr.js → chunk-2yvte5a7.js} +1 -1
  6. package/dist/chunk-32g59k4p.js +8 -0
  7. package/dist/{chunk-q87nwpsb.js → chunk-372mmzj3.js} +1 -1
  8. package/dist/{chunk-2bm55evt.js → chunk-3bpxvanm.js} +2 -2
  9. package/dist/chunk-3y784b9c.js +1 -0
  10. package/dist/{chunk-bdxaz350.js → chunk-56qew7w0.js} +2 -2
  11. package/dist/chunk-5wzjdfde.js +1 -0
  12. package/dist/chunk-6ch7a6xf.js +44 -0
  13. package/dist/chunk-6cx4t8r6.js +1 -0
  14. package/dist/chunk-6skymhz5.js +1 -0
  15. package/dist/{chunk-4ekrbk2w.js → chunk-7fqsgdee.js} +2 -2
  16. package/dist/{chunk-wvc6bx0t.js → chunk-7s5hw0gr.js} +7 -7
  17. package/dist/{chunk-gbbnjzy8.js → chunk-7sna3js9.js} +1 -1
  18. package/dist/chunk-8vsx6m43.js +10 -0
  19. package/dist/{chunk-t80e2bms.js → chunk-8vtyatd6.js} +1 -1
  20. package/dist/{chunk-0hqsdbkr.js → chunk-9rrced3b.js} +1 -1
  21. package/dist/chunk-ag5ea7ce.js +111 -0
  22. package/dist/{chunk-4mdy9d43.js → chunk-bct3s5vs.js} +1 -1
  23. package/dist/{chunk-5sbewyjn.js → chunk-bvf9syb2.js} +2 -2
  24. package/dist/chunk-c3020yav.js +22 -0
  25. package/dist/{chunk-wk0vpgwk.js → chunk-c8ddch38.js} +395 -395
  26. package/dist/{chunk-dp9xzsja.js → chunk-c9s4n31b.js} +1 -1
  27. package/dist/{chunk-tsskar00.js → chunk-cxzx7j0p.js} +1 -1
  28. package/dist/{chunk-sfbprf9r.js → chunk-d5x5wknc.js} +1 -1
  29. package/dist/{chunk-adgx9vd7.js → chunk-dcp5gg6q.js} +3 -3
  30. package/dist/{chunk-f4bx2n1y.js → chunk-e1vyznkn.js} +3 -3
  31. package/dist/chunk-egczvfsv.js +5 -0
  32. package/dist/{chunk-5zf8204m.js → chunk-f4sp074f.js} +1 -1
  33. package/dist/chunk-fer18bbe.js +1 -0
  34. package/dist/{chunk-fz55cnws.js → chunk-fhnkyqfb.js} +2 -2
  35. package/dist/{chunk-y30kw6gj.js → chunk-fk4wbmv6.js} +2 -2
  36. package/dist/chunk-fzqsea19.js +1 -0
  37. package/dist/{chunk-x04xb9g3.js → chunk-hcm55r3d.js} +1 -1
  38. package/dist/{chunk-22h5kh4z.js → chunk-hfrcwkc8.js} +1 -1
  39. package/dist/chunk-j7edwwg1.js +2 -0
  40. package/dist/{chunk-yhw0pvyt.js → chunk-jpz805fs.js} +2 -2
  41. package/dist/chunk-k87p7x1e.js +1 -0
  42. package/dist/{chunk-g9re8v25.js → chunk-kfpzrmq7.js} +1 -1
  43. package/dist/chunk-m8a2qj5c.js +1 -0
  44. package/dist/{chunk-b5b8fb9y.js → chunk-m8ss9rmx.js} +1 -1
  45. package/dist/{chunk-5cgyevqj.js → chunk-mrsc4a55.js} +1 -1
  46. package/dist/{chunk-xs7w13na.js → chunk-n7dvqbrc.js} +1 -1
  47. package/dist/{chunk-w07gb3h0.js → chunk-nsrghqdx.js} +1 -1
  48. package/dist/chunk-nwzjmcxq.js +1 -0
  49. package/dist/chunk-nynfqgsj.js +6 -0
  50. package/dist/chunk-pyk2ey7y.js +1 -0
  51. package/dist/{chunk-npgt73cg.js → chunk-q78s028m.js} +1 -1
  52. package/dist/{chunk-9neq5xrb.js → chunk-qb0sqh29.js} +2 -2
  53. package/dist/chunk-qmcj20g2.js +1 -0
  54. package/dist/chunk-qnxgzyyx.js +2 -0
  55. package/dist/{chunk-fxw1q5j5.js → chunk-qp2z1r7y.js} +1 -1
  56. package/dist/{chunk-djr17h80.js → chunk-rwjm6p0f.js} +1 -1
  57. package/dist/chunk-s9s9daak.js +1 -0
  58. package/dist/{chunk-8xfzbv9v.js → chunk-skb4h36j.js} +1 -1
  59. package/dist/{chunk-ens8nsge.js → chunk-sqd5ge5s.js} +1 -1
  60. package/dist/chunk-t2r7tqn0.js +2 -0
  61. package/dist/{chunk-n0ebpwxd.js → chunk-tpa75y39.js} +1 -1
  62. package/dist/chunk-txkrtgcd.js +2 -0
  63. package/dist/{chunk-3p32k12g.js → chunk-v9tzhe90.js} +2 -2
  64. package/dist/{chunk-358zaryv.js → chunk-vbpykrxd.js} +2 -2
  65. package/dist/{chunk-27w2k6t7.js → chunk-w5ayh9b8.js} +2 -2
  66. package/dist/{chunk-atsw605q.js → chunk-wwvb6znp.js} +1 -1
  67. package/dist/{chunk-yxwargqc.js → chunk-x2vqgssm.js} +2 -2
  68. package/dist/chunk-y6tkxqjx.js +2 -0
  69. package/dist/{chunk-nhzdkxnx.js → chunk-yk9pxkc1.js} +1 -1
  70. package/dist/{chunk-hjkdc185.js → chunk-yqy000kg.js} +2 -2
  71. package/dist/chunk-yt9qer14.js +1 -0
  72. package/dist/{chunk-6dma8han.js → chunk-yypnfmed.js} +2 -2
  73. package/dist/chunk-z1aqe7ms.js +1 -0
  74. package/dist/web/assets/{ChatView-BP89vdT_.js → ChatView-CyxiCTbL.js} +3 -3
  75. package/dist/web/assets/{CodeBlockHighlighter-UnjC3KVk.js → CodeBlockHighlighter-Bb3gIeQv.js} +1 -1
  76. package/dist/web/assets/{FilePreview-D0BiZowf.js → FilePreview-BXg9VaTv.js} +1 -1
  77. package/dist/web/assets/{MarkdownRenderer-CPu_rkPT.js → MarkdownRenderer-vxpqGt4L.js} +3 -3
  78. package/dist/web/assets/{SettingsModal-CM9pcJas.js → SettingsModal-4L1nPkh0.js} +1 -1
  79. package/dist/web/assets/{TaskSwitcher-BOCm7kPO.js → TaskSwitcher-DKSqTLK1.js} +1 -1
  80. package/dist/web/assets/{TerminalPanel-CUZ4slSS.js → TerminalPanel-Bv9PDclr.js} +1 -1
  81. package/dist/web/assets/index-Bz4W1-8a.js +11 -0
  82. package/dist/web/assets/{session-events-109FkhOM.js → session-events-DJh6SZcl.js} +5 -5
  83. package/dist/web/index.html +2 -2
  84. package/package.json +1 -1
  85. package/dist/chunk-1j2sf8mc.js +0 -1
  86. package/dist/chunk-1kwm2m6t.js +0 -1
  87. package/dist/chunk-5w8edqbt.js +0 -1
  88. package/dist/chunk-62jaf7ej.js +0 -22
  89. package/dist/chunk-6a3c496e.js +0 -1
  90. package/dist/chunk-6fe9kq17.js +0 -1
  91. package/dist/chunk-asnzpfzh.js +0 -10
  92. package/dist/chunk-atdeg922.js +0 -2
  93. package/dist/chunk-bw7fgs2n.js +0 -1
  94. package/dist/chunk-ck8sw2zp.js +0 -2
  95. package/dist/chunk-d61673v7.js +0 -5
  96. package/dist/chunk-f7y4m3y0.js +0 -1
  97. package/dist/chunk-fnz5g9ac.js +0 -1
  98. package/dist/chunk-kjn0yaqw.js +0 -1
  99. package/dist/chunk-m883e8d4.js +0 -1
  100. package/dist/chunk-mx5s93np.js +0 -6
  101. package/dist/chunk-nsawkccy.js +0 -2
  102. package/dist/chunk-p54vmne8.js +0 -1
  103. package/dist/chunk-qy9qkvwe.js +0 -1
  104. package/dist/chunk-s8f8amvg.js +0 -1
  105. package/dist/chunk-v80xem15.js +0 -2
  106. package/dist/chunk-w1vcjwbx.js +0 -8
  107. package/dist/chunk-x5s68axq.js +0 -44
  108. package/dist/chunk-z15h0370.js +0 -1
  109. package/dist/chunk-zracmha2.js +0 -111
  110. package/dist/web/assets/index-CthLsVgC.js +0 -11
@@ -1,8 +1,8 @@
1
1
  var ye=Object.defineProperty;var Ce=(e,t,n)=>t in e?ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var K=(e,t,n)=>Ce(e,typeof t!="symbol"?t+"":t,n);function P(){return{timeline:[],textBefore:"",toolCalls:[],textAfter:"",thinkingContent:"",tasks:[],subagent:null,subagents:[],confirmation:null,question:null,elicitation:null}}function N(e){return e?e.subagents&&e.subagents.length>0?e.subagents:e.subagent?[e.subagent]:[]:[]}function B(e,t,n){const a=(n?t.find(o=>o.id===n||o.sessionId===n):void 0)??t[t.length-1]??null;return{...e,subagents:t,subagent:a}}function ue(e,t){const n=[...N(e)];let a=n.findIndex(s=>s.id===t.id||!!(s.sessionId&&t.sessionId&&s.sessionId===t.sessionId));if(a===-1&&t.sessionId&&(a=n.findIndex(s=>!s.sessionId&&s.status==="running"&&s.type===t.type&&s.description===t.description)),a===-1)return n.push(t),B(e,n,t.id);const o=n[a],u={...o,...t,id:o.id};return n[a]=u,B(e,n,u.id)}function H(e,t){return`${t}-${e.length}`}function be(e,t){if(!t)return e;const n=[..._(e)],a=n[n.length-1];return(a==null?void 0:a.type)==="text"?n[n.length-1]={...a,content:a.content+t}:n.push({id:H(n,"text"),type:"text",content:t}),{...e,timeline:n}}function ve(e,t){if(!t)return e;const n=[..._(e)],a=n[n.length-1];return(a==null?void 0:a.type)==="thinking"?n[n.length-1]={...a,content:a.content+t}:n.push({id:H(n,"thinking"),type:"thinking",content:t}),{...e,timeline:n}}function oe(e,t){const n=e.toolCalls.some(s=>s.toolCallId===t.toolCallId),a=n?e.toolCalls:[...e.toolCalls,t];if(n)return{...e,toolCalls:a};const o=[..._(e)],u=o[o.length-1];return(u==null?void 0:u.type)==="tool_group"?o[o.length-1]={...u,toolCallIds:[...u.toolCallIds,t.toolCallId]}:o.push({id:H(o,"tool_group"),type:"tool_group",toolCallIds:[t.toolCallId]}),{...e,timeline:o,toolCalls:a}}function _(e){if(e.timeline&&e.timeline.length>0)return e.timeline;const t=[];return e.thinkingContent&&t.push({id:"legacy-thinking",type:"thinking",content:e.thinkingContent}),e.textBefore&&t.push({id:"legacy-text-before",type:"text",content:e.textBefore}),e.toolCalls.length>0&&t.push({id:"legacy-tool-group",type:"tool_group",toolCallIds:e.toolCalls.map(n=>n.toolCallId)}),e.textAfter&&t.push({id:"legacy-text-after",type:"text",content:e.textAfter}),t}function Ae(e){return _(e).filter(t=>t.type==="text").map(t=>t.content).filter(Boolean).join(`
2
2
 
3
3
  `)}const ke=2166136261,Te=16777619;function J(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?`[${e.map(t=>J(t)).join(",")}]`:typeof e=="object"?`{${Object.entries(e).sort(([n],[a])=>n.localeCompare(a)).map(([n,a])=>`${JSON.stringify(n)}:${J(a)}`).join(",")}}`:JSON.stringify(e)}function de(e){let t=ke>>>0;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,Te);return(t>>>0).toString(16)}function le(e){return typeof e=="string"?e:J(e??{})}function G(e){return e==="completed"?"completed":e==="failed"||e==="cancelled"?"failed":"running"}function L({explicitId:e,messageId:t,toolName:n,argumentsValue:a,toolKind:o,output:u}){if(e)return e;const s=[t||"unknown-message",n||"Unknown",le(a),o||"",u||""].join("|");return`tool-${de(s)}`}function q({explicitId:e,sessionId:t,messageId:n,agentType:a,description:o,summary:u}){if(e)return e;if(t)return t;const s=[n||"unknown-message",a||"subagent",o||"",u||""].join("|");return`subagent-${de(s)}`}const $e=(e,t)=>{if(!t||typeof t!="object")return null;const n=G(t.status),a=typeof t.summary=="string"?t.summary:void 0;return{id:q({explicitId:typeof t.subagentId=="string"?t.subagentId:void 0,sessionId:t.childSessionId,messageId:e,agentType:t.agentType,description:t.description,summary:t.summary}),type:t.agentType||"subagent",description:t.description||t.summary||"",status:n,startTime:Date.now(),sessionId:t.childSessionId,resumedFrom:t.resumedFrom,rootAgentId:t.rootAgentId,resumeDepth:typeof t.resumeDepth=="number"?t.resumeDepth:void 0,verificationVerdict:t.verificationVerdict==="pass"||t.verificationVerdict==="fail"||t.verificationVerdict==="partial"?t.verificationVerdict:void 0,output:n==="running"?void 0:a}},Ne=(e,t)=>!t||typeof t!="object"?[]:(Array.isArray(t.subtaskRefs)?t.subtaskRefs:t.subtaskRef&&typeof t.subtaskRef=="object"?[t.subtaskRef]:[]).map(a=>$e(e,a)).filter(a=>a!==null);function x(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
4
- `)}function U(e){if(!e.agentContent)return e;let t=e.agentContent;for(const n of Ne(e.id,e.metadata))t=ue(t,n);return{...e,agentContent:t}}function Pe(e){var a,o,u;const t=[];let n=null;for(const s of e)if(s.role!=="system"){if(s.role==="user")n&&(t.push(U(n)),n=null),t.push({id:s.id,role:s.role,content:s.content,timestamp:s.timestamp||Date.now(),metadata:s.metadata});else if(s.role==="assistant"){n&&t.push(U(n));const i=s.metadata;let r=P();s.thinkingContent&&(r=ve(r,s.thinkingContent),r.thinkingContent=s.thinkingContent);const d=x(s.content);if(d&&(r=be(r,d),r.textBefore=d),s.tool_calls&&Array.isArray(s.tool_calls))for(const c of s.tool_calls){const l=((a=c.function)==null?void 0:a.name)||"Unknown",g=le((o=c.function)==null?void 0:o.arguments);if(l==="Task"){let m={};try{m=JSON.parse(g)}catch{}const S=typeof m.subagent_type=="string"?m.subagent_type:"subagent",y=typeof m.description=="string"?m.description:S;r=ue(r,{id:q({explicitId:c.id,sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,messageId:s.id,agentType:S,description:y}),type:S,description:y,status:"running",startTime:Date.now(),sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,resumedFrom:typeof m.resume_from=="string"?m.resume_from:typeof m.resume=="string"?m.resume:void 0});continue}const I={toolCallId:L({explicitId:c.id,messageId:s.id,toolName:l,argumentsValue:(u=c.function)==null?void 0:u.arguments}),toolName:l,arguments:g,status:"running",startTime:Date.now()};r=oe(r,I)}n={id:s.id,role:"assistant",content:x(s.content),timestamp:s.timestamp||Date.now(),metadata:i,agentContent:r}}else if(s.role==="tool"&&n&&n.agentContent){const i=s,r=s.metadata,d=i.tool_call_id||(r==null?void 0:r.toolCallId),c=i.name||(r==null?void 0:r.toolName)||"Tool",l=r!=null&&r.metadata&&typeof r.metadata=="object"&&!Array.isArray(r.metadata)?r.metadata:r,g=r!=null&&r.independentVerification&&typeof r.independentVerification=="object"&&!Array.isArray(r.independentVerification)?r.independentVerification:void 0,I=(r==null?void 0:r.status)==="failed"||(r==null?void 0:r.status)==="error"||typeof(r==null?void 0:r.error)=="string"&&r.error.length>0,m=N(n.agentContent),S=m.findIndex(h=>h.id===d);if(S>=0){const h=m[S],f=typeof(l==null?void 0:l.subagentStatus)=="string"?G(l.subagentStatus):I?"failed":"completed";m[S]={...h,sessionId:typeof(l==null?void 0:l.subagentSessionId)=="string"?l.subagentSessionId:h.sessionId,type:typeof(l==null?void 0:l.subagentType)=="string"?l.subagentType:h.type,status:f,resumedFrom:typeof(l==null?void 0:l.subagentResumedFrom)=="string"?l.subagentResumedFrom:h.resumedFrom,rootAgentId:typeof(l==null?void 0:l.subagentRootId)=="string"?l.subagentRootId:h.rootAgentId,resumeDepth:typeof(l==null?void 0:l.subagentResumeDepth)=="number"?l.subagentResumeDepth:h.resumeDepth,verificationVerdict:(l==null?void 0:l.verificationVerdict)==="pass"||(l==null?void 0:l.verificationVerdict)==="fail"||(l==null?void 0:l.verificationVerdict)==="partial"?l.verificationVerdict:(g==null?void 0:g.verificationVerdict)==="pass"||(g==null?void 0:g.verificationVerdict)==="fail"||(g==null?void 0:g.verificationVerdict)==="partial"?g.verificationVerdict:h.verificationVerdict,output:typeof(l==null?void 0:l.subagentSummary)=="string"?l.subagentSummary:x(s.content)||h.output},n.agentContent=B(n.agentContent,m,h.id);continue}const y=n.agentContent.toolCalls.find(h=>h.toolCallId===d);y?(y.output=x(s.content),y.status=I?"error":"success",y.metadata=l,y.summary=typeof(l==null?void 0:l.summary)=="string"?l.summary:y.summary,(!y.toolName||y.toolName==="Unknown")&&(y.toolName=c)):n.agentContent=oe(n.agentContent,{toolCallId:L({explicitId:d,messageId:n.id,toolName:c,output:x(s.content)}),toolName:c,output:x(s.content),status:I?"error":"success",startTime:Date.now(),metadata:l,summary:typeof(l==null?void 0:l.summary)=="string"?l.summary:void 0})}}return n&&t.push(U(n)),t}const ce={authentication:"task.failure.authentication",permission:"task.failure.permission",rate_limit:"task.failure.rateLimit",timeout:"task.failure.timeout",network:"task.failure.network",model_unavailable:"task.failure.modelUnavailable",context_limit:"task.failure.contextLimit",unsupported_input:"task.failure.unsupportedInput",runtime:"task.failure.runtime"},Me={authentication:!1,permission:!1,rate_limit:!0,timeout:!0,network:!0,model_unavailable:!0,context_limit:!1,unsupported_input:!1,runtime:!0};function Re(e){if(typeof e=="string"&&Object.keys(ce).includes(e))return e}function Lt(e){return ce[e]}function Ht(e){return Me[e]}const xe={flushTimeout:80};class De{constructor(t){K(this,"config");K(this,"channels",new Map);this.config={...xe,...t}}append(t,n,a){let o=this.channels.get(t);o||(o={buffer:"",timer:null,flushFn:null},this.channels.set(t,o)),o.buffer+=n,o.flushFn=a,o.timer||(o.timer=setTimeout(()=>{this.flushChannel(t)},this.config.flushTimeout))}flushChannel(t){const n=this.channels.get(t);if(!n||!n.buffer)return;const a=n.buffer,o=n.flushFn;n.buffer="",n.timer&&(clearTimeout(n.timer),n.timer=null),o==null||o(a)}drainAll(){for(const[t]of this.channels)this.flushChannel(t);this.channels.clear()}drainAllExcept(t){for(const[n]of this.channels)n!==t&&this.flushChannel(n);for(const[n,a]of this.channels)n!==t&&!a.buffer&&this.channels.delete(n)}reset(){for(const[,t]of this.channels)t.timer&&clearTimeout(t.timer);this.channels.clear()}}const $=new De,we=100,b=(e,t,n)=>{if(t)for(const a of e){const o=N(a.agentContent).find(u=>u.id===t||u.sessionId===t);if(o)return{messageId:a.id,subagent:o}}if(n){const a=e.find(s=>s.id===n),o=N(a==null?void 0:a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:n,subagent:u}}for(const a of[...e].reverse()){const o=N(a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:a.id,subagent:u}}};function je(e,t,n){n(a=>{const o={...a.pendingSubagentCompletions??{}};if(o[e]===void 0&&Object.keys(o).length>=we){const u=Object.keys(o)[0];u&&delete o[u]}return o[e]={...t},{pendingSubagentCompletions:o}})}function Q(e,t,n){var u;if(!e)return;const a=(u=t().pendingSubagentCompletions)==null?void 0:u[e];!a||!b(t().messages,e,t().currentAssistantMessageId)||(W({...a,subagentSessionId:e,success:a.status==="completed"},t),n(s=>{const i={...s.pendingSubagentCompletions??{}};return delete i[e],{pendingSubagentCompletions:i}}))}const v=(e,t,n,a=!1)=>{const{currentAssistantMessageId:o,messages:u,addMessage:s,startAgentResponse:i}=e();if(n&&a){const l=u.find(I=>I.id===n&&I.role==="assistant");if(l)return i(l.id),l.id;const g={id:n,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};return s(g),i(n),n}if(o&&!o.startsWith("call_")&&u.some(l=>l.id===o&&l.role==="assistant"))return o;if(n){const l=u.find(g=>g.id===n&&g.role==="assistant");if(l)return i(l.id),l.id}const r=u[u.length-1];if((r==null?void 0:r.role)==="assistant")return r.id;const d=n||`assistant-${Date.now()}`,c={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};return s(c),i(d),t(l=>({messages:l.messages.map(g=>g.id===d?{...g,agentContent:{...g.agentContent||P()}}:g)})),d},_e=(e,t,n)=>{const{currentSessionId:a,addMessage:o,startAgentResponse:u,messages:s,updateMessage:i}=t();if(e.sessionId!==a)return;const r=e.messageId,d=e.role||"assistant",c=s.find(g=>g.id===r),l={id:r,role:d,content:e.content||"",timestamp:Date.now(),agentContent:d==="assistant"?P():void 0};c?i(r,{role:d,content:l.content,agentContent:d==="assistant"?{...c.agentContent||P()}:void 0}):o(l),d==="assistant"&&u(r)},qe=(e,t,n)=>{const{currentSessionId:a,appendDelta:o,currentAssistantMessageId:u,hasToolCalls:s,addMessage:i,startAgentResponse:r}=t();if(e.sessionId!==a)return;const d=e.messageId,c=e.delta;if(!u){const g={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};i(g),r(d),t().appendDelta(d,c,"before");return}o(u,c,s?"after":"before")},Fe=(e,t)=>{const{currentSessionId:n,updateMessage:a,messages:o}=t();if(e.sessionId!==n)return;const u=e.messageId,s=o.find(i=>i.id===u);s!=null&&s.agentContent&&a(u,{content:Ae(s.agentContent)})},Oe=(e,t,n)=>{var r;const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.output;if(!o||typeof o!="object"||Array.isArray(o))return;const u=v(t,n,e.messageId);if(!u)return;const s=t().messages.find(d=>d.id===u);if(!s)return;const i=JSON.stringify(o,null,2);t().updateMessage(u,{content:i,metadata:{...s.metadata,structuredOutput:{output:o,schemaDigest:e.schemaDigest}},agentContent:s.agentContent?{...s.agentContent,textBefore:"",textAfter:"",timeline:(r=s.agentContent.timeline)==null?void 0:r.filter(d=>d.type!=="text")}:void 0})},Ee=(e,t,n)=>{const{currentSessionId:a,appendThinking:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId);u&&o(u,e.delta)},Ve=()=>{},ge=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,setSubagent:s}=t();if(e.sessionId!==a)return;const i=v(t,n,e.messageId||e.toolCallId,typeof e.messageId=="string");if(!i)return;u(!0);const r=e.toolName||"Unknown",d=e.arguments;let c,l="",g,I;if(r==="Task")try{const S=JSON.parse(d);c=S.subagent_type,l=S.description||S.query||c||"",g=S.subagent_session_id,I=S.resume_from||S.resume}catch{}if(c){s(i,{id:q({explicitId:e.toolCallId,sessionId:g,messageId:i,agentType:c,description:l}),type:c,description:l,status:"running",startTime:Date.now(),sessionId:g,resumedFrom:I,output:"",thinking:""}),Q(g,t,n);return}const m={toolCallId:L({explicitId:e.toolCallId,messageId:i,toolName:r,argumentsValue:d,toolKind:e.toolKind}),toolName:r,arguments:d,toolKind:e.toolKind,status:"running",startTime:Date.now()};o(i,m)};function me(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e;if(!(t.kind!=="readonly"&&t.kind!=="write"&&t.kind!=="execute")&&!(t.scope!=="global"&&t.scope!=="session")&&!(!Number.isSafeInteger(t.queuePosition)||t.queuePosition<=0||!Number.isSafeInteger(t.inFlight)||t.inFlight<0||!Number.isSafeInteger(t.limit)||t.limit<=0))return{kind:t.kind,scope:t.scope,queuePosition:t.queuePosition,inFlight:t.inFlight,limit:t.limit}}const fe=(e,t)=>{const{currentSessionId:n,updateToolCall:a,messages:o}=t();if(e.sessionId!==n)return;const u=e.toolCallId;if(!u)return;const s=o.find(i=>{var r;return(r=i.agentContent)==null?void 0:r.toolCalls.some(d=>d.toolCallId===u)});s&&a(s.id,u,{summary:e.message,progress:typeof e.progress=="number"?e.progress:void 0,progressTotal:typeof e.total=="number"?e.total:void 0,progressMessage:e.message,admission:me(e.admission)})},Ie=(e,t,n)=>{var se;const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,updateToolCall:s,updateSubagent:i,messages:r}=t();if(e.sessionId!==a)return;const d=e.toolCallId;if(!d)return;const c=r.find(A=>{var T;return(T=A.agentContent)==null?void 0:T.toolCalls.some(R=>R.toolCallId===d)}),l=r.find(A=>N(A.agentContent).some(T=>T.id===d)),g=(c==null?void 0:c.id)||(l==null?void 0:l.id)||v(t,n,e.messageId,!0);if(!g)return;const I=typeof e.output=="string"?e.output:"",m=e.success===!0||e.status==="completed",S=e.summary||(I&&I.trim()?I.trim().split(`
5
- `)[0].slice(0,120):m?"执行成功":"执行失败"),y=(se=c==null?void 0:c.agentContent)==null?void 0:se.toolCalls.find(A=>A.toolCallId===d),h=typeof e.toolName=="string"?e.toolName:(y==null?void 0:y.toolName)??"Unknown",f=e.metadata;c?s(g,d,{status:m?"success":"error",summary:S,output:I,metadata:f}):l||(u(!0),o(g,{toolCallId:d,toolName:h,status:m?"success":"error",summary:S,output:I,startTime:Date.now(),metadata:f}));const F=t().messages.find(A=>A.id===g),k=N(F==null?void 0:F.agentContent).find(A=>A.id===d),M=f&&typeof f.subagentSessionId=="string"?f.subagentSessionId:void 0,D=f&&typeof f.subagentStatus=="string"?f.subagentStatus:void 0,X=f&&typeof f.subagentType=="string"?f.subagentType:void 0,Z=f&&typeof f.subagentSummary=="string"?f.subagentSummary:void 0,p=f&&typeof f.subagentResumedFrom=="string"?f.subagentResumedFrom:void 0,ee=f&&typeof f.subagentRootId=="string"?f.subagentRootId:void 0,te=f&&typeof f.subagentResumeDepth=="number"?f.subagentResumeDepth:void 0,ne=(f==null?void 0:f.verificationVerdict)==="pass"||(f==null?void 0:f.verificationVerdict)==="fail"||(f==null?void 0:f.verificationVerdict)==="partial"?f.verificationVerdict:void 0;if(k){const A=D?G(D):e.success?"completed":"failed",T=k.status!=="running"&&A==="running";i(g,k.id,{sessionId:k.sessionId||M,type:X||k.type,status:T?k.status:A,resumedFrom:p||k.resumedFrom,rootAgentId:ee||k.rootAgentId,resumeDepth:te??k.resumeDepth,verificationVerdict:ne??k.verificationVerdict,output:T?k.output:Z||k.output})}M&&D&&n(A=>({messages:A.messages.map(T=>{if(T.id!==g)return T;const R=T.metadata??{},O=Array.isArray(R.subtaskRefs)?R.subtaskRefs:[],w=O.findIndex(ie=>ie.childSessionId===M||ie.subagentId===d),C=w>=0?O[w]:R.subtaskRef??{},E={...C,subagentId:d,childSessionId:M,agentType:X||(typeof(C==null?void 0:C.agentType)=="string"?C.agentType:"subagent"),status:D,summary:Z||(typeof(C==null?void 0:C.summary)=="string"?C.summary:""),resumedFrom:p||(typeof(C==null?void 0:C.resumedFrom)=="string"?C.resumedFrom:void 0),rootAgentId:ee||(typeof(C==null?void 0:C.rootAgentId)=="string"?C.rootAgentId:M),resumeDepth:te??(typeof(C==null?void 0:C.resumeDepth)=="number"?C.resumeDepth:0),verificationVerdict:ne||(typeof(C==null?void 0:C.verificationVerdict)=="string"?C.verificationVerdict:void 0)},V=[...O];return w>=0?V[w]=E:V.push(E),{...T,metadata:{...R,subtaskRef:E,subtaskRefs:V}}})})),Q(M,t,n)},Ke=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-catalog-${String(e.revision)}`);if(!u)return;const s=Array.isArray(e.added)?e.added.map(String):[],i=Array.isArray(e.removed)?e.removed.map(String):[],r=Array.isArray(e.updated)?e.updated.map(String):[],d=`MCP catalog r${String(e.revision)}: +${s.length} -${i.length} ~${r.length}`;o(u,{toolCallId:`mcp-catalog:${String(e.revision)}`,toolName:"MCP Catalog",arguments:JSON.stringify({serverName:e.serverName,added:s,removed:i,updated:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:d,output:[s.length>0?`Added: ${s.join(", ")}`:"",i.length>0?`Removed: ${i.join(", ")}`:"",r.length>0?`Updated: ${r.join(", ")}`:""].filter(Boolean).join(`
4
+ `)}function U(e){if(!e.agentContent)return e;let t=e.agentContent;for(const n of Ne(e.id,e.metadata))t=ue(t,n);return{...e,agentContent:t}}function Pe(e){var a,o,u;const t=[];let n=null;for(const s of e)if(s.role!=="system"){if(s.role==="user")n&&(t.push(U(n)),n=null),t.push({id:s.id,role:s.role,content:s.content,timestamp:s.timestamp||Date.now(),metadata:s.metadata});else if(s.role==="assistant"){n&&t.push(U(n));const i=s.metadata;let r=P();s.thinkingContent&&(r=ve(r,s.thinkingContent),r.thinkingContent=s.thinkingContent);const d=x(s.content);if(d&&(r=be(r,d),r.textBefore=d),s.tool_calls&&Array.isArray(s.tool_calls))for(const c of s.tool_calls){const l=((a=c.function)==null?void 0:a.name)||"Unknown",g=le((o=c.function)==null?void 0:o.arguments);if(l==="Task"){let m={};try{m=JSON.parse(g)}catch{}const S=typeof m.subagent_type=="string"?m.subagent_type:"subagent",y=typeof m.description=="string"?m.description:S;r=ue(r,{id:q({explicitId:c.id,sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,messageId:s.id,agentType:S,description:y}),type:S,description:y,status:"running",startTime:Date.now(),sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,resumedFrom:typeof m.resume_from=="string"?m.resume_from:typeof m.resume=="string"?m.resume:void 0});continue}const I={toolCallId:L({explicitId:c.id,messageId:s.id,toolName:l,argumentsValue:(u=c.function)==null?void 0:u.arguments}),toolName:l,arguments:g,status:"running",startTime:Date.now()};r=oe(r,I)}n={id:s.id,role:"assistant",content:x(s.content),timestamp:s.timestamp||Date.now(),metadata:i,agentContent:r}}else if(s.role==="tool"&&n&&n.agentContent){const i=s,r=s.metadata,d=i.tool_call_id||(r==null?void 0:r.toolCallId),c=i.name||(r==null?void 0:r.toolName)||"Tool",l=r!=null&&r.metadata&&typeof r.metadata=="object"&&!Array.isArray(r.metadata)?r.metadata:r,g=r!=null&&r.independentVerification&&typeof r.independentVerification=="object"&&!Array.isArray(r.independentVerification)?r.independentVerification:void 0,I=(r==null?void 0:r.status)==="failed"||(r==null?void 0:r.status)==="error"||typeof(r==null?void 0:r.error)=="string"&&r.error.length>0,m=N(n.agentContent),S=m.findIndex(h=>h.id===d);if(S>=0){const h=m[S],f=typeof(l==null?void 0:l.subagentStatus)=="string"?G(l.subagentStatus):I?"failed":"completed";m[S]={...h,sessionId:typeof(l==null?void 0:l.subagentSessionId)=="string"?l.subagentSessionId:h.sessionId,type:typeof(l==null?void 0:l.subagentType)=="string"?l.subagentType:h.type,status:f,resumedFrom:typeof(l==null?void 0:l.subagentResumedFrom)=="string"?l.subagentResumedFrom:h.resumedFrom,rootAgentId:typeof(l==null?void 0:l.subagentRootId)=="string"?l.subagentRootId:h.rootAgentId,resumeDepth:typeof(l==null?void 0:l.subagentResumeDepth)=="number"?l.subagentResumeDepth:h.resumeDepth,verificationVerdict:(l==null?void 0:l.verificationVerdict)==="pass"||(l==null?void 0:l.verificationVerdict)==="fail"||(l==null?void 0:l.verificationVerdict)==="partial"?l.verificationVerdict:(g==null?void 0:g.verificationVerdict)==="pass"||(g==null?void 0:g.verificationVerdict)==="fail"||(g==null?void 0:g.verificationVerdict)==="partial"?g.verificationVerdict:h.verificationVerdict,output:typeof(l==null?void 0:l.subagentSummary)=="string"?l.subagentSummary:x(s.content)||h.output},n.agentContent=B(n.agentContent,m,h.id);continue}const y=n.agentContent.toolCalls.find(h=>h.toolCallId===d);y?(y.output=x(s.content),y.status=I?"error":"success",y.metadata=l,y.summary=typeof(l==null?void 0:l.summary)=="string"?l.summary:y.summary,(!y.toolName||y.toolName==="Unknown")&&(y.toolName=c)):n.agentContent=oe(n.agentContent,{toolCallId:L({explicitId:d,messageId:n.id,toolName:c,output:x(s.content)}),toolName:c,output:x(s.content),status:I?"error":"success",startTime:Date.now(),metadata:l,summary:typeof(l==null?void 0:l.summary)=="string"?l.summary:void 0})}}return n&&t.push(U(n)),t}const ce={authentication:"task.failure.authentication",permission:"task.failure.permission",rate_limit:"task.failure.rateLimit",timeout:"task.failure.timeout",network:"task.failure.network",model_unavailable:"task.failure.modelUnavailable",context_limit:"task.failure.contextLimit",unsupported_input:"task.failure.unsupportedInput",capacity:"task.failure.capacity",runtime:"task.failure.runtime"},Me={authentication:!1,permission:!1,rate_limit:!0,timeout:!0,network:!0,model_unavailable:!0,context_limit:!1,unsupported_input:!1,capacity:!0,runtime:!0};function Re(e){if(typeof e=="string"&&Object.keys(ce).includes(e))return e}function Lt(e){return ce[e]}function Ht(e){return Me[e]}const xe={flushTimeout:80};class De{constructor(t){K(this,"config");K(this,"channels",new Map);this.config={...xe,...t}}append(t,n,a){let o=this.channels.get(t);o||(o={buffer:"",timer:null,flushFn:null},this.channels.set(t,o)),o.buffer+=n,o.flushFn=a,o.timer||(o.timer=setTimeout(()=>{this.flushChannel(t)},this.config.flushTimeout))}flushChannel(t){const n=this.channels.get(t);if(!n||!n.buffer)return;const a=n.buffer,o=n.flushFn;n.buffer="",n.timer&&(clearTimeout(n.timer),n.timer=null),o==null||o(a)}drainAll(){for(const[t]of this.channels)this.flushChannel(t);this.channels.clear()}drainAllExcept(t){for(const[n]of this.channels)n!==t&&this.flushChannel(n);for(const[n,a]of this.channels)n!==t&&!a.buffer&&this.channels.delete(n)}reset(){for(const[,t]of this.channels)t.timer&&clearTimeout(t.timer);this.channels.clear()}}const $=new De,we=100,b=(e,t,n)=>{if(t)for(const a of e){const o=N(a.agentContent).find(u=>u.id===t||u.sessionId===t);if(o)return{messageId:a.id,subagent:o}}if(n){const a=e.find(s=>s.id===n),o=N(a==null?void 0:a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:n,subagent:u}}for(const a of[...e].reverse()){const o=N(a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:a.id,subagent:u}}};function je(e,t,n){n(a=>{const o={...a.pendingSubagentCompletions??{}};if(o[e]===void 0&&Object.keys(o).length>=we){const u=Object.keys(o)[0];u&&delete o[u]}return o[e]={...t},{pendingSubagentCompletions:o}})}function Q(e,t,n){var u;if(!e)return;const a=(u=t().pendingSubagentCompletions)==null?void 0:u[e];!a||!b(t().messages,e,t().currentAssistantMessageId)||(W({...a,subagentSessionId:e,success:a.status==="completed"},t),n(s=>{const i={...s.pendingSubagentCompletions??{}};return delete i[e],{pendingSubagentCompletions:i}}))}const v=(e,t,n,a=!1)=>{const{currentAssistantMessageId:o,messages:u,addMessage:s,startAgentResponse:i}=e();if(n&&a){const l=u.find(I=>I.id===n&&I.role==="assistant");if(l)return i(l.id),l.id;const g={id:n,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};return s(g),i(n),n}if(o&&!o.startsWith("call_")&&u.some(l=>l.id===o&&l.role==="assistant"))return o;if(n){const l=u.find(g=>g.id===n&&g.role==="assistant");if(l)return i(l.id),l.id}const r=u[u.length-1];if((r==null?void 0:r.role)==="assistant")return r.id;const d=n||`assistant-${Date.now()}`,c={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};return s(c),i(d),t(l=>({messages:l.messages.map(g=>g.id===d?{...g,agentContent:{...g.agentContent||P()}}:g)})),d},_e=(e,t,n)=>{const{currentSessionId:a,addMessage:o,startAgentResponse:u,messages:s,updateMessage:i}=t();if(e.sessionId!==a)return;const r=e.messageId,d=e.role||"assistant",c=s.find(g=>g.id===r),l={id:r,role:d,content:e.content||"",timestamp:Date.now(),agentContent:d==="assistant"?P():void 0};c?i(r,{role:d,content:l.content,agentContent:d==="assistant"?{...c.agentContent||P()}:void 0}):o(l),d==="assistant"&&u(r)},qe=(e,t,n)=>{const{currentSessionId:a,appendDelta:o,currentAssistantMessageId:u,hasToolCalls:s,addMessage:i,startAgentResponse:r}=t();if(e.sessionId!==a)return;const d=e.messageId,c=e.delta;if(!u){const g={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:P()};i(g),r(d),t().appendDelta(d,c,"before");return}o(u,c,s?"after":"before")},Fe=(e,t)=>{const{currentSessionId:n,updateMessage:a,messages:o}=t();if(e.sessionId!==n)return;const u=e.messageId,s=o.find(i=>i.id===u);s!=null&&s.agentContent&&a(u,{content:Ae(s.agentContent)})},Oe=(e,t,n)=>{var r;const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.output;if(!o||typeof o!="object"||Array.isArray(o))return;const u=v(t,n,e.messageId);if(!u)return;const s=t().messages.find(d=>d.id===u);if(!s)return;const i=JSON.stringify(o,null,2);t().updateMessage(u,{content:i,metadata:{...s.metadata,structuredOutput:{output:o,schemaDigest:e.schemaDigest}},agentContent:s.agentContent?{...s.agentContent,textBefore:"",textAfter:"",timeline:(r=s.agentContent.timeline)==null?void 0:r.filter(d=>d.type!=="text")}:void 0})},Ee=(e,t,n)=>{const{currentSessionId:a,appendThinking:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId);u&&o(u,e.delta)},Ve=()=>{},ge=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,setSubagent:s}=t();if(e.sessionId!==a)return;const i=v(t,n,e.messageId||e.toolCallId,typeof e.messageId=="string");if(!i)return;u(!0);const r=e.toolName||"Unknown",d=e.arguments;let c,l="",g,I;if(r==="Task")try{const S=JSON.parse(d);c=S.subagent_type,l=S.description||S.query||c||"",g=S.subagent_session_id,I=S.resume_from||S.resume}catch{}if(c){s(i,{id:q({explicitId:e.toolCallId,sessionId:g,messageId:i,agentType:c,description:l}),type:c,description:l,status:"running",startTime:Date.now(),sessionId:g,resumedFrom:I,output:"",thinking:""}),Q(g,t,n);return}const m={toolCallId:L({explicitId:e.toolCallId,messageId:i,toolName:r,argumentsValue:d,toolKind:e.toolKind}),toolName:r,arguments:d,toolKind:e.toolKind,status:"running",startTime:Date.now()};o(i,m)};function me(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e;if(!(t.kind!=="readonly"&&t.kind!=="write"&&t.kind!=="execute")&&!(t.scope!=="global"&&t.scope!=="session")&&!(!Number.isSafeInteger(t.queuePosition)||t.queuePosition<=0||!Number.isSafeInteger(t.inFlight)||t.inFlight<0||!Number.isSafeInteger(t.limit)||t.limit<=0))return{kind:t.kind,scope:t.scope,queuePosition:t.queuePosition,inFlight:t.inFlight,limit:t.limit}}const fe=(e,t)=>{const{currentSessionId:n,updateToolCall:a,messages:o}=t();if(e.sessionId!==n)return;const u=e.toolCallId;if(!u)return;const s=o.find(i=>{var r;return(r=i.agentContent)==null?void 0:r.toolCalls.some(d=>d.toolCallId===u)});s&&a(s.id,u,{summary:e.message,progress:typeof e.progress=="number"?e.progress:void 0,progressTotal:typeof e.total=="number"?e.total:void 0,progressMessage:e.message,admission:me(e.admission)})},Ie=(e,t,n)=>{var se;const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,updateToolCall:s,updateSubagent:i,messages:r}=t();if(e.sessionId!==a)return;const d=e.toolCallId;if(!d)return;const c=r.find(A=>{var T;return(T=A.agentContent)==null?void 0:T.toolCalls.some(R=>R.toolCallId===d)}),l=r.find(A=>N(A.agentContent).some(T=>T.id===d)),g=(c==null?void 0:c.id)||(l==null?void 0:l.id)||v(t,n,e.messageId,!0);if(!g)return;const I=typeof e.output=="string"?e.output:"",m=e.success===!0||e.status==="completed",S=e.summary||(I&&I.trim()?I.trim().split(`
5
+ `)[0].slice(0,120):m?"执行成功":"执行失败"),y=(se=c==null?void 0:c.agentContent)==null?void 0:se.toolCalls.find(A=>A.toolCallId===d),h=typeof e.toolName=="string"?e.toolName:(y==null?void 0:y.toolName)??"Unknown",f=e.metadata;c?s(g,d,{status:m?"success":"error",summary:S,output:I,metadata:f}):l||(u(!0),o(g,{toolCallId:d,toolName:h,status:m?"success":"error",summary:S,output:I,startTime:Date.now(),metadata:f}));const F=t().messages.find(A=>A.id===g),k=N(F==null?void 0:F.agentContent).find(A=>A.id===d),M=f&&typeof f.subagentSessionId=="string"?f.subagentSessionId:void 0,D=f&&typeof f.subagentStatus=="string"?f.subagentStatus:void 0,Y=f&&typeof f.subagentType=="string"?f.subagentType:void 0,X=f&&typeof f.subagentSummary=="string"?f.subagentSummary:void 0,Z=f&&typeof f.subagentResumedFrom=="string"?f.subagentResumedFrom:void 0,ee=f&&typeof f.subagentRootId=="string"?f.subagentRootId:void 0,te=f&&typeof f.subagentResumeDepth=="number"?f.subagentResumeDepth:void 0,ne=(f==null?void 0:f.verificationVerdict)==="pass"||(f==null?void 0:f.verificationVerdict)==="fail"||(f==null?void 0:f.verificationVerdict)==="partial"?f.verificationVerdict:void 0;if(k){const A=D?G(D):e.success?"completed":"failed",T=k.status!=="running"&&A==="running";i(g,k.id,{sessionId:k.sessionId||M,type:Y||k.type,status:T?k.status:A,resumedFrom:Z||k.resumedFrom,rootAgentId:ee||k.rootAgentId,resumeDepth:te??k.resumeDepth,verificationVerdict:ne??k.verificationVerdict,output:T?k.output:X||k.output})}M&&D&&n(A=>({messages:A.messages.map(T=>{if(T.id!==g)return T;const R=T.metadata??{},O=Array.isArray(R.subtaskRefs)?R.subtaskRefs:[],w=O.findIndex(ie=>ie.childSessionId===M||ie.subagentId===d),C=w>=0?O[w]:R.subtaskRef??{},E={...C,subagentId:d,childSessionId:M,agentType:Y||(typeof(C==null?void 0:C.agentType)=="string"?C.agentType:"subagent"),status:D,summary:X||(typeof(C==null?void 0:C.summary)=="string"?C.summary:""),resumedFrom:Z||(typeof(C==null?void 0:C.resumedFrom)=="string"?C.resumedFrom:void 0),rootAgentId:ee||(typeof(C==null?void 0:C.rootAgentId)=="string"?C.rootAgentId:M),resumeDepth:te??(typeof(C==null?void 0:C.resumeDepth)=="number"?C.resumeDepth:0),verificationVerdict:ne||(typeof(C==null?void 0:C.verificationVerdict)=="string"?C.verificationVerdict:void 0)},V=[...O];return w>=0?V[w]=E:V.push(E),{...T,metadata:{...R,subtaskRef:E,subtaskRefs:V}}})})),Q(M,t,n)},Ke=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-catalog-${String(e.revision)}`);if(!u)return;const s=Array.isArray(e.added)?e.added.map(String):[],i=Array.isArray(e.removed)?e.removed.map(String):[],r=Array.isArray(e.updated)?e.updated.map(String):[],d=`MCP catalog r${String(e.revision)}: +${s.length} -${i.length} ~${r.length}`;o(u,{toolCallId:`mcp-catalog:${String(e.revision)}`,toolName:"MCP Catalog",arguments:JSON.stringify({serverName:e.serverName,added:s,removed:i,updated:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:d,output:[s.length>0?`Added: ${s.join(", ")}`:"",i.length>0?`Removed: ${i.join(", ")}`:"",r.length>0?`Updated: ${r.join(", ")}`:""].filter(Boolean).join(`
6
6
  `)})},Ue=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-content-${String(e.revision)}`);if(!u)return;const s=Array.isArray(e.added)?e.added.map(String):[],i=Array.isArray(e.removed)?e.removed.map(String):[],r=Array.isArray(e.updated)?e.updated.map(String):[],d=`MCP ${String(e.contentKind)} r${String(e.revision)}: +${s.length} -${i.length} ~${r.length}`;o(u,{toolCallId:`mcp-content:${String(e.revision)}`,toolName:"MCP Content",arguments:JSON.stringify({serverName:e.serverName,contentKind:e.contentKind,added:s,removed:i,updated:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:d,output:[s.length>0?`Added: ${s.join(", ")}`:"",i.length>0?`Removed: ${i.join(", ")}`:"",r.length>0?`Updated: ${r.join(", ")}`:""].filter(Boolean).join(`
7
7
  `)})},Be=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-resource-${String(e.revision)}`);u&&o(u,{toolCallId:`mcp-resource:${String(e.revision)}`,toolName:"MCP Resource",arguments:JSON.stringify({serverName:e.serverName,uri:e.uri}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP resource updated: ${String(e.uri)}`,output:`${String(e.serverName)} · revision ${String(e.revision)}`})},Je=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-connection-${String(e.revision)}`);if(!u)return;const s=String(e.phase),i=`MCP ${String(e.serverName)} ${s}`+(s==="reconnecting"?` (${String(e.attempt)}/${String(e.maxAttempts)})`:"");o(u,{toolCallId:`mcp-connection:${String(e.revision)}`,toolName:"MCP Connection",arguments:JSON.stringify({serverName:e.serverName,phase:s,reason:e.reason,attempt:e.attempt,maxAttempts:e.maxAttempts}),toolKind:"readonly",status:s==="failed"?"error":"success",startTime:Date.now(),summary:i,output:[`Reason: ${String(e.reason)}`,e.error?`Error: ${String(e.error)}`:""].filter(Boolean).join(`
8
8
  `)})},Le=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-log-${String(e.revision)}`);if(!u)return;const s=String(e.level),i=typeof e.logger=="string"?e.logger:void 0,r=`MCP ${s} · ${String(e.serverName)}`+(i?` · ${i}`:"");o(u,{toolCallId:`mcp-log:${String(e.revision)}`,toolName:"MCP Log",arguments:JSON.stringify({serverName:e.serverName,level:s,logger:i}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,output:[String(e.message),`SHA-256: ${String(e.dataSha256)}`,e.truncated===!0?"Truncated":"",e.detailsOmitted===!0?"Details omitted by runtime policy":""].filter(Boolean).join(`
@@ -10,13 +10,13 @@ var ye=Object.defineProperty;var Ce=(e,t,n)=>t in e?ye(e,t,{enumerable:!0,config
10
10
  `)})},Ge=(e,t,n)=>{var I,m;const{currentSessionId:a,appendToolCall:o,updateToolCall:u}=t();if(e.sessionId!==a)return;const s=String(e.taskId),i=String(e.status),r=`mcp-task:${s}`,d=v(t,n,e.messageId||`mcp-task-${s}`);if(!d)return;const c=`MCP task ${i}: ${s} · ${String(e.serverName)}/${String(e.toolName)}`,l={status:i==="failed"||i==="cancelled"?"error":i==="completed"?"success":"running",summary:c,output:[typeof e.statusMessage=="string"?e.statusMessage:"",e.hasResult===!0?"Result available via TaskOutput":"",typeof e.error=="string"?`Error: ${e.error}`:""].filter(Boolean).join(`
11
11
  `)};if((m=(I=t().messages.find(S=>S.id===d))==null?void 0:I.agentContent)==null?void 0:m.toolCalls.some(S=>S.toolCallId===r)){u(d,r,l);return}o(d,{toolCallId:r,toolName:"MCP Task",arguments:JSON.stringify({taskId:s,serverName:e.serverName,toolName:e.toolName}),toolKind:"readonly",status:l.status,startTime:Number(e.createdAt)||Date.now(),summary:l.summary,output:l.output})},Qe=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=Array.isArray(e.files)?e.files.filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)):[],s=v(t,n,e.messageId||`project-rules-${Date.now()}`);if(!s)return;const i=e.blockedWrite===!0,r=`Project rules loaded: ${u.length}`+(i?" (write retry required)":"");o(s,{toolCallId:`project-rules:${u.map(d=>String(d.id)).join(",")}`,toolName:"Project Rules",arguments:JSON.stringify({triggerPaths:e.triggerPaths,blockedWrite:i}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,output:u.map(d=>`${String(d.relativePath)} ${String(d.source)} SHA-256: ${String(d.contentSha256)}`).join(`
12
12
  `)})},z=e=>`user-shell-${e}`,ze=(e,t,n)=>{const{currentSessionId:a,addMessage:o,messages:u,updateMessage:s}=t();if(e.sessionId!==a||typeof e.executionId!="string"||typeof e.command!="string")return;const i=z(e.executionId),r={id:i,role:"user",content:`! ${e.command}`,timestamp:Date.now(),metadata:{userShellExecution:{executionId:e.executionId,command:e.command,status:"running",output:""}}};u.some(d=>d.id===i)?s(i,r):o(r),e.auxiliary!==!0&&n({isStreaming:!0,agentPhase:"running",error:null,errorContext:null})},We=(e,t)=>{var d;const{currentSessionId:n,messages:a,updateMessage:o}=t();if(e.sessionId!==n||typeof e.executionId!="string"||typeof e.chunk!="string")return;const u=z(e.executionId),s=a.find(c=>c.id===u);if(!s)return;const i=(d=s.metadata)!=null&&d.userShellExecution&&typeof s.metadata.userShellExecution=="object"?s.metadata.userShellExecution:{},r=`${typeof i.output=="string"?i.output:""}${e.chunk}`;o(u,{content:`! ${String(i.command??"")}
13
- ${r}`,metadata:{...s.metadata,userShellExecution:{...i,output:r,streamTruncated:e.streamTruncated===!0}}})},Ye=(e,t,n)=>{const{currentSessionId:a,messages:o,addMessage:u,updateMessage:s}=t();if(e.sessionId!==a||typeof e.executionId!="string"||!e.record||typeof e.record!="object"||Array.isArray(e.record))return;const i=e.record,r=typeof i.command=="string"?i.command:"",d=typeof i.stdout=="string"?i.stdout:"",c=typeof i.stderr=="string"?i.stderr:"",l=[d,c?`stderr:
13
+ ${r}`,metadata:{...s.metadata,userShellExecution:{...i,output:r,streamTruncated:e.streamTruncated===!0}}})},pe=(e,t,n)=>{const{currentSessionId:a,messages:o,addMessage:u,updateMessage:s}=t();if(e.sessionId!==a||typeof e.executionId!="string"||!e.record||typeof e.record!="object"||Array.isArray(e.record))return;const i=e.record,r=typeof i.command=="string"?i.command:"",d=typeof i.stdout=="string"?i.stdout:"",c=typeof i.stderr=="string"?i.stderr:"",l=[d,c?`stderr:
14
14
  ${c}`:""].filter(Boolean).join(`
15
15
  `),g=z(e.executionId),I={role:"user",content:[`! ${r}`,l||"(no output)"].join(`
16
- `),metadata:{userShellCommand:i}};o.some(m=>m.id===g)?s(g,I):u({id:g,...I,timestamp:Date.now()}),e.auxiliary!==!0&&n({isStreaming:!1,isStopping:!1,agentPhase:"idle"}),(e.delivery==="current_turn"||e.delivery==="next_turn")&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):0,pendingInputDelivery:e.delivery==="current_turn"?"current_turn":"next_turn"})},Xe=(e,t)=>{const{currentSessionId:n,updateTokenUsage:a,setMaxContextTokens:o}=t();e.sessionId===n&&(a({inputTokens:e.inputTokens,outputTokens:e.outputTokens,totalTokens:e.totalTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd}),e.maxContextTokens&&o(e.maxContextTokens,!1))},Ze=(e,t)=>{const{currentSessionId:n,setTasks:a,currentAssistantMessageId:o}=t();if(e.sessionId!==n||!o)return;const u=e.tasks||[];a(o,u)},pe=(e,t,n)=>{const{currentSessionId:a,setSubagent:o,currentAssistantMessageId:u}=t();if(e.sessionId!==a||!u)return;const s={id:q({explicitId:e.subagentId,sessionId:e.subagentSessionId,messageId:u,agentType:e.type,description:e.description}),type:e.type||"unknown",description:e.description||"",status:"running",startTime:Date.now(),sessionId:e.subagentSessionId,resumedFrom:e.resumedFrom,rootAgentId:e.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:void 0};o(u,s),Q(s.sessionId,t,n)},et=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);i&&u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,currentTool:e.toolName})},tt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,output:(d.output||"")+s}))},nt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,thinking:(d.thinking||"")+s}))},W=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);if(!i)return;const r=e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.success?"completed":"failed";u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,type:typeof e.type=="string"?e.type:i.subagent.type,description:typeof e.description=="string"?e.description:i.subagent.description,status:r,currentTool:void 0,output:typeof e.summary=="string"?e.summary:i.subagent.output,resumedFrom:typeof e.resumedFrom=="string"?e.resumedFrom:i.subagent.resumedFrom,rootAgentId:typeof e.rootAgentId=="string"?e.rootAgentId:i.subagent.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:i.subagent.resumeDepth,verificationVerdict:e.verificationVerdict==="pass"||e.verificationVerdict==="fail"||e.verificationVerdict==="partial"?e.verificationVerdict:i.subagent.verificationVerdict})},st=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId,i=e.toolName;if(!s||!i)return;const r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c={toolCallId:s,toolName:i,arguments:e.arguments,toolKind:e.toolKind,status:"running",startTime:Date.now()};u(d.messageId,d.subagent.id,l=>{const g=l.toolCalls||[];return{sessionId:l.sessionId||r,currentTool:i,toolCalls:g.some(I=>I.toolCallId===s)?g:[...g,c]}})},it=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId;if(!s)return;const i=e.toolName,r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c=e.output,l=e.success===!0,g=l?"success":"error",I=e.summary||(c&&c.trim()?c.trim().split(`
16
+ `),metadata:{userShellCommand:i}};o.some(m=>m.id===g)?s(g,I):u({id:g,...I,timestamp:Date.now()}),e.auxiliary!==!0&&n({isStreaming:!1,isStopping:!1,agentPhase:"idle"}),(e.delivery==="current_turn"||e.delivery==="next_turn")&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):0,pendingInputDelivery:e.delivery==="current_turn"?"current_turn":"next_turn"})},Ye=(e,t)=>{const{currentSessionId:n,updateTokenUsage:a,setMaxContextTokens:o}=t();e.sessionId===n&&(a({inputTokens:e.inputTokens,outputTokens:e.outputTokens,totalTokens:e.totalTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd}),e.maxContextTokens&&o(e.maxContextTokens,!1))},Xe=(e,t)=>{const{currentSessionId:n,setTasks:a,currentAssistantMessageId:o}=t();if(e.sessionId!==n||!o)return;const u=e.tasks||[];a(o,u)},Ze=(e,t,n)=>{const{currentSessionId:a,setSubagent:o,currentAssistantMessageId:u}=t();if(e.sessionId!==a||!u)return;const s={id:q({explicitId:e.subagentId,sessionId:e.subagentSessionId,messageId:u,agentType:e.type,description:e.description}),type:e.type||"unknown",description:e.description||"",status:"running",startTime:Date.now(),sessionId:e.subagentSessionId,resumedFrom:e.resumedFrom,rootAgentId:e.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:void 0};o(u,s),Q(s.sessionId,t,n)},et=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);i&&u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,currentTool:e.toolName})},tt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,output:(d.output||"")+s}))},nt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,thinking:(d.thinking||"")+s}))},W=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);if(!i)return;const r=e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.success?"completed":"failed";u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,type:typeof e.type=="string"?e.type:i.subagent.type,description:typeof e.description=="string"?e.description:i.subagent.description,status:r,currentTool:void 0,output:typeof e.summary=="string"?e.summary:i.subagent.output,resumedFrom:typeof e.resumedFrom=="string"?e.resumedFrom:i.subagent.resumedFrom,rootAgentId:typeof e.rootAgentId=="string"?e.rootAgentId:i.subagent.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:i.subagent.resumeDepth,verificationVerdict:e.verificationVerdict==="pass"||e.verificationVerdict==="fail"||e.verificationVerdict==="partial"?e.verificationVerdict:i.subagent.verificationVerdict})},st=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId,i=e.toolName;if(!s||!i)return;const r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c={toolCallId:s,toolName:i,arguments:e.arguments,toolKind:e.toolKind,status:"running",startTime:Date.now()};u(d.messageId,d.subagent.id,l=>{const g=l.toolCalls||[];return{sessionId:l.sessionId||r,currentTool:i,toolCalls:g.some(I=>I.toolCallId===s)?g:[...g,c]}})},it=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId;if(!s)return;const i=e.toolName,r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c=e.output,l=e.success===!0,g=l?"success":"error",I=e.summary||(c&&c.trim()?c.trim().split(`
17
17
  `)[0].slice(0,120):l?"执行成功":"执行失败");u(d.messageId,d.subagent.id,m=>({sessionId:m.sessionId||r,currentTool:m.currentTool===i?void 0:m.currentTool,toolCalls:(m.toolCalls||[]).map(S=>S.toolCallId===s?{...S,status:g,summary:I,output:c,metadata:e.metadata}:S)}))},ot=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId;if(!s)return;const i=b(o,e.subagentSessionId,a);i&&u(i.messageId,i.subagent.id,r=>({toolCalls:(r.toolCalls||[]).map(d=>d.toolCallId===s?{...d,summary:e.message,progress:typeof e.progress=="number"?e.progress:void 0,progressTotal:typeof e.total=="number"?e.total:void 0,progressMessage:e.message,admission:me(e.admission)}:d)}))},at=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=Array.isArray(e.added)?e.added.map(String):[],r=Array.isArray(e.removed)?e.removed.map(String):[],d=Array.isArray(e.updated)?e.updated.map(String):[],c=`mcp-catalog:${String(e.revision)}`;u(s.messageId,s.subagent.id,l=>({toolCalls:[...(l.toolCalls||[]).filter(g=>g.toolCallId!==c),{toolCallId:c,toolName:"MCP Catalog",arguments:JSON.stringify({serverName:e.serverName,added:i,removed:r,updated:d}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP catalog r${String(e.revision)}: +${i.length} -${r.length} ~${d.length}`,output:[i.length>0?`Added: ${i.join(", ")}`:"",r.length>0?`Removed: ${r.join(", ")}`:"",d.length>0?`Updated: ${d.join(", ")}`:""].filter(Boolean).join(`
18
18
  `)}]}))},rt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=Array.isArray(e.added)?e.added.map(String):[],r=Array.isArray(e.removed)?e.removed.map(String):[],d=Array.isArray(e.updated)?e.updated.map(String):[],c=`mcp-content:${String(e.revision)}`;u(s.messageId,s.subagent.id,l=>({toolCalls:[...(l.toolCalls||[]).filter(g=>g.toolCallId!==c),{toolCallId:c,toolName:"MCP Content",arguments:JSON.stringify({serverName:e.serverName,contentKind:e.contentKind,added:i,removed:r,updated:d}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP ${String(e.contentKind)} r${String(e.revision)}: +${i.length} -${r.length} ~${d.length}`}]}))},ut=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=`mcp-resource:${String(e.revision)}`;u(s.messageId,s.subagent.id,r=>({toolCalls:[...(r.toolCalls||[]).filter(d=>d.toolCallId!==i),{toolCallId:i,toolName:"MCP Resource",arguments:JSON.stringify({serverName:e.serverName,uri:e.uri}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP resource updated: ${String(e.uri)}`}]}))},dt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.phase),r=`mcp-connection:${String(e.revision)}`;u(s.messageId,s.subagent.id,d=>({toolCalls:[...(d.toolCalls||[]).filter(c=>c.toolCallId!==r),{toolCallId:r,toolName:"MCP Connection",arguments:JSON.stringify({serverName:e.serverName,phase:i,reason:e.reason,attempt:e.attempt,maxAttempts:e.maxAttempts}),toolKind:"readonly",status:i==="failed"?"error":"success",startTime:Date.now(),summary:`MCP ${String(e.serverName)} ${i}`+(i==="reconnecting"?` (${String(e.attempt)}/${String(e.maxAttempts)})`:""),output:e.error?`Error: ${String(e.error)}`:void 0}]}))},lt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.level),r=typeof e.logger=="string"?e.logger:void 0,d=`mcp-log:${String(e.revision)}`;u(s.messageId,s.subagent.id,c=>({toolCalls:[...(c.toolCalls||[]).filter(l=>l.toolCallId!==d),{toolCallId:d,toolName:"MCP Log",arguments:JSON.stringify({serverName:e.serverName,level:i,logger:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP ${i} · ${String(e.serverName)}`+(r?` · ${r}`:""),output:[String(e.message),`SHA-256: ${String(e.dataSha256)}`,e.truncated===!0?"Truncated":"",e.detailsOmitted===!0?"Details omitted by runtime policy":""].filter(Boolean).join(`
19
19
  `)}]}))},ct=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.serverName),r=String(e.action),d=`mcp-instructions:${String(e.revision)}:${i}:${r}`;u(s.messageId,s.subagent.id,c=>({toolCalls:[...(c.toolCalls||[]).filter(l=>l.toolCallId!==d),{toolCallId:d,toolName:"MCP Instructions",arguments:JSON.stringify({serverName:i,action:r,reason:e.reason}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP instructions ${r}: ${i}`+(e.truncated===!0?" (truncated)":""),output:[typeof e.text=="string"?e.text:"",e.sha256?`SHA-256: ${String(e.sha256)}`:"",e.detailsOmitted===!0?"Details omitted by runtime policy":""].filter(Boolean).join(`
20
20
  `)}]}))},gt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.taskId),r=String(e.status),d=`mcp-task:${i}`;u(s.messageId,s.subagent.id,c=>({toolCalls:[...(c.toolCalls||[]).filter(l=>l.toolCallId!==d),{toolCallId:d,toolName:"MCP Task",arguments:JSON.stringify({taskId:i,serverName:e.serverName,toolName:e.toolName}),toolKind:"readonly",status:r==="failed"||r==="cancelled"?"error":r==="completed"?"success":"running",startTime:Number(e.createdAt)||Date.now(),summary:`MCP task ${r}: ${i} · ${String(e.serverName)}/${String(e.toolName)}`,output:[typeof e.statusMessage=="string"?e.statusMessage:"",e.hasResult===!0?"Result available via TaskOutput":"",typeof e.error=="string"?`Error: ${e.error}`:""].filter(Boolean).join(`
21
21
  `)}]}))},mt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=Array.isArray(e.files)?e.files.filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)):[],r=`project-rules:${i.map(d=>String(d.id)).join(",")}`;u(s.messageId,s.subagent.id,d=>({toolCalls:[...(d.toolCalls||[]).filter(c=>c.toolCallId!==r),{toolCallId:r,toolName:"Project Rules",arguments:JSON.stringify({triggerPaths:e.triggerPaths,blockedWrite:e.blockedWrite}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`Project rules loaded: ${i.length}`,output:i.map(c=>`${String(c.relativePath)} ${String(c.source)} SHA-256: ${String(c.contentSha256)}`).join(`
22
- `)}]}))},ft=(e,t,n)=>{const{currentSessionId:a,setConfirmation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||"",s=v(t,n,u?`assistant-permission-${u}`:void 0);if(!s)return;const i=e.details,r=e.toolName||(i==null?void 0:i.toolName)||"Tool";o(s,{toolCallId:u,toolName:r,description:e.description,diff:(i==null?void 0:i.details)||(i==null?void 0:i.diff)||"",allowRemember:(i==null?void 0:i.type)!=="mcpSampling",status:"pending"}),n(d=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:d.sessions.map(c=>c.sessionId===e.sessionId&&c.projectPath===e.projectPath?{...c,pendingInteraction:{type:"permission",requestId:u}}:c)}))},It=(e,t,n)=>{var I,m;const{currentSessionId:a,currentSessionRef:o,messages:u,setConfirmation:s,setElicitation:i}=t();if(e.sessionId!==a)return;const r=e.requestId,d=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.confirmation)==null?void 0:h.toolCallId)===r}),c=(I=d==null?void 0:d.agentContent)==null?void 0:I.confirmation;d&&(c==null?void 0:c.status)==="pending"&&s(d.id,{...c,status:"denied"});const l=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.elicitation)==null?void 0:h.toolCallId)===r}),g=(m=l==null?void 0:l.agentContent)==null?void 0:m.elicitation;l&&(g==null?void 0:g.status)==="pending"&&i(l.id,{...g,status:"cancelled"}),n({agentPhase:"running",error:"Permission request timed out",errorContext:{kind:"interaction",...o?{sessionRef:o}:{}}})},ae=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",isStreaming:!0})},St=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:e.reason==="context_limit"?"recovering_context":"compacting"})},ht=(e,t,n)=>{e.sessionId===t().currentSessionId&&(t().resetContextUsage(),n({agentPhase:"running"}))},yt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"switching_model",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null})},Ct=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerAdmission:e.phase==="queued"?e:null})},bt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerCircuit:e.phase==="closed"?null:e})},vt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerRetry:e.phase==="recovered"?null:e})},At=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerStall:e.phase==="detected"?e:null})},kt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",actionStationarity:e.phase==="recovered"?null:e})},Tt=(e,t,n)=>{const{currentSessionId:a,setQuestion:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-question-${u}`:void 0);s&&(o(s,{toolCallId:u,questions:e.questions,status:"pending"}),n(i=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:i.sessions.map(r=>r.sessionId===e.sessionId&&r.projectPath===e.projectPath?{...r,pendingInteraction:{type:"question",requestId:u}}:r)})))},$t=(e,t,n)=>{const{currentSessionId:a,setElicitation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-elicitation-${u}`:void 0),i=e.elicitation;!s||!i||(o(s,{toolCallId:u,details:i,status:"pending"}),n(r=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:r.sessions.map(d=>d.sessionId===e.sessionId&&d.projectPath===e.projectPath?{...d,pendingInteraction:{type:"elicitation",requestId:u}}:d)})))},Nt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.requestId;n(u=>({agentPhase:"running",sessions:u.sessions.map(s=>{var i;return s.sessionId===e.sessionId&&s.projectPath===e.projectPath&&((i=s.pendingInteraction)==null?void 0:i.requestId)===o?{...s,pendingInteraction:void 0}:s})}))},Y=(e,t)=>{const n=t().currentSessionRef;n&&e.sessionId===n.sessionId&&e.projectPath===n.projectPath&&t().resyncSessionMessages(n)},Pt=(e,t)=>{const{currentSessionId:n,currentSessionRef:a,endAgentResponse:o}=t();e.sessionId!==n||!a||e.projectPath!==a.projectPath||(o(),Y(e,t))},re=(e,t)=>{const n=t().currentSessionRef;!n||e.sessionId!==n.sessionId||e.projectPath!==n.projectPath||t().endAgentResponse()},Mt=(e,t,n)=>{const{currentSessionId:a,currentSessionRef:o,endAgentResponse:u}=t();if(e.sessionId!==a)return;const s=e.taskFailure&&typeof e.taskFailure=="object"&&!Array.isArray(e.taskFailure)?e.taskFailure:void 0,i=Re(s==null?void 0:s.code);n({agentPhase:"error",error:e.error||"An error occurred",errorContext:{kind:"execution",...o?{sessionRef:o}:{},...i?{failureCode:i}:{}}}),u(),Y(e,t)},Rt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId===a)if(e.status==="idle")n({isStreaming:!1,isStopping:!1,agentPhase:"idle",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0});else if(e.status==="queued"||e.status==="running"||e.status==="waiting_permission"){const o=typeof e.queued=="number"?Math.max(0,e.queued):0;n({isStreaming:!0,agentPhase:e.status==="waiting_permission"?"waiting_permission":"running",currentRunId:typeof e.runId=="string"?e.runId:t().currentRunId,pendingSteeringCount:o,pendingInputDelivery:o>0&&(e.pendingInputDelivery==="current_turn"||e.pendingInputDelivery==="next_turn")?e.pendingInputDelivery:null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})}else e.status==="error"&&n({isStreaming:!1,isStopping:!1,agentPhase:"error",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null})},xt=(e,t,n)=>{const{currentSessionId:a,endAgentResponse:o,messages:u,updateSubagent:s}=t();if(e.sessionId===a){n(i=>({isStreaming:!1,agentPhase:"idle",messages:i.messages.map(r=>{var c;const d=(c=r.agentContent)==null?void 0:c.elicitation;return(d==null?void 0:d.status)!=="pending"||!r.agentContent?r:{...r,agentContent:{...r.agentContent,elicitation:{...d,status:"cancelled"}}}})}));for(const i of u)for(const r of N(i.agentContent))r.status==="running"&&s(i.id,r.id,{status:"failed"});o(),Y(e,t)}},Se=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"current_turn"})},he=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"next_turn"})},Dt=(e,t,n)=>{if(typeof e.childSessionId=="string"){const a={...e,subagentSessionId:e.childSessionId,success:e.status==="completed"};b(t().messages,e.childSessionId,t().currentAssistantMessageId)?W(a,t):je(e.childSessionId,a,n)}e.delivery==="current_turn"?Se(e,t,n):he(e,t,n)},wt=(e,t,n)=>{if(e.sessionId!==t().currentSessionId)return;const a=typeof e.queued=="number"?Math.max(0,e.queued):0;n({pendingSteeringCount:a,pendingInputDelivery:a>0?t().pendingInputDelivery:null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})},jt=(e,t,n)=>{if(e.sessionId!==t().currentSessionId)return;const a=typeof e.queued=="number"?Math.max(0,e.queued):0;n({agentPhase:"running",pendingSteeringCount:a,pendingInputDelivery:a>0?"current_turn":null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})},_t=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??null})},qt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:null})},Ft=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??t().goal,isStreaming:!0,agentPhase:"running"})},Ot=(e,t,n)=>{if(e.sessionId!==t().currentSessionId||!Array.isArray(e.messages))return;const a=Date.now(),o=e.messages.flatMap((u,s)=>{if(typeof u!="object"||u===null)return[];const i=u;return!["user","assistant","system","tool"].includes(String(i.role))||!Array.isArray(i.content)&&typeof i.content!="string"?[]:[{id:`rewind-${s}-${a}`,role:i.role,content:i.content,timestamp:a+s,metadata:typeof i.metadata=="object"&&i.metadata!==null?i.metadata:void 0,thinkingContent:typeof i.thinkingContent=="string"?i.thinkingContent:typeof i.reasoningContent=="string"?i.reasoningContent:void 0,tool_call_id:typeof i.tool_call_id=="string"?i.tool_call_id:void 0,name:typeof i.name=="string"?i.name:void 0,tool_calls:i.tool_calls}]});n({messages:Pe(o),isStreaming:!1,isStopping:!1,agentPhase:"idle",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0,currentAssistantMessageId:null,hasToolCalls:!1})},Et=(e,t,n)=>{const a=t().currentSessionRef;if(!a||e.sessionId!==a.sessionId||e.projectPath!==a.projectPath)return;const o=e.status,u=o==="completed"||o==="stale"?"completed":o==="aborted"?"cancelled":o==="interrupted"?"interrupted":"failed";n(s=>({sessions:s.sessions.map(i=>i.sessionId===a.sessionId&&i.projectPath===a.projectPath?{...i,taskStatus:u,taskStatusReason:void 0,taskFailure:void 0,taskCompletedAt:new Date().toISOString()}:i)})),t().selectSession(a)},Vt=(e,t,n)=>{ge({...e,messageId:`review-${String(e.reviewId??"active")}`,arguments:"{}"},t,n)},Kt=(e,t,n)=>{fe(e,t)},Ut=(e,t,n)=>{Ie(e,t,n)},j={"message.created":_e,"message.delta":qe,"message.complete":Fe,"structured.output":Oe,"thinking.delta":Ee,"thinking.completed":Ve,"tool.start":ge,"tool.progress":fe,"tool.result":Ie,"mcp.catalog.changed":Ke,"mcp.content.changed":Ue,"mcp.resource.updated":Be,"mcp.connection.changed":Je,"mcp.log":Le,"mcp.instructions.changed":He,"mcp.task.changed":Ge,"project.rules.loaded":Qe,"user.shell.started":ze,"user.shell.output":We,"user.shell.completed":Ye,"token.usage":Xe,"task.updated":Ze,"subagent.start":pe,"subagent.update":et,"subagent.delta":tt,"subagent.thinking.delta":nt,"subagent.tool.start":st,"subagent.tool.progress":ot,"subagent.tool.result":it,"subagent.mcp.catalog.changed":at,"subagent.mcp.content.changed":rt,"subagent.mcp.resource.updated":ut,"subagent.mcp.connection.changed":dt,"subagent.mcp.log":lt,"subagent.mcp.instructions.changed":ct,"subagent.mcp.task.changed":gt,"subagent.project.rules.loaded":mt,"subagent.complete":W,"subagent.completion.queued":Dt,"permission.asked":ft,"permission.timeout":It,"turn.started":ae,"committed.turn_started":ae,"committed.turn_completed":re,"committed.turn_aborted":re,"provider.admission":Ct,"provider.circuit":bt,"provider.retry":vt,"provider.stall":At,"action.stationarity":kt,"compaction.started":St,"compaction.completed":ht,"model.fallback":yt,"question.required":Tt,"elicitation.required":$t,"interaction.resolved":Nt,"session.completed":Pt,"session.error":Mt,"session.status":Rt,"run.cancelled":xt,"steering.queued":Se,"follow_up.queued":he,"follow_up.started":jt,"steering.applied":wt,"goal.updated":_t,"goal.cleared":qt,"goal.continuation.started":Ft,"session.rewound":Ot,"review.tool.started":Vt,"review.tool.progress":Kt,"review.tool.completed":Ut,"review.completed":Et},Bt=new Set(["message.complete","thinking.completed","session.completed","session.error","run.cancelled","committed.turn_completed","committed.turn_aborted"]),Gt=(e,t)=>n=>{const a=e().currentSessionRef,o=n.properties;if(!a||o.sessionId!==a.sessionId||o.projectPath!==a.projectPath)return;if(Bt.has(n.type)){$.drainAll();const s=j[n.type];s&&s(n.properties,e,t);return}if(n.type==="tool.start"&&$.drainAll(),n.type==="message.delta"){const{currentSessionId:s,currentAssistantMessageId:i,hasToolCalls:r}=e();if(o.sessionId!==s)return;const d=o.messageId||i,c=o.delta;if(!i){const I=j["message.delta"];I&&I(o,e,t);return}const l=r?"after":"before",g=`content:${d}:${l}`;$.drainAllExcept(g),$.append(g,c,I=>{const{appendDelta:m}=e();d&&m(d,I,l)});return}if(n.type==="thinking.delta"){const{currentSessionId:s,currentAssistantMessageId:i}=e();if(o.sessionId!==s)return;if(!i){const l=j["thinking.delta"];l&&l(o,e,t);return}const r=o.delta,d=o.messageId||i,c=`thinking:${d}`;$.drainAllExcept(c),$.append(c,r,l=>{const{appendThinking:g}=e();d&&g(d,l)});return}if(n.type==="subagent.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,output:(f.output||"")+I}))});return}if(n.type==="subagent.thinking.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent-thinking:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,thinking:(f.thinking||"")+I}))});return}const u=j[n.type];u&&u(n.properties,e,t)};export{ve as a,oe as b,P as c,be as d,Pe as e,Gt as f,N as g,$ as h,Re as i,Ht as j,Ae as k,_ as l,Lt as t,ue as u,B as w};
22
+ `)}]}))},ft=(e,t,n)=>{const{currentSessionId:a,setConfirmation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||"",s=v(t,n,u?`assistant-permission-${u}`:void 0);if(!s)return;const i=e.details,r=e.toolName||(i==null?void 0:i.toolName)||"Tool";o(s,{toolCallId:u,toolName:r,description:e.description,diff:(i==null?void 0:i.details)||(i==null?void 0:i.diff)||"",allowRemember:(i==null?void 0:i.type)!=="mcpSampling",status:"pending"}),n(d=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:d.sessions.map(c=>c.sessionId===e.sessionId&&c.projectPath===e.projectPath?{...c,pendingInteraction:{type:"permission",requestId:u}}:c)}))},It=(e,t,n)=>{var I,m;const{currentSessionId:a,currentSessionRef:o,messages:u,setConfirmation:s,setElicitation:i}=t();if(e.sessionId!==a)return;const r=e.requestId,d=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.confirmation)==null?void 0:h.toolCallId)===r}),c=(I=d==null?void 0:d.agentContent)==null?void 0:I.confirmation;d&&(c==null?void 0:c.status)==="pending"&&s(d.id,{...c,status:"denied"});const l=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.elicitation)==null?void 0:h.toolCallId)===r}),g=(m=l==null?void 0:l.agentContent)==null?void 0:m.elicitation;l&&(g==null?void 0:g.status)==="pending"&&i(l.id,{...g,status:"cancelled"}),n({agentPhase:"running",error:"Permission request timed out",errorContext:{kind:"interaction",...o?{sessionRef:o}:{}}})},ae=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",isStreaming:!0})},St=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:e.reason==="context_limit"?"recovering_context":"compacting"})},ht=(e,t,n)=>{e.sessionId===t().currentSessionId&&(t().resetContextUsage(),n({agentPhase:"running"}))},yt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"switching_model",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null})},Ct=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerAdmission:e.phase==="queued"?e:null})},bt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerCircuit:e.phase==="closed"?null:e})},vt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerRetry:e.phase==="recovered"?null:e})},At=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerStall:e.phase==="detected"?e:null})},kt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",actionStationarity:e.phase==="recovered"?null:e})},Tt=(e,t,n)=>{const{currentSessionId:a,setQuestion:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-question-${u}`:void 0);s&&(o(s,{toolCallId:u,questions:e.questions,status:"pending"}),n(i=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:i.sessions.map(r=>r.sessionId===e.sessionId&&r.projectPath===e.projectPath?{...r,pendingInteraction:{type:"question",requestId:u}}:r)})))},$t=(e,t,n)=>{const{currentSessionId:a,setElicitation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-elicitation-${u}`:void 0),i=e.elicitation;!s||!i||(o(s,{toolCallId:u,details:i,status:"pending"}),n(r=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:r.sessions.map(d=>d.sessionId===e.sessionId&&d.projectPath===e.projectPath?{...d,pendingInteraction:{type:"elicitation",requestId:u}}:d)})))},Nt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.requestId;n(u=>({agentPhase:"running",sessions:u.sessions.map(s=>{var i;return s.sessionId===e.sessionId&&s.projectPath===e.projectPath&&((i=s.pendingInteraction)==null?void 0:i.requestId)===o?{...s,pendingInteraction:void 0}:s})}))},p=(e,t)=>{const n=t().currentSessionRef;n&&e.sessionId===n.sessionId&&e.projectPath===n.projectPath&&t().resyncSessionMessages(n)},Pt=(e,t)=>{const{currentSessionId:n,currentSessionRef:a,endAgentResponse:o}=t();e.sessionId!==n||!a||e.projectPath!==a.projectPath||(o(),p(e,t))},re=(e,t)=>{const n=t().currentSessionRef;!n||e.sessionId!==n.sessionId||e.projectPath!==n.projectPath||t().endAgentResponse()},Mt=(e,t,n)=>{const{currentSessionId:a,currentSessionRef:o,endAgentResponse:u}=t();if(e.sessionId!==a)return;const s=e.taskFailure&&typeof e.taskFailure=="object"&&!Array.isArray(e.taskFailure)?e.taskFailure:void 0,i=Re(s==null?void 0:s.code);n({agentPhase:"error",error:e.error||"An error occurred",errorContext:{kind:"execution",...o?{sessionRef:o}:{},...i?{failureCode:i}:{}}}),u(),p(e,t)},Rt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId===a)if(e.status==="idle")n({isStreaming:!1,isStopping:!1,agentPhase:"idle",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0});else if(e.status==="queued"||e.status==="running"||e.status==="waiting_permission"){const o=typeof e.queued=="number"?Math.max(0,e.queued):0;n({isStreaming:!0,agentPhase:e.status==="waiting_permission"?"waiting_permission":"running",currentRunId:typeof e.runId=="string"?e.runId:t().currentRunId,pendingSteeringCount:o,pendingInputDelivery:o>0&&(e.pendingInputDelivery==="current_turn"||e.pendingInputDelivery==="next_turn")?e.pendingInputDelivery:null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})}else e.status==="error"&&n({isStreaming:!1,isStopping:!1,agentPhase:"error",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null})},xt=(e,t,n)=>{const{currentSessionId:a,endAgentResponse:o,messages:u,updateSubagent:s}=t();if(e.sessionId===a){n(i=>({isStreaming:!1,agentPhase:"idle",messages:i.messages.map(r=>{var c;const d=(c=r.agentContent)==null?void 0:c.elicitation;return(d==null?void 0:d.status)!=="pending"||!r.agentContent?r:{...r,agentContent:{...r.agentContent,elicitation:{...d,status:"cancelled"}}}})}));for(const i of u)for(const r of N(i.agentContent))r.status==="running"&&s(i.id,r.id,{status:"failed"});o(),p(e,t)}},Se=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"current_turn"})},he=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"next_turn"})},Dt=(e,t,n)=>{if(typeof e.childSessionId=="string"){const a={...e,subagentSessionId:e.childSessionId,success:e.status==="completed"};b(t().messages,e.childSessionId,t().currentAssistantMessageId)?W(a,t):je(e.childSessionId,a,n)}e.delivery==="current_turn"?Se(e,t,n):he(e,t,n)},wt=(e,t,n)=>{if(e.sessionId!==t().currentSessionId)return;const a=typeof e.queued=="number"?Math.max(0,e.queued):0;n({pendingSteeringCount:a,pendingInputDelivery:a>0?t().pendingInputDelivery:null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})},jt=(e,t,n)=>{if(e.sessionId!==t().currentSessionId)return;const a=typeof e.queued=="number"?Math.max(0,e.queued):0;n({agentPhase:"running",pendingSteeringCount:a,pendingInputDelivery:a>0?"current_turn":null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})},_t=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??null})},qt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:null})},Ft=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??t().goal,isStreaming:!0,agentPhase:"running"})},Ot=(e,t,n)=>{if(e.sessionId!==t().currentSessionId||!Array.isArray(e.messages))return;const a=Date.now(),o=e.messages.flatMap((u,s)=>{if(typeof u!="object"||u===null)return[];const i=u;return!["user","assistant","system","tool"].includes(String(i.role))||!Array.isArray(i.content)&&typeof i.content!="string"?[]:[{id:`rewind-${s}-${a}`,role:i.role,content:i.content,timestamp:a+s,metadata:typeof i.metadata=="object"&&i.metadata!==null?i.metadata:void 0,thinkingContent:typeof i.thinkingContent=="string"?i.thinkingContent:typeof i.reasoningContent=="string"?i.reasoningContent:void 0,tool_call_id:typeof i.tool_call_id=="string"?i.tool_call_id:void 0,name:typeof i.name=="string"?i.name:void 0,tool_calls:i.tool_calls}]});n({messages:Pe(o),isStreaming:!1,isStopping:!1,agentPhase:"idle",providerAdmission:null,providerCircuit:null,providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0,currentAssistantMessageId:null,hasToolCalls:!1})},Et=(e,t,n)=>{const a=t().currentSessionRef;if(!a||e.sessionId!==a.sessionId||e.projectPath!==a.projectPath)return;const o=e.status,u=o==="completed"||o==="stale"?"completed":o==="aborted"?"cancelled":o==="interrupted"?"interrupted":"failed";n(s=>({sessions:s.sessions.map(i=>i.sessionId===a.sessionId&&i.projectPath===a.projectPath?{...i,taskStatus:u,taskStatusReason:void 0,taskFailure:void 0,taskCompletedAt:new Date().toISOString()}:i)})),t().selectSession(a)},Vt=(e,t,n)=>{ge({...e,messageId:`review-${String(e.reviewId??"active")}`,arguments:"{}"},t,n)},Kt=(e,t,n)=>{fe(e,t)},Ut=(e,t,n)=>{Ie(e,t,n)},j={"message.created":_e,"message.delta":qe,"message.complete":Fe,"structured.output":Oe,"thinking.delta":Ee,"thinking.completed":Ve,"tool.start":ge,"tool.progress":fe,"tool.result":Ie,"mcp.catalog.changed":Ke,"mcp.content.changed":Ue,"mcp.resource.updated":Be,"mcp.connection.changed":Je,"mcp.log":Le,"mcp.instructions.changed":He,"mcp.task.changed":Ge,"project.rules.loaded":Qe,"user.shell.started":ze,"user.shell.output":We,"user.shell.completed":pe,"token.usage":Ye,"task.updated":Xe,"subagent.start":Ze,"subagent.update":et,"subagent.delta":tt,"subagent.thinking.delta":nt,"subagent.tool.start":st,"subagent.tool.progress":ot,"subagent.tool.result":it,"subagent.mcp.catalog.changed":at,"subagent.mcp.content.changed":rt,"subagent.mcp.resource.updated":ut,"subagent.mcp.connection.changed":dt,"subagent.mcp.log":lt,"subagent.mcp.instructions.changed":ct,"subagent.mcp.task.changed":gt,"subagent.project.rules.loaded":mt,"subagent.complete":W,"subagent.completion.queued":Dt,"permission.asked":ft,"permission.timeout":It,"turn.started":ae,"committed.turn_started":ae,"committed.turn_completed":re,"committed.turn_aborted":re,"provider.admission":Ct,"provider.circuit":bt,"provider.retry":vt,"provider.stall":At,"action.stationarity":kt,"compaction.started":St,"compaction.completed":ht,"model.fallback":yt,"question.required":Tt,"elicitation.required":$t,"interaction.resolved":Nt,"session.completed":Pt,"session.error":Mt,"session.status":Rt,"run.cancelled":xt,"steering.queued":Se,"follow_up.queued":he,"follow_up.started":jt,"steering.applied":wt,"goal.updated":_t,"goal.cleared":qt,"goal.continuation.started":Ft,"session.rewound":Ot,"review.tool.started":Vt,"review.tool.progress":Kt,"review.tool.completed":Ut,"review.completed":Et},Bt=new Set(["message.complete","thinking.completed","session.completed","session.error","run.cancelled","committed.turn_completed","committed.turn_aborted"]),Gt=(e,t)=>n=>{const a=e().currentSessionRef,o=n.properties;if(!a||o.sessionId!==a.sessionId||o.projectPath!==a.projectPath)return;if(Bt.has(n.type)){$.drainAll();const s=j[n.type];s&&s(n.properties,e,t);return}if(n.type==="tool.start"&&$.drainAll(),n.type==="message.delta"){const{currentSessionId:s,currentAssistantMessageId:i,hasToolCalls:r}=e();if(o.sessionId!==s)return;const d=o.messageId||i,c=o.delta;if(!i){const I=j["message.delta"];I&&I(o,e,t);return}const l=r?"after":"before",g=`content:${d}:${l}`;$.drainAllExcept(g),$.append(g,c,I=>{const{appendDelta:m}=e();d&&m(d,I,l)});return}if(n.type==="thinking.delta"){const{currentSessionId:s,currentAssistantMessageId:i}=e();if(o.sessionId!==s)return;if(!i){const l=j["thinking.delta"];l&&l(o,e,t);return}const r=o.delta,d=o.messageId||i,c=`thinking:${d}`;$.drainAllExcept(c),$.append(c,r,l=>{const{appendThinking:g}=e();d&&g(d,l)});return}if(n.type==="subagent.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,output:(f.output||"")+I}))});return}if(n.type==="subagent.thinking.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent-thinking:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,thinking:(f.thinking||"")+I}))});return}const u=j[n.type];u&&u(n.properties,e,t)};export{ve as a,oe as b,P as c,be as d,Pe as e,Gt as f,N as g,$ as h,Re as i,Ht as j,Ae as k,_ as l,Lt as t,ue as u,B as w};
@@ -5,11 +5,11 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>BladeCode</title>
8
- <script type="module" crossorigin src="/assets/index-CthLsVgC.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-Bz4W1-8a.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DG5dkZ_t.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/vendor-radix-DXRuAJHH.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/vendor-icons-ICv1v-tf.js">
12
- <link rel="modulepreload" crossorigin href="/assets/session-events-109FkhOM.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/session-events-DJh6SZcl.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/index-7zaeanZL.css">
14
14
  </head>
15
15
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blade-code",
3
- "version": "0.10.41",
3
+ "version": "0.10.43",
4
4
  "private": false,
5
5
  "description": "🗡️ Blade Code - 智能代码助手命令行工具",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{f as a,g as i,h as l,i as m}from"./chunk-w1vcjwbx.js";import"./chunk-t80e2bms.js";import"./chunk-5zf8204m.js";import"./chunk-yxwargqc.js";import"./chunk-nsawkccy.js";import"./chunk-wk0vpgwk.js";import"./chunk-wvc6bx0t.js";import"./chunk-v80xem15.js";import"./chunk-adgx9vd7.js";import"./chunk-5cgyevqj.js";import"./chunk-zracmha2.js";import"./chunk-qgez5vw6.js";import"./chunk-bdxaz350.js";import{$c as n}from"./chunk-hjkdc185.js";import"./chunk-y30kw6gj.js";import{vd as s}from"./chunk-27w2k6t7.js";import"./chunk-v508x7cg.js";import"./chunk-atsw605q.js";import"./chunk-d61673v7.js";import"./chunk-4ekrbk2w.js";import"./chunk-fxw1q5j5.js";import"./chunk-yhw0pvyt.js";import"./chunk-6dma8han.js";import"./chunk-n0ebpwxd.js";import"./chunk-01jt0mpr.js";import"./chunk-ens8nsge.js";import"./chunk-f4bx2n1y.js";import"./chunk-tsskar00.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";import v from"chalk";var C={command:"serve",describe:"Start a headless Blade server (no browser)",builder:a,handler:async(p)=>{let r=i(p);if(await s(),!process.env.BLADE_SERVER_PASSWORD)console.log(v.yellow("Warning: BLADE_SERVER_PASSWORD is not set; server is unsecured."));let e=await m.listenAsync(r);if(console.log(`Blade server listening on http://${e.hostname}:${e.port}`),r.hostname==="0.0.0.0"){let o=l();for(let g of o)console.log(` Network: http://${g}:${e.port}`)}let t,c=new Promise((o)=>{t=o}),d=n(async()=>{await e.stop(),t()});try{await c}finally{d(),await e.stop()}}};export{C as serveCommand};
@@ -1 +0,0 @@
1
- import{$a as a,ab as b,cb as c,gb as d,hb as e,ib as f,jb as g,kb as h,lb as i,mb as j,nb as k,sb as l,tb as m,ub as n,vb as o,xb as p,yb as q,zb as r}from"./chunk-adgx9vd7.js";import"./chunk-5cgyevqj.js";import"./chunk-zracmha2.js";import"./chunk-qgez5vw6.js";import"./chunk-bdxaz350.js";import"./chunk-atsw605q.js";import"./chunk-d61673v7.js";import"./chunk-fxw1q5j5.js";import"./chunk-n0ebpwxd.js";import"./chunk-01jt0mpr.js";import"./chunk-f4bx2n1y.js";import"./chunk-tsskar00.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{g as saveUserMessage,i as saveToolUse,j as saveToolResult,k as saveCompaction,h as saveAssistantMessage,d as isRootSystemPrompt,m as handleTaskListUpdate,n as handleSkillActivation,o as extractModelSwitch,r as executeLoopGenerator,f as drainLoop,c as checkStopHook,a as checkOutputRecovery,b as checkIncompleteIntent,q as checkAndCompactInLoop,p as applyToolDomainEffects,l as StreamingToolExecutor,e as ConversationState};
@@ -1 +0,0 @@
1
- import{Ad as l,Bd as m,Cd as n,Dd as o,Ed as p,Fd as q,pd as a,qd as b,rd as c,sd as d,td as e,ud as f,vd as g,wd as h,xd as i,yd as j,zd as k}from"./chunk-27w2k6t7.js";import"./chunk-v508x7cg.js";import"./chunk-atsw605q.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{a as vanillaStore,c as sessionActions,l as getThinkingModeEnabled,b as getState,n as getServiceTier,o as getResponseVerbosity,m as getReasoningEffort,j as getModelById,e as getMessages,k as getMcpServers,i as getCurrentModel,f as getConfig,p as getCommunicationStyle,h as getAllModels,g as ensureStoreInitialized,q as configActions,d as appActions};
@@ -1,22 +0,0 @@
1
- import{s as T}from"./chunk-yxwargqc.js";import{t as Gz,u as t,v as e,w as zz,x as Hz,y as Jz}from"./chunk-nsawkccy.js";import{C as P,L as a,O as o,P as n,S as s,ea as Qz,fa as Zz,ga as $z,ha as Dz}from"./chunk-wk0vpgwk.js";import{ra as jz}from"./chunk-wvc6bx0t.js";import"./chunk-v80xem15.js";import{Va as l,ib as i,rb as r}from"./chunk-adgx9vd7.js";import{Ab as h}from"./chunk-5cgyevqj.js";import{Tb as c,_b as p,bc as d,jc as S,kc as m,mc as q,pc as v,uc as N,xc as _}from"./chunk-zracmha2.js";import"./chunk-qgez5vw6.js";import"./chunk-bdxaz350.js";import{$c as Vz}from"./chunk-hjkdc185.js";import"./chunk-y30kw6gj.js";import"./chunk-27w2k6t7.js";import"./chunk-v508x7cg.js";import{Gd as Bz}from"./chunk-atsw605q.js";import"./chunk-d61673v7.js";import"./chunk-4ekrbk2w.js";import{Sd as Uz}from"./chunk-fxw1q5j5.js";import"./chunk-yhw0pvyt.js";import"./chunk-6dma8han.js";import"./chunk-n0ebpwxd.js";import{xe as _z}from"./chunk-01jt0mpr.js";import"./chunk-ens8nsge.js";import"./chunk-f4bx2n1y.js";import"./chunk-tsskar00.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import{If as y,Jf as g,Kf as I}from"./chunk-atdeg922.js";import{Of as Yz}from"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import{ng as x}from"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import{ug as Fz,xg as Lz}from"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";import{Readable as qz,Writable as Tz}from"node:stream";import*as b from"@agentclientprotocol/sdk";import Xz from"node:path";import{PROTOCOL_VERSION as Ez}from"@agentclientprotocol/sdk";import{RequestError as Kz}from"@agentclientprotocol/sdk";import{nanoid as M}from"nanoid";var B=x("Agent");function u(z){if(!z)return{};return Object.fromEntries(z.map((J)=>[J.name,J.value]))}function Rz(z){if("command"in z)return{type:"stdio",command:z.command,args:z.args,env:u(z.env)};if("url"in z)return{type:z.type,url:z.url,headers:u("headers"in z?z.headers:void 0)};return null}function Nz(z){let J={};for(let H of z){let D=Rz(H);if(D)J[H.name]=D}return J}function Wz(z){if(typeof z==="string")return z?[{type:"text",text:z}]:[];return z.flatMap((J)=>{if(J.type==="text")return J.text?[{type:"text",text:J.text}]:[];let H=J.image_url.url,D=/^data:([^;,]+);base64,(.+)$/s.exec(H);if(!D)return[{type:"text",text:"[Image]"}];return[{type:"image",mimeType:D[1]??"image/png",data:D[2]??""}]})}function Oz(z){let J=m(z.metadata);return J?[{type:"text",text:S(J)}]:Wz(z.content)}function Pz(z){return[`Status: ${z.status}`,`Exit code: ${z.exitCode??"null"}`,`Duration: ${(z.durationMs/1000).toFixed(3)} seconds`].join(`
2
- `)}class E{id;cwd;connection;clientCapabilities;options;agent=null;runtime=null;pendingPrompt=null;pendingPromptCompletion=null;pendingUserShell=null;pendingUserShellCompletion=null;pendingResumeRequested=!1;availableCommandsTimer=null;taskStatusUnsubscribe;destroyed=!1;destroyFinished=!1;destroyPromise;messages;contextMessages;mode;updateEgress;constructor(z,J,H,D,W={}){this.id=z;this.cwd=J;this.connection=H;this.clientCapabilities=D;this.options=W;this.messages=[...W.initialMessages??[]],this.contextMessages=[...this.messages],this.mode=this.mapPermissionModeToMode(W.permissionMode),this.updateEgress=new Jz({maxPendingItems:t,maxPendingBytes:e,writeTimeoutMs:zz,signal:H.signal,sizeOf:(Z)=>Buffer.byteLength(JSON.stringify(Z)),write:async(Z)=>{await H.sessionUpdate(Z)},onFailure:(Z)=>this.handleUpdateEgressFailure(Z)})}async refreshPersistedMessages(){let[z,J]=await Promise.all([_.loadSession(this.id,this.cwd),_.loadSessionModelContext(this.id,this.cwd)]);if(z.length>0)this.messages=z;if(J.length>0)this.contextMessages=J}async loadModelContextOr(z){let J=await _.loadSessionModelContext(this.id,this.cwd);return J.length>0?J:[...z]}mapPermissionModeToMode(z){switch(z){case"yolo":return"yolo";case"autoEdit":return"auto-edit";case"plan":return"plan";case"default":default:return"default"}}createAgent(){if(!this.runtime)throw Error("Session runtime is unavailable");return s.createWithRuntime(this.runtime,{sessionId:this.id,...this.options.taskWorktree?{toolBlacklist:["EnterWorktree","ExitWorktree"]}:{}})}async initialize(){if(B.debug(`[AcpSession ${this.id}] Initializing...`),await _.setSessionPermissionMode(this.id,this.cwd,this.mapModeToPermissionMode()??"default"),P.initializeSession(this.connection,this.id,this.clientCapabilities,this.cwd,async(Z)=>{await this.sendUpdateAndWait(Z)}),B.debug(`[AcpSession ${this.id}] ACP service context initialized`),await r.resolvePendingWithHandler(this.cwd,this.id,{requestConfirmation:(Z)=>this.requestPermission(Z)}))await this.refreshPersistedMessages();else if((this.options.initialMessages?.length??0)>0)this.contextMessages=await this.loadModelContextOr(this.options.initialMessages??[]);let J=this.options.mcpServers?Nz(this.options.mcpServers):void 0,H=P.getInstance().getTerminalService(this.id);if(this.runtime=await a.create({sessionId:this.id,workspaceRoot:this.cwd,permissionMode:this.mapModeToPermissionMode(),...J?{mcpServers:J}:{},...this.options.taskWorktree?{taskWorktree:this.options.taskWorktree}:{},...this.options.taskIsolation?{taskIsolation:this.options.taskIsolation}:{},userShellExecutor:{execute:async(Z,$)=>{let X=await H.execute(Z,{cwd:$.cwd,env:$.env,timeout:$.timeoutMs,signal:$.signal,allowLocalFallback:!1,onOutput:(Y)=>$.onOutput?.("stdout",Y)});return{exitCode:X.exitCode,stdout:X.stdout,stderr:X.stderr,...X.error?{error:X.error}:{},timedOut:X.failureKind==="timeout",aborted:X.failureKind==="aborted"}}},...(this.options.initialMessages?.length??0)>0?{sessionStart:{isResume:!0,resumeSessionId:this.id}}:{}}),await T.recoverInterrupted(this.cwd,this.id,this.runtime))await this.refreshPersistedMessages();this.agent=await this.createAgent(),await Zz(this.cwd),B.debug(`[AcpSession ${this.id}] Agent created successfully`),this.taskStatusUnsubscribe?.(),this.taskStatusUnsubscribe=l.subscribe((Z)=>{if(Z.sessionId!==this.id||Z.projectPath!==this.cwd)return;if(Z.type==="subagent.completion.queued"){this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/backgroundSubagentCompletion":Z.properties}}),this.schedulePendingResume();return}if(Z.type==="task.delivery"){if(!Z.properties.taskDelivery||typeof Z.properties.taskDelivery!=="object")return;this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:typeof Z.properties.updatedAt==="string"?Z.properties.updatedAt:new Date().toISOString(),_meta:{"blade/taskDelivery":Z.properties.taskDelivery,...Z.properties.taskWorktreeRemoved===!0?{"blade/taskWorktreeRemoved":!0}:{}}});return}if(Z.type!=="task.status")return;this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:typeof Z.properties.updatedAt==="string"?Z.properties.updatedAt:new Date().toISOString(),_meta:{"blade/taskStatus":Z.properties.taskStatus,...typeof Z.properties.taskStatusReason==="string"?{"blade/taskStatusReason":Z.properties.taskStatusReason}:{},...Z.properties.taskFailure&&typeof Z.properties.taskFailure==="object"?{"blade/taskFailure":Z.properties.taskFailure}:{},...typeof Z.properties.taskStartedAt==="string"?{"blade/taskStartedAt":Z.properties.taskStartedAt}:{},...typeof Z.properties.taskCompletedAt==="string"?{"blade/taskCompletedAt":Z.properties.taskCompletedAt}:{},...Z.properties.taskDiffStat&&typeof Z.properties.taskDiffStat==="object"?{"blade/taskDiffStat":Z.properties.taskDiffStat}:{},...typeof Z.properties.taskQueuePosition==="number"?{"blade/taskQueuePosition":Z.properties.taskQueuePosition}:{},...typeof Z.properties.taskQueueDepth==="number"?{"blade/taskQueueDepth":Z.properties.taskQueueDepth}:{},...typeof Z.properties.taskConcurrencyLimit==="number"?{"blade/taskConcurrencyLimit":Z.properties.taskConcurrencyLimit}:{},...typeof Z.properties.taskInFlight==="number"?{"blade/taskInFlight":Z.properties.taskInFlight}:{}}})});let W=await this.runtime.getGoal();if(this.runtime.getPendingSteeringCount()>0||W?.status==="active"||W?.status==="verifying")if(this.options.initialMessages===void 0)this.schedulePendingResume();else this.pendingResumeRequested=!0}async replayHistory(){for(let J of this.messages){if(!this.canSendUpdates())return;let H=J.role==="user"?"user_message_chunk":J.role==="assistant"?"agent_message_chunk":void 0;if(!H)continue;for(let D of Oz(J)){if(!this.canSendUpdates())return;if(!await this.sendUpdateAndWait({sessionUpdate:H,content:D}))return}}let z=await this.runtime?.getGoal();if(z&&!await this.sendUpdateAndWait(this.goalSessionUpdate(z)))return;if(this.pendingResumeRequested)this.schedulePendingResume()}sendAvailableCommandsDelayed(){if(this.destroyed||this.connection.signal.aborted)return;if(this.availableCommandsTimer!==null)clearTimeout(this.availableCommandsTimer);B.debug(`[AcpSession ${this.id}] Scheduling available commands update (500ms delay)`),this.availableCommandsTimer=setTimeout(()=>{if(this.availableCommandsTimer=null,this.destroyed||this.connection.signal.aborted)return;this.sendAvailableCommands()},500)}async handleSlashCommand(z,J){try{B.debug(`[AcpSession ${this.id}] Executing slash command: ${z}`);let H={cwd:this.cwd,surface:"acp",workspaceRoot:this.cwd,sessionId:this.id,messages:[...this.contextMessages],rewind:{listCheckpoints:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.listRewindCheckpoints()},execute:async($)=>{if(!this.runtime)throw Error("Session runtime is unavailable");let X=await this.runtime.rewindSession($);return this.messages=[...X.messages],this.contextMessages=await this.loadModelContextOr(X.messages),await this.agent?.destroy(),this.agent=await this.createAgent(),X}},reasoning:{get:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getReasoningConfiguration()},set:async($)=>{if(await this.setReasoningEffort($),!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getReasoningConfiguration()}},serviceTier:{get:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getServiceTierConfiguration()},set:async($)=>{if(await this.setServiceTier($),!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getServiceTierConfiguration()}},responseVerbosity:{get:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getResponseVerbosityConfiguration()},set:async($)=>{if(await this.setResponseVerbosity($),!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getResponseVerbosityConfiguration()}},communicationStyle:{get:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getCommunicationStyleConfiguration()},set:async($)=>{if(await this.setCommunicationStyle($),!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getCommunicationStyleConfiguration()}},subagents:{list:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.listSubagents()},resume:async($,X)=>{if(!this.runtime)throw Error("Session runtime is unavailable");let Y=!1,F,U=(j)=>{this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:j.id,status:j.status==="completed"?"completed":"failed",content:[{type:"content",content:{type:"text",text:j.result?.message||j.result?.error||`Subagent ${j.status}`}}]})},L=this.runtime.resumeSubagent({agentId:$,prompt:X,onCompleted:(j)=>{if(Y)U(j);else F=j}});if(this.sendUpdate({sessionUpdate:"tool_call",toolCallId:L.session.id,status:"in_progress",title:`Resuming ${L.session.subagentType} subagent`,content:[{type:"content",content:{type:"text",text:`Resumed from ${L.source.id} at depth ${L.session.resumeDepth}`}}],kind:this.mapToolKind("readonly")}),Y=!0,F)U(F);return L}},mcp:{getCatalog:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getMcpContentCatalog()},refresh:async($)=>{if(!this.runtime)throw Error("Session runtime is unavailable");await this.runtime.refreshMcpContentCatalogs($)},getPrompt:async($,X,Y)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getMcpPrompt($,X,Y)},complete:async($,X,Y)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.completeMcpArgument($,X,Y)},listTasks:async($)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.listMcpTasks($)},getTask:async($)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getMcpTask($)},cancelTask:async($,X)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.cancelMcpTask($,X)},getLogs:async($,X)=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getMcpLogs($,X)},setLoggingLevel:async($,X)=>{if(!this.runtime)throw Error("Session runtime is unavailable");await this.runtime.setMcpLoggingLevel($,X)},getInstructions:async()=>{if(!this.runtime)throw Error("Session runtime is unavailable");return this.runtime.getMcpInstructions()}},codeReview:{run:async($,X)=>{if(!this.runtime)throw Error("Session runtime is unavailable");let Y=await T.start({sessionId:this.id,projectPath:this.cwd,runtime:this.runtime,request:$,signal:X,onEvent:(L)=>{if(L.kind==="tool_start")this.sendUpdate({sessionUpdate:"tool_call",toolCallId:L.toolCall.id,status:"in_progress",title:`Review: ${L.toolCall.function.name}`,content:[],kind:this.mapToolKind(L.toolKind)});else if(L.kind==="tool_result")this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:L.toolCall.id,status:L.result.success?"completed":"failed",content:[]})}}),F=await Y.completion,U=(await T.list(this.cwd,this.id)).find((L)=>L.start.reviewId===Y.reviewId);if(!U)throw Error(`Review not found: ${Y.reviewId}`);return await this.refreshPersistedMessages(),{reviewId:Y.reviewId,status:F.status,findings:F.findings.length,content:c(U.start,F)}}},signal:J,acp:{sendMessage:($)=>{this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:$}})},sendToolStart:($,X,Y)=>{let F=`tool_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,U=this.mapToolKind(Y);this.sendUpdate({sessionUpdate:"tool_call",toolCallId:F,status:"in_progress",title:`${$}`,content:[{type:"content",content:{type:"text",text:JSON.stringify(X,null,2)}}],kind:U})},sendToolResult:($,X)=>{if(X.summary)this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:X.summary}})}}},D=await $z(z,H),W=D.data?.action;if(W==="start_goal"||W==="resume_goal")this.schedulePendingResume();if(W==="rewind_session"&&Array.isArray(D.data?.messages))this.messages=[...D.data.messages],this.contextMessages=await this.loadModelContextOr(D.data.messages);if((D.message==="compact_completed"||D.message==="compact_fallback")&&D.data?.compactedMessages){this.contextMessages=[...D.data.compactedMessages];let $=await _.loadSession(this.id,this.cwd);if($.length>0)this.messages=$}let Z=D.content||D.message;if(Z)this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:Z}});if(D.error)this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[FAIL] ${D.error}`}});return await this.flushUpdates(),{stopReason:D.success?"end_turn":"cancelled"}}catch(H){return B.error(`[AcpSession ${this.id}] Slash command error:`,H),this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[FAIL] 命令执行失败: ${H instanceof Error?H.message:"未知错误"}`}}),{stopReason:"cancelled"}}}async sendAvailableCommands(){try{let z=Dz(this.cwd),J=["model","permissions","theme","config","exit","ide"],D=z.filter((W)=>!J.includes(W.name)).map((W)=>{let Z;if(W.usage){let $=W.usage.replace(/^\/\w+\s*/,"").trim();if($)Z=$}if(W.aliases?.length){let $=`Aliases: ${W.aliases.join(", ")}`;Z=Z?`${Z} | ${$}`:$}return{name:W.name,description:W.description,input:Z?{hint:Z}:void 0}});B.info(`[AcpSession ${this.id}] Sending available commands: ${JSON.stringify(D.map((W)=>W.name))}`),this.sendUpdate({sessionUpdate:"available_commands_update",availableCommands:D}),B.info(`[AcpSession ${this.id}] Sent ${D.length} available commands`)}catch(z){B.error(`[AcpSession ${this.id}] Failed to send available commands:`,z)}}async prompt(z,J={}){if(P.setCurrentSession(this.id),!this.agent||!this.runtime)throw Error("Session not initialized");let H=this.resolvePrompt(z.prompt),D=H.content,W=H.displayText,Z=z._meta?.outputSchema??(J.pendingInputOnly?this.runtime.getPendingSteeringMessages().find((L)=>L.outputSchema)?.outputSchema:void 0),$;if(Z!==void 0)$=v(Z).schema;if(W.trimStart().startsWith("!")){if($)throw Error("Output schemas cannot be combined with user shell commands");return this.handleUserShellCommand(W)}if(this.pendingPrompt){if($)throw Error("Wait for the active turn to finish before setting an output schema");if(/^\/goal(?:\s|$)/i.test(W.trim()))return this.handleSlashCommand(W,this.pendingPrompt.signal);let L=await this.runtime.enqueueSteering(D,{allowBeforeTurn:!0});if(!L.accepted)throw Error(L.reason==="queue_full"?"Active turn steering queue is full":"Active turn is no longer steerable");if(B.debug(`[AcpSession ${this.id}] Queued steering for active turn (${L.queued})`),L.delivery==="next_turn")this.schedulePendingResume();return{stopReason:"end_turn"}}let X=new AbortController,Y=!1,F,U=new Promise((L)=>{F=L});this.pendingPrompt=X,this.pendingPromptCompletion=U;try{if(B.debug(`[AcpSession ${this.id}] Received prompt: ${W.slice(0,100)}...`),Qz(W)){if($)throw Error("Output schemas cannot be combined with slash commands");return await this.handleSlashCommand(W,X.signal)}let L={sessionId:this.id,userId:"acp-user",workspaceRoot:this.cwd,messages:[...this.contextMessages],signal:X.signal,permissionMode:this.mapModeToPermissionMode(),onPermissionModeChange:async(Q)=>{this.mode=this.mapPermissionModeToMode(Q),this.sendUpdate({sessionUpdate:"current_mode_update",currentModeId:this.mode})},...this.options.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:{requestConfirmation:async(Q)=>{return this.requestPermission(Q)}}},j=await i(this.agent.chatStream(D,L,{pendingInputOnly:J.pendingInputOnly,goalContinuationOnly:J.goalContinuationOnly,outputSchema:$}),async(Q)=>{switch(Q.kind){case"content_delta":if($)break;this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:Q.delta}});break;case"thinking_delta":this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:Q.delta}});break;case"tool_start":{let V=Q.toolCall,K=V.function.name;if(K===q)break;let R=this.mapToolKind(Q.toolKind),G=`Executing ${K}`;if(K==="Task"&&"function"in V)try{let O=JSON.parse(V.function.arguments),w=O.resume_from??O.resume;if(typeof w==="string")G=`Resuming ${String(O.subagent_type||"subagent")} from ${w}`}catch{}this.sendUpdate({sessionUpdate:"tool_call",toolCallId:V.id,status:"in_progress",title:G,content:[],kind:R});break}case"tool_progress":{let V=Q.toolCall;if(V.function.name===q)break;this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:V.id,status:"in_progress",content:[{type:"content",content:{type:"text",text:Q.update.message}}]});break}case"tool_result":{let V=Q.toolCall;if(V.function.name===q)break;let K=Q.result,R=[],G=K.metadata;if(G?.kind==="patch"&&Array.isArray(G.changes))for(let w of G.changes){if(!w||typeof w!=="object"||!("path"in w)||typeof w.path!=="string")continue;R.push({type:"diff",path:w.path,oldText:"oldContent"in w&&typeof w.oldContent==="string"?w.oldContent:null,newText:"newContent"in w&&typeof w.newContent==="string"?w.newContent:null})}else if(G?.kind==="edit"&&typeof G.file_path==="string"&&typeof G.oldContent==="string"&&(typeof G.newContent==="string"||G.newContent===void 0))R.push({type:"diff",path:G.file_path,oldText:G.oldContent,newText:G.newContent??null});else{let w=V.function.name,wz=n(d(o(w,K),p));R.push({type:"content",content:{type:"text",text:wz}})}if(V.function.name==="Task"&&(G?.verificationVerdict==="pass"||G?.verificationVerdict==="fail"||G?.verificationVerdict==="partial"))R.unshift({type:"content",content:{type:"text",text:`Verification result: ${G.verificationVerdict.toUpperCase()}`}});let O=K.success?"completed":"failed";this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:V.id,status:O,content:R});break}case"structured_output":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:JSON.stringify(Q.output)}});break;case"mcp_catalog_changed":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP catalog r${Q.revision} (${Q.serverName}): +${Q.added.length} -${Q.removed.length} ~${Q.updated.length}
3
- `}});break;case"mcp_content_changed":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP ${Q.contentKind} r${Q.revision} (${Q.serverName}): +${Q.added.length} -${Q.removed.length} ~${Q.updated.length}
4
- `}});break;case"mcp_resource_updated":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP resource updated r${Q.revision} (${Q.serverName}): ${Q.uri}
5
- `}});break;case"mcp_connection_changed":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP connection r${Q.revision} (${Q.serverName}): ${Q.phase} ${Q.attempt}/${Q.maxAttempts}
6
- `}});break;case"mcp_log":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP log r${Q.revision} (${Q.serverName}) ${Q.level}${Q.logger?` logger=${Q.logger}`:""}: ${Q.message}
7
- `}});break;case"mcp_instructions_changed":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP instructions r${Q.revision} (${Q.serverName}): ${Q.action}${Q.detailsOmitted?" details-omitted":""}
8
- `}});break;case"mcp_task_changed":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`MCP task r${Q.revision} ${Q.taskId} (${Q.serverName}/${Q.toolName}): ${Q.status}${Q.hasResult?" result-available":""}
9
- `}});break;case"project_rules_loaded":this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`Project rules loaded: ${Q.files.length}${Q.blockedWrite?" (write retry required)":""}
10
- `}});break;case"provider_admission":Y=Q.phase!=="admitted",this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/providerAdmission":Q.phase!=="admitted"?{phase:Q.phase,requestClass:Q.requestClass,resource:Q.resource,scope:Q.scope,...Q.reason!==void 0?{reason:Q.reason}:{},queuePosition:Q.queuePosition,queueDepth:Q.queueDepth,inFlight:Q.inFlight,limit:Q.limit,waitMs:Q.waitMs,maxWaitMs:Q.maxWaitMs,...Q.recoveryRemainingMs!==void 0?{recoveryRemainingMs:Q.recoveryRemainingMs}:{}}:null}});break;case"provider_circuit":this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/providerCircuit":{phase:Q.phase,reason:Q.reason,...Q.statusCode!==void 0?{statusCode:Q.statusCode}:{},...Q.retryAfterMs!==void 0?{retryAfterMs:Q.retryAfterMs}:{},...Q.nextProbeAt!==void 0?{nextProbeAt:Q.nextProbeAt}:{},openDurationMs:Q.openDurationMs,...Q.sampleCount!==void 0?{sampleCount:Q.sampleCount}:{},...Q.failureCount!==void 0?{failureCount:Q.failureCount}:{},...Q.recoveryRemainingMs!==void 0?{recoveryRemainingMs:Q.recoveryRemainingMs}:{}}}});break;case"provider_retry":this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/providerRetry":{phase:Q.phase,attempt:Q.attempt,maxRetries:Q.maxRetries,reason:Q.reason,...Q.statusCode!==void 0?{statusCode:Q.statusCode}:{},...Q.delayMs!==void 0?{delayMs:Q.delayMs}:{},...Q.nextRetryAt!==void 0?{nextRetryAt:Q.nextRetryAt}:{},...Q.mode!==void 0?{mode:Q.mode}:{},...Q.recoveryBudgetMs!==void 0?{recoveryBudgetMs:Q.recoveryBudgetMs}:{},...Q.recoveryElapsedMs!==void 0?{recoveryElapsedMs:Q.recoveryElapsedMs}:{},...Q.recoveryRemainingMs!==void 0?{recoveryRemainingMs:Q.recoveryRemainingMs}:{},...Q.exhaustedBy!==void 0?{exhaustedBy:Q.exhaustedBy}:{}}}});break;case"provider_stall":this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/providerStall":{phase:Q.phase,stallCount:Q.stallCount,durationMs:Q.durationMs,warningAfterMs:Q.warningAfterMs,timeoutMs:Q.timeoutMs,outputStarted:Q.outputStarted}}});break;case"action_stationarity":this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/actionStationarity":{phase:Q.phase,toolName:Q.toolName,runLength:Q.runLength,nudgeThreshold:Q.nudgeThreshold,haltThreshold:Q.haltThreshold,progressAware:Q.progressAware}}});break;case"task_update":this.sendPlanUpdate(Q.tasks);break;case"steering_applied":break;case"follow_up_started":for(let V of Q.messages){if(!V.recovered||V.persisted)continue;for(let K of Wz(V.content))this.sendUpdate({sessionUpdate:"user_message_chunk",content:K})}if(Q.recovered>0)this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[Resuming ${Q.recovered} queued instruction${Q.recovered===1?"":"s"} recovered after restart]
11
- `}});break;case"goal_updated":if(Q.goal)this.sendUpdate(this.goalSessionUpdate(Q.goal));if(Q.goal&&Q.goal.status!=="active")this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[Goal ${Q.goal.status}: ${Q.goal.objective}]
12
- `}});break;case"goal_continuation_started":break;case"compaction":this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/compaction":{phase:Q.phase,...Q.reason?{reason:Q.reason}:{},...Q.strategy?{strategy:Q.strategy}:{},...Q.outcome?{outcome:Q.outcome}:{},...Q.preTokens!==void 0?{preTokens:Q.preTokens}:{},...Q.postTokens!==void 0?{postTokens:Q.postTokens}:{}}}});break;default:break}if(!await this.flushUpdates())X.abort("acp-egress-failed")});if(!await this.flushUpdates())X.abort("acp-egress-failed");this.contextMessages=[...L.messages];let C=await _.loadSession(this.id,this.cwd);if(this.messages=C.length>0?C:[...L.messages],!j.success){let Q=j.error?.type??"unknown";throw Kz.internalError({failureType:Q},`Agent turn failed (${Q})`)}if(X.signal.aborted)return{stopReason:"cancelled"};let f={...j.metadata?.structuredOutput?{structuredOutput:j.metadata.structuredOutput,outputSchemaDigest:j.metadata.structuredOutputSchemaDigest}:{},...j.metadata?.goalCompletionVerified?{goalCompletion:{verified:!0,verdict:j.metadata.goalVerificationVerdict,...j.metadata.goalVerifierSessionId?{verifierSessionId:j.metadata.goalVerifierSessionId}:{},...j.metadata.goalVerificationEvidenceSha256?{evidenceSha256:j.metadata.goalVerificationEvidenceSha256}:{}}}:{}};return{stopReason:"end_turn",...Object.keys(f).length>0?{_meta:f}:{}}}catch(L){if(X.signal.aborted||L instanceof Error&&L.name==="AbortError")return{stopReason:"cancelled"};throw B.error(`[AcpSession ${this.id}] Prompt error:`,L),L}finally{if(Y&&!this.destroyed)this.sendUpdate({sessionUpdate:"session_info_update",updatedAt:new Date().toISOString(),_meta:{"blade/providerAdmission":null}}),await this.flushUpdates();if(F(),this.pendingPromptCompletion===U)this.pendingPromptCompletion=null;if(this.pendingPrompt===X){if(this.pendingPrompt=null,!this.destroyed&&this.pendingResumeRequested)this.schedulePendingResume()}}}async handleUserShellCommand(z){if(!this.runtime)throw Error("Session runtime is unavailable");if(this.pendingUserShell)throw Error("A user shell command is already running");let J=z.trimStart().slice(1).trim();if(!J)throw Error("User shell command cannot be empty");let H=new AbortController,D,W=new Promise((X)=>{D=X});this.pendingUserShell=H,this.pendingUserShellCompletion=W;let Z,$="";try{let X=await this.runtime.executeUserShellCommand(J,{signal:H.signal,onEvent:async(F)=>{if(Z=F.executionId,F.type==="started"){this.sendUpdate({sessionUpdate:"tool_call",toolCallId:F.executionId,status:"in_progress",title:`! ${F.command}`,content:[],kind:"execute"});return}if(F.type==="output"){$+=F.chunk,this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:F.executionId,status:"in_progress",content:[{type:"content",content:{type:"text",text:F.chunk}}]});return}let U=S(F.record);this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:F.executionId,status:F.record.status==="completed"?"completed":"failed",content:[{type:"content",content:{type:"text",text:$?Pz(F.record):U}}]})}}),Y={role:"user",content:X.modelContent,metadata:{userShellCommand:JSON.parse(JSON.stringify(X.record))}};if(this.messages.push(Y),this.contextMessages.push(Y),X.delivery==="next_turn")this.schedulePendingResume();if(!await this.flushUpdates())return H.abort("acp-egress-failed"),{stopReason:"cancelled"};return{stopReason:X.record.status==="aborted"?"cancelled":"end_turn"}}catch(X){if(Z)this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:Z,status:"failed",content:[{type:"content",content:{type:"text",text:X instanceof Error?X.message:String(X)}}]});if(H.signal.aborted)return{stopReason:"cancelled"};throw X}finally{if(D(),this.pendingUserShellCompletion===W)this.pendingUserShellCompletion=null;if(this.pendingUserShell===H)this.pendingUserShell=null}}schedulePendingResume(){if(this.destroyed||this.connection.signal.aborted)return;this.pendingResumeRequested=!0,queueMicrotask(()=>{this.resumePendingIfIdle()})}async resumePendingIfIdle(){if(this.destroyed||this.connection.signal.aborted)return;if(this.pendingPrompt||this.pendingUserShell||!this.runtime||!this.agent)return;let z=this.runtime.getPendingSteeringCount()>0,J=z?null:await this.runtime.getGoal(),H=J?.status==="active"||J?.status==="verifying";if(!z&&!H){this.pendingResumeRequested=!1;return}this.pendingResumeRequested=!1,await this.prompt({sessionId:this.id,prompt:[]},{pendingInputOnly:z,goalContinuationOnly:H}).catch((D)=>{B.error(`[AcpSession ${this.id}] Failed to resume pending input:`,D)})}cancel(){B.info(`[AcpSession ${this.id}] Cancel requested`),this.pendingResumeRequested=!1;let z=!1;if(this.pendingPrompt)this.pendingPrompt.abort(),this.pendingPrompt=null,z=!0;if(this.pendingUserShell)this.pendingUserShell.abort(),this.pendingUserShell=null,z=!0;if(!z)B.warn(`[AcpSession ${this.id}] No pending prompt to cancel`)}async setMode(z){let H=["default","auto-edit","yolo","plan"].includes(z)?z:"default",D=this.mapModeIdToPermissionMode(H);await _.setSessionPermissionMode(this.id,this.cwd,D),this.mode=H,B.info(`[AcpSession ${this.id}] Mode set to: ${this.mode}`),this.sendUpdate({sessionUpdate:"current_mode_update",currentModeId:this.mode})}mapModeToPermissionMode(){return this.mapModeIdToPermissionMode(this.mode)}mapModeIdToPermissionMode(z){switch(z){case"yolo":return"yolo";case"auto-edit":return"autoEdit";case"plan":return"plan";case"default":default:return"default"}}shouldAutoApprove(z){switch(this.mode){case"yolo":return!0;case"auto-edit":return z==="readonly"||z==="write";case"plan":return z==="readonly";case"default":default:return!1}}async setModel(z){if(B.info(`[AcpSession ${this.id}] Model set to: ${z}`),this.pendingPrompt)throw Error("Cannot switch models while a prompt is active");if(!this.agent)throw Error("Session not initialized");if(!this.runtime)throw Error("Session runtime is unavailable");let J=this.runtime.getCurrentModelId();await this.agent.switchModel(z);try{try{await _.updateSessionMetadata(this.id,this.cwd,{selectedModelId:z})}catch(H){if(!(H instanceof N)&&H.code!=="ENOENT")throw H;await _.createSessionMetadata(this.id,this.cwd,{taskStatus:"completed",selectedModelId:z})}}catch(H){if(J&&J!==z)await this.agent.switchModel(J).catch((D)=>{B.error(`[AcpSession ${this.id}] Failed to roll back a non-durable model switch:`,D)});throw H}}getCurrentModelId(){return this.runtime?.getCurrentModelId()}async setReasoningEffort(z){if(this.pendingPrompt)throw Error("Cannot switch reasoning effort while a prompt is active");if(!this.runtime)throw Error("Session runtime is unavailable");let J=this.runtime.getReasoningConfiguration();try{this.runtime.resolveReasoningConfiguration(z)}catch(H){throw Error(H instanceof Error?H.message:"Invalid reasoning effort")}if(J.selection===z)return;await this.runtime.refresh({reasoningEffort:z});try{try{await _.updateSessionMetadata(this.id,this.cwd,{reasoningEffort:z})}catch(H){if(!(H instanceof N)&&H.code!=="ENOENT")throw H;await _.createSessionMetadata(this.id,this.cwd,{taskStatus:"completed",selectedModelId:this.runtime.getCurrentModelId(),reasoningEffort:z})}}catch(H){throw await this.runtime.refresh({reasoningEffort:J.selection}),H}}async setServiceTier(z){if(this.pendingPrompt)throw Error("Cannot switch service tier while a prompt is active");if(!this.runtime)throw Error("Session runtime is unavailable");let J=this.runtime.getServiceTierConfiguration();try{this.runtime.resolveServiceTierConfiguration(z)}catch(H){throw Error(H instanceof Error?H.message:"Invalid service tier")}if(J.selection===z)return;await this.runtime.refresh({serviceTier:z});try{try{await _.updateSessionMetadata(this.id,this.cwd,{serviceTier:z})}catch(H){if(!(H instanceof N)&&H.code!=="ENOENT")throw H;await _.createSessionMetadata(this.id,this.cwd,{taskStatus:"completed",selectedModelId:this.runtime.getCurrentModelId(),serviceTier:z})}}catch(H){throw await this.runtime.refresh({serviceTier:J.selection}),H}}async setResponseVerbosity(z){if(this.pendingPrompt)throw Error("Cannot switch response verbosity while a prompt is active");if(!this.runtime)throw Error("Session runtime is unavailable");let J=this.runtime.getResponseVerbosityConfiguration();try{this.runtime.resolveResponseVerbosityConfiguration(z)}catch(H){throw Error(H instanceof Error?H.message:"Invalid response verbosity")}if(J.selection===z)return;await this.runtime.refresh({responseVerbosity:z});try{try{await _.updateSessionMetadata(this.id,this.cwd,{responseVerbosity:z})}catch(H){if(!(H instanceof N)&&H.code!=="ENOENT")throw H;await _.createSessionMetadata(this.id,this.cwd,{taskStatus:"completed",selectedModelId:this.runtime.getCurrentModelId(),responseVerbosity:z})}}catch(H){throw await this.runtime.refresh({responseVerbosity:J.selection}),H}}async setCommunicationStyle(z){if(this.pendingPrompt)throw Error("Cannot switch communication style while a prompt is active");if(!this.runtime)throw Error("Session runtime is unavailable");let J=this.runtime.getCommunicationStyleConfiguration(),H=this.runtime.resolveCommunicationStyleConfiguration(z);if(H.source!=="built-in"&&!H.contentSha256)throw Error("Custom communication style has no provenance");if(J.selection===z)return;await this.runtime.refresh({communicationStyle:z});try{try{await _.updateSessionMetadata(this.id,this.cwd,{communicationStyle:z,communicationStyleDigest:H.source==="built-in"?null:H.contentSha256})}catch(D){if(!(D instanceof N)&&D.code!=="ENOENT")throw D;await _.createSessionMetadata(this.id,this.cwd,{taskStatus:"completed",selectedModelId:this.runtime.getCurrentModelId(),communicationStyle:z,...H.source!=="built-in"&&H.contentSha256?{communicationStyleDigest:H.contentSha256}:{}})}}catch(D){throw await this.runtime.refresh({communicationStyle:J.selection}),D}}getModelConfiguration(){if(!this.runtime)return;let z=this.runtime.getConfig();return{currentModelId:this.runtime.getCurrentModelId()??z.currentModelId,models:z.models.map((J)=>structuredClone(J)),modelProviders:structuredClone(z.modelProviders),reasoning:this.runtime.getReasoningConfiguration(),serviceTier:this.runtime.getServiceTierConfiguration(),responseVerbosity:this.runtime.getResponseVerbosityConfiguration(),communicationStyle:this.runtime.getCommunicationStyleConfiguration()}}getMode(){return this.mode}destroy(){if(this.destroyPromise)return this.destroyFinished?Promise.resolve():this.destroyPromise;return this.destroyPromise=this.destroyOwnedResources().finally(()=>{this.destroyFinished=!0}),this.destroyPromise}async destroyOwnedResources(){if(this.destroyed=!0,this.updateEgress.close(new Hz("closed","ACP Session was destroyed")),this.availableCommandsTimer!==null)clearTimeout(this.availableCommandsTimer),this.availableCommandsTimer=null;this.taskStatusUnsubscribe?.(),this.taskStatusUnsubscribe=void 0;let z=this.agent,J=this.runtime,H=this.pendingPromptCompletion,D=this.pendingUserShellCompletion;this.agent=null,this.runtime=null;let W,Z=async($)=>{try{await $()}catch(X){W??=X}};if(await Z(()=>this.cancel()),H)await Z(()=>H);if(D)await Z(()=>D);if(z)await Z(()=>z.destroy());if(J)await Z(()=>J.dispose());if(await Z(()=>P.destroySession(this.id)),B.debug(`[AcpSession ${this.id}] Destroyed`),W!==void 0)throw W}resolvePrompt(z){let J=[],H=[],D=0,W=0,Z=0,$=(Y)=>{if(H.length>0)H.push({type:"text",text:`
13
- `}),Z+=1;if(H.push(Y),Y.type==="text")Z+=Y.text.length};for(let Y of z)if(Y.type==="text")J.push(Y.text),$({type:"text",text:Y.text});else if(Y.type==="image"){let F=`data:${Y.mimeType};base64,${Y.data}`;D+=1,W+=F.length,J.push(`[Image: ${Y.mimeType}]`),$({type:"image_url",image_url:{url:F}})}else if(Y.type==="resource"){let F=Y.resource;if("text"in F){let U=`<file path="${F.uri}">
14
- ${F.text}
15
- </file>`;J.push(U),$({type:"text",text:U})}}else if(Y.type==="resource_link"){let F=`[Resource: ${Y.uri}]`;J.push(F),$({type:"text",text:F})}if(D>y)throw Error(`ACP prompt contains more than ${y} images`);if(W>g)throw Error("ACP prompt images exceed the 5 MiB limit");if(Z>I)throw Error(`ACP prompt text exceeds ${I} characters`);let X=J.join(`
16
- `);return{content:D>0?H:X,displayText:X}}canSendUpdates(){return!this.destroyed&&!this.connection.signal.aborted&&!this.updateEgress.stats().closed}async sendUpdateAndWait(z){if(!this.canSendUpdates())return!1;let J=this.updateEgress.offer({sessionId:this.id,update:z});if(!J.accepted)return!1;try{return await J.completion,this.canSendUpdates()}catch{return!1}}goalSessionUpdate(z){return{sessionUpdate:"session_info_update",updatedAt:z.updatedAt,_meta:{"blade/goal":{goalId:z.goalId,status:z.status,verificationAttempt:z.completionVerification?.attempt,verificationStatus:z.completionVerification?.status,verifierSessionId:z.completionVerification?.verifierSessionId,verificationEvidenceSha256:z.completionVerification?.evidenceSha256}}}}sendUpdate(z){if(!this.canSendUpdates())return;this.updateEgress.offer({sessionId:this.id,update:z})}async flushUpdates(){if(!this.canSendUpdates())return!1;try{return await this.updateEgress.flush(),this.canSendUpdates()}catch{return!1}}handleUpdateEgressFailure(z){if(this.destroyed)return;B.warn(`[AcpSession ${this.id}] Update egress closed: kind=${z.kind}`),this.pendingPrompt?.abort("acp-egress-failed"),this.pendingUserShell?.abort("acp-egress-failed")}sendPlanUpdate(z){let J=z.map((H)=>({content:H.subject,priority:H.priority,status:H.status}));B.debug(`[AcpSession ${this.id}] Sending plan update with ${J.length} entries`),this.sendUpdate({sessionUpdate:"plan",entries:J})}async requestPermission(z){let J=this.pendingPrompt?.signal;if(z.type==="askUserQuestion")return this.requestUserQuestions(z,J);if(z.type==="mcpElicitation")return this.requestMcpElicitation(z,J);let H=z.kind?.toLowerCase()||"execute";if(z.type!=="mcpSampling"&&this.shouldAutoApprove(H))return B.debug(`[AcpSession ${this.id}] Auto-approving ${H} in mode: ${this.mode}`),{approved:!0};if(this.mode==="plan"&&(H==="write"||H==="execute"))return B.debug(`[AcpSession ${this.id}] Rejecting ${H} in plan mode`),{approved:!1,reason:"Write and execute operations are not allowed in Plan mode"};try{let D=M(),W=[];if(z.message)W.push({type:"content",content:{type:"text",text:z.message}});if(z.details)W.push({type:"content",content:{type:"text",text:z.details}});if(z.risks&&z.risks.length>0)W.push({type:"content",content:{type:"text",text:`Risks:
17
- - ${z.risks.join(`
18
- - `)}`}});let Z=this.mapToolKind(H),$={sessionId:this.id,options:z.type==="mcpSampling"?[{optionId:"allow_once",name:"Allow this sampling request",kind:"allow_once"},{optionId:"reject_once",name:"Deny",kind:"reject_once"}]:[{optionId:"allow_once",name:"Allow once",kind:"allow_once"},{optionId:"allow_always",name:"Always allow",kind:"allow_always"},{optionId:"reject_once",name:"Deny once",kind:"reject_once"},{optionId:"reject_always",name:"Always deny",kind:"reject_always"}],toolCall:{toolCallId:D,status:"pending",title:z.title||"Permission Required",content:W,kind:Z}},X=await this.waitForClientInteraction(this.connection.requestPermission($),J);if(!X)return{approved:!1,reason:h};let Y=X.outcome;if(Y.outcome==="cancelled")return{approved:!1,reason:"User cancelled the permission request"};let F=Y.optionId;if(F==="allow_always")return{approved:!0,scope:"project"};if(F==="reject_always")return{approved:!1,scope:"project",reason:"User permanently denied the permission request"};let U=F==="allow_once";return{approved:U,scope:"once",reason:U?void 0:"User denied the operation"}}catch(D){return B.warn(`[AcpSession ${this.id}] Permission request failed:`,D),{approved:!1,reason:"Permission request failed"}}}async requestUserQuestions(z,J){let H=z.questions??[];if(H.length===0)return{approved:!1,reason:"No structured questions were provided"};if(H.some((W)=>W.multiSelect))return{approved:!1,reason:"ACP does not support multi-select question responses"};let D={};try{for(let[W,Z]of H.entries()){let $=Z.options.map((U,L)=>`answer:${W}:${L}`),X=`answer:${W}:cancel`,Y=await this.waitForClientInteraction(this.connection.requestPermission({sessionId:this.id,options:[...Z.options.map((U,L)=>({optionId:$[L],name:U.label,kind:"allow_once"})),{optionId:X,name:"Cancel",kind:"reject_once"}],toolCall:{toolCallId:M(),status:"pending",title:Z.header,kind:"think",content:[{type:"content",content:{type:"text",text:[Z.question,...Z.options.map((U)=>`${U.label}: ${U.description}`)].join(`
19
- `)}}]}}),J);if(!Y)return{approved:!1,reason:h};if(Y.outcome.outcome!=="selected")return{approved:!1,reason:"User cancelled the question prompt"};let F=$.indexOf(Y.outcome.optionId);if(F<0)return{approved:!1,reason:"User cancelled the question prompt"};D[Z.header]=Z.options[F].label}return{approved:!0,answers:D}}catch(W){return B.warn(`[AcpSession ${this.id}] Question request failed:`,W),{approved:!1,reason:"Question request failed"}}}async requestMcpElicitation(z,J){let H=z.mcpElicitation;if(!H)return{approved:!1,reason:"MCP elicitation details are missing",elicitation:{action:"cancel"}};try{if(H.mode==="url"){let W=await this.requestElicitationChoice("MCP external authorization",[H.message,`Server: ${H.serverName}`,`Domain: ${H.domain??"unknown"}`,`URL: ${H.url??""}`,"Open this URL yourself only if you trust the MCP server."].join(`
20
- `),[{id:"accept",label:"I will open this URL"},{id:"decline",label:"Decline"}],J);if(W==="accept")return{approved:!0,elicitation:{action:"accept"}};return{approved:!1,reason:W==="decline"?"User declined URL":"User cancelled",elicitation:{action:W==="decline"?"decline":"cancel"}}}let D=Object.create(null);for(let W of H.fields??[]){let Z=await this.collectAcpElicitationField(W,J);if(Z.cancelled)return{approved:!1,reason:Z.reason,elicitation:{action:"cancel"}};if(Z.value!==void 0)D[W.name]=Z.value}return{approved:!0,elicitation:{action:"accept",content:D}}}catch(D){return B.warn(`[AcpSession ${this.id}] MCP elicitation failed:`,D),{approved:!1,reason:"MCP elicitation failed",elicitation:{action:"cancel"}}}}async collectAcpElicitationField(z,J){if(z.type==="select"||z.type==="boolean"){let H=z.type==="boolean"?[{id:"true",label:"Yes",value:!0},{id:"false",label:"No",value:!1}]:(z.options??[]).map((Z,$)=>({id:`option:${$}`,label:Z.label,value:Z.value})),D=await this.requestElicitationChoice(z.title,[z.description,z.required?"Required":"Optional"].filter(Boolean).join(`
21
- `),[...H.map((Z)=>({id:Z.id,label:Z.label})),...!z.required?[{id:"skip",label:"Skip"}]:[]],J);if(D==="skip")return{cancelled:!1};let W=H.find((Z)=>Z.id===D);if(!W)return{cancelled:!0,reason:"User cancelled MCP elicitation"};return{cancelled:!1,value:W.value}}if(z.defaultValue!==void 0){let H=await this.requestElicitationChoice(z.title,[z.description,`ACP cannot collect ${z.type} input. Use the server default: ${String(z.defaultValue)}?`].filter(Boolean).join(`
22
- `),[{id:"default",label:"Use default"},...!z.required?[{id:"skip",label:"Skip"}]:[]],J);if(H==="default")return{cancelled:!1,value:z.defaultValue};if(H==="skip")return{cancelled:!1};return{cancelled:!0,reason:"User cancelled MCP elicitation"}}if(!z.required)return{cancelled:!1};return{cancelled:!0,reason:`ACP cannot collect required ${z.type} field "${z.name}"`}}async requestElicitationChoice(z,J,H,D){let W=await this.waitForClientInteraction(this.connection.requestPermission({sessionId:this.id,options:[...H.map((Z)=>({optionId:Z.id,name:Z.label,kind:"allow_once"})),{optionId:"cancel",name:"Cancel",kind:"reject_once"}],toolCall:{toolCallId:M(),status:"pending",title:z,kind:"think",content:[{type:"content",content:{type:"text",text:J}}]}}),D);return W?.outcome.outcome==="selected"?W.outcome.optionId:void 0}async waitForClientInteraction(z,J){if(!J)return z;if(J.aborted)return;return new Promise((H,D)=>{let W=!1,Z=(X)=>{if(W)return;W=!0,J.removeEventListener("abort",$),X()},$=()=>Z(()=>H(void 0));if(J.addEventListener("abort",$,{once:!0}),J.aborted)$();z.then((X)=>Z(()=>H(X)),(X)=>Z(()=>D(X)))})}mapToolKind(z){return{readonly:"read",write:"edit",execute:"execute",read:"read",edit:"edit",delete:"delete",move:"move",search:"search",think:"think",fetch:"fetch"}[z||""]||"other"}}var A=x("Agent");class k{connection;sessions=new Map;sessionLoadQueues=new Map;clientCapabilities;destroyed=!1;destroyPromise;constructor(z){this.connection=z}async initialize(z){return A.info("[BladeAgent] Initializing ACP connection"),A.debug(`[BladeAgent] Client capabilities: ${JSON.stringify(z.clientCapabilities)}`),this.clientCapabilities=z.clientCapabilities,{protocolVersion:Ez,agentCapabilities:{loadSession:!0,sessionCapabilities:{list:{},fork:{}},promptCapabilities:{image:!0,audio:!1,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!0}}}}async authenticate(z){return}async newSession(z){this.assertNotDestroyed();let J=Bz("acp"),H=z.cwd||Yz(),D=z._meta?.["blade/taskIsolation"],W=D==="local"||D==="worktree"?D:void 0,Z=z._meta?.["blade/taskPrompt"],$=W?await Gz.createSessionTask({sessionId:J,prompt:typeof Z==="string"&&Z.trim()?Z:"ACP task session",sourceProjectPath:H,isolation:W}):void 0,X=$?.metadata.projectPath??H;A.info(`[BladeAgent] Creating new session: ${J}`),A.debug(`[BladeAgent] Session cwd: ${X}`);let Y=new E(J,X,this.connection,this.clientCapabilities,{mcpServers:z.mcpServers,...$?.taskWorktree?{taskWorktree:$.taskWorktree}:{},...$?.metadata.taskIsolation?{taskIsolation:$.metadata.taskIsolation}:{}});try{await Y.initialize(),this.assertNotDestroyed()}catch(F){throw await Y.destroy().catch(()=>{return}),F}return this.sessions.set(J,Y),A.info(`[BladeAgent] Session ${J} created, scheduling available commands update`),Y.sendAvailableCommandsDelayed(),this.buildChildSessionResponse(J,$?.metadata,Y.getModelConfiguration())}async listSessions(z){if(z.cwd!=null&&!Xz.isAbsolute(z.cwd))throw Error("ACP session list cwd must be absolute");let J=await _.listSessionPage({cwd:z.cwd??void 0,cursor:z.cursor??void 0,limit:50,includeSubagents:!1});return{sessions:J.sessions.map((H)=>({sessionId:H.sessionId,cwd:H.projectPath,title:H.title??null,updatedAt:H.lastMessageTime,_meta:{"blade/taskStatus":H.taskStatus,...H.taskStatusReason?{"blade/taskStatusReason":H.taskStatusReason}:{},...H.taskFailure?{"blade/taskFailure":H.taskFailure}:{},...H.taskStartedAt?{"blade/taskStartedAt":H.taskStartedAt}:{},...H.taskCompletedAt?{"blade/taskCompletedAt":H.taskCompletedAt}:{},...H.taskModelId?{"blade/taskModelId":H.taskModelId}:{},...H.taskRetryAvailable?{"blade/taskRetryAvailable":!0}:{},...H.taskRetriedFrom?{"blade/taskRetriedFrom":H.taskRetriedFrom}:{},...H.taskDelivery?{"blade/taskDelivery":H.taskDelivery}:{},...H.taskIsolation?{"blade/taskIsolation":H.taskIsolation}:{},...H.taskSourceProjectPath?{"blade/taskSourceProjectPath":H.taskSourceProjectPath}:{},...H.taskWorktreeBranch?{"blade/taskWorktreeBranch":H.taskWorktreeBranch}:{},...H.taskBaseCommit?{"blade/taskBaseCommit":H.taskBaseCommit}:{},...H.taskDiffStat?{"blade/taskDiffStat":H.taskDiffStat}:{},...H.taskQueuePosition?{"blade/taskQueuePosition":H.taskQueuePosition}:{},...H.taskQueueDepth!==void 0?{"blade/taskQueueDepth":H.taskQueueDepth}:{},...H.taskConcurrencyLimit!==void 0?{"blade/taskConcurrencyLimit":H.taskConcurrencyLimit}:{}}})),nextCursor:J.nextCursor}}async unstable_forkSession(z){if(this.assertNotDestroyed(),!Xz.isAbsolute(z.cwd))throw Error("ACP session fork cwd must be absolute");let J=await _.forkSession(z.sessionId,{sourceProjectPath:z.cwd,targetProjectPath:z.cwd});this.assertNotDestroyed();let H=new E(J.sessionId,z.cwd,this.connection,this.clientCapabilities,{initialMessages:J.messages,permissionMode:J.metadata.permissionMode,mcpServers:z.mcpServers});try{await H.initialize(),this.assertNotDestroyed()}catch(D){throw await H.destroy().catch(()=>{return}),D}return this.sessions.set(J.sessionId,H),H.sendAvailableCommandsDelayed(),this.buildChildSessionResponse(J.sessionId,J.metadata,H.getModelConfiguration())}async loadSession(z){this.assertNotDestroyed(),A.info(`[BladeAgent] Loading session: ${z.sessionId}`);let H=(this.sessionLoadQueues.get(z.sessionId)??Promise.resolve()).then(()=>this.replaceSession(z)),D=H.then(()=>{return},()=>{return});this.sessionLoadQueues.set(z.sessionId,D);try{return await H}finally{if(this.sessionLoadQueues.get(z.sessionId)===D)this.sessionLoadQueues.delete(z.sessionId)}}async replaceSession(z){this.assertNotDestroyed(),await _.assertSessionWritable(z.sessionId,z.cwd);let J=this.sessions.get(z.sessionId);if(J)try{await J.destroy()}finally{if(this.sessions.get(z.sessionId)===J)this.sessions.delete(z.sessionId)}let[H,D]=await Promise.all([_.loadSession(z.sessionId,z.cwd),_.findSessionMetadata(z.sessionId,z.cwd)]);if(!D)throw Error(`Session not found: ${z.sessionId}`);let W=new E(z.sessionId,z.cwd,this.connection,this.clientCapabilities,{initialMessages:H,permissionMode:D.permissionMode,mcpServers:z.mcpServers});try{await W.initialize(),await W.replayHistory(),this.assertNotDestroyed()}catch(Z){throw await W.destroy().catch(()=>{return}),Z}return this.sessions.set(z.sessionId,W),W.sendAvailableCommandsDelayed(),this.buildSessionSetup(W.getModelConfiguration(),W.getMode())}buildChildSessionResponse(z,J,H){return{sessionId:z,...this.buildSessionSetup(H,J?.permissionMode==="autoEdit"?"auto-edit":J?.permissionMode),...J?{_meta:{"blade/taskIsolation":J.taskIsolation,"blade/taskSourceProjectPath":J.taskSourceProjectPath,"blade/taskProjectPath":J.projectPath,...J.taskModelId?{"blade/taskModelId":J.taskModelId}:{},...J.taskRetryAvailable?{"blade/taskRetryAvailable":!0}:{},...J.taskRetriedFrom?{"blade/taskRetriedFrom":J.taskRetriedFrom}:{},...J.taskDelivery?{"blade/taskDelivery":J.taskDelivery}:{},...J.taskWorktreeBranch?{"blade/taskWorktreeBranch":J.taskWorktreeBranch}:{},...J.taskBaseCommit?{"blade/taskBaseCommit":J.taskBaseCommit}:{}}}:{}}}assertNotDestroyed(){if(this.destroyed)throw Error("BladeAgent is destroyed")}buildSessionSetup(z,J="default"){let H=z?.models??[],D=(z?.currentModelId&&H.some(($)=>$.id===z.currentModelId)?z.currentModelId:void 0)??H[0]?.id,W=[{id:"default",name:"Default",description:"Ask for confirmation before all file edits and commands"},{id:"auto-edit",name:"Auto Edit",description:"Auto-approve file edits, ask for shell commands"},{id:"yolo",name:"Full Auto",description:"Auto-approve everything without confirmation"},{id:"plan",name:"Plan Only",description:"Read-only mode, no file changes or commands"}],Z=[];if(H.length>0)Z.push({type:"select",id:"model",name:"Model",description:"Active language model",category:"model",currentValue:D,options:H.map(($)=>({value:$.id,name:$.displayName??$.model,description:`${z?.modelProviders[$.provider]?.name??$.provider} · ${$.model}`}))});if(z?.reasoning)Z.push({type:"select",id:"reasoning_effort",name:"Reasoning effort",description:"Session-owned model reasoning intensity",category:"model",currentValue:z.reasoning.selection,options:[{value:"auto",name:"Auto",description:`Resolve near high for this model (currently ${z.reasoning.effective})`},...z.reasoning.supported.map(($)=>({value:$,name:$[0].toUpperCase()+$.slice(1),description:$==="off"?"Disable model reasoning":`Use ${$} reasoning effort`}))]});if(z?.serviceTier)Z.push({type:"select",id:"service_tier",name:"Service tier",description:"Session-owned provider latency and pricing tier",category:"model",currentValue:z.serviceTier.selection,options:[{value:"auto",name:"Auto",description:"Use the provider or model default tier"},...z.serviceTier.supported.map(($)=>({value:$,name:$[0].toUpperCase()+$.slice(1),description:$==="fast"?"Use the provider priority tier":$==="flex"?"Use the lower-cost flexible tier":"Use the standard provider tier"}))]});if(z?.responseVerbosity)Z.push({type:"select",id:"response_verbosity",name:"Response verbosity",description:"Session-owned model response detail",category:"model",currentValue:z.responseVerbosity.selection,options:[{value:"auto",name:"Auto",description:"Use the provider or model default verbosity"},...z.responseVerbosity.supported.map(($)=>({value:$,name:$[0].toUpperCase()+$.slice(1),description:`Use ${$} response verbosity`}))]});if(z?.communicationStyle)Z.push({type:"select",id:"communication_style",name:"Communication style",description:"Session-owned tone and explanatory framing",category:"model",currentValue:z.communicationStyle.selection,options:z.communicationStyle.supported.map(($)=>({value:$.id,name:$.name,description:`${$.description} · ${$.source}`}))});return{modes:{availableModes:W,currentModeId:J},configOptions:Z.length>0?Z:void 0}}async prompt(z){let J=this.sessions.get(z.sessionId);if(!J)throw Error(`Session not found: ${z.sessionId}`);return J.prompt(z)}async cancel(z){A.info(`[BladeAgent] Cancel notification received for session: ${z.sessionId}`);let J=this.sessions.get(z.sessionId);if(J)A.info("[BladeAgent] Found session, calling session.cancel()"),J.cancel();else A.warn(`[BladeAgent] Session not found for cancel: ${z.sessionId}`)}async setSessionMode(z){A.info(`[BladeAgent] Setting session mode: ${z.modeId}`);let J=this.sessions.get(z.sessionId);if(J)await J.setMode(z.modeId);return{}}async setSessionConfigOption(z){let J=this.sessions.get(z.sessionId);if(!J)throw Error(`Session not found: ${z.sessionId}`);if(z.configId==="model"&&"value"in z&&typeof z.value==="string")A.info(`[BladeAgent] Setting session model: ${z.value}`),await J.setModel(z.value);else if(z.configId==="reasoning_effort"&&"value"in z&&Uz(z.value))A.info(`[BladeAgent] Setting reasoning effort: ${z.value}`),await J.setReasoningEffort(z.value);else if(z.configId==="service_tier"&&"value"in z&&Lz(z.value))A.info(`[BladeAgent] Setting service tier: ${z.value}`),await J.setServiceTier(z.value);else if(z.configId==="response_verbosity"&&"value"in z&&Fz(z.value))A.info(`[BladeAgent] Setting response verbosity: ${z.value}`),await J.setResponseVerbosity(z.value);else if(z.configId==="communication_style"&&"value"in z&&_z(z.value))A.info(`[BladeAgent] Setting communication style: ${z.value}`),await J.setCommunicationStyle(z.value);else throw Error(`Invalid session config option: ${z.configId}`);return{configOptions:this.buildSessionSetup(J.getModelConfiguration(),J.getMode()).configOptions??[]}}destroy(){if(this.destroyPromise)return this.destroyPromise;return this.destroyPromise=this.destroyOwnedResources(),this.destroyPromise}async destroyOwnedResources(){this.destroyed=!0,await Promise.all([...this.sessionLoadQueues.values()]),this.sessionLoadQueues.clear();let z;for(let J of this.sessions.values())try{await J.destroy()}catch(H){z??=H}this.sessions.clear();try{await jz.getInstance().disconnectAll()}catch(J){z??=J}if(z!==void 0)throw z}}async function UH(){let z=Tz.toWeb(process.stdout),J=qz.toWeb(process.stdin),H=b.ndJsonStream(z,J),D,W=new b.AgentSideConnection(($)=>{return D=new k($),D},H),Z=Vz(async()=>{await D?.destroy()});try{await W.closed}finally{Z(),await D?.destroy()}}export{UH as runAcpIntegration};
@@ -1 +0,0 @@
1
- import{Ag as a,Bg as b,Cg as c,Dg as d,Eg as e,Fg as f}from"./chunk-358zaryv.js";import"./chunk-22h5kh4z.js";export{b as getVersion,c as getPackageName,a as getPackageInfo,e as getFormattedVersion,d as getDescription,f as getCopyright};
@@ -1 +0,0 @@
1
- import{a,b,c,d,e}from"./chunk-sfbprf9r.js";import"./chunk-358zaryv.js";import"./chunk-22h5kh4z.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
@@ -1,10 +0,0 @@
1
- import{f as T,g as W,h as X,i as Y}from"./chunk-w1vcjwbx.js";import"./chunk-t80e2bms.js";import"./chunk-5zf8204m.js";import"./chunk-yxwargqc.js";import"./chunk-nsawkccy.js";import"./chunk-wk0vpgwk.js";import"./chunk-wvc6bx0t.js";import"./chunk-v80xem15.js";import"./chunk-adgx9vd7.js";import"./chunk-5cgyevqj.js";import"./chunk-zracmha2.js";import"./chunk-qgez5vw6.js";import"./chunk-bdxaz350.js";import{$c as R}from"./chunk-hjkdc185.js";import"./chunk-y30kw6gj.js";import{vd as Q}from"./chunk-27w2k6t7.js";import"./chunk-v508x7cg.js";import"./chunk-atsw605q.js";import"./chunk-d61673v7.js";import"./chunk-4ekrbk2w.js";import"./chunk-fxw1q5j5.js";import"./chunk-yhw0pvyt.js";import"./chunk-6dma8han.js";import"./chunk-n0ebpwxd.js";import"./chunk-01jt0mpr.js";import"./chunk-ens8nsge.js";import"./chunk-f4bx2n1y.js";import"./chunk-tsskar00.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import{Bg as M}from"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";import m from"chalk";import K from"open";var A=`
2
- ____ _ _
3
- | __ )| | __ _ __| | ___
4
- | _ \\| |/ _\` |/ _\` |/ _ \\
5
- | |_) | | (_| | (_| | __/
6
- |____/|_|\\__,_|\\__,_|\\___|
7
- `,C={command:"web",describe:"Start Blade server and open web interface",builder:T,handler:async(Z)=>{let H=W(Z);if(await Q(),!process.env.BLADE_SERVER_PASSWORD)console.log(m.yellow("[WARN] BLADE_SERVER_PASSWORD is not set; server is unsecured.")),console.log(m.gray(` Set this environment variable to enable Basic Auth.
8
- `));let F=await Y.listenAsync(H);if(console.log(m.cyan(A)),console.log(m.gray(` v${M()}
9
- `)),H.hostname==="0.0.0.0"){let q=`http://localhost:${F.port}`;console.log(m.blue.bold(" Local access: "),m.white(q));let x=X();for(let z of x)console.log(m.blue.bold(" Network access: "),m.white(`http://${z}:${F.port}`));K(q).catch(()=>{})}else{let q=F.url.toString();console.log(m.blue.bold(" Web interface: "),m.white(q)),K(q).catch(()=>{})}console.log(""),console.log(m.gray(` Press Ctrl+C to stop the server.
10
- `));let J,$=new Promise((q)=>{J=q}),b=R(async()=>{await F.stop(),J()});try{await $}finally{b(),await F.stop()}}};export{C as webCommand};
@@ -1,2 +0,0 @@
1
- var _=20,T=5242880,A=32000;
2
- export{_ as If,T as Jf,A as Kf};
@@ -1 +0,0 @@
1
- import{Mc as a,Nc as b,Oc as c,Pc as d,Qc as e,Rc as f,Sc as g,Tc as h}from"./chunk-bdxaz350.js";import"./chunk-fz55cnws.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{d as syncSession,e as syncAll,h as searchProjectionText,c as resetProjectionDbCache,f as removeSessionFromProjection,g as rebuildProjectionIndex,b as getProjectionDb,a as getIndexDbPath};
@@ -1,2 +0,0 @@
1
- import{Bg as d,Dg as h}from"./chunk-358zaryv.js";var q={debug:{alias:"d",type:"string",describe:'Enable debug mode with optional category filtering (e.g., "agent,ui" or "!chat,!loop")',group:"Debug Options:"},model:{type:"string",describe:"Override the current run model using a model config ID (TUI / print / headless)",group:"AI Options:"},print:{alias:"p",type:"boolean",describe:"Print response and exit (useful for pipes)",group:"Output Options:"},headless:{type:"boolean",describe:"Run full agent loop without Ink UI and print all events to the terminal",group:"Output Options:"},"output-format":{alias:["outputFormat"],type:"string",choices:["text","json","stream-json","jsonl"],default:"text",describe:"Output format: --print supports text|json|stream-json; --headless supports text|jsonl",group:"Output Options:"},"json-schema":{alias:["jsonSchema"],type:"string",describe:"Inline JSON Schema for the turn-scoped structured final response",group:"Output Options:"},"output-schema":{alias:["outputSchema"],type:"string",describe:"Path to a JSON Schema file for the structured final response",group:"Output Options:"},"include-partial-messages":{alias:["includePartialMessages"],type:"boolean",describe:"Include partial message chunks as they arrive",group:"Output Options:"},"input-format":{alias:["inputFormat"],type:"string",choices:["text","stream-json"],default:"text",describe:"Input format",group:"Input Options:"},"replay-user-messages":{alias:["replayUserMessages"],type:"boolean",describe:"Re-emit user messages from stdin",group:"Input Options:"},"allowed-tools":{alias:["allowedTools"],type:"array",string:!0,describe:"Comma or space-separated list of tool names to allow",group:"Security Options:"},"disallowed-tools":{alias:["disallowedTools"],type:"array",string:!0,describe:"Comma or space-separated list of tool names to deny",group:"Security Options:"},"mcp-config":{alias:["mcpConfig"],type:"array",string:!0,describe:"Load MCP servers from JSON files or strings",group:"MCP Options:"},"system-prompt":{alias:["systemPrompt"],type:"string",describe:"System prompt to use for the session (replaces default)",group:"AI Options:"},"append-system-prompt":{alias:["appendSystemPrompt"],type:"string",describe:"Append a system prompt to the default system prompt",group:"AI Options:"},"max-turns":{alias:["maxTurns"],type:"number",describe:"Maximum conversation turns (-1: unlimited, 0: disable chat, N>0: limit to N turns)",group:"AI Options:",default:void 0},"max-concurrent-tasks":{alias:["maxConcurrentTasks"],type:"number",describe:"Maximum top-level tasks running concurrently in this process",group:"AI Options:",default:void 0},"max-queued-tasks":{alias:["maxQueuedTasks"],type:"number",describe:"Maximum top-level tasks waiting for an admission slot",group:"AI Options:",default:void 0},"permission-mode":{alias:["permissionMode"],type:"string",choices:["default","autoEdit","yolo","plan"],describe:"Permission mode (default: ask for non-read tools, autoEdit: auto-approve edits, yolo: auto-approve all, plan: reserved)",group:"Security Options:"},yolo:{type:"boolean",describe:"Auto-approve all tools (shortcut for --permission-mode=yolo)",group:"Security Options:"},"trust-workspace":{alias:["trustWorkspace"],type:"boolean",describe:"Trust the current workspace before loading project models, MCP, LSP, permissions, or plugins",group:"Security Options:"},continue:{alias:"c",type:"boolean",describe:"Continue the most recent conversation",group:"Session Options:"},resume:{alias:"r",describe:"Resume a conversation - provide a session ID or interactively select a conversation to resume",group:"Session Options:",coerce:(b)=>{if(b===void 0||b===!0||b==="")return"true";return String(b)}},"fork-session":{alias:["forkSession"],type:"boolean",describe:"Create a new session ID when resuming",group:"Session Options:"},settings:{type:"string",describe:"Path to a settings JSON file or JSON string",group:"Configuration:"},"add-dir":{alias:["addDir"],type:"array",string:!0,describe:"Additional directories to allow tool access to",group:"Security Options:"},ide:{type:"boolean",describe:"Automatically connect to IDE on startup",group:"Integration:"},acp:{type:"boolean",describe:"Run in ACP (Agent Client Protocol) mode for IDE integration",group:"Integration:"},"strict-mcp-config":{alias:["strictMcpConfig"],type:"boolean",describe:"Only use MCP servers from --mcp-config",group:"MCP Options:"},"session-id":{alias:["sessionId"],type:"string",describe:"Use a specific session ID for the conversation",group:"Session Options:"},agents:{type:"string",describe:"JSON object defining custom agents",group:"AI Options:"},"setting-sources":{alias:["settingSources"],type:"string",describe:"Comma-separated list of setting sources to load",group:"Configuration:"},"plugin-dir":{alias:["pluginDir"],type:"array",string:!0,describe:"Load plugins from specified directories",group:"Plugin Options:"}},w={scriptName:"blade",usage:"$0 [command] [options]",description:h(),version:d(),locale:"en",showHelpOnFail:!0,demandCommand:!1,recommendCommands:!0,strict:!1};
2
- export{q as Uc,w as Vc};