blade-code 0.10.14 → 0.10.15

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 (51) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-wj4cjb73.js → chunk-09k2b1tw.js} +1 -1
  3. package/dist/{chunk-0hbvc51n.js → chunk-0z7rg4f3.js} +1 -1
  4. package/dist/{chunk-sntbbkbf.js → chunk-1amhvwmj.js} +2 -2
  5. package/dist/chunk-1c9rkm57.js +1 -0
  6. package/dist/{chunk-r6bha0vm.js → chunk-25abj6rx.js} +1 -1
  7. package/dist/{chunk-xk7svrdb.js → chunk-2cqsqrxx.js} +1 -1
  8. package/dist/{chunk-m088381q.js → chunk-3m8pschr.js} +1 -1
  9. package/dist/{chunk-avsv4e5g.js → chunk-5psydp1v.js} +1 -1
  10. package/dist/{chunk-hpbyvwhm.js → chunk-5tpjb8yn.js} +1 -1
  11. package/dist/{chunk-snv4bpbv.js → chunk-5wecprcp.js} +1 -1
  12. package/dist/chunk-67vf8r5v.js +6 -0
  13. package/dist/{chunk-3be2feze.js → chunk-6y9w5296.js} +1 -1
  14. package/dist/{chunk-hrmfhv8k.js → chunk-7bq9p4ab.js} +1 -1
  15. package/dist/{chunk-se1tfys3.js → chunk-7x5cqfy7.js} +1 -1
  16. package/dist/{chunk-wznyzdtg.js → chunk-a170cgzr.js} +1 -1
  17. package/dist/{chunk-321n9hem.js → chunk-afxpp33r.js} +1 -1
  18. package/dist/{chunk-j7k5x43d.js → chunk-agdamn30.js} +1 -1
  19. package/dist/{chunk-kesgbws4.js → chunk-csn0epd2.js} +1 -1
  20. package/dist/chunk-d7976m5f.js +5 -0
  21. package/dist/{chunk-8y2zs0p0.js → chunk-eav8jpk1.js} +2 -2
  22. package/dist/{chunk-8zr7h97n.js → chunk-ee7an1kq.js} +1 -1
  23. package/dist/{chunk-9ajyeqa7.js → chunk-jjy8sg10.js} +1 -1
  24. package/dist/{chunk-mcqe9km3.js → chunk-k47f7zqm.js} +1 -1
  25. package/dist/{chunk-2z6261pz.js → chunk-m4f213hk.js} +1 -1
  26. package/dist/{chunk-4rn3r12e.js → chunk-mc29y7tj.js} +2 -2
  27. package/dist/{chunk-3jnhd81j.js → chunk-n72www7h.js} +3 -3
  28. package/dist/{chunk-cyhmfcqq.js → chunk-nfqsnkbt.js} +47 -47
  29. package/dist/{chunk-zvt8ngpt.js → chunk-ng8a4btc.js} +1 -1
  30. package/dist/{chunk-m2b2w90y.js → chunk-qpd1jmm4.js} +1 -1
  31. package/dist/{chunk-e0y9nb0a.js → chunk-t6cmqsdj.js} +1 -1
  32. package/dist/{chunk-k5fw5abr.js → chunk-wz3z8908.js} +1 -1
  33. package/dist/{chunk-rbph12qe.js → chunk-x1qw695m.js} +3 -3
  34. package/dist/{chunk-pt0en61h.js → chunk-zmg66vp7.js} +1 -1
  35. package/dist/{chunk-2cgcht30.js → chunk-zn2cec1d.js} +1 -1
  36. package/dist/{chunk-xq403rac.js → chunk-zn7c21zj.js} +3 -3
  37. package/dist/web/assets/{ChatView-CxSysoN5.js → ChatView-rHWZ9qCy.js} +5 -5
  38. package/dist/web/assets/{CodeBlockHighlighter-a5UaDQQg.js → CodeBlockHighlighter-KpN8jpS4.js} +1 -1
  39. package/dist/web/assets/{FilePreview-CvGTS9CJ.js → FilePreview-BbEcYewq.js} +1 -1
  40. package/dist/web/assets/{MarkdownRenderer-D50Cw9OM.js → MarkdownRenderer-Cpqkv5Ml.js} +3 -3
  41. package/dist/web/assets/{SettingsModal-DtREOjs-.js → SettingsModal-D6NZP8vM.js} +1 -1
  42. package/dist/web/assets/{TaskSwitcher-BlMvq8mt.js → TaskSwitcher-cT1qKR6s.js} +1 -1
  43. package/dist/web/assets/{TerminalPanel-B8LccKzq.js → TerminalPanel-0MehdzKr.js} +1 -1
  44. package/dist/web/assets/index-BYd4kNGp.js +11 -0
  45. package/dist/web/assets/{session-events-_Kir2HH_.js → session-events-BH7O5JJl.js} +5 -5
  46. package/dist/web/index.html +2 -2
  47. package/package.json +1 -1
  48. package/dist/chunk-99tdg2ny.js +0 -1
  49. package/dist/chunk-g3w00xb7.js +0 -5
  50. package/dist/chunk-qb076ca2.js +0 -6
  51. package/dist/web/assets/index-CQP8XT9a.js +0 -11
