blade-code 0.10.31 → 0.10.33

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 (106) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/chunk-08fww0yh.js +1 -0
  3. package/dist/{chunk-ktwp84cv.js → chunk-0k0k5qjr.js} +2 -2
  4. package/dist/{chunk-0ew7vmkb.js → chunk-189drzww.js} +1 -1
  5. package/dist/{chunk-b63dfss4.js → chunk-20qedxrp.js} +1 -1
  6. package/dist/chunk-23bhwgwm.js +204 -0
  7. package/dist/{chunk-7hs1n09m.js → chunk-23bkpq26.js} +2 -2
  8. package/dist/chunk-25j7tjr6.js +1 -0
  9. package/dist/{chunk-km155c83.js → chunk-2rsr3bte.js} +1 -1
  10. package/dist/chunk-2s24zvjm.js +22 -0
  11. package/dist/{chunk-aa4xya8p.js → chunk-3j57nm6f.js} +2 -2
  12. package/dist/{chunk-t857g6s9.js → chunk-3r0yfspg.js} +1 -1
  13. package/dist/{chunk-2nga4tsd.js → chunk-40654rh3.js} +2 -2
  14. package/dist/{chunk-pqsg5265.js → chunk-4kratdhc.js} +1 -1
  15. package/dist/{chunk-2rmt821w.js → chunk-5fm0qywg.js} +2 -2
  16. package/dist/chunk-5hn788xk.js +2 -0
  17. package/dist/{chunk-86phvby9.js → chunk-6b2w2132.js} +1 -1
  18. package/dist/{chunk-2q06pq10.js → chunk-6bqd2hkz.js} +1 -1
  19. package/dist/chunk-74js4dnw.js +1 -0
  20. package/dist/chunk-7dt49b6q.js +8 -0
  21. package/dist/chunk-7ncx3vzw.js +1 -0
  22. package/dist/{chunk-fs1r9hyz.js → chunk-8vxxmdhd.js} +1 -1
  23. package/dist/{chunk-at2krx3x.js → chunk-91sne4g4.js} +2 -2
  24. package/dist/{chunk-d0sej62r.js → chunk-91vwv4ph.js} +2 -2
  25. package/dist/{chunk-93zgz6v6.js → chunk-97mzk53w.js} +1 -1
  26. package/dist/chunk-9c4fvem6.js +1 -0
  27. package/dist/chunk-9qj6y0sj.js +2 -0
  28. package/dist/chunk-agw7bq0h.js +1 -0
  29. package/dist/{chunk-xhxvde2k.js → chunk-amm23yvd.js} +2 -2
  30. package/dist/chunk-bhj7dqe8.js +1 -0
  31. package/dist/{chunk-jmyxhygx.js → chunk-bvnxztsj.js} +1 -1
  32. package/dist/{chunk-byqg8qby.js → chunk-ctn675zn.js} +2 -2
  33. package/dist/{chunk-9wy7xryc.js → chunk-d3h8cgs8.js} +1 -1
  34. package/dist/chunk-dkz757cv.js +1 -0
  35. package/dist/{chunk-7gsqx900.js → chunk-f20mb84y.js} +2 -2
  36. package/dist/{chunk-tb1hr6w9.js → chunk-f5yx8s8t.js} +1 -1
  37. package/dist/{chunk-qat3ara1.js → chunk-f9graf2n.js} +1 -1
  38. package/dist/{chunk-fqrt55g3.js → chunk-g2yj0chw.js} +1 -1
  39. package/dist/chunk-gmpgmh7s.js +1 -0
  40. package/dist/{chunk-1905jhyj.js → chunk-gw51xyz9.js} +2 -2
  41. package/dist/{chunk-q1v03abc.js → chunk-h9v4tzdt.js} +2 -2
  42. package/dist/{chunk-anm5phza.js → chunk-hs3yryjm.js} +2 -2
  43. package/dist/{chunk-9jkbhaec.js → chunk-k05xt45s.js} +1 -1
  44. package/dist/{chunk-07t42c40.js → chunk-k9px24b5.js} +1 -1
  45. package/dist/{chunk-bqmd7hp7.js → chunk-kqe9y6ka.js} +43 -43
  46. package/dist/{chunk-v1jxren4.js → chunk-m06gcr4k.js} +1 -1
  47. package/dist/chunk-m6srq209.js +1 -0
  48. package/dist/{chunk-vw6z3t41.js → chunk-mdrdafpa.js} +1 -1
  49. package/dist/{chunk-pgs555fv.js → chunk-mt3nrz7x.js} +2 -2
  50. package/dist/{chunk-s8889acm.js → chunk-mxyb9hn6.js} +1 -1
  51. package/dist/chunk-np2vrjpc.js +10 -0
  52. package/dist/{chunk-0qjzgs1d.js → chunk-qj6gafse.js} +1 -1
  53. package/dist/chunk-sfvt4ef0.js +1610 -0
  54. package/dist/{chunk-qfd0tees.js → chunk-tzragyzm.js} +1 -1
  55. package/dist/{chunk-1v251p73.js → chunk-vm0w0jt9.js} +1 -1
  56. package/dist/{chunk-khvbwbtv.js → chunk-vp7n0w9w.js} +2 -2
  57. package/dist/{chunk-c2bgj76r.js → chunk-vybzvxf9.js} +1 -1
  58. package/dist/{chunk-9afqfajf.js → chunk-vzf17snk.js} +2 -2
  59. package/dist/{chunk-s4zvf2tf.js → chunk-w45ngpy1.js} +2 -2
  60. package/dist/chunk-wgnzghhc.js +6 -0
  61. package/dist/{chunk-44ep1v89.js → chunk-wzjhwr2p.js} +3 -3
  62. package/dist/chunk-xfpne7cm.js +1 -0
  63. package/dist/{chunk-ayx03d6y.js → chunk-y1bb5391.js} +1 -1
  64. package/dist/chunk-ycvwc7hb.js +1 -0
  65. package/dist/{chunk-zzkzmrjd.js → chunk-z2k6q0k1.js} +2 -2
  66. package/dist/chunk-z7s2138c.js +1 -0
  67. package/dist/chunk-zfezz6ew.js +1 -0
  68. package/dist/{chunk-3fzevvzm.js → chunk-zftb9s2h.js} +2 -2
  69. package/dist/{chunk-x36dp4pj.js → chunk-zhbpatxr.js} +1 -1
  70. package/dist/chunk-ztyt12kf.js +2 -0
  71. package/dist/{chunk-c913zbnw.js → chunk-zvjvbhc4.js} +2 -2
  72. package/dist/web/assets/{ChatView-SgrwGFY6.js → ChatView-B7_Um8KR.js} +2 -2
  73. package/dist/web/assets/{CodeBlockHighlighter-BgvTBcCD.js → CodeBlockHighlighter-JzE91vkT.js} +1 -1
  74. package/dist/web/assets/{FilePreview-D1ZOOgV-.js → FilePreview-BTbtoUBJ.js} +1 -1
  75. package/dist/web/assets/{MarkdownRenderer-BdBwdGfs.js → MarkdownRenderer-IaPtOh2w.js} +3 -3
  76. package/dist/web/assets/{SettingsModal-y7zf5Dbj.js → SettingsModal-CPgWPfZ2.js} +1 -1
  77. package/dist/web/assets/{TaskSwitcher-YYFAqV6o.js → TaskSwitcher-D4RZxQKp.js} +1 -1
  78. package/dist/web/assets/{TerminalPanel-BjA-x8tb.js → TerminalPanel-yWbQfbYa.js} +1 -1
  79. package/dist/web/assets/{index-B6QL61mx.js → index-BnCT8SxR.js} +8 -8
  80. package/dist/web/assets/session-events-BZao_jMQ.js +22 -0
  81. package/dist/web/index.html +2 -2
  82. package/package.json +1 -1
  83. package/dist/chunk-1pr72n4c.js +0 -1
  84. package/dist/chunk-1y3jpc4s.js +0 -1
  85. package/dist/chunk-321dpgd3.js +0 -2
  86. package/dist/chunk-3gbrc75h.js +0 -1
  87. package/dist/chunk-6pwgtmw3.js +0 -1
  88. package/dist/chunk-7b81rbkw.js +0 -1
  89. package/dist/chunk-a83cdn7b.js +0 -1
  90. package/dist/chunk-hev5sqxy.js +0 -1
  91. package/dist/chunk-hrfdc0dt.js +0 -6
  92. package/dist/chunk-nnby8asg.js +0 -10
  93. package/dist/chunk-rj3cmn4b.js +0 -1
  94. package/dist/chunk-s6exb18e.js +0 -3
  95. package/dist/chunk-tps0kwhy.js +0 -1
  96. package/dist/chunk-tsfv04af.js +0 -1
  97. package/dist/chunk-v0sfs2b6.js +0 -1
  98. package/dist/chunk-vd17dtg7.js +0 -1
  99. package/dist/chunk-vy59rm9j.js +0 -2
  100. package/dist/chunk-xtaq5ck1.js +0 -2
  101. package/dist/chunk-xv1bz8f4.js +0 -1608
  102. package/dist/chunk-y7m792w3.js +0 -1
  103. package/dist/chunk-y9v884rp.js +0 -204
  104. package/dist/chunk-ykjpwdba.js +0 -1
  105. package/dist/chunk-zfpbkkdh.js +0 -22
  106. package/dist/web/assets/session-events-Bgb4zeFL.js +0 -22