@@ -1,12 +1,12 @@
1
- var ae=Object.defineProperty;var re=(e,t,n)=>t in e?ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>re(e,typeof t!="symbol"?t+"":t,n);function M(){return{timeline:[],textBefore:"",toolCalls:[],textAfter:"",thinkingContent:"",tasks:[],subagent:null,subagents:[],confirmation:null,question:null,elicitation:null}}function $(e){return e?e.subagents&&e.subagents.length>0?e.subagents:e.subagent?[e.subagent]:[]:[]}function V(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 Y(e,t){const 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),V(e,n,t.id);const o=n[a],u={...o,...t,id:o.id};return n[a]=u,V(e,n,u.id)}function U(e,t){return`${t}-${e.length}`}function ue(e,t){if(!t)return e;const n=[...P(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:U(n,"text"),type:"text",content:t}),{...e,timeline:n}}function de(e,t){if(!t)return e;const n=[...P(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:U(n,"thinking"),type:"thinking",content:t}),{...e,timeline:n}}function X(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=[...P(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:U(o,"tool_group"),type:"tool_group",toolCallIds:[t.toolCallId]}),{...e,timeline:o,toolCalls:a}}function P(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 le(e){return P(e).filter(t=>t.type==="text").map(t=>t.content).filter(Boolean).join(`
1
+ var ae=Object.defineProperty;var re=(e,t,n)=>t in e?ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>re(e,typeof t!="symbol"?t+"":t,n);function M(){return{timeline:[],textBefore:"",toolCalls:[],textAfter:"",thinkingContent:"",tasks:[],subagent:null,subagents:[],confirmation:null,question:null,elicitation:null}}function $(e){return e?e.subagents&&e.subagents.length>0?e.subagents:e.subagent?[e.subagent]:[]:[]}function V(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 Y(e,t){const 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),V(e,n,t.id);const o=n[a],u={...o,...t,id:o.id};return n[a]=u,V(e,n,u.id)}function U(e,t){return`${t}-${e.length}`}function ue(e,t){if(!t)return e;const n=[...w(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:U(n,"text"),type:"text",content:t}),{...e,timeline:n}}function de(e,t){if(!t)return e;const n=[...w(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:U(n,"thinking"),type:"thinking",content:t}),{...e,timeline:n}}function X(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=[...w(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:U(o,"tool_group"),type:"tool_group",toolCallIds:[t.toolCallId]}),{...e,timeline:o,toolCalls:a}}function w(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 le(e){return w(e).filter(t=>t.type==="text").map(t=>t.content).filter(Boolean).join(`
2
2
 
3
3
  `)}const ce=2166136261,ge=16777619;function E(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?`[${e.map(t=>E(t)).join(",")}]`:typeof e=="object"?`{${Object.entries(e).sort(([n],[a])=>n.localeCompare(a)).map(([n,a])=>`${JSON.stringify(n)}:${E(a)}`).join(",")}}`:JSON.stringify(e)}function p(e){let t=ce>>>0;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,ge);return(t>>>0).toString(16)}function ee(e){return typeof e=="string"?e:E(e??{})}function B(e){return e==="completed"?"completed":e==="failed"?"failed":"running"}function K({explicitId:e,messageId:t,toolName:n,argumentsValue:a,toolKind:o,output:u}){if(e)return e;const s=[t||"unknown-message",n||"Unknown",ee(a),o||"",u||""].join("|");return`tool-${p(s)}`}function D({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-${p(s)}`}const me=(e,t)=>!t||typeof t!="object"?null:{id:D({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:B(t.status),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},fe=(e,t)=>!t||typeof t!="object"?[]:(Array.isArray(t.subtaskRefs)?t.subtaskRefs:t.subtaskRef&&typeof t.subtaskRef=="object"?[t.subtaskRef]:[]).map(a=>me(e,a)).filter(a=>a!==null);function R(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
4
- `)}function Ie(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(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(n);const i=s.metadata;let r=M();s.thinkingContent&&(r=de(r,s.thinkingContent),r.thinkingContent=s.thinkingContent);const d=R(s.content);d&&(r=ue(r,d),r.textBefore=d);const c=fe(s.id,i);if(s.tool_calls&&Array.isArray(s.tool_calls))for(const l of s.tool_calls){const m=((a=l.function)==null?void 0:a.name)||"Unknown",I=ee((o=l.function)==null?void 0:o.arguments);if(m==="Task"){let g={};try{g=JSON.parse(I)}catch{}const h=typeof g.subagent_type=="string"?g.subagent_type:"subagent",S=typeof g.description=="string"?g.description:h;r=Y(r,{id:D({explicitId:l.id,sessionId:typeof g.subagent_session_id=="string"?g.subagent_session_id:void 0,messageId:s.id,agentType:h,description:S}),type:h,description:S,status:"running",startTime:Date.now(),sessionId:typeof g.subagent_session_id=="string"?g.subagent_session_id:void 0,resumedFrom:typeof g.resume_from=="string"?g.resume_from:typeof g.resume=="string"?g.resume:void 0});continue}const f={toolCallId:K({explicitId:l.id,messageId:s.id,toolName:m,argumentsValue:(u=l.function)==null?void 0:u.arguments}),toolName:m,arguments:I,status:"running",startTime:Date.now()};r=X(r,f)}for(const l of c)r=Y(r,l);n={id:s.id,role:"assistant",content:R(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:void 0,m=r!=null&&r.independentVerification&&typeof r.independentVerification=="object"&&!Array.isArray(r.independentVerification)?r.independentVerification:void 0,I=typeof(r==null?void 0:r.error)=="string"&&r.error.length>0,f=$(n.agentContent),g=f.findIndex(S=>S.id===d);if(g>=0){const S=f[g],A=typeof(l==null?void 0:l.subagentStatus)=="string"?B(l.subagentStatus):I?"failed":"completed";f[g]={...S,sessionId:typeof(l==null?void 0:l.subagentSessionId)=="string"?l.subagentSessionId:S.sessionId,type:typeof(l==null?void 0:l.subagentType)=="string"?l.subagentType:S.type,status:A,resumedFrom:typeof(l==null?void 0:l.subagentResumedFrom)=="string"?l.subagentResumedFrom:S.resumedFrom,rootAgentId:typeof(l==null?void 0:l.subagentRootId)=="string"?l.subagentRootId:S.rootAgentId,resumeDepth:typeof(l==null?void 0:l.subagentResumeDepth)=="number"?l.subagentResumeDepth:S.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:(m==null?void 0:m.verificationVerdict)==="pass"||(m==null?void 0:m.verificationVerdict)==="fail"||(m==null?void 0:m.verificationVerdict)==="partial"?m.verificationVerdict:S.verificationVerdict},n.agentContent=V(n.agentContent,f,S.id);continue}const h=n.agentContent.toolCalls.find(S=>S.toolCallId===d);h?(h.output=R(s.content),h.status=I?"error":"success",h.metadata=l,h.summary=typeof(l==null?void 0:l.summary)=="string"?l.summary:h.summary,(!h.toolName||h.toolName==="Unknown")&&(h.toolName=c)):n.agentContent=X(n.agentContent,{toolCallId:K({explicitId:d,messageId:n.id,toolName:c,output:R(s.content)}),toolName:c,output:R(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(n),t}const te={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"},Se={authentication:!1,permission:!1,rate_limit:!0,timeout:!0,network:!0,model_unavailable:!0,context_limit:!1,unsupported_input:!1,runtime:!0};function he(e){if(typeof e=="string"&&Object.keys(te).includes(e))return e}function Mt(e){return te[e]}function Rt(e){return Se[e]}const ye={flushTimeout:80};class Ce{constructor(t){F(this,"config");F(this,"channels",new Map);this.config={...ye,...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 T=new Ce,C=(e,t,n)=>{if(t)for(const a of e){const o=$(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=$(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=$(a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:a.id,subagent:u}}},b=(e,t,n)=>{const{currentAssistantMessageId:a,messages:o,addMessage:u,startAgentResponse:s}=e();if(a&&!a.startsWith("call_")&&o.some(c=>c.id===a&&c.role==="assistant"))return a;if(n){const c=o.find(l=>l.id===n&&l.role==="assistant");if(c)return s(c.id),c.id}const i=o[o.length-1];if((i==null?void 0:i.role)==="assistant")return i.id;const r=n||`assistant-${Date.now()}`,d={id:r,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};return u(d),s(r),t(c=>({messages:c.messages.map(l=>l.id===r?{...l,agentContent:{...l.agentContent||M()}}:l)})),r},be=(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(m=>m.id===r),l={id:r,role:d,content:e.content||"",timestamp:Date.now(),agentContent:d==="assistant"?M():void 0};c?i(r,{role:d,content:l.content,agentContent:d==="assistant"?{...c.agentContent||M()}:void 0}):o(l),d==="assistant"&&u(r)},ve=(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 m={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};i(m),r(d),t().appendDelta(d,c,"before");return}o(u,c,s?"after":"before")},Ae=(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:le(s.agentContent)})},ke=(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=b(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})},Te=(e,t,n)=>{const{currentSessionId:a,appendThinking:o}=t();if(e.sessionId!==a)return;const u=b(t,n,e.messageId);u&&o(u,e.delta)},$e=()=>{},ne=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,setSubagent:s}=t();if(e.sessionId!==a)return;const i=b(t,n,e.messageId||e.toolCallId);if(!i)return;u(!0);const r=e.toolName||"Unknown",d=e.arguments;let c,l="",m,I;if(r==="Task")try{const g=JSON.parse(d);c=g.subagent_type,l=g.description||g.query||c||"",m=g.subagent_session_id,I=g.resume_from||g.resume}catch{}if(c){s(i,{id:D({explicitId:e.toolCallId,sessionId:m,messageId:i,agentType:c,description:l}),type:c,description:l,status:"running",startTime:Date.now(),sessionId:m,resumedFrom:I,output:"",thinking:""});return}const f={toolCallId:K({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,f)},se=(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})},ie=(e,t,n)=>{var Q;const{currentSessionId:a,updateToolCall:o,updateSubagent:u,messages:s}=t();if(e.sessionId!==a)return;const i=e.toolCallId;if(!i)return;const r=s.find(v=>{var k;return(k=v.agentContent)==null?void 0:k.toolCalls.some(N=>N.toolCallId===i)}),d=s.find(v=>$(v.agentContent).some(k=>k.id===i)),c=e.messageId||(r==null?void 0:r.id)||(d==null?void 0:d.id)||((Q=[...s].reverse().find(v=>v.role==="assistant"))==null?void 0:Q.id);if(!c)return;const l=e.output,m=e.summary||(l&&l.trim()?l.trim().split(`
4
+ `)}function Ie(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(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(n);const i=s.metadata;let r=M();s.thinkingContent&&(r=de(r,s.thinkingContent),r.thinkingContent=s.thinkingContent);const d=R(s.content);d&&(r=ue(r,d),r.textBefore=d);const c=fe(s.id,i);if(s.tool_calls&&Array.isArray(s.tool_calls))for(const l of s.tool_calls){const m=((a=l.function)==null?void 0:a.name)||"Unknown",I=ee((o=l.function)==null?void 0:o.arguments);if(m==="Task"){let g={};try{g=JSON.parse(I)}catch{}const h=typeof g.subagent_type=="string"?g.subagent_type:"subagent",S=typeof g.description=="string"?g.description:h;r=Y(r,{id:D({explicitId:l.id,sessionId:typeof g.subagent_session_id=="string"?g.subagent_session_id:void 0,messageId:s.id,agentType:h,description:S}),type:h,description:S,status:"running",startTime:Date.now(),sessionId:typeof g.subagent_session_id=="string"?g.subagent_session_id:void 0,resumedFrom:typeof g.resume_from=="string"?g.resume_from:typeof g.resume=="string"?g.resume:void 0});continue}const f={toolCallId:K({explicitId:l.id,messageId:s.id,toolName:m,argumentsValue:(u=l.function)==null?void 0:u.arguments}),toolName:m,arguments:I,status:"running",startTime:Date.now()};r=X(r,f)}for(const l of c)r=Y(r,l);n={id:s.id,role:"assistant",content:R(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:void 0,m=r!=null&&r.independentVerification&&typeof r.independentVerification=="object"&&!Array.isArray(r.independentVerification)?r.independentVerification:void 0,I=typeof(r==null?void 0:r.error)=="string"&&r.error.length>0,f=$(n.agentContent),g=f.findIndex(S=>S.id===d);if(g>=0){const S=f[g],A=typeof(l==null?void 0:l.subagentStatus)=="string"?B(l.subagentStatus):I?"failed":"completed";f[g]={...S,sessionId:typeof(l==null?void 0:l.subagentSessionId)=="string"?l.subagentSessionId:S.sessionId,type:typeof(l==null?void 0:l.subagentType)=="string"?l.subagentType:S.type,status:A,resumedFrom:typeof(l==null?void 0:l.subagentResumedFrom)=="string"?l.subagentResumedFrom:S.resumedFrom,rootAgentId:typeof(l==null?void 0:l.subagentRootId)=="string"?l.subagentRootId:S.rootAgentId,resumeDepth:typeof(l==null?void 0:l.subagentResumeDepth)=="number"?l.subagentResumeDepth:S.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:(m==null?void 0:m.verificationVerdict)==="pass"||(m==null?void 0:m.verificationVerdict)==="fail"||(m==null?void 0:m.verificationVerdict)==="partial"?m.verificationVerdict:S.verificationVerdict},n.agentContent=V(n.agentContent,f,S.id);continue}const h=n.agentContent.toolCalls.find(S=>S.toolCallId===d);h?(h.output=R(s.content),h.status=I?"error":"success",h.metadata=l,h.summary=typeof(l==null?void 0:l.summary)=="string"?l.summary:h.summary,(!h.toolName||h.toolName==="Unknown")&&(h.toolName=c)):n.agentContent=X(n.agentContent,{toolCallId:K({explicitId:d,messageId:n.id,toolName:c,output:R(s.content)}),toolName:c,output:R(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(n),t}const te={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"},Se={authentication:!1,permission:!1,rate_limit:!0,timeout:!0,network:!0,model_unavailable:!0,context_limit:!1,unsupported_input:!1,runtime:!0};function he(e){if(typeof e=="string"&&Object.keys(te).includes(e))return e}function Rt(e){return te[e]}function xt(e){return Se[e]}const ye={flushTimeout:80};class Ce{constructor(t){F(this,"config");F(this,"channels",new Map);this.config={...ye,...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 T=new Ce,C=(e,t,n)=>{if(t)for(const a of e){const o=$(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=$(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=$(a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:a.id,subagent:u}}},b=(e,t,n)=>{const{currentAssistantMessageId:a,messages:o,addMessage:u,startAgentResponse:s}=e();if(a&&!a.startsWith("call_")&&o.some(c=>c.id===a&&c.role==="assistant"))return a;if(n){const c=o.find(l=>l.id===n&&l.role==="assistant");if(c)return s(c.id),c.id}const i=o[o.length-1];if((i==null?void 0:i.role)==="assistant")return i.id;const r=n||`assistant-${Date.now()}`,d={id:r,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};return u(d),s(r),t(c=>({messages:c.messages.map(l=>l.id===r?{...l,agentContent:{...l.agentContent||M()}}:l)})),r},be=(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(m=>m.id===r),l={id:r,role:d,content:e.content||"",timestamp:Date.now(),agentContent:d==="assistant"?M():void 0};c?i(r,{role:d,content:l.content,agentContent:d==="assistant"?{...c.agentContent||M()}:void 0}):o(l),d==="assistant"&&u(r)},ve=(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 m={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};i(m),r(d),t().appendDelta(d,c,"before");return}o(u,c,s?"after":"before")},Ae=(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:le(s.agentContent)})},ke=(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=b(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})},Te=(e,t,n)=>{const{currentSessionId:a,appendThinking:o}=t();if(e.sessionId!==a)return;const u=b(t,n,e.messageId);u&&o(u,e.delta)},$e=()=>{},ne=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,setSubagent:s}=t();if(e.sessionId!==a)return;const i=b(t,n,e.messageId||e.toolCallId);if(!i)return;u(!0);const r=e.toolName||"Unknown",d=e.arguments;let c,l="",m,I;if(r==="Task")try{const g=JSON.parse(d);c=g.subagent_type,l=g.description||g.query||c||"",m=g.subagent_session_id,I=g.resume_from||g.resume}catch{}if(c){s(i,{id:D({explicitId:e.toolCallId,sessionId:m,messageId:i,agentType:c,description:l}),type:c,description:l,status:"running",startTime:Date.now(),sessionId:m,resumedFrom:I,output:"",thinking:""});return}const f={toolCallId:K({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,f)},se=(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})},ie=(e,t,n)=>{var Q;const{currentSessionId:a,updateToolCall:o,updateSubagent:u,messages:s}=t();if(e.sessionId!==a)return;const i=e.toolCallId;if(!i)return;const r=s.find(v=>{var k;return(k=v.agentContent)==null?void 0:k.toolCalls.some(N=>N.toolCallId===i)}),d=s.find(v=>$(v.agentContent).some(k=>k.id===i)),c=e.messageId||(r==null?void 0:r.id)||(d==null?void 0:d.id)||((Q=[...s].reverse().find(v=>v.role==="assistant"))==null?void 0:Q.id);if(!c)return;const l=e.output,m=e.summary||(l&&l.trim()?l.trim().split(`
5
5
  `)[0].slice(0,120):e.success?"执行成功":"执行失败");o(c,i,{status:e.success?"success":"error",summary:m,output:l,metadata:e.metadata});const I=s.find(v=>v.id===c),f=$(I==null?void 0:I.agentContent).find(v=>v.id===i),g=e.metadata,h=g&&typeof g.subagentSessionId=="string"?g.subagentSessionId:void 0,S=g&&typeof g.subagentStatus=="string"?g.subagentStatus:void 0,A=g&&typeof g.subagentType=="string"?g.subagentType:void 0,oe=g&&typeof g.subagentSummary=="string"?g.subagentSummary:void 0,L=g&&typeof g.subagentResumedFrom=="string"?g.subagentResumedFrom:void 0,H=g&&typeof g.subagentRootId=="string"?g.subagentRootId:void 0,G=g&&typeof g.subagentResumeDepth=="number"?g.subagentResumeDepth:void 0,W=(g==null?void 0:g.verificationVerdict)==="pass"||(g==null?void 0:g.verificationVerdict)==="fail"||(g==null?void 0:g.verificationVerdict)==="partial"?g.verificationVerdict:void 0;f&&u(c,f.id,{sessionId:f.sessionId||h,type:A||f.type,status:S?B(S):e.success?"completed":"failed",resumedFrom:L||f.resumedFrom,rootAgentId:H||f.rootAgentId,resumeDepth:G??f.resumeDepth,verificationVerdict:W??f.verificationVerdict}),h&&S&&n(v=>({messages:v.messages.map(k=>{if(k.id!==c)return k;const N=k.metadata??{},_=Array.isArray(N.subtaskRefs)?N.subtaskRefs:[],x=_.findIndex(z=>z.childSessionId===h||z.subagentId===i),y=x>=0?_[x]:N.subtaskRef??{},j={...y,subagentId:i,childSessionId:h,agentType:A||(typeof(y==null?void 0:y.agentType)=="string"?y.agentType:"subagent"),status:S,summary:oe||(typeof(y==null?void 0:y.summary)=="string"?y.summary:""),resumedFrom:L||(typeof(y==null?void 0:y.resumedFrom)=="string"?y.resumedFrom:void 0),rootAgentId:H||(typeof(y==null?void 0:y.rootAgentId)=="string"?y.rootAgentId:h),resumeDepth:G??(typeof(y==null?void 0:y.resumeDepth)=="number"?y.resumeDepth:0),verificationVerdict:W||(typeof(y==null?void 0:y.verificationVerdict)=="string"?y.verificationVerdict:void 0)},q=[..._];return x>=0?q[x]=j:q.push(j),{...k,metadata:{...N,subtaskRef:j,subtaskRefs:q}}})}))},Ne=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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
  `)})},Me=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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
  `)})},Re=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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)}`})},xe=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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
- `)})},we=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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(`
9
- `)})},Pe=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=String(e.serverName),s=String(e.action),i=b(t,n,e.messageId||`mcp-instructions-${String(e.revision)}-${u}`);if(!i)return;const r=`MCP instructions ${s}: ${u}`+(e.truncated===!0?" (truncated)":"");o(i,{toolCallId:`mcp-instructions:${String(e.revision)}:${u}:${s}`,toolName:"MCP Instructions",arguments:JSON.stringify({serverName:u,action:s,reason:e.reason}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,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(`
8
+ `)})},Pe=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=b(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(`
9
+ `)})},we=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=String(e.serverName),s=String(e.action),i=b(t,n,e.messageId||`mcp-instructions-${String(e.revision)}-${u}`);if(!i)return;const r=`MCP instructions ${s}: ${u}`+(e.truncated===!0?" (truncated)":"");o(i,{toolCallId:`mcp-instructions:${String(e.revision)}:${u}:${s}`,toolName:"MCP Instructions",arguments:JSON.stringify({serverName:u,action:s,reason:e.reason}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,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(`
10
10
  `)})},De=(e,t,n)=>{var I,f;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=b(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((f=(I=t().messages.find(g=>g.id===d))==null?void 0:I.agentContent)==null?void 0:f.toolCalls.some(g=>g.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})},_e=(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=b(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
  `)})},J=e=>`user-shell-${e}`,je=(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=J(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})},qe=(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=J(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??"")}