@@ -0,0 +1,22 @@
1
+ var he=Object.defineProperty;var ye=(e,t,n)=>t in e?he(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var K=(e,t,n)=>ye(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 N(e){return e?e.subagents&&e.subagents.length>0?e.subagents:e.subagent?[e.subagent]:[]:[]}function B(e,t,n){const a=(n?t.find(o=>o.id===n||o.sessionId===n):void 0)??t[t.length-1]??null;return{...e,subagents:t,subagent:a}}function ue(e,t){const n=[...N(e)];let a=n.findIndex(s=>s.id===t.id||!!(s.sessionId&&t.sessionId&&s.sessionId===t.sessionId));if(a===-1&&t.sessionId&&(a=n.findIndex(s=>!s.sessionId&&s.status==="running"&&s.type===t.type&&s.description===t.description)),a===-1)return n.push(t),B(e,n,t.id);const o=n[a],u={...o,...t,id:o.id};return n[a]=u,B(e,n,u.id)}function H(e,t){return`${t}-${e.length}`}function Ce(e,t){if(!t)return e;const n=[...j(e)],a=n[n.length-1];return(a==null?void 0:a.type)==="text"?n[n.length-1]={...a,content:a.content+t}:n.push({id:H(n,"text"),type:"text",content:t}),{...e,timeline:n}}function be(e,t){if(!t)return e;const n=[...j(e)],a=n[n.length-1];return(a==null?void 0:a.type)==="thinking"?n[n.length-1]={...a,content:a.content+t}:n.push({id:H(n,"thinking"),type:"thinking",content:t}),{...e,timeline:n}}function oe(e,t){const n=e.toolCalls.some(s=>s.toolCallId===t.toolCallId),a=n?e.toolCalls:[...e.toolCalls,t];if(n)return{...e,toolCalls:a};const o=[...j(e)],u=o[o.length-1];return(u==null?void 0:u.type)==="tool_group"?o[o.length-1]={...u,toolCallIds:[...u.toolCallIds,t.toolCallId]}:o.push({id:H(o,"tool_group"),type:"tool_group",toolCallIds:[t.toolCallId]}),{...e,timeline:o,toolCalls:a}}function j(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 ve(e){return j(e).filter(t=>t.type==="text").map(t=>t.content).filter(Boolean).join(`
2
+
3
+ `)}const Ae=2166136261,Te=16777619;function J(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?`[${e.map(t=>J(t)).join(",")}]`:typeof e=="object"?`{${Object.entries(e).sort(([n],[a])=>n.localeCompare(a)).map(([n,a])=>`${JSON.stringify(n)}:${J(a)}`).join(",")}}`:JSON.stringify(e)}function de(e){let t=Ae>>>0;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,Te);return(t>>>0).toString(16)}function le(e){return typeof e=="string"?e:J(e??{})}function G(e){return e==="completed"?"completed":e==="failed"||e==="cancelled"?"failed":"running"}function L({explicitId:e,messageId:t,toolName:n,argumentsValue:a,toolKind:o,output:u}){if(e)return e;const s=[t||"unknown-message",n||"Unknown",le(a),o||"",u||""].join("|");return`tool-${de(s)}`}function F({explicitId:e,sessionId:t,messageId:n,agentType:a,description:o,summary:u}){if(e)return e;if(t)return t;const s=[n||"unknown-message",a||"subagent",o||"",u||""].join("|");return`subagent-${de(s)}`}const ke=(e,t)=>{if(!t||typeof t!="object")return null;const n=G(t.status),a=typeof t.summary=="string"?t.summary:void 0;return{id:F({explicitId:typeof t.subagentId=="string"?t.subagentId:void 0,sessionId:t.childSessionId,messageId:e,agentType:t.agentType,description:t.description,summary:t.summary}),type:t.agentType||"subagent",description:t.description||t.summary||"",status:n,startTime:Date.now(),sessionId:t.childSessionId,resumedFrom:t.resumedFrom,rootAgentId:t.rootAgentId,resumeDepth:typeof t.resumeDepth=="number"?t.resumeDepth:void 0,verificationVerdict:t.verificationVerdict==="pass"||t.verificationVerdict==="fail"||t.verificationVerdict==="partial"?t.verificationVerdict:void 0,output:n==="running"?void 0:a}},$e=(e,t)=>!t||typeof t!="object"?[]:(Array.isArray(t.subtaskRefs)?t.subtaskRefs:t.subtaskRef&&typeof t.subtaskRef=="object"?[t.subtaskRef]:[]).map(a=>ke(e,a)).filter(a=>a!==null);function x(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
4
+ `)}function U(e){if(!e.agentContent)return e;let t=e.agentContent;for(const n of $e(e.id,e.metadata))t=ue(t,n);return{...e,agentContent:t}}function Ne(e){var a,o,u;const t=[];let n=null;for(const s of e)if(s.role!=="system"){if(s.role==="user")n&&(t.push(U(n)),n=null),t.push({id:s.id,role:s.role,content:s.content,timestamp:s.timestamp||Date.now(),metadata:s.metadata});else if(s.role==="assistant"){n&&t.push(U(n));const i=s.metadata;let r=M();s.thinkingContent&&(r=be(r,s.thinkingContent),r.thinkingContent=s.thinkingContent);const d=x(s.content);if(d&&(r=Ce(r,d),r.textBefore=d),s.tool_calls&&Array.isArray(s.tool_calls))for(const c of s.tool_calls){const l=((a=c.function)==null?void 0:a.name)||"Unknown",g=le((o=c.function)==null?void 0:o.arguments);if(l==="Task"){let m={};try{m=JSON.parse(g)}catch{}const S=typeof m.subagent_type=="string"?m.subagent_type:"subagent",y=typeof m.description=="string"?m.description:S;r=ue(r,{id:F({explicitId:c.id,sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,messageId:s.id,agentType:S,description:y}),type:S,description:y,status:"running",startTime:Date.now(),sessionId:typeof m.subagent_session_id=="string"?m.subagent_session_id:void 0,resumedFrom:typeof m.resume_from=="string"?m.resume_from:typeof m.resume=="string"?m.resume:void 0});continue}const I={toolCallId:L({explicitId:c.id,messageId:s.id,toolName:l,argumentsValue:(u=c.function)==null?void 0:u.arguments}),toolName:l,arguments:g,status:"running",startTime:Date.now()};r=oe(r,I)}n={id:s.id,role:"assistant",content:x(s.content),timestamp:s.timestamp||Date.now(),metadata:i,agentContent:r}}else if(s.role==="tool"&&n&&n.agentContent){const i=s,r=s.metadata,d=i.tool_call_id||(r==null?void 0:r.toolCallId),c=i.name||(r==null?void 0:r.toolName)||"Tool",l=r!=null&&r.metadata&&typeof r.metadata=="object"&&!Array.isArray(r.metadata)?r.metadata:r,g=r!=null&&r.independentVerification&&typeof r.independentVerification=="object"&&!Array.isArray(r.independentVerification)?r.independentVerification:void 0,I=(r==null?void 0:r.status)==="failed"||(r==null?void 0:r.status)==="error"||typeof(r==null?void 0:r.error)=="string"&&r.error.length>0,m=N(n.agentContent),S=m.findIndex(h=>h.id===d);if(S>=0){const h=m[S],f=typeof(l==null?void 0:l.subagentStatus)=="string"?G(l.subagentStatus):I?"failed":"completed";m[S]={...h,sessionId:typeof(l==null?void 0:l.subagentSessionId)=="string"?l.subagentSessionId:h.sessionId,type:typeof(l==null?void 0:l.subagentType)=="string"?l.subagentType:h.type,status:f,resumedFrom:typeof(l==null?void 0:l.subagentResumedFrom)=="string"?l.subagentResumedFrom:h.resumedFrom,rootAgentId:typeof(l==null?void 0:l.subagentRootId)=="string"?l.subagentRootId:h.rootAgentId,resumeDepth:typeof(l==null?void 0:l.subagentResumeDepth)=="number"?l.subagentResumeDepth:h.resumeDepth,verificationVerdict:(l==null?void 0:l.verificationVerdict)==="pass"||(l==null?void 0:l.verificationVerdict)==="fail"||(l==null?void 0:l.verificationVerdict)==="partial"?l.verificationVerdict:(g==null?void 0:g.verificationVerdict)==="pass"||(g==null?void 0:g.verificationVerdict)==="fail"||(g==null?void 0:g.verificationVerdict)==="partial"?g.verificationVerdict:h.verificationVerdict,output:typeof(l==null?void 0:l.subagentSummary)=="string"?l.subagentSummary:x(s.content)||h.output},n.agentContent=B(n.agentContent,m,h.id);continue}const y=n.agentContent.toolCalls.find(h=>h.toolCallId===d);y?(y.output=x(s.content),y.status=I?"error":"success",y.metadata=l,y.summary=typeof(l==null?void 0:l.summary)=="string"?l.summary:y.summary,(!y.toolName||y.toolName==="Unknown")&&(y.toolName=c)):n.agentContent=oe(n.agentContent,{toolCallId:L({explicitId:d,messageId:n.id,toolName:c,output:x(s.content)}),toolName:c,output:x(s.content),status:I?"error":"success",startTime:Date.now(),metadata:l,summary:typeof(l==null?void 0:l.summary)=="string"?l.summary:void 0})}}return n&&t.push(U(n)),t}const ce={authentication:"task.failure.authentication",permission:"task.failure.permission",rate_limit:"task.failure.rateLimit",timeout:"task.failure.timeout",network:"task.failure.network",model_unavailable:"task.failure.modelUnavailable",context_limit:"task.failure.contextLimit",unsupported_input:"task.failure.unsupportedInput",runtime:"task.failure.runtime"},Me={authentication:!1,permission:!1,rate_limit:!0,timeout:!0,network:!0,model_unavailable:!0,context_limit:!1,unsupported_input:!1,runtime:!0};function Pe(e){if(typeof e=="string"&&Object.keys(ce).includes(e))return e}function Ut(e){return ce[e]}function Bt(e){return Me[e]}const Re={flushTimeout:80};class xe{constructor(t){K(this,"config");K(this,"channels",new Map);this.config={...Re,...t}}append(t,n,a){let o=this.channels.get(t);o||(o={buffer:"",timer:null,flushFn:null},this.channels.set(t,o)),o.buffer+=n,o.flushFn=a,o.timer||(o.timer=setTimeout(()=>{this.flushChannel(t)},this.config.flushTimeout))}flushChannel(t){const n=this.channels.get(t);if(!n||!n.buffer)return;const a=n.buffer,o=n.flushFn;n.buffer="",n.timer&&(clearTimeout(n.timer),n.timer=null),o==null||o(a)}drainAll(){for(const[t]of this.channels)this.flushChannel(t);this.channels.clear()}drainAllExcept(t){for(const[n]of this.channels)n!==t&&this.flushChannel(n);for(const[n,a]of this.channels)n!==t&&!a.buffer&&this.channels.delete(n)}reset(){for(const[,t]of this.channels)t.timer&&clearTimeout(t.timer);this.channels.clear()}}const $=new xe,De=100,b=(e,t,n)=>{if(t)for(const a of e){const o=N(a.agentContent).find(u=>u.id===t||u.sessionId===t);if(o)return{messageId:a.id,subagent:o}}if(n){const a=e.find(s=>s.id===n),o=N(a==null?void 0:a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:n,subagent:u}}for(const a of[...e].reverse()){const o=N(a.agentContent),u=o.find(s=>s.status==="running")??o[o.length-1];if(u)return{messageId:a.id,subagent:u}}};function we(e,t,n){n(a=>{const o={...a.pendingSubagentCompletions??{}};if(o[e]===void 0&&Object.keys(o).length>=De){const u=Object.keys(o)[0];u&&delete o[u]}return o[e]={...t},{pendingSubagentCompletions:o}})}function Q(e,t,n){var u;if(!e)return;const a=(u=t().pendingSubagentCompletions)==null?void 0:u[e];!a||!b(t().messages,e,t().currentAssistantMessageId)||(W({...a,subagentSessionId:e,success:a.status==="completed"},t),n(s=>{const i={...s.pendingSubagentCompletions??{}};return delete i[e],{pendingSubagentCompletions:i}}))}const v=(e,t,n,a=!1)=>{const{currentAssistantMessageId:o,messages:u,addMessage:s,startAgentResponse:i}=e();if(n&&a){const l=u.find(I=>I.id===n&&I.role==="assistant");if(l)return i(l.id),l.id;const g={id:n,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};return s(g),i(n),n}if(o&&!o.startsWith("call_")&&u.some(l=>l.id===o&&l.role==="assistant"))return o;if(n){const l=u.find(g=>g.id===n&&g.role==="assistant");if(l)return i(l.id),l.id}const r=u[u.length-1];if((r==null?void 0:r.role)==="assistant")return r.id;const d=n||`assistant-${Date.now()}`,c={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};return s(c),i(d),t(l=>({messages:l.messages.map(g=>g.id===d?{...g,agentContent:{...g.agentContent||M()}}:g)})),d},_e=(e,t,n)=>{const{currentSessionId:a,addMessage:o,startAgentResponse:u,messages:s,updateMessage:i}=t();if(e.sessionId!==a)return;const r=e.messageId,d=e.role||"assistant",c=s.find(g=>g.id===r),l={id:r,role:d,content:e.content||"",timestamp:Date.now(),agentContent:d==="assistant"?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)},je=(e,t,n)=>{const{currentSessionId:a,appendDelta:o,currentAssistantMessageId:u,hasToolCalls:s,addMessage:i,startAgentResponse:r}=t();if(e.sessionId!==a)return;const d=e.messageId,c=e.delta;if(!u){const g={id:d,role:"assistant",content:"",timestamp:Date.now(),agentContent:M()};i(g),r(d),t().appendDelta(d,c,"before");return}o(u,c,s?"after":"before")},Fe=(e,t)=>{const{currentSessionId:n,updateMessage:a,messages:o}=t();if(e.sessionId!==n)return;const u=e.messageId,s=o.find(i=>i.id===u);s!=null&&s.agentContent&&a(u,{content:ve(s.agentContent)})},qe=(e,t,n)=>{var r;const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.output;if(!o||typeof o!="object"||Array.isArray(o))return;const u=v(t,n,e.messageId);if(!u)return;const s=t().messages.find(d=>d.id===u);if(!s)return;const i=JSON.stringify(o,null,2);t().updateMessage(u,{content:i,metadata:{...s.metadata,structuredOutput:{output:o,schemaDigest:e.schemaDigest}},agentContent:s.agentContent?{...s.agentContent,textBefore:"",textAfter:"",timeline:(r=s.agentContent.timeline)==null?void 0:r.filter(d=>d.type!=="text")}:void 0})},Oe=(e,t,n)=>{const{currentSessionId:a,appendThinking:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId);u&&o(u,e.delta)},Ee=()=>{},ge=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,setSubagent:s}=t();if(e.sessionId!==a)return;const i=v(t,n,e.messageId||e.toolCallId,typeof e.messageId=="string");if(!i)return;u(!0);const r=e.toolName||"Unknown",d=e.arguments;let c,l="",g,I;if(r==="Task")try{const S=JSON.parse(d);c=S.subagent_type,l=S.description||S.query||c||"",g=S.subagent_session_id,I=S.resume_from||S.resume}catch{}if(c){s(i,{id:F({explicitId:e.toolCallId,sessionId:g,messageId:i,agentType:c,description:l}),type:c,description:l,status:"running",startTime:Date.now(),sessionId:g,resumedFrom:I,output:"",thinking:""}),Q(g,t,n);return}const m={toolCallId:L({explicitId:e.toolCallId,messageId:i,toolName:r,argumentsValue:d,toolKind:e.toolKind}),toolName:r,arguments:d,toolKind:e.toolKind,status:"running",startTime:Date.now()};o(i,m)},me=(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})},fe=(e,t,n)=>{var se;const{currentSessionId:a,appendToolCall:o,setHasToolCalls:u,updateToolCall:s,updateSubagent:i,messages:r}=t();if(e.sessionId!==a)return;const d=e.toolCallId;if(!d)return;const c=r.find(A=>{var k;return(k=A.agentContent)==null?void 0:k.toolCalls.some(R=>R.toolCallId===d)}),l=r.find(A=>N(A.agentContent).some(k=>k.id===d)),g=(c==null?void 0:c.id)||(l==null?void 0:l.id)||v(t,n,e.messageId,!0);if(!g)return;const I=typeof e.output=="string"?e.output:"",m=e.success===!0||e.status==="completed",S=e.summary||(I&&I.trim()?I.trim().split(`
5
+ `)[0].slice(0,120):m?"执行成功":"执行失败"),y=(se=c==null?void 0:c.agentContent)==null?void 0:se.toolCalls.find(A=>A.toolCallId===d),h=typeof e.toolName=="string"?e.toolName:(y==null?void 0:y.toolName)??"Unknown",f=e.metadata;c?s(g,d,{status:m?"success":"error",summary:S,output:I,metadata:f}):l||(u(!0),o(g,{toolCallId:d,toolName:h,status:m?"success":"error",summary:S,output:I,startTime:Date.now(),metadata:f}));const q=t().messages.find(A=>A.id===g),T=N(q==null?void 0:q.agentContent).find(A=>A.id===d),P=f&&typeof f.subagentSessionId=="string"?f.subagentSessionId:void 0,D=f&&typeof f.subagentStatus=="string"?f.subagentStatus:void 0,X=f&&typeof f.subagentType=="string"?f.subagentType:void 0,Z=f&&typeof f.subagentSummary=="string"?f.subagentSummary:void 0,p=f&&typeof f.subagentResumedFrom=="string"?f.subagentResumedFrom:void 0,ee=f&&typeof f.subagentRootId=="string"?f.subagentRootId:void 0,te=f&&typeof f.subagentResumeDepth=="number"?f.subagentResumeDepth:void 0,ne=(f==null?void 0:f.verificationVerdict)==="pass"||(f==null?void 0:f.verificationVerdict)==="fail"||(f==null?void 0:f.verificationVerdict)==="partial"?f.verificationVerdict:void 0;if(T){const A=D?G(D):e.success?"completed":"failed",k=T.status!=="running"&&A==="running";i(g,T.id,{sessionId:T.sessionId||P,type:X||T.type,status:k?T.status:A,resumedFrom:p||T.resumedFrom,rootAgentId:ee||T.rootAgentId,resumeDepth:te??T.resumeDepth,verificationVerdict:ne??T.verificationVerdict,output:k?T.output:Z||T.output})}P&&D&&n(A=>({messages:A.messages.map(k=>{if(k.id!==g)return k;const R=k.metadata??{},O=Array.isArray(R.subtaskRefs)?R.subtaskRefs:[],w=O.findIndex(ie=>ie.childSessionId===P||ie.subagentId===d),C=w>=0?O[w]:R.subtaskRef??{},E={...C,subagentId:d,childSessionId:P,agentType:X||(typeof(C==null?void 0:C.agentType)=="string"?C.agentType:"subagent"),status:D,summary:Z||(typeof(C==null?void 0:C.summary)=="string"?C.summary:""),resumedFrom:p||(typeof(C==null?void 0:C.resumedFrom)=="string"?C.resumedFrom:void 0),rootAgentId:ee||(typeof(C==null?void 0:C.rootAgentId)=="string"?C.rootAgentId:P),resumeDepth:te??(typeof(C==null?void 0:C.resumeDepth)=="number"?C.resumeDepth:0),verificationVerdict:ne||(typeof(C==null?void 0:C.verificationVerdict)=="string"?C.verificationVerdict:void 0)},V=[...O];return w>=0?V[w]=E:V.push(E),{...k,metadata:{...R,subtaskRef:E,subtaskRefs:V}}})})),Q(P,t,n)},Ve=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-catalog-${String(e.revision)}`);if(!u)return;const s=Array.isArray(e.added)?e.added.map(String):[],i=Array.isArray(e.removed)?e.removed.map(String):[],r=Array.isArray(e.updated)?e.updated.map(String):[],d=`MCP catalog r${String(e.revision)}: +${s.length} -${i.length} ~${r.length}`;o(u,{toolCallId:`mcp-catalog:${String(e.revision)}`,toolName:"MCP Catalog",arguments:JSON.stringify({serverName:e.serverName,added:s,removed:i,updated:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:d,output:[s.length>0?`Added: ${s.join(", ")}`:"",i.length>0?`Removed: ${i.join(", ")}`:"",r.length>0?`Updated: ${r.join(", ")}`:""].filter(Boolean).join(`
6
+ `)})},Ke=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-content-${String(e.revision)}`);if(!u)return;const s=Array.isArray(e.added)?e.added.map(String):[],i=Array.isArray(e.removed)?e.removed.map(String):[],r=Array.isArray(e.updated)?e.updated.map(String):[],d=`MCP ${String(e.contentKind)} r${String(e.revision)}: +${s.length} -${i.length} ~${r.length}`;o(u,{toolCallId:`mcp-content:${String(e.revision)}`,toolName:"MCP Content",arguments:JSON.stringify({serverName:e.serverName,contentKind:e.contentKind,added:s,removed:i,updated:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:d,output:[s.length>0?`Added: ${s.join(", ")}`:"",i.length>0?`Removed: ${i.join(", ")}`:"",r.length>0?`Updated: ${r.join(", ")}`:""].filter(Boolean).join(`
7
+ `)})},Ue=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-resource-${String(e.revision)}`);u&&o(u,{toolCallId:`mcp-resource:${String(e.revision)}`,toolName:"MCP Resource",arguments:JSON.stringify({serverName:e.serverName,uri:e.uri}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP resource updated: ${String(e.uri)}`,output:`${String(e.serverName)} · revision ${String(e.revision)}`})},Be=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-connection-${String(e.revision)}`);if(!u)return;const s=String(e.phase),i=`MCP ${String(e.serverName)} ${s}`+(s==="reconnecting"?` (${String(e.attempt)}/${String(e.maxAttempts)})`:"");o(u,{toolCallId:`mcp-connection:${String(e.revision)}`,toolName:"MCP Connection",arguments:JSON.stringify({serverName:e.serverName,phase:s,reason:e.reason,attempt:e.attempt,maxAttempts:e.maxAttempts}),toolKind:"readonly",status:s==="failed"?"error":"success",startTime:Date.now(),summary:i,output:[`Reason: ${String(e.reason)}`,e.error?`Error: ${String(e.error)}`:""].filter(Boolean).join(`
8
+ `)})},Je=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=v(t,n,e.messageId||`mcp-log-${String(e.revision)}`);if(!u)return;const s=String(e.level),i=typeof e.logger=="string"?e.logger:void 0,r=`MCP ${s} · ${String(e.serverName)}`+(i?` · ${i}`:"");o(u,{toolCallId:`mcp-log:${String(e.revision)}`,toolName:"MCP Log",arguments:JSON.stringify({serverName:e.serverName,level:s,logger:i}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,output:[String(e.message),`SHA-256: ${String(e.dataSha256)}`,e.truncated===!0?"Truncated":"",e.detailsOmitted===!0?"Details omitted by runtime policy":""].filter(Boolean).join(`
9
+ `)})},Le=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=String(e.serverName),s=String(e.action),i=v(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
+ `)})},He=(e,t,n)=>{var I,m;const{currentSessionId:a,appendToolCall:o,updateToolCall:u}=t();if(e.sessionId!==a)return;const s=String(e.taskId),i=String(e.status),r=`mcp-task:${s}`,d=v(t,n,e.messageId||`mcp-task-${s}`);if(!d)return;const c=`MCP task ${i}: ${s} · ${String(e.serverName)}/${String(e.toolName)}`,l={status:i==="failed"||i==="cancelled"?"error":i==="completed"?"success":"running",summary:c,output:[typeof e.statusMessage=="string"?e.statusMessage:"",e.hasResult===!0?"Result available via TaskOutput":"",typeof e.error=="string"?`Error: ${e.error}`:""].filter(Boolean).join(`
11
+ `)};if((m=(I=t().messages.find(S=>S.id===d))==null?void 0:I.agentContent)==null?void 0:m.toolCalls.some(S=>S.toolCallId===r)){u(d,r,l);return}o(d,{toolCallId:r,toolName:"MCP Task",arguments:JSON.stringify({taskId:s,serverName:e.serverName,toolName:e.toolName}),toolKind:"readonly",status:l.status,startTime:Number(e.createdAt)||Date.now(),summary:l.summary,output:l.output})},Ge=(e,t,n)=>{const{currentSessionId:a,appendToolCall:o}=t();if(e.sessionId!==a)return;const u=Array.isArray(e.files)?e.files.filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)):[],s=v(t,n,e.messageId||`project-rules-${Date.now()}`);if(!s)return;const i=e.blockedWrite===!0,r=`Project rules loaded: ${u.length}`+(i?" (write retry required)":"");o(s,{toolCallId:`project-rules:${u.map(d=>String(d.id)).join(",")}`,toolName:"Project Rules",arguments:JSON.stringify({triggerPaths:e.triggerPaths,blockedWrite:i}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:r,output:u.map(d=>`${String(d.relativePath)} ${String(d.source)} SHA-256: ${String(d.contentSha256)}`).join(`
12
+ `)})},z=e=>`user-shell-${e}`,Qe=(e,t,n)=>{const{currentSessionId:a,addMessage:o,messages:u,updateMessage:s}=t();if(e.sessionId!==a||typeof e.executionId!="string"||typeof e.command!="string")return;const i=z(e.executionId),r={id:i,role:"user",content:`! ${e.command}`,timestamp:Date.now(),metadata:{userShellExecution:{executionId:e.executionId,command:e.command,status:"running",output:""}}};u.some(d=>d.id===i)?s(i,r):o(r),e.auxiliary!==!0&&n({isStreaming:!0,agentPhase:"running",error:null,errorContext:null})},ze=(e,t)=>{var d;const{currentSessionId:n,messages:a,updateMessage:o}=t();if(e.sessionId!==n||typeof e.executionId!="string"||typeof e.chunk!="string")return;const u=z(e.executionId),s=a.find(c=>c.id===u);if(!s)return;const i=(d=s.metadata)!=null&&d.userShellExecution&&typeof s.metadata.userShellExecution=="object"?s.metadata.userShellExecution:{},r=`${typeof i.output=="string"?i.output:""}${e.chunk}`;o(u,{content:`! ${String(i.command??"")}
13
+ ${r}`,metadata:{...s.metadata,userShellExecution:{...i,output:r,streamTruncated:e.streamTruncated===!0}}})},We=(e,t,n)=>{const{currentSessionId:a,messages:o,addMessage:u,updateMessage:s}=t();if(e.sessionId!==a||typeof e.executionId!="string"||!e.record||typeof e.record!="object"||Array.isArray(e.record))return;const i=e.record,r=typeof i.command=="string"?i.command:"",d=typeof i.stdout=="string"?i.stdout:"",c=typeof i.stderr=="string"?i.stderr:"",l=[d,c?`stderr:
14
+ ${c}`:""].filter(Boolean).join(`
15
+ `),g=z(e.executionId),I={role:"user",content:[`! ${r}`,l||"(no output)"].join(`
16
+ `),metadata:{userShellCommand:i}};o.some(m=>m.id===g)?s(g,I):u({id:g,...I,timestamp:Date.now()}),e.auxiliary!==!0&&n({isStreaming:!1,isStopping:!1,agentPhase:"idle"}),(e.delivery==="current_turn"||e.delivery==="next_turn")&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):0,pendingInputDelivery:e.delivery==="current_turn"?"current_turn":"next_turn"})},Ye=(e,t)=>{const{currentSessionId:n,updateTokenUsage:a,setMaxContextTokens:o}=t();e.sessionId===n&&(a({inputTokens:e.inputTokens,outputTokens:e.outputTokens,totalTokens:e.totalTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd}),e.maxContextTokens&&o(e.maxContextTokens,!1))},Xe=(e,t)=>{const{currentSessionId:n,setTasks:a,currentAssistantMessageId:o}=t();if(e.sessionId!==n||!o)return;const u=e.tasks||[];a(o,u)},Ze=(e,t,n)=>{const{currentSessionId:a,setSubagent:o,currentAssistantMessageId:u}=t();if(e.sessionId!==a||!u)return;const s={id:F({explicitId:e.subagentId,sessionId:e.subagentSessionId,messageId:u,agentType:e.type,description:e.description}),type:e.type||"unknown",description:e.description||"",status:"running",startTime:Date.now(),sessionId:e.subagentSessionId,resumedFrom:e.resumedFrom,rootAgentId:e.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:void 0};o(u,s),Q(s.sessionId,t,n)},pe=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);i&&u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,currentTool:e.toolName})},et=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,output:(d.output||"")+s}))},tt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.delta;if(!s)return;const i=e.subagentSessionId,r=b(o,i,a);r&&u(r.messageId,r.subagent.id,d=>({sessionId:d.sessionId||i,thinking:(d.thinking||"")+s}))},W=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.subagentSessionId,i=b(o,s,a);if(!i)return;const r=e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.success?"completed":"failed";u(i.messageId,i.subagent.id,{sessionId:i.subagent.sessionId||s,type:typeof e.type=="string"?e.type:i.subagent.type,description:typeof e.description=="string"?e.description:i.subagent.description,status:r,currentTool:void 0,output:typeof e.summary=="string"?e.summary:i.subagent.output,resumedFrom:typeof e.resumedFrom=="string"?e.resumedFrom:i.subagent.resumedFrom,rootAgentId:typeof e.rootAgentId=="string"?e.rootAgentId:i.subagent.rootAgentId,resumeDepth:typeof e.resumeDepth=="number"?e.resumeDepth:i.subagent.resumeDepth,verificationVerdict:e.verificationVerdict==="pass"||e.verificationVerdict==="fail"||e.verificationVerdict==="partial"?e.verificationVerdict:i.subagent.verificationVerdict})},nt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId,i=e.toolName;if(!s||!i)return;const r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c={toolCallId:s,toolName:i,arguments:e.arguments,toolKind:e.toolKind,status:"running",startTime:Date.now()};u(d.messageId,d.subagent.id,l=>{const g=l.toolCalls||[];return{sessionId:l.sessionId||r,currentTool:i,toolCalls:g.some(I=>I.toolCallId===s)?g:[...g,c]}})},st=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId;if(!s)return;const i=e.toolName,r=e.subagentSessionId,d=b(o,r,a);if(!d)return;const c=e.output,l=e.success===!0,g=l?"success":"error",I=e.summary||(c&&c.trim()?c.trim().split(`
17
+ `)[0].slice(0,120):l?"执行成功":"执行失败");u(d.messageId,d.subagent.id,m=>({sessionId:m.sessionId||r,currentTool:m.currentTool===i?void 0:m.currentTool,toolCalls:(m.toolCalls||[]).map(S=>S.toolCallId===s?{...S,status:g,summary:I,output:c,metadata:e.metadata}:S)}))},it=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=e.toolCallId;if(!s)return;const i=b(o,e.subagentSessionId,a);i&&u(i.messageId,i.subagent.id,r=>({toolCalls:(r.toolCalls||[]).map(d=>d.toolCallId===s?{...d,summary:e.message,progress:typeof e.progress=="number"?e.progress:void 0,progressTotal:typeof e.total=="number"?e.total:void 0,progressMessage:e.message}:d)}))},ot=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=Array.isArray(e.added)?e.added.map(String):[],r=Array.isArray(e.removed)?e.removed.map(String):[],d=Array.isArray(e.updated)?e.updated.map(String):[],c=`mcp-catalog:${String(e.revision)}`;u(s.messageId,s.subagent.id,l=>({toolCalls:[...(l.toolCalls||[]).filter(g=>g.toolCallId!==c),{toolCallId:c,toolName:"MCP Catalog",arguments:JSON.stringify({serverName:e.serverName,added:i,removed:r,updated:d}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP catalog r${String(e.revision)}: +${i.length} -${r.length} ~${d.length}`,output:[i.length>0?`Added: ${i.join(", ")}`:"",r.length>0?`Removed: ${r.join(", ")}`:"",d.length>0?`Updated: ${d.join(", ")}`:""].filter(Boolean).join(`
18
+ `)}]}))},at=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=Array.isArray(e.added)?e.added.map(String):[],r=Array.isArray(e.removed)?e.removed.map(String):[],d=Array.isArray(e.updated)?e.updated.map(String):[],c=`mcp-content:${String(e.revision)}`;u(s.messageId,s.subagent.id,l=>({toolCalls:[...(l.toolCalls||[]).filter(g=>g.toolCallId!==c),{toolCallId:c,toolName:"MCP Content",arguments:JSON.stringify({serverName:e.serverName,contentKind:e.contentKind,added:i,removed:r,updated:d}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP ${String(e.contentKind)} r${String(e.revision)}: +${i.length} -${r.length} ~${d.length}`}]}))},rt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=`mcp-resource:${String(e.revision)}`;u(s.messageId,s.subagent.id,r=>({toolCalls:[...(r.toolCalls||[]).filter(d=>d.toolCallId!==i),{toolCallId:i,toolName:"MCP Resource",arguments:JSON.stringify({serverName:e.serverName,uri:e.uri}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP resource updated: ${String(e.uri)}`}]}))},ut=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.phase),r=`mcp-connection:${String(e.revision)}`;u(s.messageId,s.subagent.id,d=>({toolCalls:[...(d.toolCalls||[]).filter(c=>c.toolCallId!==r),{toolCallId:r,toolName:"MCP Connection",arguments:JSON.stringify({serverName:e.serverName,phase:i,reason:e.reason,attempt:e.attempt,maxAttempts:e.maxAttempts}),toolKind:"readonly",status:i==="failed"?"error":"success",startTime:Date.now(),summary:`MCP ${String(e.serverName)} ${i}`+(i==="reconnecting"?` (${String(e.attempt)}/${String(e.maxAttempts)})`:""),output:e.error?`Error: ${String(e.error)}`:void 0}]}))},dt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.level),r=typeof e.logger=="string"?e.logger:void 0,d=`mcp-log:${String(e.revision)}`;u(s.messageId,s.subagent.id,c=>({toolCalls:[...(c.toolCalls||[]).filter(l=>l.toolCallId!==d),{toolCallId:d,toolName:"MCP Log",arguments:JSON.stringify({serverName:e.serverName,level:i,logger:r}),toolKind:"readonly",status:"success",startTime:Date.now(),summary:`MCP ${i} · ${String(e.serverName)}`+(r?` · ${r}`:""),output:[String(e.message),`SHA-256: ${String(e.dataSha256)}`,e.truncated===!0?"Truncated":"",e.detailsOmitted===!0?"Details omitted by runtime policy":""].filter(Boolean).join(`
19
+ `)}]}))},lt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.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
+ `)}]}))},ct=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=String(e.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
+ `)}]}))},gt=(e,t)=>{const{currentSessionId:n,currentAssistantMessageId:a,messages:o,updateSubagent:u}=t();if(e.sessionId!==n)return;const s=b(o,e.subagentSessionId,a);if(!s)return;const i=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
+ `)}]}))},mt=(e,t,n)=>{const{currentSessionId:a,setConfirmation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||"",s=v(t,n,u?`assistant-permission-${u}`:void 0);if(!s)return;const i=e.details,r=e.toolName||(i==null?void 0:i.toolName)||"Tool";o(s,{toolCallId:u,toolName:r,description:e.description,diff:(i==null?void 0:i.details)||(i==null?void 0:i.diff)||"",allowRemember:(i==null?void 0:i.type)!=="mcpSampling",status:"pending"}),n(d=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:d.sessions.map(c=>c.sessionId===e.sessionId&&c.projectPath===e.projectPath?{...c,pendingInteraction:{type:"permission",requestId:u}}:c)}))},ft=(e,t,n)=>{var I,m;const{currentSessionId:a,currentSessionRef:o,messages:u,setConfirmation:s,setElicitation:i}=t();if(e.sessionId!==a)return;const r=e.requestId,d=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.confirmation)==null?void 0:h.toolCallId)===r}),c=(I=d==null?void 0:d.agentContent)==null?void 0:I.confirmation;d&&(c==null?void 0:c.status)==="pending"&&s(d.id,{...c,status:"denied"});const l=u.find(S=>{var y,h;return((h=(y=S.agentContent)==null?void 0:y.elicitation)==null?void 0:h.toolCallId)===r}),g=(m=l==null?void 0:l.agentContent)==null?void 0:m.elicitation;l&&(g==null?void 0:g.status)==="pending"&&i(l.id,{...g,status:"cancelled"}),n({agentPhase:"running",error:"Permission request timed out",errorContext:{kind:"interaction",...o?{sessionRef:o}:{}}})},ae=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",isStreaming:!0})},It=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:e.reason==="context_limit"?"recovering_context":"compacting"})},St=(e,t,n)=>{e.sessionId===t().currentSessionId&&(t().resetContextUsage(),n({agentPhase:"running"}))},ht=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"switching_model",providerRetry:null,providerStall:null,actionStationarity:null})},yt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerRetry:e.phase==="recovered"?null:e})},Ct=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",providerStall:e.phase==="detected"?e:null})},bt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({agentPhase:"running",actionStationarity:e.phase==="recovered"?null:e})},vt=(e,t,n)=>{const{currentSessionId:a,setQuestion:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-question-${u}`:void 0);s&&(o(s,{toolCallId:u,questions:e.questions,status:"pending"}),n(i=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:i.sessions.map(r=>r.sessionId===e.sessionId&&r.projectPath===e.projectPath?{...r,pendingInteraction:{type:"question",requestId:u}}:r)})))},At=(e,t,n)=>{const{currentSessionId:a,setElicitation:o}=t();if(e.sessionId!==a)return;const u=e.requestId||e.toolCallId||"",s=v(t,n,u?`assistant-elicitation-${u}`:void 0),i=e.elicitation;!s||!i||(o(s,{toolCallId:u,details:i,status:"pending"}),n(r=>({agentPhase:"waiting_permission",isStreaming:!0,sessions:r.sessions.map(d=>d.sessionId===e.sessionId&&d.projectPath===e.projectPath?{...d,pendingInteraction:{type:"elicitation",requestId:u}}:d)})))},Tt=(e,t,n)=>{const{currentSessionId:a}=t();if(e.sessionId!==a)return;const o=e.requestId;n(u=>({agentPhase:"running",sessions:u.sessions.map(s=>{var i;return s.sessionId===e.sessionId&&s.projectPath===e.projectPath&&((i=s.pendingInteraction)==null?void 0:i.requestId)===o?{...s,pendingInteraction:void 0}:s})}))},Y=(e,t)=>{const n=t().currentSessionRef;n&&e.sessionId===n.sessionId&&e.projectPath===n.projectPath&&t().resyncSessionMessages(n)},kt=(e,t)=>{const{currentSessionId:n,currentSessionRef:a,endAgentResponse:o}=t();e.sessionId!==n||!a||e.projectPath!==a.projectPath||(o(),Y(e,t))},re=(e,t)=>{const n=t().currentSessionRef;!n||e.sessionId!==n.sessionId||e.projectPath!==n.projectPath||t().endAgentResponse()},$t=(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=Pe(s==null?void 0:s.code);n({agentPhase:"error",error:e.error||"An error occurred",errorContext:{kind:"execution",...o?{sessionRef:o}:{},...i?{failureCode:i}:{}}}),u(),Y(e,t)},Nt=(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,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0});else if(e.status==="queued"||e.status==="running"||e.status==="waiting_permission"){const o=typeof e.queued=="number"?Math.max(0,e.queued):0;n({isStreaming:!0,agentPhase:e.status==="waiting_permission"?"waiting_permission":"running",currentRunId:typeof e.runId=="string"?e.runId:t().currentRunId,pendingSteeringCount:o,pendingInputDelivery:o>0&&(e.pendingInputDelivery==="current_turn"||e.pendingInputDelivery==="next_turn")?e.pendingInputDelivery:null,recoveredSteeringCount:typeof e.recovered=="number"?Math.max(0,e.recovered):t().recoveredSteeringCount})}else e.status==="error"&&n({isStreaming:!1,isStopping:!1,agentPhase:"error",providerRetry:null,providerStall:null,actionStationarity: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 N(i.agentContent))r.status==="running"&&s(i.id,r.id,{status:"failed"});o(),Y(e,t)}},Ie=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"current_turn"})},Se=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({pendingSteeringCount:typeof e.queued=="number"?Math.max(0,e.queued):1,pendingInputDelivery:"next_turn"})},Pt=(e,t,n)=>{if(typeof e.childSessionId=="string"){const a={...e,subagentSessionId:e.childSessionId,success:e.status==="completed"};b(t().messages,e.childSessionId,t().currentAssistantMessageId)?W(a,t):we(e.childSessionId,a,n)}e.delivery==="current_turn"?Ie(e,t,n):Se(e,t,n)},Rt=(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})},xt=(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})},Dt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??null})},wt=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:null})},_t=(e,t,n)=>{e.sessionId===t().currentSessionId&&n({goal:e.goal??t().goal,isStreaming:!0,agentPhase:"running"})},jt=(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:Ne(o),isStreaming:!1,isStopping:!1,agentPhase:"idle",providerRetry:null,providerStall:null,actionStationarity:null,currentRunId:null,pendingSteeringCount:0,pendingInputDelivery:null,recoveredSteeringCount:0,currentAssistantMessageId:null,hasToolCalls:!1})},Ft=(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)},qt=(e,t,n)=>{ge({...e,messageId:`review-${String(e.reviewId??"active")}`,arguments:"{}"},t,n)},Ot=(e,t,n)=>{me(e,t)},Et=(e,t,n)=>{fe(e,t,n)},_={"message.created":_e,"message.delta":je,"message.complete":Fe,"structured.output":qe,"thinking.delta":Oe,"thinking.completed":Ee,"tool.start":ge,"tool.progress":me,"tool.result":fe,"mcp.catalog.changed":Ve,"mcp.content.changed":Ke,"mcp.resource.updated":Ue,"mcp.connection.changed":Be,"mcp.log":Je,"mcp.instructions.changed":Le,"mcp.task.changed":He,"project.rules.loaded":Ge,"user.shell.started":Qe,"user.shell.output":ze,"user.shell.completed":We,"token.usage":Ye,"task.updated":Xe,"subagent.start":Ze,"subagent.update":pe,"subagent.delta":et,"subagent.thinking.delta":tt,"subagent.tool.start":nt,"subagent.tool.progress":it,"subagent.tool.result":st,"subagent.mcp.catalog.changed":ot,"subagent.mcp.content.changed":at,"subagent.mcp.resource.updated":rt,"subagent.mcp.connection.changed":ut,"subagent.mcp.log":dt,"subagent.mcp.instructions.changed":lt,"subagent.mcp.task.changed":ct,"subagent.project.rules.loaded":gt,"subagent.complete":W,"subagent.completion.queued":Pt,"permission.asked":mt,"permission.timeout":ft,"turn.started":ae,"committed.turn_started":ae,"committed.turn_completed":re,"committed.turn_aborted":re,"provider.retry":yt,"provider.stall":Ct,"action.stationarity":bt,"compaction.started":It,"compaction.completed":St,"model.fallback":ht,"question.required":vt,"elicitation.required":At,"interaction.resolved":Tt,"session.completed":kt,"session.error":$t,"session.status":Nt,"run.cancelled":Mt,"steering.queued":Ie,"follow_up.queued":Se,"follow_up.started":xt,"steering.applied":Rt,"goal.updated":Dt,"goal.cleared":wt,"goal.continuation.started":_t,"session.rewound":jt,"review.tool.started":qt,"review.tool.progress":Ot,"review.tool.completed":Et,"review.completed":Ft},Vt=new Set(["message.complete","thinking.completed","session.completed","session.error","run.cancelled","committed.turn_completed","committed.turn_aborted"]),Jt=(e,t)=>n=>{const a=e().currentSessionRef,o=n.properties;if(!a||o.sessionId!==a.sessionId||o.projectPath!==a.projectPath)return;if(Vt.has(n.type)){$.drainAll();const s=_[n.type];s&&s(n.properties,e,t);return}if(n.type==="tool.start"&&$.drainAll(),n.type==="message.delta"){const{currentSessionId:s,currentAssistantMessageId:i,hasToolCalls:r}=e();if(o.sessionId!==s)return;const d=o.messageId||i,c=o.delta;if(!i){const I=_["message.delta"];I&&I(o,e,t);return}const l=r?"after":"before",g=`content:${d}:${l}`;$.drainAllExcept(g),$.append(g,c,I=>{const{appendDelta:m}=e();d&&m(d,I,l)});return}if(n.type==="thinking.delta"){const{currentSessionId:s,currentAssistantMessageId:i}=e();if(o.sessionId!==s)return;if(!i){const l=_["thinking.delta"];l&&l(o,e,t);return}const r=o.delta,d=o.messageId||i,c=`thinking:${d}`;$.drainAllExcept(c),$.append(c,r,l=>{const{appendThinking:g}=e();d&&g(d,l)});return}if(n.type==="subagent.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,output:(f.output||"")+I}))});return}if(n.type==="subagent.thinking.delta"){const{currentSessionId:s}=e();if(o.sessionId!==s)return;const i=o.delta;if(!i)return;const r=o.subagentSessionId||"",d=`subagent-thinking:${r}`,{currentAssistantMessageId:c,messages:l}=e(),g=b(l,r||void 0,c);$.append(d,i,I=>{const{currentAssistantMessageId:m,messages:S,updateSubagent:y}=e(),h=g||b(S,r||void 0,m);h&&y(h.messageId,h.subagent.id,f=>({sessionId:f.sessionId||r,thinking:(f.thinking||"")+I}))});return}const u=_[n.type];u&&u(n.properties,e,t)};export{be as a,oe as b,M as c,Ce as d,Ne as e,Jt as f,N as g,$ as h,Pe as i,Bt as j,ve as k,j as l,Ut as t,ue as u,B as w};
@@ -5,11 +5,11 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>BladeCode</title>
8
- <script type="module" crossorigin src="/assets/index-B6QL61mx.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BnCT8SxR.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-Bgb4zeFL.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/session-events-BZao_jMQ.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/index-7zaeanZL.css">
14
14
  </head>
15
15
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blade-code",
3
- "version": "0.10.31",
3
+ "version": "0.10.33",
4
4
  "private": false,
5
5
  "description": "🗡️ Blade Code - 智能代码助手命令行工具",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{Fd as a,Gd as b,Hd as c}from"./chunk-3fzevvzm.js";import"./chunk-ayx03d6y.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";export{b as resolveModelConfig,c as getModelDisplayName,a as getModelApiKeyEnvironmentVariable};
@@ -1 +0,0 @@
1
- import{f as y,g as A,h as C,i as D}from"./chunk-s6exb18e.js";import"./chunk-pqsg5265.js";import"./chunk-fqrt55g3.js";import"./chunk-t857g6s9.js";import"./chunk-xtaq5ck1.js";import"./chunk-xv1bz8f4.js";import"./chunk-byqg8qby.js";import"./chunk-321dpgd3.js";import"./chunk-y9v884rp.js";import"./chunk-fs1r9hyz.js";import"./chunk-at2krx3x.js";import"./chunk-86phvby9.js";import"./chunk-khvbwbtv.js";import"./chunk-q1v03abc.js";import{md as q}from"./chunk-aa4xya8p.js";import"./chunk-v508x7cg.js";import"./chunk-c2bgj76r.js";import"./chunk-s4zvf2tf.js";import"./chunk-3fzevvzm.js";import"./chunk-ayx03d6y.js";import"./chunk-pgs555fv.js";import"./chunk-zzkzmrjd.js";import"./chunk-v1jxren4.js";import"./chunk-0ew7vmkb.js";import"./chunk-s8889acm.js";import"./chunk-44ep1v89.js";import"./chunk-jmyxhygx.js";import"./chunk-9afqfajf.js";import"./chunk-9jkbhaec.js";import"./chunk-0qjzgs1d.js";import"./chunk-vy59rm9j.js";import"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import"./chunk-d0sej62r.js";import"./chunk-7hs1n09m.js";import"./chunk-b63dfss4.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";import H from"chalk";var R={command:"serve",describe:"Start a headless Blade server (no browser)",builder:y,handler:async(E)=>{let f=A(E);if(await q(),!process.env.BLADE_SERVER_PASSWORD)console.log(H.yellow("Warning: BLADE_SERVER_PASSWORD is not set; server is unsecured."));let b=await D.listenAsync(f);if(console.log(`Blade server listening on http://${b.hostname}:${b.port}`),f.hostname==="0.0.0.0"){let F=C();for(let G of F)console.log(` Network: http://${G}:${b.port}`)}await new Promise(()=>{}),await b.stop()}};export{R as serveCommand};
@@ -1,2 +0,0 @@
1
- import{rf as J,sf as $,tf as O,uf as K}from"./chunk-0qjzgs1d.js";import{vf as v,wf as S,xf as l}from"./chunk-vy59rm9j.js";import{Ff as o}from"./chunk-xhxvde2k.js";import{gg as n}from"./chunk-7gsqx900.js";var G=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}],a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6},f=new Map;function D(Q,Z,W){let B=new Set;for(let X of Q.split(",")){let[Y,k]=X.split("/"),V=k?Number.parseInt(k,10):1;if(!Number.isInteger(V)||V<1)throw Error(`Invalid cron step in "${Q}"`);let j=Z,H=W;if(Y!=="*"&&Y!=="")if(Y.includes("-")){let[U,i]=Y.split("-");j=Number.parseInt(U,10),H=Number.parseInt(i,10)}else j=Number.parseInt(Y,10),H=j;if(!Number.isInteger(j)||!Number.isInteger(H)||j<Z||H>W||j>H)throw Error(`Invalid cron range "${Y}" in field "${Q}"`);for(let U=j;U<=H;U+=V)B.add(U)}return B}function C(Q){let Z=Q.trim().split(/\s+/);if(Z.length!==5)throw Error(`Cron expression must have 5 fields (min hour dom mon dow), got ${Z.length}`);let[W,B,X,Y,k]=Z,V=D(k,G[4].min,G[4].max),j=new Set([...V].map((H)=>H===7?0:H));return{minutes:D(W,G[0].min,G[0].max),hours:D(B,G[1].min,G[1].max),daysOfMonth:D(X,G[2].min,G[2].max),months:D(Y,G[3].min,G[3].max),daysOfWeek:j,domRestricted:X.trim()!=="*",dowRestricted:k.trim()!=="*"}}function t(Q,Z){if(!Z)return{minute:Q.getMinutes(),hour:Q.getHours(),dayOfMonth:Q.getDate(),month:Q.getMonth()+1,dayOfWeek:Q.getDay()};let W=f.get(Z);if(!W)W=new Intl.DateTimeFormat("en-US",{timeZone:Z,month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",weekday:"short",hourCycle:"h23"}),f.set(Z,W);let B=Object.fromEntries(W.formatToParts(Q).filter((X)=>X.type!=="literal").map((X)=>[X.type,X.value]));return{minute:Number(B.minute),hour:Number(B.hour),dayOfMonth:Number(B.day),month:Number(B.month),dayOfWeek:a[B.weekday]??-1}}function r(Q,Z,W){let B=t(Z,W);if(!Q.minutes.has(B.minute))return!1;if(!Q.hours.has(B.hour))return!1;if(!Q.months.has(B.month))return!1;let X=Q.daysOfMonth.has(B.dayOfMonth),Y=Q.daysOfWeek.has(B.dayOfWeek);if(Q.domRestricted&&Q.dowRestricted)return X||Y;if(Q.domRestricted)return X;if(Q.dowRestricted)return Y;return!0}function T(Q,Z,W){let B=C(Q),X=new Date(Z.getTime());X.setSeconds(0,0),X.setMinutes(X.getMinutes()+1);let Y=new Date(Z.getTime());Y.setFullYear(Y.getFullYear()+4);while(X.getTime()<=Y.getTime()){if(r(B,X,W))return new Date(X.getTime());X.setMinutes(X.getMinutes()+1)}return null}var E={s:1000,m:60000,h:3600000,d:86400000};function DJ(Q){let W=Q.trim().toLowerCase().match(/^(\d+)\s*([smhd]?)$/);if(!W)return null;let B=Number.parseInt(W[1],10);if(!Number.isInteger(B)||B<=0)return null;let X=W[2]||"m";return B*E[X]}function y(Q){for(let Z of["d","h","m","s"]){let W=E[Z];if(Q%W===0)return`${Q/W}${Z}`}return`${Math.round(Q/1000)}s`}function A(Q,Z,W){switch(Q.kind){case"cron":{if(!Q.cron)return null;try{return T(Q.cron,Z,Q.timezone)}catch{return null}}case"interval":{if(!Q.intervalMs||Q.intervalMs<=0)return null;let X=new Date((W??Z).getTime()+Q.intervalMs);return X.getTime()<=Z.getTime()?new Date(Z.getTime()+1000):X}case"once":{if(!Q.runAt)return null;let B=new Date(Q.runAt);if(Number.isNaN(B.getTime()))return null;return B.getTime()>Z.getTime()?B:null}default:return null}}function _(Q){switch(Q.kind){case"cron":if(!Q.cron)return"cron trigger requires a cron expression";try{if(C(Q.cron),Q.timezone)new Intl.DateTimeFormat("en-US",{timeZone:Q.timezone}).format();return null}catch(Z){return Z instanceof Error?Z.message:"invalid cron expression"}case"interval":if(!Q.intervalMs||Q.intervalMs<60000)return"interval trigger requires intervalMs >= 60000 (1 minute)";return null;case"once":{if(!Q.runAt)return"once trigger requires runAt timestamp";let Z=new Date(Q.runAt);if(Number.isNaN(Z.getTime()))return"once trigger runAt is not a valid date";return null}default:return"unknown trigger kind"}}function FJ(Q){switch(Q.kind){case"cron":return`cron: ${Q.cron??"?"}`;case"interval":return`every ${Q.intervalMs?y(Q.intervalMs):"?"}`;case"once":return`once at ${Q.runAt??"?"}`;default:return"unknown"}}import{mkdir as bJ,readFile as wJ}from"node:fs/promises";import s from"node:path";import{nanoid as LJ}from"nanoid";import PJ from"write-file-atomic";var w=$(K(["default","autoEdit","yolo","plan"]));var N=$(K(["user","assistant","system","tool"])),p=$(J.Union([J.Object({type:J.Literal("text"),text:J.String()}),J.Object({type:J.Literal("image_url"),image_url:J.Object({url:J.String()})})])),h=J.Union([J.String(),J.Array(p)]),NJ=$(J.Object({id:J.String(),role:N,content:h,timestamp:J.Number(),metadata:J.Optional(J.Record(J.String(),J.Unknown())),thinkingContent:J.Optional(J.String()),tool_call_id:J.Optional(J.String()),name:J.Optional(J.String()),tool_calls:J.Optional(J.Unknown())})),e=$(K(["queued","running","completed","failed","cancelled","interrupted"])),F=$(K(["local","worktree"])),JJ=$(K(["applied","discarded","conflicted"])),QJ=$(J.Object({status:JJ,updatedAt:J.String(),sourceCommit:J.Optional(J.String()),changedFiles:J.Optional(J.Integer({minimum:0})),message:J.Optional(J.String())})),ZJ=$(J.Object({changedFiles:J.Integer({minimum:0}),additions:J.Integer({minimum:0}),deletions:J.Integer({minimum:0}),commits:J.Integer({minimum:0})})),$J=$(J.Object({path:J.String({minLength:1}),patch:J.String({maxLength:2097152}),additions:J.Integer({minimum:0}),deletions:J.Integer({minimum:0}),binary:J.Boolean(),truncated:J.Boolean()})),qJ=$(J.Object({sessionId:J.String(),projectPath:J.String(),baseCommit:J.String(),files:J.Array($J,{maxItems:100}),truncated:J.Boolean()})),BJ=J.Union([J.String(),J.Number(),J.Boolean(),J.Array(J.String())]),KJ=$(J.Object({name:J.String(),type:K(["string","number","integer","boolean","select","multi-select"]),title:J.String(),description:J.Optional(J.String()),required:J.Boolean(),defaultValue:J.Optional(BJ),options:J.Optional(J.Array(J.Object({value:J.String(),label:J.String()}))),format:J.Optional(K(["date","uri","email","date-time"])),minimum:J.Optional(J.Number()),maximum:J.Optional(J.Number()),minLength:J.Optional(J.Number()),maxLength:J.Optional(J.Number()),minItems:J.Optional(J.Number()),maxItems:J.Optional(J.Number())})),xJ=$(J.Object({serverName:J.String(),mode:K(["form","url"]),message:J.String(),fields:J.Optional(J.Array(KJ)),requestedSchema:J.Optional(J.Record(J.String(),J.Unknown())),url:J.Optional(J.String()),domain:J.Optional(J.String()),elicitationId:J.Optional(J.String())})),WJ=$(J.Object({type:K(["permission","question","elicitation"]),requestId:J.String()})),XJ=$(J.Object({code:K(["authentication","permission","rate_limit","timeout","network","model_unavailable","context_limit","unsupported_input","runtime"]),message:J.String({minLength:1,maxLength:500}),retryable:J.Boolean()})),L=$(K(["auto","off","minimal","low","medium","high","xhigh","max"])),P=$(K(["auto","standard","fast","flex"])),M=$(K(["auto","low","medium","high"])),b=$(J.Union([K(["auto","pragmatic","friendly","explanatory"]),J.String({minLength:7,maxLength:300,pattern:"^(?:(?:user|project):[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3}|plugin:[a-z0-9][a-z0-9._-]{0,63}:[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3})$"})])),z=$(J.Object({sessionId:J.String(),projectPath:J.String(),title:J.Optional(J.String()),gitBranch:J.Optional(J.String()),rootId:J.String(),parentId:J.Optional(J.String()),relationType:J.Optional(K(["subagent","fork"])),resumedFrom:J.Optional(J.String()),rootAgentId:J.Optional(J.String()),resumeDepth:J.Optional(J.Integer({minimum:0})),taskStatus:O(e,"completed"),taskStatusReason:J.Optional(J.String()),taskFailure:J.Optional(XJ),taskStartedAt:J.Optional(J.String()),taskCompletedAt:J.Optional(J.String()),taskPromptSummary:J.Optional(J.String()),taskModelId:J.Optional(J.String()),selectedModelId:J.Optional(J.String()),permissionMode:J.Optional(w),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),communicationStyleDigest:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"})),projectInstructionsDigest:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"})),taskRetryAvailable:J.Optional(J.Boolean()),taskRetriedFrom:J.Optional(J.Object({sessionId:J.String(),projectPath:J.String()})),taskDelivery:J.Optional(QJ),taskIsolation:J.Optional(F),taskSourceProjectPath:J.Optional(J.String()),taskWorktreePath:J.Optional(J.String()),taskWorktreeBranch:J.Optional(J.String()),taskBaseCommit:J.Optional(J.String()),taskDiffStat:J.Optional(ZJ),taskQueuePosition:J.Optional(J.Integer({minimum:1})),taskQueueDepth:J.Optional(J.Integer({minimum:0})),taskConcurrencyLimit:J.Optional(J.Integer({minimum:1})),archivedAt:J.Optional(J.String()),archivedBySessionId:J.Optional(J.String()),pendingInteraction:J.Optional(WJ),messageCount:J.Number(),firstMessageTime:J.String(),lastMessageTime:J.String(),hasErrors:J.Boolean()})),fJ=$(J.Object({sessions:J.Array(z),nextCursor:J.Optional(J.String())})),CJ=$(J.Object({session:z,archivedSessionIds:J.Array(J.String())})),EJ=$(J.Object({session:z,restoredSessionIds:J.Array(J.String())})),RJ=$(J.Object({version:J.Literal(1),sessionId:J.String(),goalId:J.String(),objective:J.String(),status:K(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"]),tokenBudget:J.Optional(J.Number()),tokensUsed:J.Number(),timeUsedSeconds:J.Number(),continuationCount:J.Number(),statusReason:J.Optional(J.String()),completionVerification:J.Optional(J.Object({attempt:J.Integer({minimum:1}),status:K(["pending","pass","fail","partial"]),requestedAt:J.String(),completedAt:J.Optional(J.String()),verifierSessionId:J.Optional(J.String()),summary:J.Optional(J.String()),evidenceSha256:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"}))})),createdAt:J.String(),updatedAt:J.String()})),u=$(J.Object({role:N,content:h,metadata:J.Optional(J.Unknown()),reasoningContent:J.Optional(J.String()),thinkingContent:J.Optional(J.String()),tool_call_id:J.Optional(J.String()),name:J.Optional(J.String()),tool_calls:J.Optional(J.Unknown())})),SJ=$(J.Object({session:z,messages:J.Array(u)})),d=$(K(["conversation","code","both"])),YJ=$(J.Object({messageId:J.String(),preview:J.String(),createdAt:J.String(),fileCount:J.Integer({minimum:0})})),lJ=$(J.Object({targetMessageId:J.String({minLength:1}),mode:O(d,"conversation")})),hJ=$(J.Object({checkpoint:YJ,mode:d,removedTurns:J.Integer({minimum:1}),restoredFiles:J.Array(J.String()),messages:J.Array(u)})),HJ=K(["running","completed","failed","cancelled"]),R=$(J.Object({id:J.String(),subagentType:J.String(),description:J.String(),status:HJ,rootAgentId:J.String(),resumedFrom:J.Optional(J.String()),resumeDepth:J.Integer({minimum:0}),createdAt:J.Number(),lastActiveAt:J.Number(),completedAt:J.Optional(J.Number()),restartRecovery:J.Optional(J.Object({outcome:K(["completed","interrupted","failed"]),recoveredAt:J.Number()})),result:J.Optional(J.Object({success:J.Boolean(),message:J.String(),error:J.Optional(J.String()),verificationCommands:J.Optional(J.Array(J.String())),verificationVerdict:J.Optional(K(["pass","fail","partial"])),modifiedFiles:J.Optional(J.Array(J.String()))})),stats:J.Optional(J.Object({tokens:J.Optional(J.Number()),toolCalls:J.Optional(J.Number()),duration:J.Optional(J.Number())}))})),uJ=$(J.Object({prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"})})),dJ=$(J.Object({source:R,session:R})),mJ=$(J.Object({sessionId:J.String(),projectPath:J.String()})),cJ=$(J.Object({path:J.String(),name:J.String(),gitBranch:J.Optional(J.String()),available:J.Boolean(),isCurrent:J.Boolean(),boundAt:J.String()})),gJ=$(J.Union([J.Object({cancelled:J.Literal(!0)}),J.Object({cancelled:J.Literal(!1),path:J.String({minLength:1})})])),nJ=$(J.Object({type:J.String(),seq:J.Optional(J.Number()),properties:J.Record(J.String(),J.Unknown())})),m=J.Object({type:K(["file","image","url"]),path:J.Optional(J.String()),url:J.Optional(J.String()),content:J.Optional(J.String({maxLength:S})),mimeType:J.Optional(J.String()),name:J.Optional(J.String())}),c=J.Record(J.String(),J.Unknown()),oJ=$(J.Object({prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),title:J.Optional(J.String({minLength:1,maxLength:200})),projectPath:J.Optional(J.String()),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default"),attachments:J.Optional(J.Array(m,{maxItems:v})),outputSchema:J.Optional(c)})),sJ=$(J.Object({session:z,runId:J.String(),messageId:J.String(),status:K(["queued","running"]),queuePosition:J.Optional(J.Integer({minimum:1})),queueDepth:J.Optional(J.Integer({minimum:0})),maxConcurrentTasks:J.Optional(J.Integer({minimum:1}))})),iJ=$(J.Object({action:K(["apply","discard"])})),q=$(J.Object({kind:K(["cron","interval","once"]),cron:J.Optional(J.String({minLength:1,maxLength:120})),intervalMs:J.Optional(J.Integer({minimum:60000})),runAt:J.Optional(J.String({minLength:1,maxLength:40})),timezone:J.Optional(J.String({minLength:1,maxLength:80}))})),jJ=$(J.Object({modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default")})),x=$(J.Object({id:J.String(),title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:J.String({minLength:1}),trigger:q,dispatch:jJ,enabled:J.Boolean(),createdAt:J.String(),updatedAt:J.String(),nextRunAt:J.Union([J.String(),J.Null()]),expiresAt:J.Union([J.String(),J.Null()]),lastRunAt:J.Optional(J.String()),lastRunSessionId:J.Optional(J.String()),lastStatus:J.Optional(K(["queued","running","completed","failed","cancelled","interrupted","error"])),lastError:J.Optional(J.String()),runCount:J.Integer({minimum:0})})),aJ=$(J.Object({title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:J.String({minLength:1}),trigger:q,modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default"),enabled:O(J.Boolean(),!0)})),tJ=$(J.Object({title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.Optional(J.String({minLength:1,maxLength:32000,pattern:"\\S"})),trigger:J.Optional(q),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:J.Optional(F),permissionMode:J.Optional(w),enabled:J.Optional(J.Boolean())})),rJ=$(J.Object({schedules:J.Array(x)})),TJ=$(J.Object({content:J.String({maxLength:l}),projectPath:J.Optional(J.String()),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),permissionMode:J.Optional(w),attachments:J.Optional(J.Array(m,{maxItems:v})),outputSchema:J.Optional(c)})),UJ=K(["completed","failed","aborted","timed_out","spawn_error"]),kJ=$(J.Object({version:J.Literal(1),command:J.String(),status:UJ,exitCode:J.Union([J.Integer(),J.Null()]),durationMs:J.Number({minimum:0}),stdout:J.String(),stderr:J.String(),stdoutOmittedBytes:J.Integer({minimum:0}),stderrOmittedBytes:J.Integer({minimum:0}),binaryOutput:J.Boolean(),truncated:J.Boolean()})),yJ=$(J.Object({command:J.String({minLength:1,maxLength:32768,pattern:"^(?![\\s\\S]*\\u0000)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:J.Optional(J.String())})),pJ=$(J.Object({executionId:J.String(),messageId:J.String(),record:kJ,auxiliary:J.Boolean(),delivery:J.Optional(K(["current_turn","next_turn"])),queued:J.Optional(J.Integer({minimum:0}))})),eJ=$(J.Object({projectPath:J.String(),kind:K(["uncommitted","base","commit"]),ref:J.Optional(J.String({maxLength:200})),instructions:J.Optional(J.String({maxLength:4000})),modelId:J.Optional(J.String({minLength:1,maxLength:200}))})),JQ=$(J.Object({reviewId:J.String(),status:J.Literal("running")})),QQ=$(J.Object({messageId:J.String(),role:N,content:J.String(),timestamp:J.String()})),ZQ=$(J.Object({approved:J.Boolean(),remember:J.Optional(J.Boolean()),scope:J.Optional(K(["once","session","project"])),targetMode:J.Optional(w),feedback:J.Optional(J.String()),answers:J.Optional(J.Record(J.String(),J.Union([J.String(),J.Array(J.String())]))),elicitation:J.Optional(J.Object({action:K(["accept","decline","cancel"]),content:J.Optional(J.Record(J.String(),J.Union([J.String({maxLength:4000}),J.Number(),J.Boolean(),J.Array(J.String({maxLength:1000}),{maxItems:100})]),{maxProperties:32}))}))})),VJ=$(J.Object({id:b,name:J.String({minLength:1,maxLength:80}),description:J.String({minLength:1,maxLength:256}),source:K(["built-in","user","project","plugin"]),contentSha256:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"}))})),$Q=$(J.Object({id:J.String(),displayName:J.Optional(J.String()),provider:J.String(),model:J.String(),contextWindow:J.Optional(J.Number()),maxTokens:J.Optional(J.Number()),reasoning:J.Optional(J.Boolean()),supportedReasoningEfforts:J.Optional(J.Array(K(["off","minimal","low","medium","high","xhigh","max"]))),supportedServiceTiers:J.Optional(J.Array(K(["standard","fast","flex"]))),supportedResponseVerbosities:J.Optional(J.Array(K(["low","medium","high"]))),communicationStyles:J.Optional(J.Array(VJ,{maxItems:36})),input:J.Optional(J.Array(K(["text","image"]))),overrides:J.Optional(J.Object({baseUrl:J.Optional(J.String()),temperature:J.Optional(J.Number()),maxOutputTokens:J.Optional(J.Number()),timeout:J.Optional(J.Number()),streamIdleTimeout:J.Optional(J.Number({minimum:1000}))}))})),BQ=$(K(["vs-dark","vs-light","hc-black"])),GJ=$(K(["light","dark","system"])),OJ=$(J.Object({language:J.String(),codeTheme:J.String(),uiTheme:GJ,autoSaveSessions:J.Boolean(),notifyBuild:J.Boolean(),notifyErrors:J.Boolean(),notifySounds:J.Boolean(),privacyTelemetry:J.Boolean(),privacyCrash:J.Boolean(),communicationStyle:J.Optional(b)})),KQ=$(J.Partial(OJ));var g=o("Service"),MJ=1;function IJ(){return s.join(n(),"schedules.json")}class I{filePath;static instance;static getInstance(){if(!I.instance)I.instance=new I;return I.instance}writeChain=Promise.resolve();constructor(Q=IJ()){this.filePath=Q}async readFile(){try{let Q=await wJ(this.filePath,"utf-8"),Z=JSON.parse(Q);if(!Z||!Array.isArray(Z.schedules))return[];let W=[],B=0;for(let X of Z.schedules){let Y=x.safeParse(X);if(Y.success)W.push(Y.data);else B+=1}if(B>0)g.warn(`[ScheduleStore] Ignored ${B} invalid persisted schedule(s)`);return W}catch(Q){let Z=Q;if(Z.code!=="ENOENT")g.warn("[ScheduleStore] Failed to read schedules; treating as empty:",Z);return[]}}async writeFile(Q){await bJ(s.dirname(this.filePath),{recursive:!0,mode:493});let Z={version:MJ,schedules:Q};await PJ(this.filePath,JSON.stringify(Z,null,2),{mode:384})}serializeWrite(Q){let Z=this.writeChain.then(Q,Q);return this.writeChain=Z.then(()=>{return},()=>{return}),Z}async list(){return this.readFile()}async get(Q){return(await this.readFile()).find((W)=>W.id===Q)}async create(Q){return this.serializeWrite(async()=>{let Z=Q.trigger.kind==="cron"&&!Q.trigger.timezone?{...Q.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:Q.trigger,W=_(Z);if(W)throw Error(W);let B=new Date;if(Z.kind==="once"&&new Date(Z.runAt).getTime()<=B.getTime())throw Error("once trigger runAt must be in the future");let X=B.toISOString(),Y=A(Z,B),k={id:LJ(10),title:Q.title,prompt:Q.prompt,projectPath:Q.projectPath,trigger:Z,dispatch:{modelId:Q.modelId,reasoningEffort:Q.reasoningEffort,serviceTier:Q.serviceTier,responseVerbosity:Q.responseVerbosity,communicationStyle:Q.communicationStyle,isolation:Q.isolation??"worktree",permissionMode:Q.permissionMode??"default"},enabled:Q.enabled??!0,createdAt:X,updatedAt:X,nextRunAt:Y?Y.toISOString():null,expiresAt:null,runCount:0},V=await this.readFile();return V.push(k),await this.writeFile(V),k})}async update(Q,Z){return this.serializeWrite(async()=>{let W=await this.readFile(),B=W.findIndex((H)=>H.id===Q);if(B===-1)return;let X=W[B];if(Z.trigger){let H=Z.trigger.kind==="cron"&&!Z.trigger.timezone?{...Z.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:Z.trigger,U=_(H);if(U)throw Error(U);if(H.kind==="once"&&new Date(H.runAt).getTime()<=Date.now())throw Error("once trigger runAt must be in the future");Z={...Z,trigger:H}}let Y={...X,...Z,dispatch:Z.dispatch?{...X.dispatch,...Z.dispatch}:X.dispatch,updatedAt:new Date().toISOString()},k=!X.enabled,V=Y.enabled,j=Z.trigger!==void 0;if((j||k&&V)&&Z.nextRunAt===void 0){let H=new Date,U=A(Y.trigger,H);if(Y.nextRunAt=U?U.toISOString():null,j)Y.expiresAt=null}return W[B]=Y,await this.writeFile(W),Y})}async remove(Q){return this.serializeWrite(async()=>{let Z=await this.readFile(),W=Z.filter((B)=>B.id!==Q);if(W.length===Z.length)return!1;return await this.writeFile(W),!0})}async setEnabled(Q,Z){return this.update(Q,{enabled:Z})}}var LQ=I.getInstance();
2
- export{DJ as ma,A as na,_ as oa,FJ as pa,qJ as qa,z as ra,lJ as sa,uJ as ta,oJ as ua,sJ as va,iJ as wa,x as xa,aJ as ya,tJ as za,rJ as Aa,TJ as Ba,yJ as Ca,eJ as Da,I as Ea,LQ as Fa};
@@ -1 +0,0 @@
1
- import{Dc as a,Ec as b,Fc as c,Gc as d,Hc as e,Ic as f,Jc as g,Kc as h}from"./chunk-khvbwbtv.js";import"./chunk-xhxvde2k.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";export{d as syncSession,e as syncAll,h as searchProjectionText,c as resetProjectionDbCache,f as removeSessionFromProjection,g as rebuildProjectionIndex,b as getProjectionDb,a as getIndexDbPath};
@@ -1 +0,0 @@
1
- import{jc as a,kc as b,lc as c,mc as d,nc as e,oc as f,pc as g}from"./chunk-at2krx3x.js";import"./chunk-86phvby9.js";import"./chunk-khvbwbtv.js";import"./chunk-ayx03d6y.js";import"./chunk-0ew7vmkb.js";import"./chunk-jmyxhygx.js";import"./chunk-vy59rm9j.js";import"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-07t42c40.js";import"./chunk-d0sej62r.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";export{b as __setSessionSnapshotIOForTesting,c as __resetSessionSnapshotIOForTesting,g as SessionService,d as SessionMissingCreationError,e as SessionArchivedError,f as SessionArchiveConflictError,a as STALE_EMPTY_SESSION_AGE_MS};
@@ -1 +0,0 @@
1
- import{de as a,ee as b,fe as c,ge as d,he as e}from"./chunk-zzkzmrjd.js";import"./chunk-v1jxren4.js";import"./chunk-0ew7vmkb.js";import"./chunk-s8889acm.js";import"./chunk-44ep1v89.js";import"./chunk-jmyxhygx.js";import"./chunk-9afqfajf.js";import"./chunk-9jkbhaec.js";import"./chunk-0qjzgs1d.js";import"./chunk-vy59rm9j.js";import"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import"./chunk-d0sej62r.js";import"./chunk-7hs1n09m.js";import"./chunk-b63dfss4.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";export{d as snapshotWorkspaceAgentResources,c as resolveWorkspaceAgentResources,e as resetWorkspaceAgentResources,a as refreshWorkspaceCommunicationStyles,b as configureInvocationPluginDirs};
@@ -1 +0,0 @@
1
- import{Lc as a,Mc as b}from"./chunk-c913zbnw.js";import"./chunk-d0sej62r.js";import"./chunk-9wy7xryc.js";export{a as globalOptions,b as cliConfig};
@@ -1 +0,0 @@
1
- import{Sf as a,Tf as b,Uf as c,Vf as d,Wf as e,Xf as f}from"./chunk-d0sej62r.js";import"./chunk-9wy7xryc.js";export{b as getVersion,c as getPackageName,a as getPackageInfo,e as getFormattedVersion,d as getDescription,f as getCopyright};
@@ -1,6 +0,0 @@
1
- import{m as bq,n as zq,o as Hq,p as Uq,q as _q,r as Aq}from"./chunk-x36dp4pj.js";import{t as Dq}from"./chunk-xtaq5ck1.js";import{G as Yq,I as Zq,J as $q,L as p,M as Vq}from"./chunk-xv1bz8f4.js";import"./chunk-byqg8qby.js";import"./chunk-321dpgd3.js";import{Na as e,ab as qq,jb as Qq}from"./chunk-y9v884rp.js";import"./chunk-fs1r9hyz.js";import{Rb as n,Vb as t,ec as k,pc as g}from"./chunk-at2krx3x.js";import"./chunk-86phvby9.js";import"./chunk-khvbwbtv.js";import{Lc as Bq}from"./chunk-c913zbnw.js";import{Nc as Gq,Oc as Kq,Pc as jq}from"./chunk-2rmt821w.js";import{Qc as Xq}from"./chunk-anm5phza.js";import"./chunk-q1v03abc.js";import{od as o}from"./chunk-aa4xya8p.js";import"./chunk-v508x7cg.js";import"./chunk-c2bgj76r.js";import"./chunk-s4zvf2tf.js";import"./chunk-3fzevvzm.js";import"./chunk-ayx03d6y.js";import"./chunk-pgs555fv.js";import"./chunk-zzkzmrjd.js";import"./chunk-v1jxren4.js";import"./chunk-0ew7vmkb.js";import"./chunk-s8889acm.js";import"./chunk-44ep1v89.js";import"./chunk-jmyxhygx.js";import"./chunk-9afqfajf.js";import{of as r}from"./chunk-9jkbhaec.js";import{pf as a,rf as Q,sf as m,uf as D}from"./chunk-0qjzgs1d.js";import"./chunk-vy59rm9j.js";import{Bf as L}from"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import"./chunk-d0sej62r.js";import"./chunk-7hs1n09m.js";import"./chunk-b63dfss4.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";import VQ from"yargs";import{hideBin as XQ}from"yargs/helpers";var u=1;function K(Y){return Q.Object({event_version:Q.Literal(u),...Y})}var Rq=K({type:Q.Literal("content_delta"),delta:Q.String()}),Iq=K({type:Q.Literal("thinking_delta"),delta:Q.String()}),Jq=K({type:Q.Literal("thinking"),content:Q.String()}),Lq=K({type:Q.Literal("stream_end")}),Wq=K({type:Q.Literal("content"),content:Q.String()}),Sq=K({type:Q.Literal("structured_output"),output:Q.Record(Q.String(),Q.Unknown()),schema_digest:Q.String({pattern:"^[a-f0-9]{64}$"})}),l=D(["readonly","write","execute"]),hq=K({type:Q.Literal("tool_start"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(l)}),Cq=K({type:Q.Literal("tool_progress"),tool_name:Q.String(),message:Q.String(),progress:Q.Optional(Q.Number()),total:Q.Optional(Q.Number())}),Oq=K({type:Q.Literal("tool_result"),tool_name:Q.String(),summary:Q.String(),target:Q.Optional(Q.String()),tool_kind:Q.Optional(l),success:Q.Optional(Q.Boolean()),error_type:Q.Optional(Q.String()),error_message:Q.Optional(Q.String())}),kq=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())}),Fq=K({type:Q.Literal("mcp_content_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),content_kind:D(["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()}),gq=K({type:Q.Literal("mcp_connection_changed"),revision:Q.Integer({minimum:1}),server_name:Q.String(),phase:D(["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())}),Tq=K({type:Q.Literal("mcp_log"),revision:Q.Integer({minimum:1}),server_name:Q.String(),level:D(["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())}),yq=K({type:Q.Literal("mcp_instructions_changed"),revision:Q.Integer({minimum:0}),server_name:Q.String(),action:D(["added","removed"]),reason:D(["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:D(["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())}),dq=K({type:Q.Literal("project_rules_loaded"),files:Q.Array(Q.Object({id:Q.String(),relative_path:Q.String(),source:D(["project","local"]),conditional:Q.Boolean(),content_sha256:Q.String({pattern:"^[a-f0-9]{64}$"})})),trigger_paths:Q.Array(Q.String()),blocked_write:Q.Boolean()}),mq=K({type:Q.Literal("user_shell_started"),execution_id:Q.String(),command:Q.String(),auxiliary:Q.Boolean()}),pq=K({type:Q.Literal("user_shell_output"),execution_id:Q.String(),stream:D(["stdout","stderr"]),chunk:Q.String(),stream_truncated:Q.Boolean()}),uq=K({type:Q.Literal("user_shell_completed"),execution_id:Q.String(),message_id:Q.String(),status:D(["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()}),lq=K({type:Q.Literal("phase"),phase:D(["turn","searching","inspecting","target_hit","executing","completed"]),status:D(["ongoing","hit","done"]),message:Q.String(),turn:Q.Optional(Q.Number()),tool_name:Q.Optional(Q.String()),target:Q.Optional(Q.String())}),vq=K({type:Q.Literal("tool_detail"),tool_name:Q.String(),detail:Q.String()}),iq=K({type:Q.Literal("task_update"),tasks:Q.Array(p)}),sq=K({type:Q.Literal("goal"),state:D(["updated","cleared"]),goal_id:Q.Optional(Q.String()),status:Q.Optional(D(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"])),verification_attempt:Q.Optional(Q.Integer({minimum:1})),verification_status:Q.Optional(D(["pending","pass","fail","partial"])),verifier_session_id:Q.Optional(Q.String()),verification_evidence_sha256:Q.Optional(Q.String({pattern:"^[a-f0-9]{64}$"}))}),rq=K({type:Q.Literal("subagent"),state:D(["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(D(["pass","fail","partial"])),resumed_from:Q.Optional(Q.String()),root_agent_id:Q.Optional(Q.String()),resume_depth:Q.Optional(Q.Integer({minimum:0}))}),aq=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())}),oq=K({type:Q.Literal("compacting"),state:D(["started","completed"]),reason:Q.Optional(D(["threshold","context_limit","turn_limit","manual"])),strategy:Q.Optional(D(["llm","fallback","snip"])),outcome:Q.Optional(D(["completed","fallback","failed"])),pre_tokens:Q.Optional(Q.Number({minimum:0})),post_tokens:Q.Optional(Q.Number({minimum:0}))}),nq=K({type:Q.Literal("provider_retry"),phase:D(["scheduled","attempt","recovered","exhausted"]),attempt:Q.Integer({minimum:0}),max_retries:Q.Integer({minimum:0}),reason:D(["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}))}),tq=K({type:Q.Literal("provider_stall"),phase:D(["detected","recovered"]),stall_count:Q.Integer({minimum:1}),duration_ms:Q.Integer({minimum:0}),warning_after_ms:Q.Integer({minimum:1}),timeout_ms:Q.Integer({minimum:1}),output_started:Q.Boolean()}),eq=K({type:Q.Literal("action_stationarity"),phase:D(["detected","recovered","halted"]),tool_name:Q.String(),run_length:Q.Integer({minimum:1}),nudge_threshold:Q.Integer({minimum:1}),halt_threshold:Q.Integer({minimum:1}),progress_aware:Q.Boolean()}),qQ=K({type:Q.Literal("turn_limit"),turns_count:Q.Number(),action:Q.Literal("continue")}),QQ=K({type:Q.Literal("task_session"),session_id:Q.String(),project_path:Q.String(),source_project_path:Q.String(),isolation:D(["local","worktree"]),worktree_branch:Q.Optional(Q.String()),base_commit:Q.Optional(Q.String())}),YQ=K({type:Q.Literal("task_admission"),state:D(["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})}),ZQ=K({type:Q.Literal("output"),content:Q.String(),exit_code:Q.Number()}),$Q=K({type:Q.Literal("error"),message:Q.String()}),EQ=m(Q.Union([Rq,Iq,Jq,Lq,Wq,Sq,hq,Cq,Oq,kq,Fq,wq,gq,Tq,yq,cq,dq,mq,pq,uq,lq,vq,iq,sq,rq,aq,oq,nq,tq,eq,qQ,QQ,YQ,ZQ,$Q]));function v(Y,Z){return{event_version:u,type:Y,...Z}}function BQ(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 GQ=D(["text","jsonl"]),KQ=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()),verificationAgent:Q.Optional(Q.Boolean()),maxTurns:Q.Optional(Q.Refine(Q.Integer(),(Y)=>Y===-1||Y>0,()=>"must be -1 (unlimited) or a positive integer")),permissionMode:Q.Optional(Q.Enum(r)),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(D(["local","worktree"])),outputFormat:Q.Optional(GQ),jsonSchema:Q.Optional(Q.String()),outputSchema:Q.Optional(Q.String())});class Mq{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 jQ(Y){return Y.issues.map((Z)=>`${Z.path.join(".")||"options"}: ${Z.message}`).join("; ")}function DQ(Y){let Z=a(KQ,Y);if(!Z.success)throw Error(`Invalid headless options: ${jQ(Z.error)}`);return Z.data}function bQ(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("verification-agent",{describe:"Run the built-in independent verification agent after non-trivial changes",type:"boolean",default:!0}).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 MQ(Z);process.exit(b)})}function j(Y,Z=""){Y.write(`${Z}
2
- `)}function zQ(Y){return`[task] [${Y.status}] ${Y.subject}`}function HQ(){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 UQ(Y){if(!(Y instanceof Error))return"Unknown error";let X=Y.lastError??Y;if(X.responseBody)try{let z=JSON.parse(X.responseBody)?.error?.message;if(z)return X.statusCode?`${z} (HTTP ${X.statusCode})`:z}catch{}let q=Y.message.match(/Last error:\s*(.+)$/);if(q)return q[1];return Y.message}function _Q(Y){return Y==="jsonl"?"jsonl":"text"}function i(Y,Z){let b=(...X)=>{for(let q of X){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 AQ(Y,Z,b,X){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)&&!X.targetLocked)return{phase:"target_hit",status:"hit",message:`Target locked: ${Z}`,shouldLockTarget:!0};if(X.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:X.targetLocked?"hit":"ongoing",message:`Executing: ${Z}`,shouldLockTarget:!1}}function s(Y,Z,b=!1){let X=(q,$)=>{Y.stdout.write(`${JSON.stringify(v(q,$))}
3
- `)};return{contentDelta(q){if(Z==="jsonl"){X("content_delta",{delta:q});return}if(b)return;Y.stdout.write(q)},thinkingDelta(q,$){if(Z==="jsonl")return X("thinking_delta",{delta:q}),$;if(!$)Y.stderr.write("[thinking] ");return Y.stderr.write(q),!0},thinking(q){if(Z==="jsonl"){X("thinking",{content:q});return}j(Y.stderr,`[thinking] ${q}`)},streamEnd(q,$){if(Z==="jsonl"){X("stream_end",{});return}if($)Y.stderr.write(`
4
- `);if(q)Y.stdout.write(`
5
- `)},content(q){if(Z==="jsonl"){X("content",{content:q});return}j(Y.stdout,q)},structuredOutput(q){if(Z==="jsonl"){X("structured_output",{output:q.output,schema_digest:q.schemaDigest});return}j(Y.stdout,JSON.stringify(q.output))},toolStart(q,$,z,H){if(Z==="jsonl"){X("tool_start",{tool_name:q,summary:$,target:z,tool_kind:H});return}j(Y.stderr,`[tool:start] ${$}`)},toolProgress(q,$,z,H){if(Z==="jsonl"){X("tool_progress",{tool_name:q,message:$,progress:z,total:H});return}j(Y.stderr,`[tool:progress] ${q}: ${$}`)},toolResult(q,$,z,H,M){if(Z==="jsonl"){X("tool_result",{tool_name:q,summary:$,target:z,tool_kind:H,success:M?.success,error_type:M?.errorType,error_message:M?.errorMessage});return}j(Y.stderr,`[tool:result] ${$}`)},mcpCatalogChanged(q){if(Z==="jsonl"){X("mcp_catalog_changed",{revision:q.revision,server_name:q.serverName,added:q.added,removed:q.removed,updated:q.updated});return}j(Y.stderr,`[mcp:catalog] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpContentChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:${q.contentKind}] r${q.revision} ${q.serverName} +${q.added.length} -${q.removed.length} ~${q.updated.length}`)},mcpResourceUpdated(q){if(Z==="jsonl"){X("mcp_resource_updated",{revision:q.revision,server_name:q.serverName,uri:q.uri});return}j(Y.stderr,`[mcp:resource] r${q.revision} ${q.serverName} updated ${q.uri}`)},mcpConnectionChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:connection] r${q.revision} ${q.serverName} ${q.phase} ${q.attempt}/${q.maxAttempts}`)},mcpLog(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:log] ${q.level} ${q.serverName}${q.logger?` logger=${q.logger}`:""}: ${q.message}`)},mcpInstructionsChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:instructions] ${q.action} ${q.serverName}${q.truncated?" (truncated)":""}`)},mcpTaskChanged(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[mcp:task] ${q.taskId} ${q.serverName}/${q.toolName} `+q.status)},projectRulesLoaded(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[project-rules] loaded ${q.files.length} file(s)${q.blockedWrite?" before write":""}`)},userShellStarted(q,$,z){if(Z==="jsonl"){X("user_shell_started",{execution_id:q,command:$,auxiliary:z});return}j(Y.stderr,`[user-shell:start] ${$}`)},userShellOutput(q,$,z,H){if(Z==="jsonl"){X("user_shell_output",{execution_id:q,stream:$,chunk:z,stream_truncated:H});return}($==="stderr"?Y.stderr:Y.stdout).write(z)},userShellCompleted(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[user-shell:${q.record.status}] exit=${q.record.exitCode??"null"} ${q.record.durationMs}ms`)},phase(q,$,z,H={}){if(Z==="jsonl"){X("phase",{phase:q,status:$,message:z,turn:H.turn,tool_name:H.toolName,target:H.target});return}j(Y.stderr,`[phase:${q}] ${z}`)},toolDetail(q,$){if(Z==="jsonl"){X("tool_detail",{tool_name:q,detail:$});return}j(Y.stderr,$)},taskUpdate(q){if(Z==="jsonl"){X("task_update",{tasks:q});return}for(let $ of q)j(Y.stderr,zQ($))},goal(q){if(Z==="jsonl"){X("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)j(Y.stderr,`[goal:${q.goal.status}] ${q.goal.objective}`);else j(Y.stderr,"[goal:cleared]")},subagent(q){let $=q.kind==="subagent_spawned";if(Z==="jsonl"){X("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}j(Y.stderr,`[subagent:${$?"spawned":"completed"}] ${q.sessionId}${q.resumedFrom?` resumed from ${q.resumedFrom}`:""}`)},tokenUsage(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[tokens] in=${q.inputTokens} out=${q.outputTokens} total=${q.totalTokens} / ${q.maxContextTokens}`)},compacting(q){let $=q.phase==="start";if(Z==="jsonl"){X("compacting",{state:$?"started":"completed",reason:q.reason,strategy:q.strategy,outcome:q.outcome,pre_tokens:q.preTokens,post_tokens:q.postTokens});return}j(Y.stderr,$?`[context] compacting started${q.reason?` (${q.reason})`:""}`:`[context] compacting ${q.outcome??"completed"}`)},providerRetry(q){if(Z==="jsonl"){X("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`:"";j(Y.stderr,`[provider-retry:${q.phase}] ${q.attempt}/${q.maxRetries} ${q.reason}${$}`)},providerStall(q){if(Z==="jsonl"){X("provider_stall",{phase:q.phase,stall_count:q.stallCount,duration_ms:q.durationMs,warning_after_ms:q.warningAfterMs,timeout_ms:q.timeoutMs,output_started:q.outputStarted});return}j(Y.stderr,`[provider-stall:${q.phase}] ${q.durationMs}ms / ${q.timeoutMs}ms`)},actionStationarity(q){if(Z==="jsonl"){X("action_stationarity",{phase:q.phase,tool_name:q.toolName,run_length:q.runLength,nudge_threshold:q.nudgeThreshold,halt_threshold:q.haltThreshold,progress_aware:q.progressAware});return}j(Y.stderr,`[action-stationarity:${q.phase}] ${q.toolName} ${q.runLength}/${q.haltThreshold}`)},turnLimit(q){if(Z==="jsonl"){X("turn_limit",{turns_count:q,action:"continue"});return}j(Y.stderr,`[turn-limit] continuing after ${q} turns`)},taskSession(q){if(Z==="jsonl"){X("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}j(Y.stderr,`[task:${q.isolation}] ${q.sessionId} ${q.sourceProjectPath} -> ${q.projectPath}${q.worktreeBranch?` (${q.worktreeBranch})`:""}`)},taskAdmission(q){if(Z==="jsonl"){X("task_admission",{state:q.state,queue_position:q.queuePosition,queue_depth:q.queueDepth,in_flight:q.inFlight,max_concurrent_tasks:q.maxConcurrentTasks});return}j(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"){X("output",{content:q,exit_code:$});return}j($===0?Y.stdout:Y.stderr,q)},error(q){if(Z==="jsonl"){X("error",{message:q});return}j(Y.stderr,q)}}}async function MQ(Y,Z={stdout:process.stdout,stderr:process.stderr},b){let X="text",q=s(Z,X),$=new Mq,z={targetLocked:!1},H,M,W=BQ(b);try{let B=DQ(Y);X=_Q(B.outputFormat);let N=await _q(B);q=s(Z,X,Boolean(N)),await bq();let T=B.forkSession!==!0&&(B.continue===!0||typeof B.resume==="string"&&B.resume.length>0)?await Hq({message:B.message,_:B._,stdin:b?.stdin}):await zq({...B,stdin:b?.stdin}),R=T===void 0,_=R?{mode:"agent",content:""}:await Uq(T);if(_.mode==="output"){if(_.content)q.output(_.content,_.exitCode??0);return _.exitCode??0}let S=_.content.trimStart().startsWith("!")?_.content.trimStart().slice(1).trim():void 0;if(S!==void 0&&B.taskIsolation)throw Error("User shell commands cannot be combined with --task-isolation");if(S!==void 0&&N)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:A,messages:y,metadata:c}=await Aq({sessionId:B.sessionId,continue:B.continue,resume:B.resume,forkSession:B.forkSession,fallbackSessionPrefix:"headless"}),I=B.permissionMode??c?.permissionMode??"yolo",d=B.model&&B.model!=="inherit"?B.model:o()?.id,U=B.taskIsolation?await Dq.createSessionTask({sessionId:A,prompt:_.content,sourceProjectPath:L(),isolation:B.taskIsolation,dispatch:{version:1,prompt:_.content,sourceProjectPath:L(),isolation:B.taskIsolation,permissionMode:I,...d?{modelId:d}:{},...N?{outputSchema:N}:{}}}):void 0,P=U?.metadata.projectPath??c?.projectPath??L();if(!U)await g.setSessionPermissionMode(A,P,I);let Pq=U?!1:await Qq.cancelPendingNonInteractive(P,A);if(U)q.taskSession({sessionId:A,projectPath:P,sourceProjectPath:U.metadata.taskSourceProjectPath??L(),isolation:B.taskIsolation,worktreeBranch:U.metadata.taskWorktreeBranch,baseCommit:U.metadata.taskBaseCommit}),M=e.subscribe((V)=>{if(V.type!=="task.status"||V.sessionId!==A||V.projectPath!==P||!["queued","running"].includes(String(V.properties.taskStatus))||typeof V.properties.taskQueueDepth!=="number"||typeof V.properties.taskInFlight!=="number"||typeof V.properties.taskConcurrencyLimit!=="number")return;q.taskAdmission({state:V.properties.taskStatus,queuePosition:typeof V.properties.taskQueuePosition==="number"?V.properties.taskQueuePosition:void 0,queueDepth:V.properties.taskQueueDepth,inFlight:V.properties.taskInFlight,maxConcurrentTasks:V.properties.taskConcurrencyLimit})});let Nq={messages:Pq?await g.loadSessionModelContext(A,P):[...y],userId:"cli-user",sessionId:A,workspaceRoot:P,permissionMode:I,signal:W.signal,...U?.taskWorktree?{worktreeActive:!0}:{},confirmationHandler:HQ()};H=await Yq.create({sessionId:A,workspaceRoot:P,modelId:B.model,permissionMode:I,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig,agents:B.agents?Xq(B.agents):void 0,...U?.taskWorktree?{taskWorktree:U.taskWorktree}:{},...U?.metadata.taskIsolation?{taskIsolation:U.metadata.taskIsolation}:{},...y.length>0?{sessionStart:{isResume:!0,resumeSessionId:A}}:{}});let h=R&&H.getPendingSteeringCount()>0,C=R&&!h?await H.getGoal():null,F=C?.status==="active"||C?.status==="verifying",f=R&&!h&&!F?await H.getRecoveredFinalResponse():void 0;if(R&&!h&&!F){if(!f)throw Error("No unfinished turn or active goal to resume");if(C)q.goal({kind:"goal_updated",goal:C});if(f.structuredOutput&&f.structuredOutputSchemaDigest)q.structuredOutput({kind:"structured_output",output:f.structuredOutput,schemaDigest:f.structuredOutputSchemaDigest});else q.content(f.content);return q.phase("completed","done","Recovered headless run completed"),0}if(S!==void 0){let V=await H.executeUserShellCommand(S,{signal:W.signal,onEvent:(G)=>{if(G.type==="started")q.userShellStarted(G.executionId,G.command,G.auxiliary);else if(G.type==="output")q.userShellOutput(G.executionId,G.stream,G.chunk,G.streamTruncated)}});return q.userShellCompleted(V),V.record.status==="completed"?0:V.record.status==="aborted"?130:V.record.exitCode??1}let fq=B.maxTurns??H.getConfig().maxTurns,xq=U?.taskWorktree?[...new Set([...B.disallowedTools??[],"EnterWorktree","ExitWorktree"])]:B.disallowedTools,Eq=await Vq.createWithRuntime(H,{sessionId:A,systemPrompt:B.systemPrompt,appendSystemPrompt:B.appendSystemPrompt,maxTurns:B.maxTurns,modelId:B.model,permissionMode:I,toolWhitelist:B.allowedTools,toolBlacklist:xq,mcpConfig:B.mcpConfig,strictMcpConfig:B.strictMcpConfig}),w=await qq(Eq.chatStream(_.content,Nq,{stream:!0,signal:W.signal,maxTurns:B.maxTurns,builtinVerification:B.verificationAgent!==!1,outputSchema:N,pendingInputOnly:h,goalContinuationOnly:F,...fq===-1?{onTurnLimitReached:async(V)=>{return q.turnLimit(V.turnsCount),{continue:!0,reason:"headless-auto-continue"}}}:{}}),async(V)=>{switch(V.kind){case"content_delta":if(!N||X==="jsonl")$.markAssistantContent();q.contentDelta(V.delta);break;case"thinking_delta":$.setThinkingOpened(q.thinkingDelta(V.delta,$.hasOpenThinking()));break;case"stream_end":{let G=$.completeStream();q.streamEnd(G.wroteAssistantContent,G.openedThinking);break}case"tool_start":{let G=V.toolCall;if(!("function"in G))break;if(G.function.name===k)break;if(["TaskCreate","TaskUpdate","TaskList"].includes(G.function.name))break;try{let x=JSON.parse(G.function.arguments),E=Zq(G.function.name,x),J=i(G.function.name,x),O=AQ(G.function.name,E,J,z);if(O.shouldLockTarget)z.targetLocked=!0;q.phase(O.phase,O.status,O.message,{toolName:G.function.name,target:J}),q.toolStart(G.function.name,E,J,V.toolKind)}catch{q.phase(z.targetLocked?"executing":"searching",z.targetLocked?"hit":"ongoing",z.targetLocked?`Working within target: ${G.function.name}`:`Still searching: ${G.function.name}`,{toolName:G.function.name}),q.toolStart(G.function.name,G.function.name,void 0,V.toolKind)}break}case"tool_progress":{let G=V.toolCall;if(!("function"in G))break;if(G.function.name===k)break;q.toolProgress(G.function.name,V.update.message,V.update.progress,V.update.total);break}case"tool_result":{let G=V.toolCall;if(!("function"in G))break;if(G.function.name===k)break;let x;try{let J=JSON.parse(G.function.arguments);x=i(G.function.name,J)}catch{x=void 0}let E=t($q(G.function.name,V.result),n);if(q.toolResult(G.function.name,E.summary,x,void 0,{success:V.result.success,errorType:V.result.error?.type,errorMessage:V.result.error?.message}),E.detail)q.toolDetail(G.function.name,E.detail);break}case"token_usage":q.tokenUsage(V.usage);break;case"compaction":q.compacting(V);break;case"task_update":q.taskUpdate(V.tasks);break;case"structured_output":q.structuredOutput(V);break;case"mcp_catalog_changed":q.mcpCatalogChanged(V);break;case"mcp_content_changed":q.mcpContentChanged(V);break;case"mcp_resource_updated":q.mcpResourceUpdated(V);break;case"mcp_connection_changed":q.mcpConnectionChanged(V);break;case"mcp_log":q.mcpLog(V);break;case"mcp_instructions_changed":q.mcpInstructionsChanged(V);break;case"mcp_task_changed":q.mcpTaskChanged(V);break;case"project_rules_loaded":q.projectRulesLoaded(V);break;case"steering_applied":case"follow_up_started":case"goal_continuation_started":break;case"goal_updated":q.goal(V);break;case"subagent_spawned":case"subagent_completed":q.subagent(V);break;case"model_fallback":break;case"provider_retry":q.providerRetry(V);break;case"provider_stall":q.providerStall(V);break;case"action_stationarity":q.actionStationarity(V);break;case"turn_start":if(V.turn===1)z.targetLocked=!1;q.phase("turn",z.targetLocked?"hit":"ongoing",`Turn ${V.turn} started`,{turn:V.turn});break;default:{let G=V}}});if(w.metadata?.outputTruncated)q.error("[warning] 输出因达到 token 上限被截断,部分内容可能不完整。");if(!w.success)return q.error(`Error: ${w.error?.message??"Agent execution failed"}`),1;return q.phase("completed","done","Headless run completed"),0}catch(B){if($.hasOpenThinking()&&X==="text")Z.stderr.write(`
6
- `);return q.error(`Error: ${UQ(B)}`),1}finally{M?.();try{await H?.dispose()}finally{W.dispose()}}}async function rQ(){if(!process.argv.slice(2).includes("--headless"))return!1;let{headless:b,"output-format":X,"system-prompt":q,"append-system-prompt":$,"max-turns":z,...H}=Bq,M=VQ(XQ(process.argv)).scriptName("blade").strict(!1).options(H).middleware([Kq,Gq,jq]);return bQ(M),await M.parse(),!0}export{MQ as runHeadless,rQ as handleHeadlessMode,KQ as HeadlessOptionsSchema};
@@ -1,10 +0,0 @@
1
- import{f as Q,g as R,h as T,i as W}from"./chunk-s6exb18e.js";import"./chunk-pqsg5265.js";import"./chunk-fqrt55g3.js";import"./chunk-t857g6s9.js";import"./chunk-xtaq5ck1.js";import"./chunk-xv1bz8f4.js";import"./chunk-byqg8qby.js";import"./chunk-321dpgd3.js";import"./chunk-y9v884rp.js";import"./chunk-fs1r9hyz.js";import"./chunk-at2krx3x.js";import"./chunk-86phvby9.js";import"./chunk-khvbwbtv.js";import"./chunk-q1v03abc.js";import{md as M}from"./chunk-aa4xya8p.js";import"./chunk-v508x7cg.js";import"./chunk-c2bgj76r.js";import"./chunk-s4zvf2tf.js";import"./chunk-3fzevvzm.js";import"./chunk-ayx03d6y.js";import"./chunk-pgs555fv.js";import"./chunk-zzkzmrjd.js";import"./chunk-v1jxren4.js";import"./chunk-0ew7vmkb.js";import"./chunk-s8889acm.js";import"./chunk-44ep1v89.js";import"./chunk-jmyxhygx.js";import"./chunk-9afqfajf.js";import"./chunk-9jkbhaec.js";import"./chunk-0qjzgs1d.js";import"./chunk-vy59rm9j.js";import"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import{Tf as J}from"./chunk-d0sej62r.js";import"./chunk-7hs1n09m.js";import"./chunk-b63dfss4.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";import b from"chalk";import H from"open";var $=`
2
- ____ _ _
3
- | __ )| | __ _ __| | ___
4
- | _ \\| |/ _\` |/ _\` |/ _ \\
5
- | |_) | | (_| | (_| | __/
6
- |____/|_|\\__,_|\\__,_|\\___|
7
- `,E={command:"web",describe:"Start Blade server and open web interface",builder:Q,handler:async(X)=>{let F=R(X);if(await M(),!process.env.BLADE_SERVER_PASSWORD)console.log(b.yellow("[WARN] BLADE_SERVER_PASSWORD is not set; server is unsecured.")),console.log(b.gray(` Set this environment variable to enable Basic Auth.
8
- `));let C=await W.listenAsync(F);if(console.log(b.cyan($)),console.log(b.gray(` v${J()}
9
- `)),F.hostname==="0.0.0.0"){let q=`http://localhost:${C.port}`;console.log(b.blue.bold(" Local access: "),b.white(q));let Y=T();for(let Z of Y)console.log(b.blue.bold(" Network access: "),b.white(`http://${Z}:${C.port}`));H(q).catch(()=>{})}else{let q=C.url.toString();console.log(b.blue.bold(" Web interface: "),b.white(q)),H(q).catch(()=>{})}console.log(""),console.log(b.gray(` Press Ctrl+C to stop the server.
10
- `)),await new Promise(()=>{}),await C.stop()}};export{E as webCommand};
@@ -1 +0,0 @@
1
- import{Nc as a,Oc as b,Pc as c}from"./chunk-2rmt821w.js";import"./chunk-anm5phza.js";import"./chunk-aa4xya8p.js";import"./chunk-v508x7cg.js";import"./chunk-c2bgj76r.js";import"./chunk-s8889acm.js";import"./chunk-9afqfajf.js";import"./chunk-9jkbhaec.js";import"./chunk-0qjzgs1d.js";import"./chunk-vy59rm9j.js";import"./chunk-km155c83.js";import"./chunk-xhxvde2k.js";import"./chunk-2nga4tsd.js";import"./chunk-07t42c40.js";import"./chunk-d0sej62r.js";import"./chunk-7hs1n09m.js";import"./chunk-b63dfss4.js";import"./chunk-7gsqx900.js";import"./chunk-9wy7xryc.js";export{a as validatePermissions,c as validateOutput,b as loadConfiguration};