@@ -19,4 +19,4 @@ ${c}`:""].filter(Boolean).join(`
19
19
  `)}]}))},Ze=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=C(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
  `)}]}))},pe=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=C(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
  `)}]}))},et=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=C(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
- `)}]}))},tt=(e,t,n)=>{const{currentSessionId:a,setConfirmation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||"",s=b(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)}))},nt=(e,t,n)=>{var I,f;const{currentSessionId:a,currentSessionRef:o,messages:u,setConfirmation:s,setElicitation:i}=t();if(e.sessionId!==a)return;const r=e.requestId,d=u.find(g=>{var h,S;return((S=(h=g.agentContent)==null?void 0:h.confirmation)==null?void 0:S.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(g=>{var h,S;return((S=(h=g.agentContent)==null?void 0:h.elicitation)==null?void 0:S.toolCallId)===r}),m=(f=l==null?void 0:l.agentContent)==null?void 0:f.elicitation;l&&(m==null?void 0:m.status)==="pending"&&i(l.id,{...m,status:"cancelled"}),n({agentPhase:"running",error:"Permission request timed out",errorContext:{kind:"interaction",...o?{sessionRef:o}:{}}})},Z=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",isStreaming:!0})},st=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"compacting"})},it=(e,t,n)=>{e.sessionId===t().currentSessionId&&(t().resetContextUsage(),n({agentPhase:"running"}))},ot=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"switching_model",providerRetry:null})},at=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerRetry:e.phase==="recovered"?null:e})},rt=(e,t,n)=>{const{currentSessionId:a,setQuestion:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=b(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)})))},ut=(e,t,n)=>{const{currentSessionId:a,setElicitation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=b(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)})))},dt=(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})}))},O=(e,t)=>{const{currentSessionId:n,endAgentResponse:a}=t();e.sessionId===n&&a()},lt=(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=he(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()},ct=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId===a)if(e.status==="idle")n({isStreaming:!1,isStopping:!1,agentPhase:"idle",providerRetry: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",providerRetry:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null})},gt=(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 $(i.agentContent))r.status==="running"&&s(i.id,r.id,{status:"failed"});o()}},mt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"current_turn"})},ft=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"next_turn"})},It=(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})},St=(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})},ht=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??null})},yt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:null})},Ct=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??t().goal,isStreaming:!0,agentPhase:"running"})},bt=(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:Ie(o),isStreaming:!1,isStopping:!1,agentPhase:"idle",providerRetry:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0,currentAssistantMessageId:null,hasToolCalls:!1})},vt=(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)},At=(e,t,n)=>{ne({...e,messageId:`review-${String(e.reviewId??"active")}`,arguments:"{}"},t,n)},kt=(e,t,n)=>{se(e,t)},Tt=(e,t,n)=>{ie(e,t,n)},w={"message.created":be,"message.delta":ve,"message.complete":Ae,"structured.output":ke,"thinking.delta":Te,"thinking.completed":$e,"tool.start":ne,"tool.progress":se,"tool.result":ie,"mcp.catalog.changed":Ne,"mcp.content.changed":Me,"mcp.resource.updated":Re,"mcp.connection.changed":xe,"mcp.log":we,"mcp.instructions.changed":Pe,"mcp.task.changed":De,"project.rules.loaded":_e,"user.shell.started":je,"user.shell.output":qe,"user.shell.completed":Fe,"token.usage":Oe,"task.updated":Ve,"subagent.start":Ee,"subagent.update":Ke,"subagent.delta":Ue,"subagent.thinking.delta":Be,"subagent.tool.start":Le,"subagent.tool.progress":Ge,"subagent.tool.result":He,"subagent.mcp.catalog.changed":We,"subagent.mcp.content.changed":Qe,"subagent.mcp.resource.updated":ze,"subagent.mcp.connection.changed":Ye,"subagent.mcp.log":Xe,"subagent.mcp.instructions.changed":Ze,"subagent.mcp.task.changed":pe,"subagent.project.rules.loaded":et,"subagent.complete":Je,"permission.asked":tt,"permission.timeout":nt,"turn.started":Z,"committed.turn_started":Z,"committed.turn_completed":O,"committed.turn_aborted":O,"provider.retry":at,"compaction.started":st,"compaction.completed":it,"model.fallback":ot,"question.required":rt,"elicitation.required":ut,"interaction.resolved":dt,"session.completed":O,"session.error":lt,"session.status":ct,"run.cancelled":gt,"steering.queued":mt,"follow_up.queued":ft,"follow_up.started":St,"steering.applied":It,"goal.updated":ht,"goal.cleared":yt,"goal.continuation.started":Ct,"session.rewound":bt,"review.tool.started":At,"review.tool.progress":kt,"review.tool.completed":Tt,"review.completed":vt},$t=new Set(["message.complete","thinking.completed","session.completed","session.error","run.cancelled","committed.turn_completed","committed.turn_aborted"]),xt=(e,t)=>n=>{const a=e().currentSessionRef,o=n.properties;if(!a||o.sessionId!==a.sessionId||o.projectPath!==a.projectPath)return;if($t.has(n.type)){T.drainAll();const s=w[n.type];s&&s(n.properties,e,t);return}if(n.type==="tool.start"&&T.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=w["message.delta"];I&&I(o,e,t);return}const l=r?"after":"before",m=`content:${d}:${l}`;T.drainAllExcept(m),T.append(m,c,I=>{const{appendDelta:f}=e();d&&f(d,I,l)});return}if(n.type==="thinking.delta"){const{currentSessionId:s,currentAssistantMessageId:i}=e();if(o.sessionId!==s)return;if(!i){const l=w["thinking.delta"];l&&l(o,e,t);return}const r=o.delta,d=o.messageId||i,c=`thinking:${d}`;T.drainAllExcept(c),T.append(c,r,l=>{const{appendThinking:m}=e();d&&m(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(),m=C(l,r||void 0,c);T.append(d,i,I=>{const{currentAssistantMessageId:f,messages:g,updateSubagent:h}=e(),S=m||C(g,r||void 0,f);S&&h(S.messageId,S.subagent.id,A=>({sessionId:A.sessionId||r,output:(A.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(),m=C(l,r||void 0,c);T.append(d,i,I=>{const{currentAssistantMessageId:f,messages:g,updateSubagent:h}=e(),S=m||C(g,r||void 0,f);S&&h(S.messageId,S.subagent.id,A=>({sessionId:A.sessionId||r,thinking:(A.thinking||"")+I}))});return}const u=w[n.type];u&&u(n.properties,e,t)};export{de as a,X as b,M as c,ue as d,Ie as e,xt as f,$ as g,T as h,he as i,Rt as j,le as k,P as l,Mt as t,Y as u,V as w};
22
+ `)}]}))},tt=(e,t,n)=>{const{currentSessionId:a,setConfirmation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||"",s=b(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)}))},nt=(e,t,n)=>{var I,f;const{currentSessionId:a,currentSessionRef:o,messages:u,setConfirmation:s,setElicitation:i}=t();if(e.sessionId!==a)return;const r=e.requestId,d=u.find(g=>{var h,S;return((S=(h=g.agentContent)==null?void 0:h.confirmation)==null?void 0:S.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(g=>{var h,S;return((S=(h=g.agentContent)==null?void 0:h.elicitation)==null?void 0:S.toolCallId)===r}),m=(f=l==null?void 0:l.agentContent)==null?void 0:f.elicitation;l&&(m==null?void 0:m.status)==="pending"&&i(l.id,{...m,status:"cancelled"}),n({agentPhase:"running",error:"Permission request timed out",errorContext:{kind:"interaction",...o?{sessionRef:o}:{}}})},Z=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",isStreaming:!0})},st=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"compacting"})},it=(e,t,n)=>{e.sessionId===t().currentSessionId&&(t().resetContextUsage(),n({agentPhase:"running"}))},ot=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"switching_model",providerRetry:null,providerStall:null})},at=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerRetry:e.phase==="recovered"?null:e})},rt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerStall:e.phase==="detected"?e:null})},ut=(e,t,n)=>{const{currentSessionId:a,setQuestion:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=b(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)})))},dt=(e,t,n)=>{const{currentSessionId:a,setElicitation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=b(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)})))},lt=(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})}))},O=(e,t)=>{const{currentSessionId:n,endAgentResponse:a}=t();e.sessionId===n&&a()},ct=(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=he(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()},gt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId===a)if(e.status==="idle")n({isStreaming:!1,isStopping:!1,agentPhase:"idle",providerRetry:null,providerStall: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",providerRetry:null,providerStall:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null})},mt=(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 $(i.agentContent))r.status==="running"&&s(i.id,r.id,{status:"failed"});o()}},ft=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"current_turn"})},It=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"next_turn"})},St=(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})},ht=(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})},yt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??null})},Ct=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:null})},bt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??t().goal,isStreaming:!0,agentPhase:"running"})},vt=(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:Ie(o),isStreaming:!1,isStopping:!1,agentPhase:"idle",providerRetry:null,providerStall:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0,currentAssistantMessageId:null,hasToolCalls:!1})},At=(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)},kt=(e,t,n)=>{ne({...e,messageId:`review-${String(e.reviewId??"active")}`,arguments:"{}"},t,n)},Tt=(e,t,n)=>{se(e,t)},$t=(e,t,n)=>{ie(e,t,n)},P={"message.created":be,"message.delta":ve,"message.complete":Ae,"structured.output":ke,"thinking.delta":Te,"thinking.completed":$e,"tool.start":ne,"tool.progress":se,"tool.result":ie,"mcp.catalog.changed":Ne,"mcp.content.changed":Me,"mcp.resource.updated":Re,"mcp.connection.changed":xe,"mcp.log":Pe,"mcp.instructions.changed":we,"mcp.task.changed":De,"project.rules.loaded":_e,"user.shell.started":je,"user.shell.output":qe,"user.shell.completed":Fe,"token.usage":Oe,"task.updated":Ve,"subagent.start":Ee,"subagent.update":Ke,"subagent.delta":Ue,"subagent.thinking.delta":Be,"subagent.tool.start":Le,"subagent.tool.progress":Ge,"subagent.tool.result":He,"subagent.mcp.catalog.changed":We,"subagent.mcp.content.changed":Qe,"subagent.mcp.resource.updated":ze,"subagent.mcp.connection.changed":Ye,"subagent.mcp.log":Xe,"subagent.mcp.instructions.changed":Ze,"subagent.mcp.task.changed":pe,"subagent.project.rules.loaded":et,"subagent.complete":Je,"permission.asked":tt,"permission.timeout":nt,"turn.started":Z,"committed.turn_started":Z,"committed.turn_completed":O,"committed.turn_aborted":O,"provider.retry":at,"provider.stall":rt,"compaction.started":st,"compaction.completed":it,"model.fallback":ot,"question.required":ut,"elicitation.required":dt,"interaction.resolved":lt,"session.completed":O,"session.error":ct,"session.status":gt,"run.cancelled":mt,"steering.queued":ft,"follow_up.queued":It,"follow_up.started":ht,"steering.applied":St,"goal.updated":yt,"goal.cleared":Ct,"goal.continuation.started":bt,"session.rewound":vt,"review.tool.started":kt,"review.tool.progress":Tt,"review.tool.completed":$t,"review.completed":At},Nt=new Set(["message.complete","thinking.completed","session.completed","session.error","run.cancelled","committed.turn_completed","committed.turn_aborted"]),Pt=(e,t)=>n=>{const a=e().currentSessionRef,o=n.properties;if(!a||o.sessionId!==a.sessionId||o.projectPath!==a.projectPath)return;if(Nt.has(n.type)){T.drainAll();const s=P[n.type];s&&s(n.properties,e,t);return}if(n.type==="tool.start"&&T.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=P["message.delta"];I&&I(o,e,t);return}const l=r?"after":"before",m=`content:${d}:${l}`;T.drainAllExcept(m),T.append(m,c,I=>{const{appendDelta:f}=e();d&&f(d,I,l)});return}if(n.type==="thinking.delta"){const{currentSessionId:s,currentAssistantMessageId:i}=e();if(o.sessionId!==s)return;if(!i){const l=P["thinking.delta"];l&&l(o,e,t);return}const r=o.delta,d=o.messageId||i,c=`thinking:${d}`;T.drainAllExcept(c),T.append(c,r,l=>{const{appendThinking:m}=e();d&&m(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(),m=C(l,r||void 0,c);T.append(d,i,I=>{const{currentAssistantMessageId:f,messages:g,updateSubagent:h}=e(),S=m||C(g,r||void 0,f);S&&h(S.messageId,S.subagent.id,A=>({sessionId:A.sessionId||r,output:(A.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(),m=C(l,r||void 0,c);T.append(d,i,I=>{const{currentAssistantMessageId:f,messages:g,updateSubagent:h}=e(),S=m||C(g,r||void 0,f);S&&h(S.messageId,S.subagent.id,A=>({sessionId:A.sessionId||r,thinking:(A.thinking||"")+I}))});return}const u=P[n.type];u&&u(n.properties,e,t)};export{de as a,X as b,M as c,ue as d,Ie as e,Pt as f,$ as g,T as h,he as i,xt as j,le as k,w as l,Rt as t,Y as u,V 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-CQP8XT9a.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BYd4kNGp.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-_Kir2HH_.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/session-events-BH7O5JJl.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/index-BC7ygRH_.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.14",
3
+ "version": "0.10.15",
4
4
  "private": false,
5
5
  "description": "🗡️ Blade Code - 智能代码助手命令行工具",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{sc as a,tc as b}from"./chunk-0hbvc51n.js";import"./chunk-se1tfys3.js";import"./chunk-g11hq0e5.js";export{a as globalOptions,b as cliConfig};
@@ -1,5 +0,0 @@
1
- import{ee as R}from"./chunk-4dq9y7zn.js";import{lf as F,nf as P}from"./chunk-s5666ta0.js";import{qf as H}from"./chunk-dsj62dcg.js";var oe={openrouter:{"HTTP-Referer":"https://github.com/echoVic/blade-code","X-Title":"Blade"},cerebras:{"X-Cerebras-3rd-Party-Integration":"blade"}},L=(e)=>oe[e]||{};var ne=new Set(["user-cancel","interrupt","sibling-error","timeout"]);function w(e){return typeof e==="string"&&ne.has(e)}function Pe(e){if(!e.aborted)return;if(w(e.reason))return e.reason;return"user-cancel"}function Se(e){if(w(e))return!0;if(!(e instanceof Error))return!1;if(e.name==="AbortError")return!0;if(e instanceof DOMException&&e.name==="AbortError")return!0;if(e.message.includes("aborted"))return!0;return!1}function U(...e){let t=e.filter(Boolean);if(t.length===0)return new AbortController().signal;if(t.length===1)return t[0];let o=AbortSignal;if(typeof o.any==="function")return o.any(t);for(let i of t)if(i.aborted)return i;let r=new AbortController,n=new Map;for(let i of t){let u=()=>{r.abort(i.reason);for(let[c,s]of n)c.removeEventListener("abort",s)};n.set(i,u)}for(let[i,u]of n)i.addEventListener("abort",u,{once:!0});return r.signal}function A(e,t,o){let r=o?.throwOnAbort??!1;if(t?.aborted){if(r)return Promise.reject(new DOMException("Aborted","AbortError"));return Promise.resolve()}return new Promise((n,i)=>{let u,c=setTimeout(()=>{if(t&&u)t.removeEventListener("abort",u);n()},e);if(t)u=()=>{if(clearTimeout(c),r)i(new DOMException("Aborted","AbortError"));else n()},t.addEventListener("abort",u,{once:!0})})}var re=R("Chat"),ie={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function E(e){if(typeof e==="string")return e;return e.filter((t)=>t.type==="text").map((t)=>t.text).join(`
2
- `)}function se(e){if(!e)return{};try{let t=JSON.parse(e);return t&&typeof t==="object"&&!Array.isArray(t)?t:{}}catch{return re.warn("[PiAIChatService] Invalid historical tool arguments",{value:e}),{}}}function ae(e){let t=e.match(/^data:([^;,]+);base64,(.+)$/s);return t?{mimeType:t[1],data:t[2]}:void 0}async function ue(e,t){let o=ae(e);if(o)return{type:"image",...o};if(!/^https?:\/\//i.test(e))return{type:"text",text:`[Unsupported image source: ${e}]`};let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`Failed to load image ${e}: HTTP ${r.status}`);return{type:"image",mimeType:r.headers.get("content-type")?.split(";")[0]??"image/png",data:Buffer.from(await r.arrayBuffer()).toString("base64")}}async function j(e,t,o,r,n){let i=e.filter((s)=>s.role==="system").map((s)=>E(s.content)).filter(Boolean).join(`
3
-
4
- `),u=[];for(let s of e){if(s.role==="system")continue;if(s.role==="user"){let d=t.input.includes("image"),a=typeof s.content==="string"?s.content:await Promise.all(s.content.map((l)=>l.type==="text"?Promise.resolve({type:"text",text:l.text}):d?ue(l.image_url.url,r):Promise.resolve({type:"text",text:"[Image omitted: current model does not support image input]"})));u.push({role:"user",content:a,timestamp:Date.now()});continue}if(s.role==="assistant"){let d=[];if(s.reasoningContent?.trim())d.push({type:"thinking",thinking:s.reasoningContent});let a=E(s.content);if(a)d.push({type:"text",text:a});for(let l of s.tool_calls??[]){if(!("function"in l))continue;d.push({type:"toolCall",id:l.id,name:l.function.name,arguments:se(l.function.arguments)})}u.push({role:"assistant",content:d,api:t.api,provider:t.provider,model:t.id,usage:ie,stopReason:s.tool_calls?.length?"toolUse":"stop",timestamp:Date.now()});continue}u.push({role:"toolResult",toolCallId:s.tool_call_id??"",toolName:s.name??"unknown",content:[{type:"text",text:E(s.content)}],isError:!1,timestamp:Date.now()})}let c=o?.filter((s)=>!n||s.name===n).map((s)=>({name:s.name,description:s.description,parameters:s.parameters,constrainedSampling:s.constrainedSampling}));return{...i?{systemPrompt:i}:{},messages:u,...c?.length?{tools:c}:{}}}function z(e){let t=[];for(let o=0;o<e.length;o++){let r=e[o];if(r.role==="tool")continue;let n=r.role==="assistant"&&r.tool_calls?.length?r.tool_calls:void 0;if(!n){t.push(r);continue}let i=[],u=o+1;while(u<e.length&&e[u].role==="tool")i.push(e[u++]);let c=new Set(n.map((a)=>a.id)),s=i.filter((a)=>a.tool_call_id&&c.has(a.tool_call_id)),d=new Set(s.map((a)=>a.tool_call_id));if(c.size===n.length&&s.length===c.size&&d.size===c.size)t.push(r,...s);o=u-1}return t}function B(e){return e.some((t)=>t.role==="assistant"&&Boolean(t.tool_calls?.length)&&!t.reasoningContent?.trim())}function q(e,t){return{...e,...t.baseUrl?{baseUrl:F(e.api,t.baseUrl)}:{},...t.maxOutputTokens?{maxTokens:t.maxOutputTokens}:{}}}function _(e){let t=e.modelCatalog??P();return{models:t.models,model:q(t.getModel(e.provider,e.model),e)}}function V(e,t){let o=e.modelCatalog??P();return q(o.getModel(t.provider,t.model),e)}var ce=["gousagelimiterror","freeusagelimiterror","monthly usage limit reached","available balance","insufficient_quota","out of budget","quota exceeded","billing"],de=["prompt_too_long","prompt is too long","maximum context length","context length exceeded","context_length_exceeded","request too large"],le=["econnreset","econnrefused","enotfound","eai_again","etimedout","fetch failed","network error","connection error","connection refused","connection lost","other side closed","socket hang up","socket connection was closed","upstream connect","reset before headers","websocket closed","websocket error","http2 request did not get a response"];function me(e){return(e instanceof Error?e.message:String(e)).toLowerCase()}function pe(e){return e!==null&&typeof e==="object"&&"code"in e?e.code:void 0}function fe(e){if(e===null||typeof e!=="object")return;let t=e;for(let o of["status","statusCode"]){let r=t[o];if(typeof r==="number"&&Number.isInteger(r))return r}return}function he(e){let t=e.match(/^(?:error:\s*)?(\d{3})\b/),o=e.match(/\b(?:status(?:\s+code)?|http)[:\s]+(\d{3})\b/),r=Number(t?.[1]??o?.[1]);return Number.isInteger(r)?r:void 0}function x(e,t){let o=me(e),r=pe(e);if(r==="STREAM_IDLE_TIMEOUT"||e instanceof Error&&e.name==="AbortError"||o.includes("request aborted")||o==="aborted")return{retryable:!1};if(ce.some((i)=>o.includes(i))||de.some((i)=>o.includes(i)))return{retryable:!1};if(t?.shouldRetry==="false")return{retryable:!1,statusCode:t.statusCode};let n=t?.statusCode??fe(e)??he(o);if(t?.shouldRetry==="true")return{retryable:!0,reason:n===429?"rate_limit":n===408||n===409?"timeout":"server_error",statusCode:n};if(n===429)return{retryable:!0,reason:"rate_limit",statusCode:n};if(n===408||n===409)return{retryable:!0,reason:"timeout",statusCode:n};if(n!==void 0&&n>=500&&n<=599)return{retryable:!0,reason:"server_error",statusCode:n};if(r==="PROVIDER_STREAM_CLOSED"||o.includes("stream closed before completion")||o.includes("ended without")||o.includes("stream ended before"))return{retryable:!0,reason:"stream_closed",statusCode:n};if(le.some((i)=>o.includes(i)))return{retryable:!0,reason:"transport",statusCode:n};if(o.includes("timeout")||o.includes("timed out")||o.includes("temporarily unavailable")||o.includes("upstream_error")||o.includes("overloaded")||o.includes("rate limit")||o.includes("too many requests")||o.includes("service unavailable")||o.includes("server error")||o.includes("internal error")||o.includes("please retry")||o.includes("try your request again"))return{retryable:!0,reason:o.includes("rate")||o.includes("too many")?"rate_limit":o.includes("timeout")||o.includes("timed out")?"timeout":"server_error",statusCode:n};return{retryable:!1,statusCode:n}}function ge(e,t){if(!e)return;if(e.retryAfterMs!==void 0){let n=Number.parseFloat(e.retryAfterMs);if(Number.isFinite(n))return Math.max(0,n)}if(e.retryAfter===void 0)return;let o=Number.parseFloat(e.retryAfter);if(Number.isFinite(o))return Math.max(0,o*1000);let r=Date.parse(e.retryAfter);return Number.isFinite(r)?Math.max(0,r-t):void 0}function W(e,t,o={}){let r=o.now??Date.now(),n=o.maxDelayMs??60000,i=ge(t,r);if(i!==void 0)return Math.min(Math.ceil(i),n);let u=Math.max(0,e-1),c=Math.min(500*2**u,8000),s=Math.max(0,Math.min(1,o.random??Math.random())),d=c*(0.75+s*0.25);return Math.min(Math.round(d),n)}function X(e,t){let o=e.onPayload;e.onPayload=async(r,n)=>{let i=o?await o(r,n):r;return t(i===void 0?r:i,n)}}function ye(e){if(!e.reasoningEnabled)return;return e.reasoningEffort??e.reasoningLevel??"high"}function Ce(e){switch(e){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";default:return"HIGH"}}function be(e,t,o,r){let n=r?void 0:ye(o);if(!n){if(t.api==="anthropic-messages")e.thinkingEnabled=!1;if(t.api==="google-generative-ai"||t.api==="google-vertex")e.thinking={enabled:!1};return}switch(t.api){case"anthropic-messages":e.thinkingEnabled=!0,e.effort=n;break;case"google-generative-ai":case"google-vertex":e.thinking={enabled:!0,level:Ce(n)};break;case"mistral-conversations":e.reasoningEffort="high";break;case"bedrock-converse-stream":case"pi-messages":e.reasoning=n;break;default:e.reasoningEffort=n}}function Re(e,t,o){if(!o)return;switch(t){case"anthropic-messages":case"bedrock-converse-stream":e.toolChoice={type:"tool",name:o};break;case"openai-completions":case"mistral-conversations":case"pi-messages":e.toolChoice={type:"function",function:{name:o}};break;case"openai-responses":case"openai-codex-responses":case"azure-openai-responses":e.toolChoice={type:"function",name:o};break;case"google-generative-ai":case"google-vertex":e.toolChoice="any";break}}function Me(e,t,o){let r=o.serviceTier;if(!r)return;if(t.api==="openai-responses"||t.api==="openai-codex-responses"||t.api==="azure-openai-responses"){e.serviceTier=r;return}if(t.api!=="openai-completions"&&!(t.api==="anthropic-messages"&&r==="fast"))return;X(e,(n)=>{if(!n||typeof n!=="object"||Array.isArray(n))return n;return t.api==="anthropic-messages"?{...n,speed:"fast"}:{...n,service_tier:r}})}function xe(e,t,o){let r=o.responseVerbosity;if(!r)return;if(H(t,r),t.api==="openai-codex-responses"){e.textVerbosity=r;return}X(e,(n)=>{if(!n||typeof n!=="object"||Array.isArray(n))return n;if(t.api==="openai-completions")return{...n,verbosity:r};let i="text"in n&&n.text&&typeof n.text==="object"&&!Array.isArray(n.text)?n.text:{};return{...n,text:{...i,verbosity:r}}})}function $(e,t,o,r,n=!1){let i={apiKey:e.apiKey,headers:e.customHeaders,signal:o,temperature:r?.temperature??e.temperature??0,maxTokens:r?.maxOutputTokens??e.maxOutputTokens,timeoutMs:e.timeout,maxRetries:0,cacheRetention:e.enablePromptCaching?"short":"none"};if(be(i,t,e,n),Re(i,t.api,r?.toolChoice?.toolName),Me(i,t,e),xe(i,t,e),t.api==="azure-openai-responses")i.azureBaseUrl=e.baseUrl,i.azureApiVersion=e.apiVersion,i.azureDeploymentName=t.id;return i}function Y(e,t){let o=t.get("x-should-retry");return{statusCode:e,...t.get("retry-after")!==null?{retryAfter:t.get("retry-after")??void 0}:{},...t.get("retry-after-ms")!==null?{retryAfterMs:t.get("retry-after-ms")??void 0}:{},...o==="true"||o==="false"?{shouldRetry:o}:{}}}var ve=new Set(["anthropic-messages","openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","pi-messages"]);function G(e,t,o){let r=e.onResponse;if(e.onResponse=async(i,u)=>{let c=new Headers(i.headers);o(Y(i.status,c)),await r?.(i,u)},!ve.has(t.api)||typeof globalThis.fetch!=="function")return;let n=typeof e.fetch==="function"?e.fetch:globalThis.fetch.bind(globalThis);e.fetch=async(i,u)=>{let c=await n(i,u);return o(Y(c.status,c.headers)),c}}function K(e){return{promptTokens:e.input+e.cacheRead+e.cacheWrite,completionTokens:e.output,totalTokens:e.totalTokens,costUsd:e.cost.total,...e.reasoning!==void 0?{reasoningTokens:e.reasoning}:{},...e.cacheWrite>0?{cacheCreationInputTokens:e.cacheWrite}:{},...e.cacheRead>0?{cacheReadInputTokens:e.cacheRead}:{}}}var I=300000;class Z extends Error{timeoutMs;code="STREAM_IDLE_TIMEOUT";constructor(e){super(`Provider stream idle timeout after ${e}ms without an event`);this.timeoutMs=e;this.name="StreamIdleTimeoutError"}}class Q extends Error{code="PROVIDER_STREAM_CLOSED";constructor(){super("Provider stream closed before completion");this.name="ProviderStreamClosedError"}}function J(e){return e.reason instanceof Error?e.reason:new DOMException("Aborted","AbortError")}function Te(e,t){let o=t.idleTimeoutMs&&t.idleTimeoutMs>0?t.idleTimeoutMs:I;if(t.signal?.aborted)return Promise.reject(J(t.signal));return new Promise((r,n)=>{let i=!1,u=()=>{clearTimeout(a),t.signal?.removeEventListener("abort",d)},c=(l)=>{if(i)return;i=!0,u(),r(l)},s=(l)=>{if(i)return;i=!0,u(),n(l)},d=()=>{if(!t.signal)return;s(J(t.signal))},a=setTimeout(()=>{if(i)return;let l=new Z(o);i=!0,t.signal?.removeEventListener("abort",d),t.abort?.(l),n(l)},o);if(t.signal?.addEventListener("abort",d,{once:!0}),t.signal?.aborted){d();return}Promise.resolve().then(()=>e.next()).then(c,(l)=>s(l instanceof Error?l:Error(String(l))))})}async function*ee(e,t,o,r,n={}){let u=e.stream(t,o,r)[Symbol.asyncIterator](),c=0,s=!1;try{while(!0){let d=await Te(u,n);if(d.done)throw new Q;let a=d.value;switch(a.type){case"text_delta":yield{content:a.delta};break;case"thinking_delta":yield{reasoningContent:a.delta};break;case"toolcall_end":yield{toolCalls:[{index:c++,id:a.toolCall.id,type:"function",function:{name:a.toolCall.name,arguments:JSON.stringify(a.toolCall.arguments)}}]};break;case"done":s=!0,yield{finishReason:a.reason,usage:K(a.message.usage)};return;case"error":throw Error(a.error.errorMessage??`Request ${a.reason==="aborted"?"aborted":"failed"}`)}}}finally{if(!s)Promise.resolve(u.return?.()).catch(()=>{return})}}var te=R("Chat");function ke(e){return Boolean(e&&e.role==="user"&&Array.isArray(e.content)&&e.content.some((t)=>t.type==="image_url"))}class S{config;models;model;constructor(e){let t=_(e);this.config={...e,maxContextTokens:t.model.contextWindow,maxOutputTokens:e.maxOutputTokens??t.model.maxTokens},this.models=t.models,this.model=t.model,te.debug("[PiAIChatService] Initialized",{provider:this.model.provider,model:this.model.id,api:this.model.api})}async chat(e,t,o,r){let n="",i="",u=[],c,s;for await(let d of this.streamChat(e,t,o,r)){n+=d.content??"",i+=d.reasoningContent??"";for(let a of d.toolCalls??[])if(a.id&&a.type==="function"&&a.function?.name)u.push(a);c=d.usage??c,s=d.finishReason??s}return{content:n,...i?{reasoningContent:i}:{},...u.length>0?{toolCalls:u}:{},usage:c,finishReason:s}}async*streamChat(e,t,o,r){let n=r?.toolChoice?.toolName;if(n&&!t?.some((m)=>m.name===n))throw Error(`Required tool is unavailable: ${n}`);let i=z(e);if(i.some((m)=>ke(m))&&!this.model.input.includes("image"))throw Error(`${this.model.name} does not support image input`);let u=Boolean(n)||B(i),c=await j(i,this.model,t,o,n),s,d=(m)=>{s=void 0;let y=new AbortController,f=o?U(o,y.signal):y.signal,C=$(this.config,m,f,r,u);return G(C,m,(h)=>{s=h}),ee(this.models,m,c,C,{idleTimeoutMs:this.config.streamIdleTimeout??I,signal:f,abort:(h)=>y.abort(h)})},a=this.config.maxRetries??2,l=this,O=async function*(m,y){let f,C=!1,h,M;for(let g=0;g<=a;g++)try{let b=!1;for await(let p of d(m)){if(g>0&&h&&!b)b=!0,yield{providerRetry:{phase:"recovered",attempt:g,maxRetries:a,reason:h,...M!==void 0?{statusCode:M}:{}}};C=!0,y(),yield p}return}catch(b){f=b,l.logIdleTimeout(b,C,m),await l.handleAbort(o);let p=x(b,s);if(C)throw b;if(!p.retryable||!p.reason){if(g>0&&h)yield{providerRetry:{phase:"exhausted",attempt:g,maxRetries:a,reason:h,...M!==void 0?{statusCode:M}:{}}};throw b}if(h=p.reason,M=p.statusCode,g<a){let T=g+1,k=W(T,s);yield{providerRetry:{phase:"scheduled",attempt:T,maxRetries:a,reason:p.reason,...p.statusCode!==void 0?{statusCode:p.statusCode}:{},delayMs:k,nextRetryAt:Date.now()+k}},await A(k,o,{throwOnAbort:!0}),yield{providerRetry:{phase:"attempt",attempt:T,maxRetries:a,reason:p.reason,...p.statusCode!==void 0?{statusCode:p.statusCode}:{}}}}else yield{providerRetry:{phase:"exhausted",attempt:g,maxRetries:a,reason:p.reason,...p.statusCode!==void 0?{statusCode:p.statusCode}:{}}}}throw f},v,D=!1;try{for await(let m of O(this.model,()=>{D=!0}))yield m;return}catch(m){if(v=m,D||!x(m,s).retryable)throw m}for(let m of this.config.fallbackModels??[]){yield{modelFallback:!0};let y=!1;try{let f=V(this.config,m);for await(let C of O(f,()=>{y=!0}))yield C;return}catch(f){if(v=f,y||!x(f,s).retryable)throw f}}throw v}async handleAbort(e){if(e?.aborted)await A(0,e,{throwOnAbort:!0})}logIdleTimeout(e,t,o){if(e===null||typeof e!=="object"||!("code"in e)||e.code!=="STREAM_IDLE_TIMEOUT"||!("timeoutMs"in e)||typeof e.timeoutMs!=="number")return;te.warn("[PiAIChatService] Provider stream idle timeout",{provider:o.provider,model:o.id,timeoutMs:e.timeoutMs,replayBoundaryCrossed:t})}getConfig(){return{...this.config}}updateConfig(e){let t={...this.config,...e},o=_(t);this.config={...t,maxContextTokens:o.model.contextWindow,maxOutputTokens:t.maxOutputTokens??o.model.maxTokens},this.models=o.models,this.model=o.model}}var we=R("Service");async function rt(e){let t=e;if(t.provider){let o=L(t.provider);if(Object.keys(o).length>0)t={...t,customHeaders:{...o,...t.customHeaders}},we.debug(`Injected ${t.provider} specific headers:`,Object.keys(o))}return Ae(t)}function Ae(e){return new S(e)}
5
- export{Pe as gd,Se as hd,U as id,S as jd,rt as kd};
@@ -1,6 +0,0 @@
1
- import{m as Gq,n as Vq,o as Xq,p as Bq,q as Kq}from"./chunk-xk7svrdb.js";import{s as $q}from"./chunk-mcqe9km3.js";import{F as a,H as o,I as n,K as y,L as t}from"./chunk-rbph12qe.js";import"./chunk-8zr7h97n.js";import"./chunk-p4zt7ts9.js";import{Va as i,Ya as r,hb as s}from"./chunk-4rn3r12e.js";import"./chunk-095x2ykj.js";import{$b as h,Kb as S}from"./chunk-kesgbws4.js";import"./chunk-4hawehmd.js";import{sc as qq}from"./chunk-0hbvc51n.js";import{uc as Qq,vc as Yq,wc as Zq}from"./chunk-snv4bpbv.js";import{xc as e}from"./chunk-632rgzcf.js";import"./chunk-ktf3bpmw.js";import{Xc as v}from"./chunk-xq403rac.js";import"./chunk-vmq248m7.js";import"./chunk-ybvdac8k.js";import"./chunk-g3w00xb7.js";import"./chunk-2mzcxq6c.js";import"./chunk-8j01ssaf.js";import"./chunk-2z6261pz.js";import"./chunk-j7k5x43d.js";import"./chunk-9tnaads5.js";import"./chunk-heqs3xan.js";import"./chunk-dpt56hah.js";import"./chunk-zvt8ngpt.js";import"./chunk-7wjy6kgt.js";import"./chunk-4dq9y7zn.js";import"./chunk-hrmfhv8k.js";import{Ue as m,Ve as l}from"./chunk-3aqdjrtm.js";import{$e as w,Ye as u,_e as Q,bf as H}from"./chunk-kvx3sb3z.js";import"./chunk-f4z3gkbs.js";import{if as I}from"./chunk-5s123nbs.js";import"./chunk-s5666ta0.js";import"./chunk-dsj62dcg.js";import"./chunk-se1tfys3.js";import"./chunk-gav4hxcv.js";import"./chunk-afkhzdfc.js";import"./chunk-363pgv1e.js";import"./chunk-g11hq0e5.js";import oq from"yargs";import{hideBin as nq}from"yargs/helpers";var g=1;function K(Y){return Q.Object({event_version:Q.Literal(g),...Y})}var Uq=K({type:Q.Literal("content_delta"),delta:Q.String()}),Rq=K({type:Q.Literal("thinking_delta"),delta:Q.String()}),Mq=K({type:Q.Literal("thinking"),content:Q.String()}),Pq=K({type:Q.Literal("stream_end")}),fq=K({type:Q.Literal("content"),content:Q.String()}),Nq=K({type:Q.Literal("structured_output"),output:Q.Record(Q.String(),Q.Unknown()),schema_digest:Q.String({pattern:"^[a-f0-9]{64}$"})}),T=H(["readonly","write","execute"]),Eq=K({type:Q.Literal("tool_start"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T)}),xq=K({type:Q.Literal("tool_progress"),tool_name:Q.String(),message:Q.String(),progress:Q.Optional(Q.Number()),total:Q.Optional(Q.Number())}),Iq=K({type:Q.Literal("tool_result"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(T),success:Q.Optional(Q.Boolean()),error_type:Q.Optional(Q.String()),error_message:Q.Optional(Q.String())}),Jq=K({type:Q.Literal("mcp_catalog_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Lq=K({type:Q.Literal("mcp_content_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),content_kind:H(["resources","resource_templates","prompts"]),added:Q.Array(Q.String()),removed:Q.Array(Q.String()),updated:Q.Array(Q.String())}),Wq=K({type:Q.Literal("mcp_resource_updated"),revision:Q.Integer({minimum:1}),server_name:Q.String(),uri:Q.String()}),Sq=K({type:Q.Literal("mcp_connection_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),phase:H(["reconnecting","recovered","failed"]),reason:Q.String(),attempt:Q.Integer({minimum:0}),max_attempts:Q.Integer({minimum:0}),next_retry_at:Q.Optional(Q.Integer({minimum:0})),error:Q.Optional(Q.String())}),Oq=K({type:Q.Literal("mcp_log"),revision:Q.Integer({minimum:1}),server_name:Q.String(),level:H(["debug","info","notice","warning","error","critical","alert","emergency"]),logger:Q.Optional(Q.String()),message:Q.String(),projected_bytes:Q.Integer({minimum:0}),data_sha256:Q.String(),truncated:Q.Boolean(),details_omitted:Q.Boolean(),timestamp:Q.Integer({minimum:0}),synthetic:Q.Optional(Q.Boolean())}),hq=K({type:Q.Literal("mcp_instructions_changed"),revision:Q.Integer({minimum:0}),server_name:Q.String(),action:H(["added","removed"]),reason:H(["snapshot","connection","disconnection"]),text:Q.Optional(Q.String()),source_bytes:Q.Optional(Q.Integer({minimum:0})),projected_bytes:Q.Optional(Q.Integer({minimum:0})),sha256:Q.Optional(Q.String()),truncated:Q.Optional(Q.Boolean()),details_omitted:Q.Optional(Q.Boolean())}),Cq=K({type:Q.Literal("mcp_task_changed"),revision:Q.Integer({minimum:0}),task_id:Q.String(),server_name:Q.String(),tool_name:Q.String(),status:H(["working","input_required","interrupted","completed","failed","cancelled"]),status_message:Q.Optional(Q.String()),created_at:Q.Integer({minimum:0}),updated_at:Q.Integer({minimum:0}),completed_at:Q.Optional(Q.Integer({minimum:0})),has_result:Q.Boolean(),error:Q.Optional(Q.String())}),kq=K({type:Q.Literal("project_rules_loaded"),files:Q.Array(Q.Object({id:Q.String(),relative_path:Q.String(),source:H(["project","local"]),conditional:Q.Boolean(),content_sha256:Q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:Q.Array(Q.String()),blocked_write:Q.Boolean()}),Fq=K({type:Q.Literal("user_shell_started"),execution_id:Q.String(),command:Q.String(),auxiliary:Q.Boolean()}),wq=K({type:Q.Literal("user_shell_output"),execution_id:Q.String(),stream:H(["stdout","stderr"]),chunk:Q.String(),stream_truncated:Q.Boolean()}),yq=K({type:Q.Literal("user_shell_completed"),execution_id:Q.String(),message_id:Q.String(),status:H(["completed","failed","aborted","timed_out","spawn_error"]),exit_code:Q.Union([Q.Integer(),Q.Null()]),duration_ms:Q.Number({minimum:0}),stdout:Q.String(),stderr:Q.String(),truncated:Q.Boolean(),auxiliary:Q.Boolean()}),gq=K({type:Q.Literal("phase"),phase:H(["turn","searching","inspecting","target_hit","executing","completed"]),status:H(["ongoing","hit","done"]),message:Q.String(),turn:Q.Optional(Q.Number()),tool_name:Q.Optional(Q.String()),target:Q.Optional(Q.String())}),Tq=K({type:Q.Literal("tool_detail"),tool_name:Q.String(),detail:Q.String()}),cq=K({type:Q.Literal("task_update"),tasks:Q.Array(y)}),dq=K({type:Q.Literal("goal"),state:H(["updated","cleared"]),goal_id:Q.Optional(Q.String()),status:Q.Optional(H(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"])),verification_attempt:Q.Optional(Q.Integer({minimum:1})),verification_status:Q.Optional(H(["pending","pass","fail","partial"])),verifier_session_id:Q.Optional(Q.String()),verification_evidence_sha256:Q.Optional(Q.String({pattern:"^[a-f0-9]{64}$"}))}),pq=K({type:Q.Literal("subagent"),state:H(["spawned","completed"]),session_id:Q.String(),subagent_type:Q.Optional(Q.String()),success:Q.Optional(Q.Boolean()),summary:Q.Optional(Q.String()),verification_verdict:Q.Optional(H(["pass","fail","partial"])),resumed_from:Q.Optional(Q.String()),root_agent_id:Q.Optional(Q.String()),resume_depth:Q.Optional(Q.Integer({minimum:0}))}),mq=K({type:Q.Literal("token_usage"),input_tokens:Q.Number(),output_tokens:Q.Number(),total_tokens:Q.Number(),max_context_tokens:Q.Number(),cache_read_tokens:Q.Optional(Q.Number()),cache_write_tokens:Q.Optional(Q.Number()),cost_usd:Q.Optional(Q.Number())}),uq=K({type:Q.Literal("compacting"),state:H(["started","completed"])}),lq=K({type:Q.Literal("provider_retry"),phase:H(["scheduled","attempt","recovered","exhausted"]),attempt:Q.Integer({minimum:0}),max_retries:Q.Integer({minimum:0}),reason:H(["rate_limit","server_error","timeout","transport","stream_closed"]),status_code:Q.Optional(Q.Integer({minimum:100,maximum:599})),delay_ms:Q.Optional(Q.Integer({minimum:0})),next_retry_at:Q.Optional(Q.Integer({minimum:0}))}),vq=K({type:Q.Literal("turn_limit"),turns_count:Q.Number(),action:Q.Literal("continue")}),iq=K({type:Q.Literal("task_session"),session_id:Q.String(),project_path:Q.String(),source_project_path:Q.String(),isolation:H(["local","worktree"]),worktree_branch:Q.Optional(Q.String()),base_commit:Q.Optional(Q.String())}),rq=K({type:Q.Literal("task_admission"),state:H(["queued","running"]),queue_position:Q.Optional(Q.Integer({minimum:1})),queue_depth:Q.Integer({minimum:0}),in_flight:Q.Integer({minimum:0}),max_concurrent_tasks:Q.Integer({minimum:1})}),sq=K({type:Q.Literal("output"),content:Q.String(),exit_code:Q.Number()}),aq=K({type:Q.Literal("error"),message:Q.String()}),HQ=w(Q.Union([Uq,Rq,Mq,Pq,fq,Nq,Eq,xq,Iq,Jq,Lq,Wq,Sq,Oq,hq,Cq,kq,Fq,wq,yq,gq,Tq,cq,dq,pq,mq,uq,lq,vq,iq,rq,sq,aq]));function c(Y,Z){return{event_version:g,type:Y,...Z}}function tq(Y){if(Y?.signal)return{signal:Y.signal,dispose:()=>{return}};let Z=new AbortController,b=()=>Z.abort("interrupt");return process.once("SIGINT",b),process.once("SIGTERM",b),{signal:Z.signal,dispose:()=>{process.removeListener("SIGINT",b),process.removeListener("SIGTERM",b)}}}var eq=H(["text","jsonl"]),qQ=Q.Object({headless:Q.Optional(Q.Boolean()),message:Q.Optional(Q.String()),_:Q.Optional(Q.Array(Q.Union([Q.String(),Q.Number()]))),model:Q.Optional(Q.String()),systemPrompt:Q.Optional(Q.String()),appendSystemPrompt:Q.Optional(Q.String()),maxTurns:Q.Optional(Q.Refine(Q.Integer({maximum:l}),(Y)=>Y===-1||Y>0,()=>"must be -1 or a positive integer")),permissionMode:Q.Optional(Q.Enum(m)),mcpConfig:Q.Optional(Q.Array(Q.String())),strictMcpConfig:Q.Optional(Q.Boolean()),sessionId:Q.Optional(Q.String()),allowedTools:Q.Optional(Q.Array(Q.String())),disallowedTools:Q.Optional(Q.Array(Q.String())),agents:Q.Optional(Q.String()),continue:Q.Optional(Q.Boolean()),resume:Q.Optional(Q.Union([Q.String(),Q.Boolean()])),forkSession:Q.Optional(Q.Boolean()),taskIsolation:Q.Optional(H(["local","worktree"])),outputFormat:Q.Optional(eq),jsonSchema:Q.Optional(Q.String()),outputSchema:Q.Optional(Q.String())});class Dq{openedThinking=!1;wroteAssistantContent=!1;markAssistantContent(){this.wroteAssistantContent=!0}setThinkingOpened(Y){this.openedThinking=Y}hasOpenThinking(){return this.openedThinking}completeStream(){let Y={openedThinking:this.openedThinking,wroteAssistantContent:this.wroteAssistantContent};return this.openedThinking=!1,this.wroteAssistantContent=!1,Y}}function QQ(Y){return Y.issues.map((Z)=>`${Z.path.join(".")||"options"}: ${Z.message}`).join("; ")}function YQ(Y){let Z=u(qQ,Y);if(!Z.success)throw Error(`Invalid headless options: ${QQ(Z.error)}`);return Z.data}function ZQ(Y){return Y.command("* [message]","Run full agent loop without Ink UI and print events to the terminal",(Z)=>Z.positional("message",{describe:"Message to process",type:"string"}).option("headless",{type:"boolean",describe:"Run full agent loop without Ink UI and print events to the terminal"}).option("model",{describe:"Model ID for this run",type:"string"}).option("system-prompt",{describe:"Replace the default system prompt",type:"string"}).option("append-system-prompt",{describe:"Append a system prompt to the default system prompt",type:"string"}).option("max-turns",{alias:["maxTurns"],describe:"Maximum conversation turns (-1: unlimited, N>0: limit to N turns)",type:"number"}).option("output-format",{alias:["outputFormat"],choices:["text","jsonl"],describe:"Headless output format",type:"string"}).option("json-schema",{alias:["jsonSchema"],describe:"Inline JSON Schema for the structured final response",type:"string"}).option("output-schema",{alias:["outputSchema"],describe:"Path to a JSON Schema file for the structured final response",type:"string"}).option("task-isolation",{alias:["taskIsolation"],choices:["local","worktree"],describe:"Dispatch a new durable task in the selected workspace mode",type:"string"}),async(Z)=>{if(!Z.headless)return;let b=await KQ(Z);process.exit(b)})}function D(Y,Z=""){Y.write(`${Z}
2
- `)}function $Q(Y){return`[task] [${Y.status}] ${Y.subject}`}function GQ(){return{requestConfirmation:async(Y)=>Y.type==="mcpElicitation"?{approved:!1,reason:"headless-mcp-elicitation-unavailable",elicitation:{action:"cancel"}}:Y.type==="mcpSampling"?{approved:!1,reason:"headless-mcp-sampling-unavailable"}:{approved:!0,reason:"headless-auto-approved",scope:"session"}}}function VQ(Y){if(!(Y instanceof Error))return"Unknown error";let V=Y.lastError??Y;if(V.responseBody)try{let j=JSON.parse(V.responseBody)?.error?.message;if(j)return V.statusCode?`${j} (HTTP ${V.statusCode})`:j}catch{}let q=Y.message.match(/Last error:\s*(.+)$/);if(q)return q[1];return Y.message}function XQ(Y){return Y==="jsonl"?"jsonl":"text"}function d(Y,Z){let b=(...V)=>{for(let q of V){let $=Z[q];if(typeof $==="string"&&$.trim()!=="")return $}return};switch(Y){case"Read":case"Edit":case"Write":case"UndoEdit":return b("file_path");case"ApplyPatch":return"multi-file patch";case"NotebookEdit":return b("notebook_path");case"Grep":return b("path","pattern");case"Glob":return b("pattern");case"WebFetch":return b("url");case"WebSearch":return b("query");case"Bash":return b("command","description");case"Task":return b("description");case"LSP":return b("filePath","operation");case"EnterWorktree":return b("name");case"ExitWorktree":return b("action");default:return}}function BQ(Y,Z,b,V){let q=new Set(["Glob","Grep","WebSearch","LS"]),$=new Set(["Read","WebFetch"]);if(new Set(["Edit","Write","ApplyPatch","NotebookEdit","Bash","LSP","UndoEdit","EnterWorktree","ExitWorktree"]).has(Y)&&!V.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${Z}`,shouldLockTarget:!0};if(V.targetLocked)return{phase:"executing",status:"hit",message:b?`Working within target: ${Z}`:`Executing: ${Z}`,shouldLockTarget:!1};if(q.has(Y))return{phase:"searching",status:"ongoing",message:`Still searching: ${Z}`,shouldLockTarget:!1};if($.has(Y))return{phase:"inspecting",status:"ongoing",message:`Inspecting candidate: ${Z}`,shouldLockTarget:!1};return{phase:"executing",status:V.targetLocked?"hit":"ongoing",message:`Executing: ${Z}`,shouldLockTarget:!1}}function p(Y,Z,b=!1){let V=(q,$)=>{Y.stdout.write(`${JSON.stringify(c(q,$))}
3
- `)};return{contentDelta(q){if(Z==="jsonl"){V("content_delta",{delta:q});return}if(b)return;Y.stdout.write(q)},thinkingDelta(q,$){if(Z==="jsonl")return V("thinking_delta",{delta:q}),$;if(!$)Y.stderr.write("[thinking] ");return Y.stderr.write(q),!0},thinking(q){if(Z==="jsonl"){V("thinking",{content:q});return}D(Y.stderr,`[thinking] ${q}`)},streamEnd(q,$){if(Z==="jsonl"){V("stream_end",{});return}if($)Y.stderr.write(`
4
- `);if(q)Y.stdout.write(`
5
- `)},content(q){if(Z==="jsonl"){V("content",{content:q});return}D(Y.stdout,q)},structuredOutput(q){if(Z==="jsonl"){V("structured_output",{output:q.output,schema_digest:q.schemaDigest});return}D(Y.stdout,JSON.stringify(q.output))},toolStart(q,$,j,z){if(Z==="jsonl"){V("tool_start",{tool_name:q,summary:$,target:j,tool_kind:z});return}D(Y.stderr,`[tool:start] ${$}`)},toolProgress(q,$,j,z){if(Z==="jsonl"){V("tool_progress",{tool_name:q,message:$,progress:j,total:z});return}D(Y.stderr,`[tool:progress] ${q}: ${$}`)},toolResult(q,$,j,z,R){if(Z==="jsonl"){V("tool_result",{tool_name:q,summary:$,target:j,tool_kind:z,success:R?.success,error_type:R?.errorType,error_message:R?.errorMessage});return}D(Y.stderr,`[tool:result] ${$}`)},mcpCatalogChanged(q){if(Z==="jsonl"){V("mcp_catalog_changed",{revision:q.revision,server_name:q.serverName,added:q.added,removed:q.removed,updated:q.updated});return}D(Y.stderr,`[mcp:catalog] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpContentChanged(q){if(Z==="jsonl"){V("mcp_content_changed",{revision:q.revision,server_name:q.serverName,content_kind:q.contentKind==="resourceTemplates"?"resource_templates":q.contentKind,added:q.added,removed:q.removed,updated:q.updated});return}D(Y.stderr,`[mcp:${q.contentKind}] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpResourceUpdated(q){if(Z==="jsonl"){V("mcp_resource_updated",{revision:q.revision,server_name:q.serverName,uri:q.uri});return}D(Y.stderr,`[mcp:resource] r${q.revision} ${q.serverName} updated ${q.uri}`)},mcpConnectionChanged(q){if(Z==="jsonl"){V("mcp_connection_changed",{revision:q.revision,server_name:q.serverName,phase:q.phase,reason:q.reason,attempt:q.attempt,max_attempts:q.maxAttempts,...q.nextRetryAt!==void 0?{next_retry_at:q.nextRetryAt}:{},...q.error?{error:q.error}:{}});return}D(Y.stderr,`[mcp:connection] r${q.revision} ${q.serverName} ${q.phase} ${q.attempt}/${q.maxAttempts}`)},mcpLog(q){if(Z==="jsonl"){V("mcp_log",{revision:q.revision,server_name:q.serverName,level:q.level,logger:q.logger,message:q.message,projected_bytes:q.projectedBytes,data_sha256:q.dataSha256,truncated:q.truncated,details_omitted:q.detailsOmitted,timestamp:q.timestamp,synthetic:q.synthetic});return}D(Y.stderr,`[mcp:log] ${q.level} ${q.serverName}${q.logger?` logger=${q.logger}`:""}: ${q.message}`)},mcpInstructionsChanged(q){if(Z==="jsonl"){V("mcp_instructions_changed",{revision:q.revision,server_name:q.serverName,action:q.action,reason:q.reason,text:q.text,source_bytes:q.sourceBytes,projected_bytes:q.projectedBytes,sha256:q.sha256,truncated:q.truncated,details_omitted:q.detailsOmitted});return}D(Y.stderr,`[mcp:instructions] ${q.action} ${q.serverName}${q.truncated?" (truncated)":""}`)},mcpTaskChanged(q){if(Z==="jsonl"){V("mcp_task_changed",{revision:q.revision,task_id:q.taskId,server_name:q.serverName,tool_name:q.toolName,status:q.status,status_message:q.statusMessage,created_at:q.createdAt,updated_at:q.updatedAt,completed_at:q.completedAt,has_result:q.hasResult,error:q.error});return}D(Y.stderr,`[mcp:task] ${q.taskId} ${q.serverName}/${q.toolName} `+q.status)},projectRulesLoaded(q){if(Z==="jsonl"){V("project_rules_loaded",{files:q.files.map(($)=>({id:$.id,relative_path:$.relativePath,source:$.source,conditional:$.conditional,content_sha256:$.contentSha256})),trigger_paths:q.triggerPaths,blocked_write:q.blockedWrite});return}D(Y.stderr,`[project-rules] loaded ${q.files.length} file(s)${q.blockedWrite?" before write":""}`)},userShellStarted(q,$,j){if(Z==="jsonl"){V("user_shell_started",{execution_id:q,command:$,auxiliary:j});return}D(Y.stderr,`[user-shell:start] ${$}`)},userShellOutput(q,$,j,z){if(Z==="jsonl"){V("user_shell_output",{execution_id:q,stream:$,chunk:j,stream_truncated:z});return}($==="stderr"?Y.stderr:Y.stdout).write(j)},userShellCompleted(q){if(Z==="jsonl"){V("user_shell_completed",{execution_id:q.executionId,message_id:q.messageId,status:q.record.status,exit_code:q.record.exitCode,duration_ms:q.record.durationMs,stdout:q.record.stdout,stderr:q.record.stderr,truncated:q.record.truncated,auxiliary:q.auxiliary});return}D(Y.stderr,`[user-shell:${q.record.status}] exit=${q.record.exitCode??"null"} ${q.record.durationMs}ms`)},phase(q,$,j,z={}){if(Z==="jsonl"){V("phase",{phase:q,status:$,message:j,turn:z.turn,tool_name:z.toolName,target:z.target});return}D(Y.stderr,`[phase:${q}] ${j}`)},toolDetail(q,$){if(Z==="jsonl"){V("tool_detail",{tool_name:q,detail:$});return}D(Y.stderr,$)},taskUpdate(q){if(Z==="jsonl"){V("task_update",{tasks:q});return}for(let $ of q)D(Y.stderr,$Q($))},goal(q){if(Z==="jsonl"){V("goal",{state:q.goal?"updated":"cleared",goal_id:q.goal?.goalId,status:q.goal?.status,verification_attempt:q.goal?.completionVerification?.attempt,verification_status:q.goal?.completionVerification?.status,verifier_session_id:q.goal?.completionVerification?.verifierSessionId,verification_evidence_sha256:q.goal?.completionVerification?.evidenceSha256});return}if(q.goal)D(Y.stderr,`[goal:${q.goal.status}] ${q.goal.objective}`);else D(Y.stderr,"[goal:cleared]")},subagent(q){let $=q.kind==="subagent_spawned";if(Z==="jsonl"){V("subagent",{state:$?"spawned":"completed",session_id:q.sessionId,subagent_type:q.type,success:$?void 0:q.success,summary:$?void 0:q.summary,verification_verdict:$?void 0:q.verificationVerdict,resumed_from:q.resumedFrom,root_agent_id:q.rootAgentId,resume_depth:q.resumeDepth});return}D(Y.stderr,`[subagent:${$?"spawned":"completed"}] ${q.sessionId}${q.resumedFrom?` resumed from ${q.resumedFrom}`:""}`)},tokenUsage(q){if(Z==="jsonl"){V("token_usage",{input_tokens:q.inputTokens,output_tokens:q.outputTokens,total_tokens:q.totalTokens,max_context_tokens:q.maxContextTokens,cache_read_tokens:q.cacheReadTokens,cache_write_tokens:q.cacheWriteTokens,cost_usd:q.costUsd});return}D(Y.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){if(Z==="jsonl"){V("compacting",{state:q?"started":"completed"});return}D(Y.stderr,q?"[context] compacting started":"[context] compacting completed")},providerRetry(q){if(Z==="jsonl"){V("provider_retry",{phase:q.phase,attempt:q.attempt,max_retries:q.maxRetries,reason:q.reason,status_code:q.statusCode,delay_ms:q.delayMs,next_retry_at:q.nextRetryAt});return}let $=q.delayMs!==void 0?` in ${Math.max(0,Math.ceil(q.delayMs/1000))}s`:"";D(Y.stderr,`[provider-retry:${q.phase}] ${q.attempt}/${q.maxRetries} ${q.reason}${$}`)},turnLimit(q){if(Z==="jsonl"){V("turn_limit",{turns_count:q,action:"continue"});return}D(Y.stderr,`[turn-limit] continuing after ${q} turns`)},taskSession(q){if(Z==="jsonl"){V("task_session",{session_id:q.sessionId,project_path:q.projectPath,source_project_path:q.sourceProjectPath,isolation:q.isolation,worktree_branch:q.worktreeBranch,base_commit:q.baseCommit});return}D(Y.stderr,`[task:${q.isolation}] ${q.sessionId} ${q.sourceProjectPath} -> ${q.projectPath}${q.worktreeBranch?` (${q.worktreeBranch})`:""}`)},taskAdmission(q){if(Z==="jsonl"){V("task_admission",{state:q.state,queue_position:q.queuePosition,queue_depth:q.queueDepth,in_flight:q.inFlight,max_concurrent_tasks:q.maxConcurrentTasks});return}D(Y.stderr,q.state==="queued"?`[task:queued] position ${q.queuePosition??1}/${q.queueDepth} (running ${q.inFlight}/${q.maxConcurrentTasks})`:`[task:running] admitted (running ${q.inFlight}/${q.maxConcurrentTasks})`)},output(q,$=0){if(Z==="jsonl"){V("output",{content:q,exit_code:$});return}D($===0?Y.stdout:Y.stderr,q)},error(q){if(Z==="jsonl"){V("error",{message:q});return}D(Y.stderr,q)}}}async function KQ(Y,Z={stdout:process.stdout,stderr:process.stderr},b){let V="text",q=p(Z,V),$=new Dq,j={targetLocked:!1},z,R,J=tq(b);try{let B=YQ(Y);V=XQ(B.outputFormat);let P=await Bq(B);q=p(Z,V,Boolean(P)),await Gq();let jq=await Vq(B),A=await Xq(jq);if(A.mode==="output"){if(A.content)q.output(A.content,A.exitCode??0);return A.exitCode??0}let L=A.content.trimStart().startsWith("!")?A.content.trimStart().slice(1).trim():void 0;if(L!==void 0&&B.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(L!==void 0&&P)throw Error("Output schemas cannot be combined with user shell commands");if(B.taskIsolation&&(B.continue||B.resume||B.forkSession))throw Error("--task-isolation cannot be combined with --continue, --resume, or --fork-session");let{sessionId:U,messages:C,metadata:k}=await Kq({sessionId:B.sessionId,continue:B.continue,resume:B.resume,forkSession:B.forkSession,fallbackSessionPrefix:"headless"}),E=B.permissionMode??k?.permissionMode??"yolo",F=B.model&&B.model!=="inherit"?B.model:v()?.id,_=B.taskIsolation?await $q.createSessionTask({sessionId:U,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,dispatch:{version:1,prompt:A.content,sourceProjectPath:I(),isolation:B.taskIsolation,permissionMode:E,...F?{modelId:F}:{},...P?{outputSchema:P}:{}}}):void 0,M=_?.metadata.projectPath??k?.projectPath??I();if(!_)await h.setSessionPermissionMode(U,M,E);let bq=_?!1:await s.cancelPendingNonInteractive(M,U);if(_)q.taskSession({sessionId:U,projectPath:M,sourceProjectPath:_.metadata.taskSourceProjectPath??I(),isolation:B.taskIsolation,worktreeBranch:_.metadata.taskWorktreeBranch,baseCommit:_.metadata.taskBaseCommit}),R=r.subscribe((G)=>{if(G.type!=="task.status"||G.sessionId!==U||G.projectPath!==M||!["queued","running"].includes(String(G.properties.taskStatus))||typeof G.properties.taskQueueDepth!=="number"||typeof G.properties.taskInFlight!=="number"||typeof G.properties.taskConcurrencyLimit!=="number")return;q.taskAdmission({state:G.properties.taskStatus,queuePosition:typeof G.properties.taskQueuePosition==="number"?G.properties.taskQueuePosition:void 0,queueDepth:G.properties.taskQueueDepth,inFlight:G.properties.taskInFlight,maxConcurrentTasks:G.properties.taskConcurrencyLimit})});let Hq={messages:bq?await h.loadSession(U,M):[...C],userId:"cli-user",sessionId:U,workspaceRoot:M,permissionMode:E,signal:J.signal,..._?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:GQ()};if(z=await a.create({sessionId:U,workspaceRoot:M,modelId:B.model,permissionMode:E,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig,agents:B.agents?e(B.agents):void 0,..._?.taskWorktree?{taskWorktree:_.taskWorktree}:{},..._?.metadata.taskIsolation?{taskIsolation:_.metadata.taskIsolation}:{},...C.length>0?{sessionStart:{isResume:!0,resumeSessionId:U}}:{}}),L!==void 0){let G=await z.executeUserShellCommand(L,{signal:J.signal,onEvent:(X)=>{if(X.type==="started")q.userShellStarted(X.executionId,X.command,X.auxiliary);else if(X.type==="output")q.userShellOutput(X.executionId,X.stream,X.chunk,X.streamTruncated)}});return q.userShellCompleted(G),G.record.status==="completed"?0:G.record.status==="aborted"?130:G.record.exitCode??1}let zq=B.maxTurns??z.getConfig().maxTurns,_q=_?.taskWorktree?[...new Set([...B.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:B.disallowedTools,Aq=await t.createWithRuntime(z,{sessionId:U,systemPrompt:B.systemPrompt,appendSystemPrompt:B.appendSystemPrompt,maxTurns:B.maxTurns,modelId:B.model,permissionMode:E,toolWhitelist:B.allowedTools,toolBlacklist:_q,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig}),O=await i(Aq.chatStream(A.content,Hq,{stream:!0,signal:J.signal,maxTurns:B.maxTurns,outputSchema:P,...zq===-1?{onTurnLimitReached:async(G)=>{return q.turnLimit(G.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(G)=>{switch(G.kind){case"content_delta":if(!P||V==="jsonl")$.markAssistantContent();q.contentDelta(G.delta);break;case"thinking_delta":$.setThinkingOpened(q.thinkingDelta(G.delta,$.hasOpenThinking()));break;case"stream_end":{let X=$.completeStream();q.streamEnd(X.wroteAssistantContent,X.openedThinking);break}case"tool_start":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;if(["TaskCreate","TaskUpdate","TaskList"].includes(X.function.name))break;try{let f=JSON.parse(X.function.arguments),N=o(X.function.name,f),x=d(X.function.name,f),W=BQ(X.function.name,N,x,j);if(W.shouldLockTarget)j.targetLocked=!0;q.phase(W.phase,W.status,W.message,{toolName:X.function.name,target:x}),q.toolStart(X.function.name,N,x,G.toolKind)}catch{q.phase(j.targetLocked?"executing":"searching",j.targetLocked?"hit":"ongoing",j.targetLocked?`Working within target: ${X.function.name}`:`Still searching: ${X.function.name}`,{toolName:X.function.name}),q.toolStart(X.function.name,X.function.name,void 0,G.toolKind)}break}case"tool_progress":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;q.toolProgress(X.function.name,G.update.message,G.update.progress,G.update.total);break}case"tool_result":{let X=G.toolCall;if(!("function"in X))break;if(X.function.name===S)break;let f;try{let x=JSON.parse(X.function.arguments);f=d(X.function.name,x)}catch{f=void 0}let N=n(X.function.name,G.result);if(q.toolResult(X.function.name,N.summary,f,void 0,{success:G.result.success,errorType:G.result.error?.type,errorMessage:G.result.error?.message}),N.detail)q.toolDetail(X.function.name,N.detail);break}case"token_usage":q.tokenUsage(G.usage);break;case"compaction":q.compacting(G.phase==="start");break;case"task_update":q.taskUpdate(G.tasks);break;case"structured_output":q.structuredOutput(G);break;case"mcp_catalog_changed":q.mcpCatalogChanged(G);break;case"mcp_content_changed":q.mcpContentChanged(G);break;case"mcp_resource_updated":q.mcpResourceUpdated(G);break;case"mcp_connection_changed":q.mcpConnectionChanged(G);break;case"mcp_log":q.mcpLog(G);break;case"mcp_instructions_changed":q.mcpInstructionsChanged(G);break;case"mcp_task_changed":q.mcpTaskChanged(G);break;case"project_rules_loaded":q.projectRulesLoaded(G);break;case"steering_applied":case"follow_up_started":case"goal_continuation_started":break;case"goal_updated":q.goal(G);break;case"subagent_spawned":case"subagent_completed":q.subagent(G);break;case"model_fallback":break;case"provider_retry":q.providerRetry(G);break;case"turn_start":if(G.turn===1)j.targetLocked=!1;q.phase("turn",j.targetLocked?"hit":"ongoing",`Turn ${G.turn} started`,{turn:G.turn});break;default:{let X=G}}});if(O.metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!O.success)return q.error(`Error: ${O.error?.message??"Agent execution failed"}`),1;return q.phase("completed","done","Headless run completed"),0}catch(B){if($.hasOpenThinking()&&V==="text")Z.stderr.write(`
6
- `);return q.error(`Error: ${VQ(B)}`),1}finally{R?.();try{await z?.dispose()}finally{J.dispose()}}}async function TQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:b,"output-format":V,"system-prompt":q,"append-system-prompt":$,"max-turns":j,...z}=qq,R=oq(nq(process.argv)).scriptName("blade").strict(!1).options(z).middleware([Yq,Qq,Zq]);return ZQ(R),await R.parse(),!0}export{KQ as runHeadless,TQ as handleHeadlessMode,qQ as HeadlessOptionsSchema};