@dahawa/hawa-code 2.4.29 → 2.4.30

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.
package/cli.js CHANGED
@@ -404,7 +404,7 @@ GFS4: `),console.error(e)});xc[ap]||(Far=global[ap]||[],Gar(xc,Far),xc.close=(fu
404
404
  ${t.text}
405
405
  </teammate-message>`).join(`
406
406
 
407
- `)},async clearReadMessages(e,t){return Sd(e,()=>{let n=Ib(e,t).filter(o=>!o.read);OI(e,t,n),er(`Cleared read messages for ${t} in team ${e}`)})},async isSubagentShutdown(e,t){if(!await this.getTeam(e))return!1;let n=await this.getAllMessages(e,t),o=[];for(let c of n)if(c.read)try{let l=JSON.parse(c.text);l.type==="shutdown_request"&&l.requestId&&o.push(l.requestId)}catch{}if(o.length===0)return!1;let i=await this.getAllMessages(e,"team-lead"),s=[];for(let c of i)if(c.read)try{let l=JSON.parse(c.text);l.type==="shutdown_approved"&&l.requestId&&s.push(l.requestId)}catch{}return o.some(c=>s.includes(c))},async waitSubagentShutdown(e,t,r){let n=Date.now(),o=r*1e3;for(;!await this.isSubagentShutdown(e,t);)if(await Xx(200),Date.now()-n>=o)return!1;return!0},async waitForNewMessages(e,t,r){let n=Date.now(),i=(await this.getAllMessages(e,t)).length;for(;Date.now()-n<r;)if(await Xx(200),(await this.getAllMessages(e,t)).length>i)return!0;return!1},async getTeamMemberState(e,t){let r=await this.getMember(e,t);return r?r.state:null},async updateTeamMemberStateSafe(e,t,r){try{return{success:!0,member:await this.updateTeamMemberState(e,t,r)}}catch{return{success:!1}}},async updateTeamMemberState(e,t,r){return Sd(e,()=>{let n=Cb(e);if(!n)throw new Error(`Team '${e}' not found`);let o=n.members.find(i=>i.name===t);if(!o)throw new Error(`Member '${t}' not found in team '${e}'`);return o.state=r,hj(e,n),_j(e,"member_state_updated"),er(`Updated member ${t} state to ${r} in team ${e}`),o})},async hasUnreadIdleNotificationFromMember(e,t){return Sd(e,()=>{let r=Ib(e,"team-lead"),n=!1,o=null;for(let i of r)if(i.from===t)try{JSON.parse(i.text).type==="idle_notification"&&((!o||i.timestamp>o)&&(o=i.timestamp),i.read||(n=!0))}catch{}return{hasUnread:n,latestTimestamp:o}})}};$Io();Us=Gn});import{existsSync as yj,readFileSync as YIo,writeFileSync as hcr,mkdirSync as VIo,unlinkSync as zIo,readdirSync as WIo}from"fs";import{join as E_e,dirname as $8e}from"path";import{homedir as jIo}from"os";function S_e(){let e=process.env.HAWA_CODE_TASK_LIST_ID??Us.getCurrentTeamName()??JIo();return E_e(KIo,e)}function JIo(){return Je.getSessionContext().getSessionId()||"default"}function Y8e(e){let t=S_e();return E_e(t,`${e}.json`)}function ZIo(){let e=S_e();return E_e(e,".lock")}function T_e(e){yj(e)||VIo(e,{recursive:!0})}async function pk(e){let t=ZIo();T_e($8e(t));let r=new q8e(t),n=3e4,o=100,i=Date.now();for(;!await r.acquire();){if(Date.now()-i>=n)throw new Error("Timed out waiting for lock for task operation");await new Promise(s=>setTimeout(s,o))}try{return e()}finally{await r.release()}}function fk(e){let t=Y8e(e);if(!yj(t))return null;try{let r=YIo(t,"utf-8");return JSON.parse(r)}catch(r){return re(`Failed to read task ${e}:`,r),null}}function wI(e){let t=Y8e(e.id);T_e($8e(t));let r={...e,updatedAt:Date.now(),createdAt:e.createdAt||Date.now()};hcr(t,JSON.stringify(r,null,2),"utf-8")}function Acr(e){let t=Y8e(e);if(yj(t))try{zIo(t)}catch(r){throw re(`Failed to delete task ${e}:`,r),r}}function XIo(){let e=S_e();T_e(e);let t=Tj();if(t.length===0)return"0";let r=-1;for(let n of t){let o=parseInt(n.id,10);!isNaN(o)&&o>r&&(r=o)}return String(r+1)}function IH(e){Ft.emit("task:change",{taskId:e})}function Tj(){let e=S_e();if(!yj(e))return[];try{let t=WIo(e),r=[];for(let n of t)if(n.endsWith(".json")&&n!==".lock"){let o=n.replace(".json",""),i=fk(o);i&&r.push(i)}return r.sort((n,o)=>{let i=parseInt(n.id,10),s=parseInt(o.id,10);return!isNaN(i)&&!isNaN(s)?i-s:n.id.localeCompare(o.id)}),r}catch(t){return re("Failed to list tasks:",t),[]}}var _cr,KIo,gcr,q8e,cp,mk=Q(()=>{De();Ks();ci();_cr=q(A_e(),1);uE();KIo=E_e(jIo(),".hcode","tasks"),gcr=3e4;q8e=class{lockFilePath;releaseFunc=null;constructor(t){this.lockFilePath=t}async acquire(t=gcr){let r=Date.now();for(T_e($8e(this.lockFilePath)),yj(this.lockFilePath)||hcr(this.lockFilePath,"");Date.now()-r<t;)try{return this.releaseFunc=await(0,_cr.lock)(this.lockFilePath,{stale:gcr*2,realpath:!1}),er(`Lock acquired: ${this.lockFilePath}`),!0}catch(n){if(n.code==="ELOCKED")await new Promise(o=>setTimeout(o,100));else return re("Error acquiring lock:",n),!1}return!1}async release(){if(this.releaseFunc)try{await this.releaseFunc(),this.releaseFunc=null,er(`Lock released: ${this.lockFilePath}`)}catch(t){re("Error releasing lock:",t)}}};cp={async createTask(e){return pk(()=>{let t={...e,id:XIo(),status:"pending",blocks:[],blockedBy:[],createdAt:Date.now(),updatedAt:Date.now()};return wI(t),IH(t.id),er(`Created task: ${t.id} - ${t.subject}`),t})},async getTask(e){return pk(()=>fk(e))},async updateTask(e,t){return pk(()=>{let r=fk(e);if(!r)return null;if(t.status==="deleted"){Acr(e);let o=Tj();for(let i of o)i.blocks.includes(e)&&(i.blocks=i.blocks.filter(s=>s!==e),wI(i)),i.blockedBy.includes(e)&&(i.blockedBy=i.blockedBy.filter(s=>s!==e),wI(i));return IH(e),er(`Deleted task via update: ${e}`),null}let n={...r,...t,id:r.id,createdAt:r.createdAt,updatedAt:Date.now()};return wI(n),IH(e),er(`Updated task: ${e}`),n})},async deleteTask(e){return pk(()=>{if(!fk(e))return!1;Acr(e);let r=Tj();for(let n of r)n.blocks.includes(e)&&(n.blocks=n.blocks.filter(o=>o!==e),wI(n)),n.blockedBy.includes(e)&&(n.blockedBy=n.blockedBy.filter(o=>o!==e),wI(n));return IH(e),er(`Deleted task: ${e}`),!0})},async listTasks(){return pk(()=>Tj())},async setTaskDependencies(e,t,r){return pk(()=>{let n=fk(e);return n?(t!==void 0&&(n.blocks=t),r!==void 0&&(n.blockedBy=r),n.updatedAt=Date.now(),wI(n),IH(e),n):null})},async addBlock(e,t){return pk(()=>{let r=fk(e),n=fk(t);return!r||!n?!1:(r.blocks.includes(t)||(r.blocks.push(t),r.updatedAt=Date.now(),wI(r)),n.blockedBy.includes(e)||(n.blockedBy.push(e),n.updatedAt=Date.now(),wI(n)),IH(e),!0)})},async getAvailableTasks(){return(await this.listTasks()).filter(t=>t.status==="pending"&&!t.owner&&t.blockedBy.length===0)},async getTaskStatistics(){let e=await this.listTasks();return{total:e.length,pending:e.filter(t=>t.status==="pending").length,inProgress:e.filter(t=>t.status==="in_progress").length,completed:e.filter(t=>t.status==="completed").length,blocked:e.filter(t=>t.blockedBy.length>0).length}},listTasksSync(){return Tj()}}});var Ecr={};fs(Ecr,{emitReminderEvent:()=>lp,generateFileChangeReminder:()=>tvo,generateSystemReminders:()=>z8e,getReminderSessionState:()=>rvo,resetReminderSession:()=>b1,systemReminderService:()=>vH});function evo(){return ct.isArchiveToolUseInputsEnable()}var V8e,vH,z8e,tvo,lp,b1,rvo,dE=Q(async()=>{FB();De();hH();th();await dj();ci();Hp();qe();iT();xI();mk();br();uE();fr();V8e=class{sessionState={lastTodoUpdate:0,lastFileAccess:0,sessionStartTime:Date.now(),remindersSent:new Set,contextPresent:!1,reminderCount:0,config:{todoEmptyReminder:!0,securityReminder:!0,performanceReminder:!0,maxRemindersPerSession:10}};eventDispatcher=new Map;reminderCache=new Map;constructor(){this.setupEventDispatcher()}async generateReminders(t=!1,r){this.sessionState.contextPresent=t;let{agentId:n,permissionMode:o,tools:i,allTools:s,lazyToolMode:a,contextInfo:c}=r||{};if(!t)return[];if(this.sessionState.reminderCount>=this.sessionState.config.maxRemindersPerSession)return[];let l=[],u=Date.now(),d=[()=>this.dispatchTaskEvent(n,i),()=>this.dispatchTodoEvent(n,i),()=>this.dispatchSecurityEvent(),()=>this.dispatchPerformanceEvent(n),()=>this.getMentionReminders(),()=>this.getSelectionChanged(n),()=>this.getPlanMode(n,o),()=>this.getLSPServer(i),async()=>this.getToolLazy(n,i,s,a),()=>this.getSubagentStartContext(n),()=>this.getAsyncTaskReminders(n),()=>this.getSessionStartContext(),()=>this.getRecalledMemories(n),async()=>this.getAgentTeamReminder(n),async()=>this.getContextOptimizationReminder(i,s,c,a)];for(let p of d){let f=await p();if(f){let g=Array.isArray(f)?f:[f];l.push(...g),this.sessionState.reminderCount+=g.length}}return l.length>0&&Qe("system_reminder_batch",{count:String(l.length),types:l.map(p=>p.type).join(","),priorities:l.map(p=>p.priority).join(","),categories:l.map(p=>p.category).join(","),sessionCount:String(this.sessionState.reminderCount),agentId:n||"default",timestamp:String(u)}),l}dispatchTaskEvent(t,r){if(!ct.isTasksEnable()||![sd,Km,Qp,ad].every(a=>r?.some(c=>c.name===a)))return null;let i=cp.listTasksSync(),s=Date.now();if(i.length===0)return this.createReminderMessage("task","task","medium","The task tools haven't been used recently. If you're working on tasks that would benefit from tracking progress, consider using TaskCreate to add new tasks and TaskUpdate to update task status (set to in_progress when starting, completed when done). Also consider cleaning up the task list if it has become stale. Only use these if relevant to the current work. This is just a gentle reminder - ignore if not applicable. Make sure that you NEVER mention this reminder to the user.",s);{let a=i.filter(p=>p.status==="pending"),c=i.filter(p=>p.status==="in_progress"),l=i.filter(p=>p.status==="completed"),d=`Here are the existing tasks:
407
+ `)},async clearReadMessages(e,t){return Sd(e,()=>{let n=Ib(e,t).filter(o=>!o.read);OI(e,t,n),er(`Cleared read messages for ${t} in team ${e}`)})},async isSubagentShutdown(e,t){if(!await this.getTeam(e))return!1;let n=await this.getAllMessages(e,t),o=[];for(let c of n)if(c.read)try{let l=JSON.parse(c.text);l.type==="shutdown_request"&&l.requestId&&o.push(l.requestId)}catch{}if(o.length===0)return!1;let i=await this.getAllMessages(e,"team-lead"),s=[];for(let c of i)if(c.read)try{let l=JSON.parse(c.text);l.type==="shutdown_approved"&&l.requestId&&s.push(l.requestId)}catch{}return o.some(c=>s.includes(c))},async waitSubagentShutdown(e,t,r){let n=Date.now(),o=r*1e3;for(;!await this.isSubagentShutdown(e,t);)if(await Xx(200),Date.now()-n>=o)return!1;return!0},async waitForNewMessages(e,t,r){let n=Date.now(),i=(await this.getAllMessages(e,t)).length;for(;Date.now()-n<r;)if(await Xx(200),(await this.getAllMessages(e,t)).length>i)return!0;return!1},async getTeamMemberState(e,t){let r=await this.getMember(e,t);return r?r.state:null},async updateTeamMemberStateSafe(e,t,r){try{return{success:!0,member:await this.updateTeamMemberState(e,t,r)}}catch{return{success:!1}}},async updateTeamMemberState(e,t,r){return Sd(e,()=>{let n=Cb(e);if(!n)throw new Error(`Team '${e}' not found`);let o=n.members.find(i=>i.name===t);if(!o)throw new Error(`Member '${t}' not found in team '${e}'`);return o.state=r,hj(e,n),_j(e,"member_state_updated"),er(`Updated member ${t} state to ${r} in team ${e}`),o})},async hasUnreadIdleNotificationFromMember(e,t){return Sd(e,()=>{let r=Ib(e,"team-lead"),n=!1,o=null;for(let i of r)if(i.from===t)try{JSON.parse(i.text).type==="idle_notification"&&((!o||i.timestamp>o)&&(o=i.timestamp),i.read||(n=!0))}catch{}return{hasUnread:n,latestTimestamp:o}})}};$Io();Us=Gn});import{existsSync as yj,readFileSync as YIo,writeFileSync as hcr,mkdirSync as VIo,unlinkSync as zIo,readdirSync as WIo}from"fs";import{join as E_e,dirname as $8e}from"path";import{homedir as jIo}from"os";function S_e(){let e=process.env.HAWA_CODE_TASK_LIST_ID??Us.getCurrentTeamName()??JIo();return E_e(KIo,e)}function JIo(){return Je.getSessionContext().getSessionId()||"default"}function Y8e(e){let t=S_e();return E_e(t,`${e}.json`)}function ZIo(){let e=S_e();return E_e(e,".lock")}function T_e(e){yj(e)||VIo(e,{recursive:!0})}async function pk(e){let t=ZIo();T_e($8e(t));let r=new q8e(t),n=3e4,o=100,i=Date.now();for(;!await r.acquire();){if(Date.now()-i>=n)throw new Error("Timed out waiting for lock for task operation");await new Promise(s=>setTimeout(s,o))}try{return e()}finally{await r.release()}}function fk(e){let t=Y8e(e);if(!yj(t))return null;try{let r=YIo(t,"utf-8");return JSON.parse(r)}catch(r){return re(`Failed to read task ${e}:`,r),null}}function wI(e){let t=Y8e(e.id);T_e($8e(t));let r={...e,updatedAt:Date.now(),createdAt:e.createdAt||Date.now()};hcr(t,JSON.stringify(r,null,2),"utf-8")}function Acr(e){let t=Y8e(e);if(yj(t))try{zIo(t)}catch(r){throw re(`Failed to delete task ${e}:`,r),r}}function XIo(){let e=S_e();T_e(e);let t=Tj();if(t.length===0)return"0";let r=-1;for(let n of t){let o=parseInt(n.id,10);!isNaN(o)&&o>r&&(r=o)}return String(r+1)}function IH(e){Ft.emit("task:change",{taskId:e})}function Tj(){let e=S_e();if(!yj(e))return[];try{let t=WIo(e),r=[];for(let n of t)if(n.endsWith(".json")&&n!==".lock"){let o=n.replace(".json",""),i=fk(o);i&&r.push(i)}return r.sort((n,o)=>{let i=parseInt(n.id,10),s=parseInt(o.id,10);return!isNaN(i)&&!isNaN(s)?i-s:n.id.localeCompare(o.id)}),r}catch(t){return re("Failed to list tasks:",t),[]}}var _cr,KIo,gcr,q8e,cp,mk=Q(()=>{De();Ks();ci();_cr=q(A_e(),1);uE();KIo=E_e(jIo(),".hcode","tasks"),gcr=3e4;q8e=class{lockFilePath;releaseFunc=null;constructor(t){this.lockFilePath=t}async acquire(t=gcr){let r=Date.now();for(T_e($8e(this.lockFilePath)),yj(this.lockFilePath)||hcr(this.lockFilePath,"");Date.now()-r<t;)try{return this.releaseFunc=await(0,_cr.lock)(this.lockFilePath,{stale:gcr*2,realpath:!1}),er(`Lock acquired: ${this.lockFilePath}`),!0}catch(n){if(n.code==="ELOCKED")await new Promise(o=>setTimeout(o,100));else return re("Error acquiring lock:",n),!1}return!1}async release(){if(this.releaseFunc)try{await this.releaseFunc(),this.releaseFunc=null,er(`Lock released: ${this.lockFilePath}`)}catch(t){re("Error releasing lock:",t)}}};cp={async createTask(e){return pk(()=>{let t={...e,id:XIo(),status:"pending",blocks:[],blockedBy:[],createdAt:Date.now(),updatedAt:Date.now()};return wI(t),IH(t.id),er(`Created task: ${t.id} - ${t.subject}`),t})},async getTask(e){return pk(()=>fk(e))},async updateTask(e,t){return pk(()=>{let r=fk(e);if(!r)return null;if(t.status==="deleted"){Acr(e);let o=Tj();for(let i of o)i.blocks.includes(e)&&(i.blocks=i.blocks.filter(s=>s!==e),wI(i)),i.blockedBy.includes(e)&&(i.blockedBy=i.blockedBy.filter(s=>s!==e),wI(i));return IH(e),er(`Deleted task via update: ${e}`),null}let n={...r,...t,id:r.id,createdAt:r.createdAt,updatedAt:Date.now()};return wI(n),IH(e),er(`Updated task: ${e}`),n})},async deleteTask(e){return pk(()=>{if(!fk(e))return!1;Acr(e);let r=Tj();for(let n of r)n.blocks.includes(e)&&(n.blocks=n.blocks.filter(o=>o!==e),wI(n)),n.blockedBy.includes(e)&&(n.blockedBy=n.blockedBy.filter(o=>o!==e),wI(n));return IH(e),er(`Deleted task: ${e}`),!0})},async listTasks(){return pk(()=>Tj())},async setTaskDependencies(e,t,r){return pk(()=>{let n=fk(e);return n?(t!==void 0&&(n.blocks=t),r!==void 0&&(n.blockedBy=r),n.updatedAt=Date.now(),wI(n),IH(e),n):null})},async addBlock(e,t){return pk(()=>{let r=fk(e),n=fk(t);return!r||!n?!1:(r.blocks.includes(t)||(r.blocks.push(t),r.updatedAt=Date.now(),wI(r)),n.blockedBy.includes(e)||(n.blockedBy.push(e),n.updatedAt=Date.now(),wI(n)),IH(e),!0)})},async getAvailableTasks(){return(await this.listTasks()).filter(t=>t.status==="pending"&&!t.owner&&t.blockedBy.length===0)},async getTaskStatistics(){let e=await this.listTasks();return{total:e.length,pending:e.filter(t=>t.status==="pending").length,inProgress:e.filter(t=>t.status==="in_progress").length,completed:e.filter(t=>t.status==="completed").length,blocked:e.filter(t=>t.blockedBy.length>0).length}},listTasksSync(){return Tj()}}});var Ecr={};fs(Ecr,{emitReminderEvent:()=>lp,generateFileChangeReminder:()=>tvo,generateSystemReminders:()=>z8e,getReminderSessionState:()=>rvo,resetReminderSession:()=>b1,systemReminderService:()=>vH});function evo(){return ct.isArchiveToolUseInputsEnable()}var V8e,vH,z8e,tvo,lp,b1,rvo,dE=Q(async()=>{FB();De();hH();th();await dj();ci();Hp();qe();iT();xI();mk();br();uE();fr();V8e=class{sessionState={lastTodoUpdate:0,lastFileAccess:0,sessionStartTime:Date.now(),remindersSent:new Set,contextPresent:!1,reminderCount:0,config:{todoEmptyReminder:!0,securityReminder:!0,performanceReminder:!0,maxRemindersPerSession:10}};eventDispatcher=new Map;reminderCache=new Map;constructor(){this.setupEventDispatcher()}async generateReminders(t=!1,r){this.sessionState.contextPresent=t;let{agentId:n,permissionMode:o,tools:i,allTools:s,lazyToolMode:a,contextInfo:c}=r||{};if(!t)return[];if(this.sessionState.reminderCount>=this.sessionState.config.maxRemindersPerSession)return[];let l=[],u=Date.now(),d=[()=>this.dispatchTaskEvent(n,i),()=>this.dispatchTodoEvent(n,i),()=>this.dispatchSecurityEvent(),()=>this.dispatchPerformanceEvent(n),()=>this.getMentionReminders(),()=>this.getSelectionChanged(n),()=>this.getPlanMode(n,o),()=>this.getLSPServer(i),()=>this.getSubagentStartContext(n),()=>this.getAsyncTaskReminders(n),()=>this.getSessionStartContext(),()=>this.getRecalledMemories(n),async()=>this.getAgentTeamReminder(n),async()=>this.getContextOptimizationReminder(i,s,c,a),async()=>this.getToolLazy(n,i,s,a)];for(let p of d){let f=await p();if(f){let g=Array.isArray(f)?f:[f];l.push(...g),this.sessionState.reminderCount+=g.length}}return l.length>0&&Qe("system_reminder_batch",{count:String(l.length),types:l.map(p=>p.type).join(","),priorities:l.map(p=>p.priority).join(","),categories:l.map(p=>p.category).join(","),sessionCount:String(this.sessionState.reminderCount),agentId:n||"default",timestamp:String(u)}),l}dispatchTaskEvent(t,r){if(!ct.isTasksEnable()||![sd,Km,Qp,ad].every(a=>r?.some(c=>c.name===a)))return null;let i=cp.listTasksSync(),s=Date.now();if(i.length===0)return this.createReminderMessage("task","task","medium","The task tools haven't been used recently. If you're working on tasks that would benefit from tracking progress, consider using TaskCreate to add new tasks and TaskUpdate to update task status (set to in_progress when starting, completed when done). Also consider cleaning up the task list if it has become stale. Only use these if relevant to the current work. This is just a gentle reminder - ignore if not applicable. Make sure that you NEVER mention this reminder to the user.",s);{let a=i.filter(p=>p.status==="pending"),c=i.filter(p=>p.status==="in_progress"),l=i.filter(p=>p.status==="completed"),d=`Here are the existing tasks:
408
408
 
409
409
  ${i.map(p=>{let f=p.blockedBy.length>0?` \u203A blocked by #${p.blockedBy.join(", #")}`:"";return`#${p.id}. [${p.status}] ${p.subject}${f}`}).join(`
410
410
  `)}
@@ -488,9 +488,9 @@ ${c}. Members must communicate with each other using the ${d_} tool`;if(n){l+=`
488
488
  Warning: Team "${r}" has ${d.length} active ${p}, so it cannot be deleted.`}l+=`
489
489
 
490
490
  You don't need to keep checking on the team's tool progress\u2014members will notify you when they complete their tasks. Continue with other work or respond to the user instead`}return[this.createReminderMessage("agent_team","task","medium",l,s,!0)]}getContextOptimizationReminder(t,r,n,o){let i=ct.isMessageArchivingEnable(),s=ct.isMemoEnable();if(!i&&!s)return null;let a=r??t,c=i&&a?.some(C=>C.name===Gp),l=s&&a?.some(C=>C.name===f0);if(!c&&!l)return null;let u=t?.some(C=>C.name===Gp),d=t?.some(C=>C.name===f0),p=Date.now(),f=n?.percentUsed,g=.92*100,h=[],_=(C,R)=>o==="proxy"?`use ${C} via ${bc}({action:'call', name:'${C}'})`:R?`use ${C}`:`load ${C} with ${Hd}`;c&&(evo()?h.push(`${_(Gp,!!u)} to archive tool_result messages (use "__tool_result__") and specific tool_use input fields (e.g. "content", "user.name") that are no longer needed for the current task. Do not archive results or input fields required for ongoing reasoning`):h.push(`${_(Gp,!!u)} to archive tool_result messages (use "__tool_result__") that are no longer needed for the current task. Do not archive results required for ongoing reasoning`)),l&&h.push(`${_(f0,!!d)} to persist long analysis conclusions, plans, or error records to keep them out of the context window while remaining retrievable later`),c&&l&&h.push(`${Gp} and ${f0} work together: archive obsolete tool_result messages, and persist long-term conclusions or plans to Memo so they stay retrievable outside the context window.`);let T="";f!==void 0?T=`Context usage is ${f}%. The system will automatically compact prior messages when usage reaches ${g}%. If the history contains a lot of content irrelevant to the current task, clean it up proactively even when context usage is low. Reduce context usage by: `:T="Reduce context usage by: ";let y=h.length===1?`${T}${h[0]}`:`${T}${h.map(C=>`- ${C}`).join(`
491
- `)}`;return this.createReminderMessage("message_archiving_context","performance","medium",y,p,!0)}async getToolLazy(t,r,n,o){let i=ct.getLazyToolMode();if(i==="off"||o==="off"||o===void 0)return null;if(i==="proxy"&&o==="proxy"){let C=`\u4F7F\u7528 ${bc} \u8C03\u7528\u81EA\u5DF1\u7684\u5DE5\u5177\uFF0C\u5FC5\u987B\u83B7\u53D6\u5230\u5DE5\u5177\u7684\u53C2\u6570\u7ED3\u6784\u624D\u80FD\u8FDB\u884C\u5DE5\u5177\u8C03\u7528\u3002\u4E0D\u80FD\u901A\u8FC7 ${bc} \u8C03\u7528 ${hx} \u7684\u65B9\u6CD5\u3002
491
+ `)}`;return this.createReminderMessage("message_archiving_context","performance","medium",y,p,!0)}async getToolLazy(t,r,n,o){let i=ct.getLazyToolMode();if(i==="off"||o==="off"||o===void 0)return null;if(i==="proxy"&&o==="proxy"){let C=`\u4F7F\u7528 ${bc} \u52A0\u8F7D\u81EA\u5DF1\u7684\u5DE5\u5177\u540E\u624D\u53EF\u4EE5\u8C03\u7528\uFF0C\u4E0D\u80FD\u901A\u8FC7 ${bc} \u8C03\u7528 ${hx} \u7684\u65B9\u6CD5\u3002
492
492
  \u4F7F\u7528 ${hx} \u8C03\u7528\u81EA\u5DF1\u7684\u65B9\u6CD5\uFF0C\u5982\u679C ${hx} \u65B9\u6CD5\u6CA1\u6709\u63D0\u4F9B output JSON schema\uFF0C\u901A\u8FC7\u8C03\u7528\u7ED3\u679C\u5206\u6790\u51FA output JSON schema\uFF0C\u53EF\u4EE5\u4FDD\u5B58\u4E0B\u6765\u4EE5\u4FBF\u540E\u7EED\u4F7F\u7528\u3002
493
- `;return[this.createReminderMessage("tool","general","high",C,Date.now(),!1)]}if(!(i==="loading"&&o==="loading"))return null;let s=n??await wn.getTools(!1),a=r?.map(C=>C.name)??[],c=new Set(a),l=s.filter(C=>!p_.includes(C.name)&&!c.has(C.name)).map(C=>C.name),u=s.some(C=>C.name===Hd),d=s.some(C=>C.name===Ru),p=(process.env.HAWA_CODE_SHOW_LAZY_TOOL_METHOD+"").toLowerCase()==="true",f=u?`Load them with ${Hd} if needed; call it in parallel with other tools when possible.`:"",g=u?`If a tool is not listed in <loaded_tools> or <default_tools>, do not use it directly; you should load it first. Load tools with ${Hd} if needed; call it in parallel with other tools when possible.`:"",h=d?`Unload tools you no longer need with ${Ru}; call it in parallel with other tools when possible. You do not need to unload if you are returning results to the user.`:"",_=`Not yet loaded tools : ${l.length?l.join(", ")+". "+f:"none."} Loaded tools: ${a.length?a.join(", ")+". "+h:"none."}.`,T=`${l.length>0?g:""} ${a.length>0?h:""}.`,y=p?_:T;return[this.createReminderMessage("tool","general","high",y,Date.now(),p)]}getRecalledMemories(t){let n=Je.getQueryContext(t).recalledMemories;if(!n||n.length===0)return null;let o=Date.now(),s=`The following memories were recalled and may be relevant to the current task. Use them only if they are helpful:
493
+ `;return[this.createReminderMessage("tool","general","high",C,Date.now(),!0)]}if(!(i==="loading"&&o==="loading"))return null;let s=n??await wn.getTools(!1),a=r?.map(C=>C.name)??[],c=new Set(a),l=s.filter(C=>!p_.includes(C.name)&&!c.has(C.name)).map(C=>C.name),u=s.some(C=>C.name===Hd),d=s.some(C=>C.name===Ru),p=(process.env.HAWA_CODE_SHOW_LAZY_TOOL_METHOD+"").toLowerCase()==="true",f=u?`Load them with ${Hd} if needed; call it in parallel with other tools when possible.`:"",g=u?`If a tool is not listed in <loaded_tools> or <default_tools>, do not use it directly; you should load it first. Load tools with ${Hd} if needed; call it in parallel with other tools when possible.`:"",h=d?`Unload tools you no longer need with ${Ru}; call it in parallel with other tools when possible. You do not need to unload if you are returning results to the user.`:"",_=`Not yet loaded tools : ${l.length?l.join(", ")+". "+f:"none."} Loaded tools: ${a.length?a.join(", ")+". "+h:"none."}.`,T=`${l.length>0?g:""} ${a.length>0?h:""}.`,y=p?_:T;return[this.createReminderMessage("tool","general","high",y,Date.now(),p)]}getRecalledMemories(t){let n=Je.getQueryContext(t).recalledMemories;if(!n||n.length===0)return null;let o=Date.now(),s=`The following memories were recalled and may be relevant to the current task. Use them only if they are helpful:
494
494
 
495
495
  ${n.map(a=>`## ${a.path.split(/[\\/]/).pop()||a.path}
496
496
  ${a.content}`).join(`
@@ -686,7 +686,7 @@ globstar while`,e,d,t,p,f),this.matchOne(e.slice(d),t.slice(p),r))return this.de
686
686
  `)),O8n(e,o,{encoding:r,flush:!0})}var Nqt=new Zde.default({fetchMethod:e=>L8n(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});async function Lqt(e){let t=WY(e);return Nqt.get(t)||Nqt.fetchMethod?.(t)}async function L8n(e){let t=new AbortController;setTimeout(()=>{t.abort()},1e3);let r=await kLt(e,t.signal,15),n=0;for(let o of r)GM(o)==="CRLF"&&n++;return n>3?"CRLF":"LF"}function Uqt(e,t,r){if(e.has(t))return e.get(t);let n=r();return e.set(t,n),n}var U8n=new Zde.default({fetchMethod:e=>Fqt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function ag(e){let t=WY(e);return Uqt(U8n,t,()=>Fqt(t))}function Fqt(e){let r=Buffer.alloc(4096),n;try{n=Oqt(e,"r");let o=wqt(n,r,0,4096,0);return o===0?"utf8":o>=2&&r[0]===255&&r[1]===254?"utf16le":o>=3&&r[0]===239&&r[1]===187&&r[2]===191||r.slice(0,o).toString("utf8").length>0?"utf8":"ascii"}catch(o){return be(`Error detecting encoding for file ${e}: ${o}`),"utf8"}finally{n&&Dqt(n)}}var F8n=new Zde.default({fetchMethod:e=>Qqt(e),ttl:300*1e3,ttlAutopurge:!1,max:1e3});function GM(e){let t=WY(e);return Uqt(F8n,t,()=>Qqt(t))}function Qqt(e,t="utf8"){try{if(!Mqt(e).isFile())return"LF";let n=Buffer.alloc(4096),o=Oqt(e,"r"),i=wqt(o,n,0,4096,0);Dqt(o);let s=n.toString(t,0,i),a=0,c=0;for(let l=0;l<s.length;l++)s[l]===`
687
687
  `&&(l>0&&s[l-1]==="\r"?a++:c++);return a>c?"CRLF":"LF"}catch(r){return be(`Error detecting line endings for file ${e}: ${r}`),"LF"}}function gG(e){let t=Bqt(e)?e:WY(Pe(),e);return t.endsWith(" AM.png")?t.replace(" AM.png","\u202FAM.png"):t.endsWith(" PM.png")?t.replace(" PM.png","\u202FPM.png"):t}function h2e(e){return e?Bqt(e)?e:WY(Pe(),e):void 0}function Gqt(e){try{let t=h2e(e),r=t?B8n(Pe(),t):void 0;return{absolutePath:t,relativePath:r}}catch(t){return re("getAbsoluteAndRelativePaths error ",t),{absolutePath:null,relativePath:null}}}function epe(e){try{let t=k8n(e),r=vqt(e,Rqt(e));if(!w8n(t))return;let i=D8n(t).filter(s=>vqt(s,Rqt(s))===r&&P8n(t,s)!==e)[0];return i||void 0}catch(t){be(`Error finding similar file for ${e}: ${t}`);return}}function _2e(){let e=process.env.HAWA_CODE_COMPACT_LINE_PREFIX;return!(e==="0"||e==="false")}function bN({content:e,startLine:t}){if(!e)return"";let r=e.split(/\r?\n/);return _2e()?r.map((n,o)=>`${o+t} ${n}`).join(`
688
688
  `):r.map((n,o)=>{let i=String(o+t);return i.length>=6?`${i}\u2192${n}`:`${i.padStart(6," ")}\u2192${n}`}).join(`
689
- `)}function Hqt(e){try{let t=M8n(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}qe();function EN(){let e=Jn();e.hasCompletedProjectOnboarding||zi({...e,hasCompletedProjectOnboarding:!0})}function q8n(){let e=vr();Do({...e,lastReleaseNotesSeen:MACRO.VERSION})}function E2e({workspaceDir:e}){let r=!Jn().hasCompletedProjectOnboarding,o=vr().lastReleaseNotesSeen,i=[];(!o||(0,qqt.gt)(MACRO.VERSION,o))&&(i=Sde[MACRO.VERSION]||[]);let s=i.length>0;if(os.useEffect(()=>{s&&!r&&q8n()},[s,r]),!r&&!s)return null;let a=Q8n(G8n(e,Di)),c=Hqt(e),l=!a&&!c,u=sG.isEnabled&&!vr().shiftEnterKeyBindingInstalled,d=te();return os.createElement(v,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&os.createElement(os.Fragment,null,os.createElement(I,{color:d.secondaryText},"Tips for getting started:"),os.createElement(Wd,{children:[]},(()=>{let p=[];return c&&p.push(os.createElement(Wd.Item,{key:"workspace"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," to create a new app or clone a repository."))),l&&p.push(os.createElement(Wd.Item,{key:"claudemd"},os.createElement(I,{color:d.secondaryText},"Run ",os.createElement(I,{color:d.text},"/init")," to create a",Di," file with instructions for Hawa code."))),u&&p.push(os.createElement(Wd.Item,{key:"terminal"},os.createElement(I,{color:d.secondaryText},"Run ",os.createElement(I,{color:d.text},"/terminal-setup"),os.createElement(I,{bold:!1}," to set up terminal integration")))),p.push(os.createElement(Wd.Item,{key:"questions"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," questions about your codebase."))),p.push(os.createElement(Wd.Item,{key:"changes"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," to implement changes to your codebase."))),p})())),!r&&s&&os.createElement(v,{borderColor:te().secondaryBorder,flexDirection:"column",marginRight:1},os.createElement(v,{flexDirection:"column",gap:0},os.createElement(v,{marginBottom:1},os.createElement(I,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),os.createElement(v,{flexDirection:"column",marginLeft:1},i.map((p,f)=>os.createElement(I,{key:f,color:te().secondaryText},"\u2022 ",p))))),e===H8n()&&os.createElement(I,{color:te().warning},"Note: You have launched ",os.createElement(I,{bold:!0},rt)," in your home directory. For the best experience, launch it in a project directory instead."))}var hG=q(ae(),1);var AG=q(ae(),1);var jY=q(ae(),1);function S2e({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Es("Select");return jY.default.createElement(v,{...o.option({isFocused:e})},e&&jY.default.createElement(I,{...o.focusIndicator()},r?ar.triangleDownSmall:ar.pointer),jY.default.createElement(I,{...o.label({isFocused:e,isSelected:t})},n),t&&jY.default.createElement(I,{...o.selectedIndicator()},ar.tick))}var cg=q(ae(),1);import{isDeepStrictEqual as $8n}from"node:util";var KY=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let c="value"in s?s.value:T2e(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var Y8n=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},y2e=e=>e.flatMap(t=>{if("options"in t){let r=y2e(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),$qt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=y2e(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new KY(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},b2e=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=y2e(t),[a,c]=(0,cg.useReducer)(Y8n,{visibleOptionCount:e,defaultValue:r,options:t},$qt),[l,u]=(0,cg.useState)(s);s!==l&&!$8n(s,l)&&(c({type:"reset",state:$qt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,cg.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,cg.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,cg.useCallback)(()=>{c({type:"select-focused-option"})},[]),g=(0,cg.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,cg.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,cg.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,cg.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var C2e=({isDisabled:e=!1,state:t})=>{gt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var T2e=e=>`HEADER-${e.optionValues.join(",")}`;function V0({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=b2e({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});C2e({isDisabled:e,state:c});let{styles:l}=Es("Select");return AG.default.createElement(v,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:T2e(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),g="header"in u,h="label"in u?u.label:u.header,_=h;if(r&&h.includes(r)){let T=h.indexOf(r);_=AG.default.createElement(AG.default.Fragment,null,h.slice(0,T),AG.default.createElement(I,{...l.highlightedText()},r),h.slice(T+r.length))}return AG.default.createElement(S2e,{key:d,isFocused:p,isSelected:f,smallPointer:g},_)}))}function Yqt({onDone:e}){return gt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),hG.default.createElement(v,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:te().secondaryBorder},hG.default.createElement(v,{marginBottom:1,flexDirection:"column"},hG.default.createElement(I,{bold:!0},"You've spent $5 this session.")),hG.default.createElement(v,null,hG.default.createElement(V0,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var xn=q(ae(),1),rr=q(ae(),1);var jf=q(ae(),1);qe();fr();Hy();var W8n="2.4.29",qy={VERSION:W8n,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var R2e=46,Wqt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function tpe({isDefaultModel:e=!1}){let t=Math.max(R2e,Pe().length+12),r=te(),n=Wqt[Math.floor(Math.random()*Wqt.length)];return jf.createElement(v,{flexDirection:"column"},jf.createElement(v,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},jf.createElement(I,null,jf.createElement(I,null,n)," Welcome to"," ",jf.createElement(I,{bold:!0},rt),jf.createElement(I,{color:r.secondaryText}," v",qy.VERSION)),jf.createElement(jf.Fragment,null,jf.createElement(v,{paddingLeft:2,flexDirection:"column",gap:1},jf.createElement(I,{color:r.secondaryText,italic:!0},"/help for help"),jf.createElement(I,{color:r.secondaryText},"cwd: ",Pe()),jf.createElement(I,{color:r.secondaryText},"model: ",Mo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),jf.createElement(I,{color:r.secondaryText},"small fast model: ",Mo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var UT=q(ae(),1);De();var _Z=q(ae(),1);import{randomUUID as BT}from"crypto";Ks();De();nr();fr();De();qe();import{existsSync as j0,readdirSync as bjn,statSync as Cjn}from"fs";import{join as xN,relative as Ijn}from"path";import{homedir as Q8t}from"os";import{platform as vjn}from"process";import{readFile as NN}from"fs/promises";fr();k_();br();import{join as eYn,sep as tYn}from"path";function Kf(){if(!lg())return!1;try{let e=it();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ug(){return(eYn(Pe(),".hcode","team-memory")+tYn).normalize("NFC")}function P_(e){let t=e.normalize("NFC"),r=ug();return t.startsWith(r)}var G8t=q(iV(),1);ci();var Y2e=(e,t,r)=>{let n=e instanceof RegExp?g8t(e,r):e,o=t instanceof RegExp?g8t(t,r):t,i=n!==null&&o!=null&&fWn(n,o,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+n.length,i[1]),post:r.slice(i[1]+o.length)}},g8t=(e,t)=>{let r=t.match(e);return r?r[0]:null},fWn=(e,t,r)=>{let n,o,i,s,a,c=r.indexOf(e),l=r.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(n=[],i=r.length;u>=0&&!a;){if(u===c)n.push(u),c=r.indexOf(e,u+1);else if(n.length===1){let d=n.pop();d!==void 0&&(a=[d,l])}else o=n.pop(),o!==void 0&&o<i&&(i=o,s=l),l=r.indexOf(t,u+1);u=c<l&&c>=0?c:l}n.length&&s!==void 0&&(a=[i,s])}return a};var A8t="\0SLASH"+Math.random()+"\0",h8t="\0OPEN"+Math.random()+"\0",W2e="\0CLOSE"+Math.random()+"\0",_8t="\0COMMA"+Math.random()+"\0",E8t="\0PERIOD"+Math.random()+"\0",mWn=new RegExp(A8t,"g"),gWn=new RegExp(h8t,"g"),AWn=new RegExp(W2e,"g"),hWn=new RegExp(_8t,"g"),_Wn=new RegExp(E8t,"g"),EWn=/\\\\/g,SWn=/\\{/g,TWn=/\\}/g,yWn=/\\,/g,bWn=/\\\./g,CWn=1e5,IWn=4e6;function V2e(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function vWn(e){return e.replace(EWn,A8t).replace(SWn,h8t).replace(TWn,W2e).replace(yWn,_8t).replace(bWn,E8t)}function RWn(e){return e.replace(mWn,"\\").replace(gWn,"{").replace(AWn,"}").replace(hWn,",").replace(_Wn,".")}function S8t(e){if(!e)return[""];let t=[],r=Y2e("{","}",e);if(!r)return e.split(",");let{pre:n,body:o,post:i}=r,s=n.split(",");s[s.length-1]+="{"+o+"}";let a=S8t(i);return i.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),t.push.apply(t,s),t}function T8t(e,t={}){if(!e)return[];let{max:r=CWn,maxLength:n=IWn}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),z2e(vWn(e),r,n,!0).map(RWn)}function xWn(e){return"{"+e+"}"}function NWn(e){return/^-?0\d/.test(e)}function OWn(e,t){return e<=t}function wWn(e,t){return e>=t}function sV(e,t,r,n,o,i){let s=[],a=0;for(let c=0;c<e.length;c++)for(let l=0;l<r.length;l++){if(s.length>=n)return s;let u=e[c]+t+r[l];if(!(i&&!u)){if(a+u.length>o)return s;s.push(u),a+=u.length}}return s}function DWn(e,t,r,n){let o=e.split(/\.\./),i=[];if(o[0]===void 0||o[1]===void 0)return i;let s=V2e(o[0]),a=V2e(o[1]),c=Math.max(o[0].length,o[1].length),l=o.length===3&&o[2]!==void 0?Math.max(Math.abs(V2e(o[2])),1):1,u=OWn;a<s&&(l*=-1,u=wWn);let p=o.some(NWn),f=0;for(let g=s;u(g,a)&&i.length<r;g+=l){let h;if(t)h=String.fromCharCode(g),h==="\\"&&(h="");else if(h=String(g),p){let _=c-h.length;if(_>0){let T=new Array(_+1).join("0");g<0?h="-"+T+h.slice(1):h=T+h}}if(f+h.length>n)break;i.push(h),f+=h.length}return i}function z2e(e,t,r,n){let o=[""],i=!1,s=!0;for(;;){let a=Y2e("{","}",e);if(!a)return sV(o,e,[""],t,r,i);let c=a.pre;if(/\$$/.test(c)){if(o=sV(o,c+"{"+a.body+"}",[""],t,r,i&&!a.post.length),s=!1,!a.post.length)break;e=a.post;continue}let l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body),d=l||u,p=a.body.indexOf(",")>=0;if(!d&&!p){if(a.post.match(/,(?!,).*\}/)){e=a.pre+"{"+a.body+W2e+a.post,n=!0;continue}return sV(o,c+"{"+a.body+"}"+a.post,[""],t,r,i)}s&&(i=n&&!d,s=!1);let f;if(d)f=DWn(a.body,u,t,r);else{let g=S8t(a.body);if(g.length===1&&g[0]!==void 0&&(g=z2e(g[0],t,r,!1).map(xWn),g.length===1)){if(o=sV(o,c+g[0],[""],t,r,i&&!a.post.length),!a.post.length)break;e=a.post;continue}let h=i&&!a.post.length&&!c;for(let T=0;h&&T<o.length;T++)o[T]&&(h=!1);f=[];let _=0;e:for(let T=0;T<g.length;T++){let y=z2e(g[T],t,r,!1);for(let C=0;C<y.length;C++){let R=y[C];if(!(h&&!R)){if(f.length>=t||_+R.length>r)break e;f.push(R),_+=R.length}}}}if(o=sV(o,c,f,t,r,i&&!a.post.length),!a.post.length)break;e=a.post}return o}var aV=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var MWn={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},cV=e=>e.replace(/[[\]\\-]/g,"\\$&"),BWn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),y8t=e=>e.join(""),b8t=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let n=[],o=[],i=r+1,s=!1,a=!1,c=!1,l=!1,u=r,d="";e:for(;i<e.length;){let h=e.charAt(i);if((h==="!"||h==="^")&&i===r+1){l=!0,i++;continue}if(h==="]"&&s&&!c){u=i+1;break}if(s=!0,h==="\\"&&!c){c=!0,i++;continue}if(h==="["&&!c){for(let[_,[T,y,C]]of Object.entries(MWn))if(e.startsWith(_,i)){if(d)return["$.",!1,e.length-r,!0];i+=_.length,C?o.push(T):n.push(T),a=a||y;continue e}}if(c=!1,d){h>d?n.push(cV(d)+"-"+cV(h)):h===d&&n.push(cV(h)),d="",i++;continue}if(e.startsWith("-]",i+1)){n.push(cV(h+"-")),i+=2;continue}if(e.startsWith("-",i+1)){d=h,i+=2;continue}n.push(cV(h)),i++}if(u<i)return["",!1,0,!1];if(!n.length&&!o.length)return["$.",!1,e.length-r,!0];if(o.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!l){let h=n[0].length===2?n[0].slice(-1):n[0];return[BWn(h),!1,u-r,!1]}let p="["+(l?"^":"")+y8t(n)+"]",f="["+(l?"":"^")+y8t(o)+"]";return[n.length&&o.length?"("+p+"|"+f+")":n.length?p:f,a,u-r,!0]};var RN=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!0}={})=>r?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var pg,kWn=new Set(["!","?","+","*","@"]),j2e=e=>kWn.has(e),C8t=e=>j2e(e.type),PWn=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),LWn=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),UWn=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),I8t=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),FWn="(?!(?:^|/)\\.\\.?(?:$|/))",fpe="(?!\\.)",QWn=new Set(["[","."]),GWn=new Set(["..","."]),HWn=new Set("().*{}+?[]^$\\!"),qWn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),K2e="[^/]",v8t=K2e+"*?",R8t=K2e+"+?",$Wn=0,jM=class{type;#e;#t;#n=!1;#r=[];#o;#i;#c;#a=!1;#s;#d;#f=!1;id=++$Wn;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(t,r,n={}){this.type=t,t&&(this.#t=!0),this.#o=r,this.#e=this.#o?this.#o.#e:this,this.#s=this.#e===this?n:this.#e.#s,this.#c=this.#e===this?[]:this.#e.#c,t==="!"&&!this.#e.#a&&this.#c.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#p(){if(this!==this.#e)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#c.pop();){if(t.type!=="!")continue;let r=t,n=r.#o;for(;n;){for(let o=r.#i+1;!n.type&&o<n.#r.length;o++)for(let i of t.#r){if(typeof i=="string")throw new Error("string part in extglob AST??");i.copyIn(n.#r[o])}r=n,n=r.#o}}return this}push(...t){for(let r of t)if(r!==""){if(typeof r!="string"&&!(r instanceof pg&&r.#o===this))throw new Error("invalid part: "+r);this.#r.push(r)}}toJSON(){let t=this.type===null?this.#r.slice().map(r=>typeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#a&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#i===0)return!0;let t=this.#o;for(let r=0;r<this.#i;r++){let n=t.#r[r];if(!(n instanceof pg&&n.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#i===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let r=new pg(this.type,t);for(let n of this.#r)r.copyIn(n);return r}static#l(t,r,n,o,i){let s=o.maxExtglobRecursion??2,a=!1,c=!1,l=-1,u=!1;if(r.type===null){let h=n,_="";for(;h<t.length;){let T=t.charAt(h++);if(a||T==="\\"){a=!a,_+=T;continue}if(c){h===l+1?(T==="^"||T==="!")&&(u=!0):T==="]"&&!(h===l+2&&u)&&(c=!1),_+=T;continue}else if(T==="["){c=!0,l=h,u=!1,_+=T;continue}if(!o.noext&&j2e(T)&&t.charAt(h)==="("&&i<=s){r.push(_),_="";let C=new pg(T,r);h=pg.#l(t,C,h,o,i+1),r.push(C);continue}_+=T}return r.push(_),h}let d=n+1,p=new pg(null,r),f=[],g="";for(;d<t.length;){let h=t.charAt(d++);if(a||h==="\\"){a=!a,g+=h;continue}if(c){d===l+1?(h==="^"||h==="!")&&(u=!0):h==="]"&&!(d===l+2&&u)&&(c=!1),g+=h;continue}else if(h==="["){c=!0,l=d,u=!1,g+=h;continue}if(!o.noext&&j2e(h)&&t.charAt(d)==="("&&(i<=s||r&&r.#_(h))){let T=r&&r.#_(h)?0:1;p.push(g),g="";let y=new pg(h,p);p.push(y),d=pg.#l(t,y,d,o,i+T);continue}if(h==="|"){p.push(g),g="",f.push(p),p=new pg(null,r);continue}if(h===")")return g===""&&r.#r.length===0&&(r.#f=!0),p.push(g),g="",r.push(...f,p),d;g+=h}return r.type=null,r.#t=void 0,r.#r=[t.substring(n-1)],d}#m(t){return this.#A(t,LWn)}#A(t,r=PWn){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null)return!1;let n=t.#r[0];return!n||typeof n!="object"||n.type===null?!1:this.#_(n.type,r)}#_(t,r=UWn){return!!r.get(this.type)?.includes(t)}#h(t,r){let n=t.#r[0],o=new pg(null,n,this.options);o.#r.push(""),n.push(o),this.#v(t,r)}#v(t,r){let n=t.#r[0];this.#r.splice(r,1,...n.#r);for(let o of n.#r)typeof o=="object"&&(o.#o=this);this.#d=void 0}#S(t){return!!I8t.get(this.type)?.has(t)}#b(t){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let r=t.#r[0];return!r||typeof r!="object"||r.type===null?!1:this.#S(r.type)}#C(t){let r=I8t.get(this.type),n=t.#r[0],o=r?.get(n.type);if(!o)return!1;this.#r=n.#r;for(let i of this.#r)typeof i=="object"&&(i.#o=this);this.type=o,this.#d=void 0,this.#f=!1}static fromGlob(t,r={}){let n=new pg(null,void 0,r);return pg.#l(t,n,0,r,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[r,n,o,i]=this.toRegExpSource();if(!(o||this.#t||this.#s.nocase&&!this.#s.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;let a=(this.#s.nocase?"i":"")+(i?"u":"");return Object.assign(new RegExp(`^${r}$`,a),{_src:r,_glob:t})}get options(){return this.#s}toRegExpSource(t){let r=t??!!this.#s.dot;if(this.#e===this&&(this.#E(),this.#p()),!C8t(this)){let c=this.isStart()&&this.isEnd()&&!this.#r.some(f=>typeof f!="string"),l=this.#r.map(f=>{let[g,h,_,T]=typeof f=="string"?pg.#y(f,this.#t,c):f.toRegExpSource(t);return this.#t=this.#t||_,this.#n=this.#n||T,g}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&GWn.has(this.#r[0]))){let g=QWn,h=r&&g.has(l.charAt(0))||l.startsWith("\\.")&&g.has(l.charAt(2))||l.startsWith("\\.\\.")&&g.has(l.charAt(4)),_=!r&&!t&&g.has(l.charAt(0));u=h?FWn:_?fpe:""}let d="";return this.isEnd()&&this.#e.#a&&this.#o?.type==="!"&&(d="(?:$|\\/)"),[u+l+d,RN(l),this.#t=!!this.#t,this.#n]}let n=this.type==="*"||this.type==="+",o=this.type==="!"?"(?:(?!(?:":"(?:",i=this.#T(r);if(this.isStart()&&this.isEnd()&&!i&&this.type!=="!"){let c=this.toString(),l=this;return l.#r=[c],l.type=null,l.#t=void 0,[c,RN(this.toString()),!1,!1]}let s=!n||t||r||!fpe?"":this.#T(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let a="";if(this.type==="!"&&this.#f)a=(this.isStart()&&!r?fpe:"")+R8t;else{let c=this.type==="!"?"))"+(this.isStart()&&!r&&!t?fpe:"")+v8t+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&s?")":this.type==="*"&&s?")?":`)${this.type}`;a=o+i+c}return[a,RN(i),this.#t=!!this.#t,this.#n]}#E(){if(C8t(this)){let t=0,r=!1;do{r=!0;for(let n=0;n<this.#r.length;n++){let o=this.#r[n];typeof o=="object"&&(o.#E(),this.#A(o)?(r=!1,this.#v(o,n)):this.#m(o)?(r=!1,this.#h(o,n)):this.#b(o)&&(r=!1,this.#C(o)))}}while(!r&&++t<10)}else for(let t of this.#r)typeof t=="object"&&t.#E();this.#d=void 0}#T(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[n,o,i,s]=r.toRegExpSource(t);return this.#n=this.#n||s,n}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#y(t,r,n=!1){let o=!1,i="",s=!1,a=!1;for(let c=0;c<t.length;c++){let l=t.charAt(c);if(o){o=!1,i+=(HWn.has(l)?"\\":"")+l;continue}if(l==="*"){if(a)continue;a=!0,i+=n&&/^[*]+$/.test(t)?R8t:v8t,r=!0;continue}else a=!1;if(l==="\\"){c===t.length-1?i+="\\\\":o=!0;continue}if(l==="["){let[u,d,p,f]=b8t(t,c);if(p){i+=u,s=s||d,c+=p-1,r=r||f;continue}}if(l==="?"){i+=K2e,r=!0;continue}i+=qWn(l)}return[i,RN(t),!!r,s]}};pg=jM;var J2e=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!1}={})=>r?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var jd=(e,t,r={})=>(aV(t),!r.nocomment&&t.charAt(0)==="#"?!1:new xG(t,r).match(e)),YWn=/^\*+([^+@!?*[(]*)$/,VWn=e=>t=>!t.startsWith(".")&&t.endsWith(e),zWn=e=>t=>t.endsWith(e),WWn=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),jWn=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),KWn=/^\*+\.\*+$/,JWn=e=>!e.startsWith(".")&&e.includes("."),ZWn=e=>e!=="."&&e!==".."&&e.includes("."),XWn=/^\.\*+$/,ejn=e=>e!=="."&&e!==".."&&e.startsWith("."),tjn=/^\*+$/,rjn=e=>e.length!==0&&!e.startsWith("."),njn=e=>e.length!==0&&e!=="."&&e!=="..",ojn=/^\?+([^+@!?*[(]*)?$/,ijn=([e,t=""])=>{let r=O8t([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},sjn=([e,t=""])=>{let r=w8t([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},ajn=([e,t=""])=>{let r=w8t([e]);return t?n=>r(n)&&n.endsWith(t):r},cjn=([e,t=""])=>{let r=O8t([e]);return t?n=>r(n)&&n.endsWith(t):r},O8t=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},w8t=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},D8t=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",x8t={win32:{sep:"\\"},posix:{sep:"/"}},ljn=D8t==="win32"?x8t.win32.sep:x8t.posix.sep;jd.sep=ljn;var tf=Symbol("globstar **");jd.GLOBSTAR=tf;var ujn="[^/]",djn=ujn+"*?",pjn="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",fjn="(?:(?!(?:\\/|^)\\.).)*?",mjn=(e,t={})=>r=>jd(r,e,t);jd.filter=mjn;var L_=(e,t={})=>Object.assign({},e,t),gjn=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return jd;let t=jd;return Object.assign((n,o,i={})=>t(n,o,L_(e,i)),{Minimatch:class extends t.Minimatch{constructor(o,i={}){super(o,L_(e,i))}static defaults(o){return t.defaults(L_(e,o)).Minimatch}},AST:class extends t.AST{constructor(o,i,s={}){super(o,i,L_(e,s))}static fromGlob(o,i={}){return t.AST.fromGlob(o,L_(e,i))}},unescape:(n,o={})=>t.unescape(n,L_(e,o)),escape:(n,o={})=>t.escape(n,L_(e,o)),filter:(n,o={})=>t.filter(n,L_(e,o)),defaults:n=>t.defaults(L_(e,n)),makeRe:(n,o={})=>t.makeRe(n,L_(e,o)),braceExpand:(n,o={})=>t.braceExpand(n,L_(e,o)),match:(n,o,i={})=>t.match(n,o,L_(e,i)),sep:t.sep,GLOBSTAR:tf})};jd.defaults=gjn;var M8t=(e,t={})=>(aV(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:T8t(e,{max:t.braceExpandMax}));jd.braceExpand=M8t;var Ajn=(e,t={})=>new xG(e,t).makeRe();jd.makeRe=Ajn;var hjn=(e,t,r={})=>{let n=new xG(t,r);return e=e.filter(o=>n.match(o)),n.options.nonull&&!e.length&&e.push(t),e};jd.match=hjn;var N8t=/[?*]|[+@!]\(.*?\)|\[|\]/,_jn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),xG=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,r={}){aV(t),r=r||{},this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion??200,this.pattern=t,this.platform=r.platform||D8t,this.isWindows=this.platform==="win32";let n="allowWindowsEscape";this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r[n]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(i=>this.slashSplit(i));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let o=this.globParts.map((i,s,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let c=i[0]===""&&i[1]===""&&(i[2]==="?"||!N8t.test(i[2]))&&!N8t.test(i[3]),l=/^[a-z]:/i.test(i[0]);if(c)return[...i.slice(0,4),...i.slice(4).map(u=>this.parse(u))];if(l)return[i[0],...i.slice(1).map(u=>this.parse(u))]}return i.map(c=>this.parse(c))});if(this.debug(this.pattern,o),this.set=o.filter(i=>i.indexOf(!1)===-1),this.isWindows)for(let i=0;i<this.set.length;i++){let s=this.set[i];s[0]===""&&s[1]===""&&this.globParts[i][2]==="?"&&typeof s[3]=="string"&&/^[a-z]:$/i.test(s[3])&&(s[2]="?")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let n of t)for(let o=0;o<n.length;o++)n[o]==="**"&&(n[o]="*");let{optimizationLevel:r=1}=this.options;return r>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let n=-1;for(;(n=r.indexOf("**",n+1))!==-1;){let o=n;for(;r[o+1]==="**";)o++;o!==n&&r.splice(n,o-n)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((n,o)=>{let i=n[n.length-1];return o==="**"&&i==="**"?n:o===".."&&i&&i!==".."&&i!=="."&&i!=="**"?(n.pop(),n):(n.push(o),n)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let o=1;o<t.length-1;o++){let i=t[o];o===1&&i===""&&t[0]===""||(i==="."||i==="")&&(r=!0,t.splice(o,1),o--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(r=!0,t.pop())}let n=0;for(;(n=t.indexOf("..",n+1))!==-1;){let o=t[n-1];o&&o!=="."&&o!==".."&&o!=="**"&&!(this.isWindows&&/^[a-z]:$/i.test(o))&&(r=!0,t.splice(n-1,2),n-=2)}}while(r);return t.length===0?[""]:t}firstPhasePreProcess(t){let r=!1;do{r=!1;for(let n of t){let o=-1;for(;(o=n.indexOf("**",o+1))!==-1;){let s=o;for(;n[s+1]==="**";)s++;s>o&&n.splice(o+1,s-o);let a=n[o+1],c=n[o+2],l=n[o+3];if(a!==".."||!c||c==="."||c===".."||!l||l==="."||l==="..")continue;r=!0,n.splice(o,1);let u=n.slice(0);u[o]="**",t.push(u),o--}if(!this.preserveMultipleSlashes){for(let s=1;s<n.length-1;s++){let a=n[s];s===1&&a===""&&n[0]===""||(a==="."||a==="")&&(r=!0,n.splice(s,1),s--)}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(r=!0,n.pop())}let i=0;for(;(i=n.indexOf("..",i+1))!==-1;){let s=n[i-1];if(s&&s!=="."&&s!==".."&&s!=="**"){r=!0;let c=i===1&&n[i+1]==="**"?["."]:[];n.splice(i-1,2,...c),n.length===0&&n.push(""),i-=2}}}}while(r);return t}secondPhasePreProcess(t){for(let r=0;r<t.length-1;r++)for(let n=r+1;n<t.length;n++){let o=this.partsMatch(t[r],t[n],!this.preserveMultipleSlashes);if(o){t[r]=[],t[n]=o;break}}return t.filter(r=>r.length)}partsMatch(t,r,n=!1){let o=0,i=0,s=[],a="";for(;o<t.length&&i<r.length;)if(t[o]===r[i])s.push(a==="b"?r[i]:t[o]),o++,i++;else if(n&&t[o]==="**"&&r[i]===t[o+1])s.push(t[o]),o++;else if(n&&r[i]==="**"&&t[o]===r[i+1])s.push(r[i]),i++;else if(t[o]==="*"&&r[i]&&(this.options.dot||!r[i].startsWith("."))&&r[i]!=="**"){if(a==="b")return!1;a="a",s.push(t[o]),o++,i++}else if(r[i]==="*"&&t[o]&&(this.options.dot||!t[o].startsWith("."))&&t[o]!=="**"){if(a==="a")return!1;a="b",s.push(r[i]),o++,i++}else return!1;return t.length===r.length&&s}parseNegate(){if(this.nonegate)return;let t=this.pattern,r=!1,n=0;for(let o=0;o<t.length&&t.charAt(o)==="!";o++)r=!r,n++;n&&(this.pattern=t.slice(n)),this.negate=r}matchOne(t,r,n=!1){let o=0,i=0;if(this.isWindows){let a=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),c=!a&&t[0]===""&&t[1]===""&&t[2]==="?"&&/^[a-z]:$/i.test(t[3]),l=typeof r[0]=="string"&&/^[a-z]:$/i.test(r[0]),u=!l&&r[0]===""&&r[1]===""&&r[2]==="?"&&typeof r[3]=="string"&&/^[a-z]:$/i.test(r[3]),d=c?3:a?0:void 0,p=u?3:l?0:void 0;if(typeof d=="number"&&typeof p=="number"){let[f,g]=[t[d],r[p]];f.toLowerCase()===g.toLowerCase()&&(r[p]=f,i=p,o=d)}}let{optimizationLevel:s=1}=this.options;return s>=2&&(t=this.levelTwoFileOptimize(t)),r.includes(tf)?this.#e(t,r,n,o,i):this.#n(t,r,n,o,i)}#e(t,r,n,o,i){let s=r.indexOf(tf,i),a=r.lastIndexOf(tf),[c,l,u]=n?[r.slice(i,s),r.slice(s+1),[]]:[r.slice(i,s),r.slice(s+1,a),r.slice(a+1)];if(c.length){let y=t.slice(o,o+c.length);if(!this.#n(y,c,n,0,0))return!1;o+=c.length,i+=c.length}let d=0;if(u.length){if(u.length+o>t.length)return!1;let y=t.length-u.length;if(this.#n(t,u,n,y,0))d=u.length;else{if(t[t.length-1]!==""||o+u.length===t.length||(y--,!this.#n(t,u,n,y,0)))return!1;d=u.length+1}}if(!l.length){let y=!!d;for(let C=o;C<t.length-d;C++){let R=String(t[C]);if(y=!0,R==="."||R===".."||!this.options.dot&&R.startsWith("."))return!1}return n||y}let p=[[[],0]],f=p[0],g=0,h=[0];for(let y of l)y===tf?(h.push(g),f=[[],0],p.push(f)):(f[0].push(y),g++);let _=p.length-1,T=t.length-d;for(let y of p)y[1]=T-(h[_--]+y[0].length);return!!this.#t(t,p,o,0,n,0,!!d)}#t(t,r,n,o,i,s,a){let c=r[o];if(!c){for(let d=n;d<t.length;d++){a=!0;let p=t[d];if(p==="."||p===".."||!this.options.dot&&p.startsWith("."))return!1}return a}let[l,u]=c;for(;n<=u;){if(this.#n(t.slice(0,n+l.length),l,i,n,0)&&s<this.maxGlobstarRecursion){let f=this.#t(t,r,n+l.length,o+1,i,s+1,a);if(f!==!1)return f}let p=t[n];if(p==="."||p===".."||!this.options.dot&&p.startsWith("."))return!1;n++}return i||null}#n(t,r,n,o,i){let s,a,c,l;for(s=o,a=i,l=t.length,c=r.length;s<l&&a<c;s++,a++){this.debug("matchOne loop");let u=r[a],d=t[s];if(this.debug(r,u,d),u===!1||u===tf)return!1;let p;if(typeof u=="string"?(p=d===u,this.debug("string match",u,d,p)):(p=u.test(d),this.debug("pattern match",u,d,p)),!p)return!1}if(s===l&&a===c)return!0;if(s===l)return n;if(a===c)return s===l-1&&t[s]==="";throw new Error("wtf?")}braceExpand(){return M8t(this.pattern,this.options)}parse(t){aV(t);let r=this.options;if(t==="**")return tf;if(t==="")return"";let n,o=null;(n=t.match(tjn))?o=r.dot?njn:rjn:(n=t.match(YWn))?o=(r.nocase?r.dot?jWn:WWn:r.dot?zWn:VWn)(n[1]):(n=t.match(ojn))?o=(r.nocase?r.dot?sjn:ijn:r.dot?ajn:cjn)(n):(n=t.match(KWn))?o=r.dot?ZWn:JWn:(n=t.match(XWn))&&(o=ejn);let i=jM.fromGlob(t,this.options).toMMPattern();return o&&typeof i=="object"&&Reflect.defineProperty(i,"test",{value:o}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,n=r.noglobstar?djn:r.dot?pjn:fjn,o=new Set(r.nocase?["i"]:[]),i=t.map(c=>{let l=c.map(d=>{if(d instanceof RegExp)for(let p of d.flags.split(""))o.add(p);return typeof d=="string"?_jn(d):d===tf?tf:d._src});l.forEach((d,p)=>{let f=l[p+1],g=l[p-1];d!==tf||g===tf||(g===void 0?f!==void 0&&f!==tf?l[p+1]="(?:\\/|"+n+"\\/)?"+f:l[p]=n:f===void 0?l[p-1]=g+"(?:\\/|\\/"+n+")?":f!==tf&&(l[p-1]=g+"(?:\\/|\\/"+n+"\\/)"+f,l[p+1]=tf))});let u=l.filter(d=>d!==tf);if(this.partial&&u.length>=1){let d=[];for(let p=1;p<=u.length;p++)d.push(u.slice(0,p).join("/"));return"(?:"+d.join("|")+")"}return u.join("/")}).join("|"),[s,a]=t.length>1?["(?:",")"]:["",""];i="^"+s+i+a+"$",this.partial&&(i="^(?:\\/|"+s+i.slice(1,-1)+a+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let n=this.options;this.isWindows&&(t=t.split("\\").join("/"));let o=this.slashSplit(t);this.debug(this.pattern,"split",o);let i=this.set;this.debug(this.pattern,"set",i);let s=o[o.length-1];if(!s)for(let a=o.length-2;!s&&a>=0;a--)s=o[a];for(let a of i){let c=o;if(n.matchBase&&a.length===1&&(c=[s]),this.matchOne(c,a,r))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(t){return jd.defaults(t).Minimatch}};jd.AST=jM;jd.Minimatch=xG;jd.escape=J2e;jd.unescape=RN;var P8t=q(iV(),1);fr();qe();De();qf();import{readFile as B8t}from"fs/promises";import{existsSync as Z2e,readdirSync as Ejn,statSync as Sjn}from"fs";import{join as X2e,relative as L8t}from"path";import{homedir as Tjn}from"os";function k8t(e){try{let t=(0,P8t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return be(t),{paths:[],content:e.trim()}}}function yjn(e,t){return t.length===0?!0:t.some(r=>{try{return jd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function eUe(e){let t=[];try{if(!Z2e(e))return t;let r=Ejn(e);for(let n of r){let o=X2e(e,n),i=Sjn(o);i.isDirectory()?t.push(...eUe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function U8t(){let e=[];try{let t=X2e(Tjn(),Kn,"rules");if(Z2e(t)){let r=eUe(t);for(let n of r)try{let o=await B8t(n,"utf-8"),{paths:i,content:s}=k8t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=X2e(Pe(),Kn,"rules");if(Z2e(t)){let r=eUe(t);for(let n of r)try{let o=await B8t(n,"utf-8"),{paths:i,content:s}=k8t(o);i.length>0&&e.push({filePath:L8t(Pe(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function F8t(e,t){e=Qle(e);let r=Qle(Pe()),n=e.startsWith(r)?L8t(r,e):e;return t.filter(o=>yjn(n,o.paths))}var Rjn=`# hawaCodeMd
689
+ `)}function Hqt(e){try{let t=M8n(e),r=t.readSync();return t.closeSync(),r===null}catch(t){return be(`Error checking directory: ${t}`),!1}}qe();function EN(){let e=Jn();e.hasCompletedProjectOnboarding||zi({...e,hasCompletedProjectOnboarding:!0})}function q8n(){let e=vr();Do({...e,lastReleaseNotesSeen:MACRO.VERSION})}function E2e({workspaceDir:e}){let r=!Jn().hasCompletedProjectOnboarding,o=vr().lastReleaseNotesSeen,i=[];(!o||(0,qqt.gt)(MACRO.VERSION,o))&&(i=Sde[MACRO.VERSION]||[]);let s=i.length>0;if(os.useEffect(()=>{s&&!r&&q8n()},[s,r]),!r&&!s)return null;let a=Q8n(G8n(e,Di)),c=Hqt(e),l=!a&&!c,u=sG.isEnabled&&!vr().shiftEnterKeyBindingInstalled,d=te();return os.createElement(v,{flexDirection:"column",gap:1,padding:1,paddingBottom:0},r&&os.createElement(os.Fragment,null,os.createElement(I,{color:d.secondaryText},"Tips for getting started:"),os.createElement(Wd,{children:[]},(()=>{let p=[];return c&&p.push(os.createElement(Wd.Item,{key:"workspace"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," to create a new app or clone a repository."))),l&&p.push(os.createElement(Wd.Item,{key:"claudemd"},os.createElement(I,{color:d.secondaryText},"Run ",os.createElement(I,{color:d.text},"/init")," to create a",Di," file with instructions for Hawa code."))),u&&p.push(os.createElement(Wd.Item,{key:"terminal"},os.createElement(I,{color:d.secondaryText},"Run ",os.createElement(I,{color:d.text},"/terminal-setup"),os.createElement(I,{bold:!1}," to set up terminal integration")))),p.push(os.createElement(Wd.Item,{key:"questions"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," questions about your codebase."))),p.push(os.createElement(Wd.Item,{key:"changes"},os.createElement(I,{color:d.secondaryText},"Ask ",rt," to implement changes to your codebase."))),p})())),!r&&s&&os.createElement(v,{borderColor:te().secondaryBorder,flexDirection:"column",marginRight:1},os.createElement(v,{flexDirection:"column",gap:0},os.createElement(v,{marginBottom:1},os.createElement(I,null,"\u{1F195} What's new in v",MACRO.VERSION,":")),os.createElement(v,{flexDirection:"column",marginLeft:1},i.map((p,f)=>os.createElement(I,{key:f,color:te().secondaryText},"\u2022 ",p))))),e===H8n()&&os.createElement(I,{color:te().warning},"Note: You have launched ",os.createElement(I,{bold:!0},rt)," in your home directory. For the best experience, launch it in a project directory instead."))}var hG=q(ae(),1);var AG=q(ae(),1);var jY=q(ae(),1);function S2e({isFocused:e,isSelected:t,smallPointer:r,children:n}){let{styles:o}=Es("Select");return jY.default.createElement(v,{...o.option({isFocused:e})},e&&jY.default.createElement(I,{...o.focusIndicator()},r?ar.triangleDownSmall:ar.pointer),jY.default.createElement(I,{...o.label({isFocused:e,isSelected:t})},n),t&&jY.default.createElement(I,{...o.selectedIndicator()},ar.tick))}var cg=q(ae(),1);import{isDeepStrictEqual as $8n}from"node:util";var KY=class extends Map{first;constructor(t){let r=[],n,o,i=0;for(let s of t){let a={...s,previous:o,next:void 0,index:i};o&&(o.next=a),n||=a;let c="value"in s?s.value:T2e(s);r.push([c,a]),i++,o=a}super(r),this.first=n}};var Y8n=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;for(;n&&!("value"in n);)n=n.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let i=Math.min(e.optionMap.size,e.visibleToIndex+1),s=i-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:i}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;for(;n&&!("value"in n);)n=n.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let i=Math.max(0,e.visibleFromIndex-1),s=i+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state;case"set-focus":return{...e,focusedValue:t.value}}},y2e=e=>e.flatMap(t=>{if("options"in t){let r=y2e(t.options),n=r.flatMap(i=>"value"in i?i.value:[]);return[...t.header!==void 0?[{header:t.header,optionValues:n}]:[],...r]}return t}),$qt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=y2e(r),o=typeof e=="number"?Math.min(e,n.length):n.length,i=new KY(n),s=i.first,a=s&&"value"in s?s.value:void 0;return{optionMap:i,visibleOptionCount:o,focusedValue:a,visibleFromIndex:0,visibleToIndex:o,previousValue:t,value:t}},b2e=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n,onFocus:o,focusValue:i})=>{let s=y2e(t),[a,c]=(0,cg.useReducer)(Y8n,{visibleOptionCount:e,defaultValue:r,options:t},$qt),[l,u]=(0,cg.useState)(s);s!==l&&!$8n(s,l)&&(c({type:"reset",state:$qt({visibleOptionCount:e,defaultValue:r,options:t})}),u(s));let d=(0,cg.useCallback)(()=>{c({type:"focus-next-option"})},[]),p=(0,cg.useCallback)(()=>{c({type:"focus-previous-option"})},[]),f=(0,cg.useCallback)(()=>{c({type:"select-focused-option"})},[]),g=(0,cg.useMemo)(()=>s.map((h,_)=>({...h,index:_})).slice(a.visibleFromIndex,a.visibleToIndex),[s,a.visibleFromIndex,a.visibleToIndex]);return(0,cg.useEffect)(()=>{a.value&&a.previousValue!==a.value&&n?.(a.value)},[a.previousValue,a.value,t,n]),(0,cg.useEffect)(()=>{a.focusedValue&&o?.(a.focusedValue)},[a.focusedValue,o]),(0,cg.useEffect)(()=>{i&&c({type:"set-focus",value:i})},[i]),{focusedValue:a.focusedValue,visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,value:a.value,visibleOptions:g,focusNextOption:d,focusPreviousOption:p,selectFocusedOption:f}};var C2e=({isDisabled:e=!1,state:t})=>{gt((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};var T2e=e=>`HEADER-${e.optionValues.join(",")}`;function V0({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a}){let c=b2e({visibleOptionCount:t,options:n,defaultValue:o,onChange:i,onFocus:s,focusValue:a});C2e({isDisabled:e,state:c});let{styles:l}=Es("Select");return AG.default.createElement(v,{...l.container()},c.visibleOptions.map(u=>{let d="value"in u?u.value:T2e(u),p=!e&&c.focusedValue!==void 0&&("value"in u?c.focusedValue===u.value:u.optionValues.includes(c.focusedValue)),f=!!c.value&&("value"in u?c.value===u.value:u.optionValues.includes(c.value)),g="header"in u,h="label"in u?u.label:u.header,_=h;if(r&&h.includes(r)){let T=h.indexOf(r);_=AG.default.createElement(AG.default.Fragment,null,h.slice(0,T),AG.default.createElement(I,{...l.highlightedText()},r),h.slice(T+r.length))}return AG.default.createElement(S2e,{key:d,isFocused:p,isSelected:f,smallPointer:g},_)}))}function Yqt({onDone:e}){return gt((t,r)=>{(r.ctrl&&(t==="c"||t==="d")||r.escape)&&e()}),hG.default.createElement(v,{flexDirection:"column",borderStyle:"round",padding:1,borderColor:te().secondaryBorder},hG.default.createElement(v,{marginBottom:1,flexDirection:"column"},hG.default.createElement(I,{bold:!0},"You've spent $5 this session.")),hG.default.createElement(v,null,hG.default.createElement(V0,{options:[{value:"ok",label:"Got it, thanks!"}],onChange:e})))}var xn=q(ae(),1),rr=q(ae(),1);var jf=q(ae(),1);qe();fr();Hy();var W8n="2.4.30",qy={VERSION:W8n,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var R2e=46,Wqt=["(\u2740\u2579\u25E1\u2579)","(\u25D5\u072B\u25D5)","\u239D(\u25D5u\u25D5)\u23A0","\u10DA(\u25C9\u25DE\u0C6A\u25DF\u25C9 )\u10DA","(\xB4\u25C9\u203F\u25C9\uFF40)","\u0E01\u0E47\u0295\u2022\u0361\u1D25\u2022\u0294 \u0E01\u0E49","\uFF0F/( \u25D5\u203F\u203F\u25D5 )\uFF3C"];function tpe({isDefaultModel:e=!1}){let t=Math.max(R2e,Pe().length+12),r=te(),n=Wqt[Math.floor(Math.random()*Wqt.length)];return jf.createElement(v,{flexDirection:"column"},jf.createElement(v,{flexDirection:"column",gap:1,paddingLeft:1,width:"100%"},jf.createElement(I,null,jf.createElement(I,null,n)," Welcome to"," ",jf.createElement(I,{bold:!0},rt),jf.createElement(I,{color:r.secondaryText}," v",qy.VERSION)),jf.createElement(jf.Fragment,null,jf.createElement(v,{paddingLeft:2,flexDirection:"column",gap:1},jf.createElement(I,{color:r.secondaryText,italic:!0},"/help for help"),jf.createElement(I,{color:r.secondaryText},"cwd: ",Pe()),jf.createElement(I,{color:r.secondaryText},"model: ",Mo.getConfig().routing.MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A"),jf.createElement(I,{color:r.secondaryText},"small fast model: ",Mo.getConfig().routing.SMALL_FAST_MODEL?.map(o=>`${o.source}__${o.model}`).join(", ")??"N/A")))))}var UT=q(ae(),1);De();var _Z=q(ae(),1);import{randomUUID as BT}from"crypto";Ks();De();nr();fr();De();qe();import{existsSync as j0,readdirSync as bjn,statSync as Cjn}from"fs";import{join as xN,relative as Ijn}from"path";import{homedir as Q8t}from"os";import{platform as vjn}from"process";import{readFile as NN}from"fs/promises";fr();k_();br();import{join as eYn,sep as tYn}from"path";function Kf(){if(!lg())return!1;try{let e=it();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ug(){return(eYn(Pe(),".hcode","team-memory")+tYn).normalize("NFC")}function P_(e){let t=e.normalize("NFC"),r=ug();return t.startsWith(r)}var G8t=q(iV(),1);ci();var Y2e=(e,t,r)=>{let n=e instanceof RegExp?g8t(e,r):e,o=t instanceof RegExp?g8t(t,r):t,i=n!==null&&o!=null&&fWn(n,o,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+n.length,i[1]),post:r.slice(i[1]+o.length)}},g8t=(e,t)=>{let r=t.match(e);return r?r[0]:null},fWn=(e,t,r)=>{let n,o,i,s,a,c=r.indexOf(e),l=r.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(n=[],i=r.length;u>=0&&!a;){if(u===c)n.push(u),c=r.indexOf(e,u+1);else if(n.length===1){let d=n.pop();d!==void 0&&(a=[d,l])}else o=n.pop(),o!==void 0&&o<i&&(i=o,s=l),l=r.indexOf(t,u+1);u=c<l&&c>=0?c:l}n.length&&s!==void 0&&(a=[i,s])}return a};var A8t="\0SLASH"+Math.random()+"\0",h8t="\0OPEN"+Math.random()+"\0",W2e="\0CLOSE"+Math.random()+"\0",_8t="\0COMMA"+Math.random()+"\0",E8t="\0PERIOD"+Math.random()+"\0",mWn=new RegExp(A8t,"g"),gWn=new RegExp(h8t,"g"),AWn=new RegExp(W2e,"g"),hWn=new RegExp(_8t,"g"),_Wn=new RegExp(E8t,"g"),EWn=/\\\\/g,SWn=/\\{/g,TWn=/\\}/g,yWn=/\\,/g,bWn=/\\\./g,CWn=1e5,IWn=4e6;function V2e(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function vWn(e){return e.replace(EWn,A8t).replace(SWn,h8t).replace(TWn,W2e).replace(yWn,_8t).replace(bWn,E8t)}function RWn(e){return e.replace(mWn,"\\").replace(gWn,"{").replace(AWn,"}").replace(hWn,",").replace(_Wn,".")}function S8t(e){if(!e)return[""];let t=[],r=Y2e("{","}",e);if(!r)return e.split(",");let{pre:n,body:o,post:i}=r,s=n.split(",");s[s.length-1]+="{"+o+"}";let a=S8t(i);return i.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),t.push.apply(t,s),t}function T8t(e,t={}){if(!e)return[];let{max:r=CWn,maxLength:n=IWn}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),z2e(vWn(e),r,n,!0).map(RWn)}function xWn(e){return"{"+e+"}"}function NWn(e){return/^-?0\d/.test(e)}function OWn(e,t){return e<=t}function wWn(e,t){return e>=t}function sV(e,t,r,n,o,i){let s=[],a=0;for(let c=0;c<e.length;c++)for(let l=0;l<r.length;l++){if(s.length>=n)return s;let u=e[c]+t+r[l];if(!(i&&!u)){if(a+u.length>o)return s;s.push(u),a+=u.length}}return s}function DWn(e,t,r,n){let o=e.split(/\.\./),i=[];if(o[0]===void 0||o[1]===void 0)return i;let s=V2e(o[0]),a=V2e(o[1]),c=Math.max(o[0].length,o[1].length),l=o.length===3&&o[2]!==void 0?Math.max(Math.abs(V2e(o[2])),1):1,u=OWn;a<s&&(l*=-1,u=wWn);let p=o.some(NWn),f=0;for(let g=s;u(g,a)&&i.length<r;g+=l){let h;if(t)h=String.fromCharCode(g),h==="\\"&&(h="");else if(h=String(g),p){let _=c-h.length;if(_>0){let T=new Array(_+1).join("0");g<0?h="-"+T+h.slice(1):h=T+h}}if(f+h.length>n)break;i.push(h),f+=h.length}return i}function z2e(e,t,r,n){let o=[""],i=!1,s=!0;for(;;){let a=Y2e("{","}",e);if(!a)return sV(o,e,[""],t,r,i);let c=a.pre;if(/\$$/.test(c)){if(o=sV(o,c+"{"+a.body+"}",[""],t,r,i&&!a.post.length),s=!1,!a.post.length)break;e=a.post;continue}let l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body),d=l||u,p=a.body.indexOf(",")>=0;if(!d&&!p){if(a.post.match(/,(?!,).*\}/)){e=a.pre+"{"+a.body+W2e+a.post,n=!0;continue}return sV(o,c+"{"+a.body+"}"+a.post,[""],t,r,i)}s&&(i=n&&!d,s=!1);let f;if(d)f=DWn(a.body,u,t,r);else{let g=S8t(a.body);if(g.length===1&&g[0]!==void 0&&(g=z2e(g[0],t,r,!1).map(xWn),g.length===1)){if(o=sV(o,c+g[0],[""],t,r,i&&!a.post.length),!a.post.length)break;e=a.post;continue}let h=i&&!a.post.length&&!c;for(let T=0;h&&T<o.length;T++)o[T]&&(h=!1);f=[];let _=0;e:for(let T=0;T<g.length;T++){let y=z2e(g[T],t,r,!1);for(let C=0;C<y.length;C++){let R=y[C];if(!(h&&!R)){if(f.length>=t||_+R.length>r)break e;f.push(R),_+=R.length}}}}if(o=sV(o,c,f,t,r,i&&!a.post.length),!a.post.length)break;e=a.post}return o}var aV=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var MWn={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},cV=e=>e.replace(/[[\]\\-]/g,"\\$&"),BWn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),y8t=e=>e.join(""),b8t=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let n=[],o=[],i=r+1,s=!1,a=!1,c=!1,l=!1,u=r,d="";e:for(;i<e.length;){let h=e.charAt(i);if((h==="!"||h==="^")&&i===r+1){l=!0,i++;continue}if(h==="]"&&s&&!c){u=i+1;break}if(s=!0,h==="\\"&&!c){c=!0,i++;continue}if(h==="["&&!c){for(let[_,[T,y,C]]of Object.entries(MWn))if(e.startsWith(_,i)){if(d)return["$.",!1,e.length-r,!0];i+=_.length,C?o.push(T):n.push(T),a=a||y;continue e}}if(c=!1,d){h>d?n.push(cV(d)+"-"+cV(h)):h===d&&n.push(cV(h)),d="",i++;continue}if(e.startsWith("-]",i+1)){n.push(cV(h+"-")),i+=2;continue}if(e.startsWith("-",i+1)){d=h,i+=2;continue}n.push(cV(h)),i++}if(u<i)return["",!1,0,!1];if(!n.length&&!o.length)return["$.",!1,e.length-r,!0];if(o.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!l){let h=n[0].length===2?n[0].slice(-1):n[0];return[BWn(h),!1,u-r,!1]}let p="["+(l?"^":"")+y8t(n)+"]",f="["+(l?"":"^")+y8t(o)+"]";return[n.length&&o.length?"("+p+"|"+f+")":n.length?p:f,a,u-r,!0]};var RN=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!0}={})=>r?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var pg,kWn=new Set(["!","?","+","*","@"]),j2e=e=>kWn.has(e),C8t=e=>j2e(e.type),PWn=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),LWn=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),UWn=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),I8t=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),FWn="(?!(?:^|/)\\.\\.?(?:$|/))",fpe="(?!\\.)",QWn=new Set(["[","."]),GWn=new Set(["..","."]),HWn=new Set("().*{}+?[]^$\\!"),qWn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),K2e="[^/]",v8t=K2e+"*?",R8t=K2e+"+?",$Wn=0,jM=class{type;#e;#t;#n=!1;#r=[];#o;#i;#c;#a=!1;#s;#d;#f=!1;id=++$Wn;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(t,r,n={}){this.type=t,t&&(this.#t=!0),this.#o=r,this.#e=this.#o?this.#o.#e:this,this.#s=this.#e===this?n:this.#e.#s,this.#c=this.#e===this?[]:this.#e.#c,t==="!"&&!this.#e.#a&&this.#c.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#p(){if(this!==this.#e)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#c.pop();){if(t.type!=="!")continue;let r=t,n=r.#o;for(;n;){for(let o=r.#i+1;!n.type&&o<n.#r.length;o++)for(let i of t.#r){if(typeof i=="string")throw new Error("string part in extglob AST??");i.copyIn(n.#r[o])}r=n,n=r.#o}}return this}push(...t){for(let r of t)if(r!==""){if(typeof r!="string"&&!(r instanceof pg&&r.#o===this))throw new Error("invalid part: "+r);this.#r.push(r)}}toJSON(){let t=this.type===null?this.#r.slice().map(r=>typeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#a&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#i===0)return!0;let t=this.#o;for(let r=0;r<this.#i;r++){let n=t.#r[r];if(!(n instanceof pg&&n.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#i===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let r=new pg(this.type,t);for(let n of this.#r)r.copyIn(n);return r}static#l(t,r,n,o,i){let s=o.maxExtglobRecursion??2,a=!1,c=!1,l=-1,u=!1;if(r.type===null){let h=n,_="";for(;h<t.length;){let T=t.charAt(h++);if(a||T==="\\"){a=!a,_+=T;continue}if(c){h===l+1?(T==="^"||T==="!")&&(u=!0):T==="]"&&!(h===l+2&&u)&&(c=!1),_+=T;continue}else if(T==="["){c=!0,l=h,u=!1,_+=T;continue}if(!o.noext&&j2e(T)&&t.charAt(h)==="("&&i<=s){r.push(_),_="";let C=new pg(T,r);h=pg.#l(t,C,h,o,i+1),r.push(C);continue}_+=T}return r.push(_),h}let d=n+1,p=new pg(null,r),f=[],g="";for(;d<t.length;){let h=t.charAt(d++);if(a||h==="\\"){a=!a,g+=h;continue}if(c){d===l+1?(h==="^"||h==="!")&&(u=!0):h==="]"&&!(d===l+2&&u)&&(c=!1),g+=h;continue}else if(h==="["){c=!0,l=d,u=!1,g+=h;continue}if(!o.noext&&j2e(h)&&t.charAt(d)==="("&&(i<=s||r&&r.#_(h))){let T=r&&r.#_(h)?0:1;p.push(g),g="";let y=new pg(h,p);p.push(y),d=pg.#l(t,y,d,o,i+T);continue}if(h==="|"){p.push(g),g="",f.push(p),p=new pg(null,r);continue}if(h===")")return g===""&&r.#r.length===0&&(r.#f=!0),p.push(g),g="",r.push(...f,p),d;g+=h}return r.type=null,r.#t=void 0,r.#r=[t.substring(n-1)],d}#m(t){return this.#A(t,LWn)}#A(t,r=PWn){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null)return!1;let n=t.#r[0];return!n||typeof n!="object"||n.type===null?!1:this.#_(n.type,r)}#_(t,r=UWn){return!!r.get(this.type)?.includes(t)}#h(t,r){let n=t.#r[0],o=new pg(null,n,this.options);o.#r.push(""),n.push(o),this.#v(t,r)}#v(t,r){let n=t.#r[0];this.#r.splice(r,1,...n.#r);for(let o of n.#r)typeof o=="object"&&(o.#o=this);this.#d=void 0}#S(t){return!!I8t.get(this.type)?.has(t)}#b(t){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let r=t.#r[0];return!r||typeof r!="object"||r.type===null?!1:this.#S(r.type)}#C(t){let r=I8t.get(this.type),n=t.#r[0],o=r?.get(n.type);if(!o)return!1;this.#r=n.#r;for(let i of this.#r)typeof i=="object"&&(i.#o=this);this.type=o,this.#d=void 0,this.#f=!1}static fromGlob(t,r={}){let n=new pg(null,void 0,r);return pg.#l(t,n,0,r,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[r,n,o,i]=this.toRegExpSource();if(!(o||this.#t||this.#s.nocase&&!this.#s.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;let a=(this.#s.nocase?"i":"")+(i?"u":"");return Object.assign(new RegExp(`^${r}$`,a),{_src:r,_glob:t})}get options(){return this.#s}toRegExpSource(t){let r=t??!!this.#s.dot;if(this.#e===this&&(this.#E(),this.#p()),!C8t(this)){let c=this.isStart()&&this.isEnd()&&!this.#r.some(f=>typeof f!="string"),l=this.#r.map(f=>{let[g,h,_,T]=typeof f=="string"?pg.#y(f,this.#t,c):f.toRegExpSource(t);return this.#t=this.#t||_,this.#n=this.#n||T,g}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&GWn.has(this.#r[0]))){let g=QWn,h=r&&g.has(l.charAt(0))||l.startsWith("\\.")&&g.has(l.charAt(2))||l.startsWith("\\.\\.")&&g.has(l.charAt(4)),_=!r&&!t&&g.has(l.charAt(0));u=h?FWn:_?fpe:""}let d="";return this.isEnd()&&this.#e.#a&&this.#o?.type==="!"&&(d="(?:$|\\/)"),[u+l+d,RN(l),this.#t=!!this.#t,this.#n]}let n=this.type==="*"||this.type==="+",o=this.type==="!"?"(?:(?!(?:":"(?:",i=this.#T(r);if(this.isStart()&&this.isEnd()&&!i&&this.type!=="!"){let c=this.toString(),l=this;return l.#r=[c],l.type=null,l.#t=void 0,[c,RN(this.toString()),!1,!1]}let s=!n||t||r||!fpe?"":this.#T(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let a="";if(this.type==="!"&&this.#f)a=(this.isStart()&&!r?fpe:"")+R8t;else{let c=this.type==="!"?"))"+(this.isStart()&&!r&&!t?fpe:"")+v8t+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&s?")":this.type==="*"&&s?")?":`)${this.type}`;a=o+i+c}return[a,RN(i),this.#t=!!this.#t,this.#n]}#E(){if(C8t(this)){let t=0,r=!1;do{r=!0;for(let n=0;n<this.#r.length;n++){let o=this.#r[n];typeof o=="object"&&(o.#E(),this.#A(o)?(r=!1,this.#v(o,n)):this.#m(o)?(r=!1,this.#h(o,n)):this.#b(o)&&(r=!1,this.#C(o)))}}while(!r&&++t<10)}else for(let t of this.#r)typeof t=="object"&&t.#E();this.#d=void 0}#T(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[n,o,i,s]=r.toRegExpSource(t);return this.#n=this.#n||s,n}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#y(t,r,n=!1){let o=!1,i="",s=!1,a=!1;for(let c=0;c<t.length;c++){let l=t.charAt(c);if(o){o=!1,i+=(HWn.has(l)?"\\":"")+l;continue}if(l==="*"){if(a)continue;a=!0,i+=n&&/^[*]+$/.test(t)?R8t:v8t,r=!0;continue}else a=!1;if(l==="\\"){c===t.length-1?i+="\\\\":o=!0;continue}if(l==="["){let[u,d,p,f]=b8t(t,c);if(p){i+=u,s=s||d,c+=p-1,r=r||f;continue}}if(l==="?"){i+=K2e,r=!0;continue}i+=qWn(l)}return[i,RN(t),!!r,s]}};pg=jM;var J2e=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!1}={})=>r?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var jd=(e,t,r={})=>(aV(t),!r.nocomment&&t.charAt(0)==="#"?!1:new xG(t,r).match(e)),YWn=/^\*+([^+@!?*[(]*)$/,VWn=e=>t=>!t.startsWith(".")&&t.endsWith(e),zWn=e=>t=>t.endsWith(e),WWn=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),jWn=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),KWn=/^\*+\.\*+$/,JWn=e=>!e.startsWith(".")&&e.includes("."),ZWn=e=>e!=="."&&e!==".."&&e.includes("."),XWn=/^\.\*+$/,ejn=e=>e!=="."&&e!==".."&&e.startsWith("."),tjn=/^\*+$/,rjn=e=>e.length!==0&&!e.startsWith("."),njn=e=>e.length!==0&&e!=="."&&e!=="..",ojn=/^\?+([^+@!?*[(]*)?$/,ijn=([e,t=""])=>{let r=O8t([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},sjn=([e,t=""])=>{let r=w8t([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},ajn=([e,t=""])=>{let r=w8t([e]);return t?n=>r(n)&&n.endsWith(t):r},cjn=([e,t=""])=>{let r=O8t([e]);return t?n=>r(n)&&n.endsWith(t):r},O8t=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},w8t=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},D8t=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",x8t={win32:{sep:"\\"},posix:{sep:"/"}},ljn=D8t==="win32"?x8t.win32.sep:x8t.posix.sep;jd.sep=ljn;var tf=Symbol("globstar **");jd.GLOBSTAR=tf;var ujn="[^/]",djn=ujn+"*?",pjn="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",fjn="(?:(?!(?:\\/|^)\\.).)*?",mjn=(e,t={})=>r=>jd(r,e,t);jd.filter=mjn;var L_=(e,t={})=>Object.assign({},e,t),gjn=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return jd;let t=jd;return Object.assign((n,o,i={})=>t(n,o,L_(e,i)),{Minimatch:class extends t.Minimatch{constructor(o,i={}){super(o,L_(e,i))}static defaults(o){return t.defaults(L_(e,o)).Minimatch}},AST:class extends t.AST{constructor(o,i,s={}){super(o,i,L_(e,s))}static fromGlob(o,i={}){return t.AST.fromGlob(o,L_(e,i))}},unescape:(n,o={})=>t.unescape(n,L_(e,o)),escape:(n,o={})=>t.escape(n,L_(e,o)),filter:(n,o={})=>t.filter(n,L_(e,o)),defaults:n=>t.defaults(L_(e,n)),makeRe:(n,o={})=>t.makeRe(n,L_(e,o)),braceExpand:(n,o={})=>t.braceExpand(n,L_(e,o)),match:(n,o,i={})=>t.match(n,o,L_(e,i)),sep:t.sep,GLOBSTAR:tf})};jd.defaults=gjn;var M8t=(e,t={})=>(aV(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:T8t(e,{max:t.braceExpandMax}));jd.braceExpand=M8t;var Ajn=(e,t={})=>new xG(e,t).makeRe();jd.makeRe=Ajn;var hjn=(e,t,r={})=>{let n=new xG(t,r);return e=e.filter(o=>n.match(o)),n.options.nonull&&!e.length&&e.push(t),e};jd.match=hjn;var N8t=/[?*]|[+@!]\(.*?\)|\[|\]/,_jn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),xG=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,r={}){aV(t),r=r||{},this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion??200,this.pattern=t,this.platform=r.platform||D8t,this.isWindows=this.platform==="win32";let n="allowWindowsEscape";this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r[n]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...i)=>console.error(...i)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(i=>this.slashSplit(i));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let o=this.globParts.map((i,s,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let c=i[0]===""&&i[1]===""&&(i[2]==="?"||!N8t.test(i[2]))&&!N8t.test(i[3]),l=/^[a-z]:/i.test(i[0]);if(c)return[...i.slice(0,4),...i.slice(4).map(u=>this.parse(u))];if(l)return[i[0],...i.slice(1).map(u=>this.parse(u))]}return i.map(c=>this.parse(c))});if(this.debug(this.pattern,o),this.set=o.filter(i=>i.indexOf(!1)===-1),this.isWindows)for(let i=0;i<this.set.length;i++){let s=this.set[i];s[0]===""&&s[1]===""&&this.globParts[i][2]==="?"&&typeof s[3]=="string"&&/^[a-z]:$/i.test(s[3])&&(s[2]="?")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let n of t)for(let o=0;o<n.length;o++)n[o]==="**"&&(n[o]="*");let{optimizationLevel:r=1}=this.options;return r>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let n=-1;for(;(n=r.indexOf("**",n+1))!==-1;){let o=n;for(;r[o+1]==="**";)o++;o!==n&&r.splice(n,o-n)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((n,o)=>{let i=n[n.length-1];return o==="**"&&i==="**"?n:o===".."&&i&&i!==".."&&i!=="."&&i!=="**"?(n.pop(),n):(n.push(o),n)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let o=1;o<t.length-1;o++){let i=t[o];o===1&&i===""&&t[0]===""||(i==="."||i==="")&&(r=!0,t.splice(o,1),o--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(r=!0,t.pop())}let n=0;for(;(n=t.indexOf("..",n+1))!==-1;){let o=t[n-1];o&&o!=="."&&o!==".."&&o!=="**"&&!(this.isWindows&&/^[a-z]:$/i.test(o))&&(r=!0,t.splice(n-1,2),n-=2)}}while(r);return t.length===0?[""]:t}firstPhasePreProcess(t){let r=!1;do{r=!1;for(let n of t){let o=-1;for(;(o=n.indexOf("**",o+1))!==-1;){let s=o;for(;n[s+1]==="**";)s++;s>o&&n.splice(o+1,s-o);let a=n[o+1],c=n[o+2],l=n[o+3];if(a!==".."||!c||c==="."||c===".."||!l||l==="."||l==="..")continue;r=!0,n.splice(o,1);let u=n.slice(0);u[o]="**",t.push(u),o--}if(!this.preserveMultipleSlashes){for(let s=1;s<n.length-1;s++){let a=n[s];s===1&&a===""&&n[0]===""||(a==="."||a==="")&&(r=!0,n.splice(s,1),s--)}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(r=!0,n.pop())}let i=0;for(;(i=n.indexOf("..",i+1))!==-1;){let s=n[i-1];if(s&&s!=="."&&s!==".."&&s!=="**"){r=!0;let c=i===1&&n[i+1]==="**"?["."]:[];n.splice(i-1,2,...c),n.length===0&&n.push(""),i-=2}}}}while(r);return t}secondPhasePreProcess(t){for(let r=0;r<t.length-1;r++)for(let n=r+1;n<t.length;n++){let o=this.partsMatch(t[r],t[n],!this.preserveMultipleSlashes);if(o){t[r]=[],t[n]=o;break}}return t.filter(r=>r.length)}partsMatch(t,r,n=!1){let o=0,i=0,s=[],a="";for(;o<t.length&&i<r.length;)if(t[o]===r[i])s.push(a==="b"?r[i]:t[o]),o++,i++;else if(n&&t[o]==="**"&&r[i]===t[o+1])s.push(t[o]),o++;else if(n&&r[i]==="**"&&t[o]===r[i+1])s.push(r[i]),i++;else if(t[o]==="*"&&r[i]&&(this.options.dot||!r[i].startsWith("."))&&r[i]!=="**"){if(a==="b")return!1;a="a",s.push(t[o]),o++,i++}else if(r[i]==="*"&&t[o]&&(this.options.dot||!t[o].startsWith("."))&&t[o]!=="**"){if(a==="a")return!1;a="b",s.push(r[i]),o++,i++}else return!1;return t.length===r.length&&s}parseNegate(){if(this.nonegate)return;let t=this.pattern,r=!1,n=0;for(let o=0;o<t.length&&t.charAt(o)==="!";o++)r=!r,n++;n&&(this.pattern=t.slice(n)),this.negate=r}matchOne(t,r,n=!1){let o=0,i=0;if(this.isWindows){let a=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),c=!a&&t[0]===""&&t[1]===""&&t[2]==="?"&&/^[a-z]:$/i.test(t[3]),l=typeof r[0]=="string"&&/^[a-z]:$/i.test(r[0]),u=!l&&r[0]===""&&r[1]===""&&r[2]==="?"&&typeof r[3]=="string"&&/^[a-z]:$/i.test(r[3]),d=c?3:a?0:void 0,p=u?3:l?0:void 0;if(typeof d=="number"&&typeof p=="number"){let[f,g]=[t[d],r[p]];f.toLowerCase()===g.toLowerCase()&&(r[p]=f,i=p,o=d)}}let{optimizationLevel:s=1}=this.options;return s>=2&&(t=this.levelTwoFileOptimize(t)),r.includes(tf)?this.#e(t,r,n,o,i):this.#n(t,r,n,o,i)}#e(t,r,n,o,i){let s=r.indexOf(tf,i),a=r.lastIndexOf(tf),[c,l,u]=n?[r.slice(i,s),r.slice(s+1),[]]:[r.slice(i,s),r.slice(s+1,a),r.slice(a+1)];if(c.length){let y=t.slice(o,o+c.length);if(!this.#n(y,c,n,0,0))return!1;o+=c.length,i+=c.length}let d=0;if(u.length){if(u.length+o>t.length)return!1;let y=t.length-u.length;if(this.#n(t,u,n,y,0))d=u.length;else{if(t[t.length-1]!==""||o+u.length===t.length||(y--,!this.#n(t,u,n,y,0)))return!1;d=u.length+1}}if(!l.length){let y=!!d;for(let C=o;C<t.length-d;C++){let R=String(t[C]);if(y=!0,R==="."||R===".."||!this.options.dot&&R.startsWith("."))return!1}return n||y}let p=[[[],0]],f=p[0],g=0,h=[0];for(let y of l)y===tf?(h.push(g),f=[[],0],p.push(f)):(f[0].push(y),g++);let _=p.length-1,T=t.length-d;for(let y of p)y[1]=T-(h[_--]+y[0].length);return!!this.#t(t,p,o,0,n,0,!!d)}#t(t,r,n,o,i,s,a){let c=r[o];if(!c){for(let d=n;d<t.length;d++){a=!0;let p=t[d];if(p==="."||p===".."||!this.options.dot&&p.startsWith("."))return!1}return a}let[l,u]=c;for(;n<=u;){if(this.#n(t.slice(0,n+l.length),l,i,n,0)&&s<this.maxGlobstarRecursion){let f=this.#t(t,r,n+l.length,o+1,i,s+1,a);if(f!==!1)return f}let p=t[n];if(p==="."||p===".."||!this.options.dot&&p.startsWith("."))return!1;n++}return i||null}#n(t,r,n,o,i){let s,a,c,l;for(s=o,a=i,l=t.length,c=r.length;s<l&&a<c;s++,a++){this.debug("matchOne loop");let u=r[a],d=t[s];if(this.debug(r,u,d),u===!1||u===tf)return!1;let p;if(typeof u=="string"?(p=d===u,this.debug("string match",u,d,p)):(p=u.test(d),this.debug("pattern match",u,d,p)),!p)return!1}if(s===l&&a===c)return!0;if(s===l)return n;if(a===c)return s===l-1&&t[s]==="";throw new Error("wtf?")}braceExpand(){return M8t(this.pattern,this.options)}parse(t){aV(t);let r=this.options;if(t==="**")return tf;if(t==="")return"";let n,o=null;(n=t.match(tjn))?o=r.dot?njn:rjn:(n=t.match(YWn))?o=(r.nocase?r.dot?jWn:WWn:r.dot?zWn:VWn)(n[1]):(n=t.match(ojn))?o=(r.nocase?r.dot?sjn:ijn:r.dot?ajn:cjn)(n):(n=t.match(KWn))?o=r.dot?ZWn:JWn:(n=t.match(XWn))&&(o=ejn);let i=jM.fromGlob(t,this.options).toMMPattern();return o&&typeof i=="object"&&Reflect.defineProperty(i,"test",{value:o}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,n=r.noglobstar?djn:r.dot?pjn:fjn,o=new Set(r.nocase?["i"]:[]),i=t.map(c=>{let l=c.map(d=>{if(d instanceof RegExp)for(let p of d.flags.split(""))o.add(p);return typeof d=="string"?_jn(d):d===tf?tf:d._src});l.forEach((d,p)=>{let f=l[p+1],g=l[p-1];d!==tf||g===tf||(g===void 0?f!==void 0&&f!==tf?l[p+1]="(?:\\/|"+n+"\\/)?"+f:l[p]=n:f===void 0?l[p-1]=g+"(?:\\/|\\/"+n+")?":f!==tf&&(l[p-1]=g+"(?:\\/|\\/"+n+"\\/)"+f,l[p+1]=tf))});let u=l.filter(d=>d!==tf);if(this.partial&&u.length>=1){let d=[];for(let p=1;p<=u.length;p++)d.push(u.slice(0,p).join("/"));return"(?:"+d.join("|")+")"}return u.join("/")}).join("|"),[s,a]=t.length>1?["(?:",")"]:["",""];i="^"+s+i+a+"$",this.partial&&(i="^(?:\\/|"+s+i.slice(1,-1)+a+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let n=this.options;this.isWindows&&(t=t.split("\\").join("/"));let o=this.slashSplit(t);this.debug(this.pattern,"split",o);let i=this.set;this.debug(this.pattern,"set",i);let s=o[o.length-1];if(!s)for(let a=o.length-2;!s&&a>=0;a--)s=o[a];for(let a of i){let c=o;if(n.matchBase&&a.length===1&&(c=[s]),this.matchOne(c,a,r))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(t){return jd.defaults(t).Minimatch}};jd.AST=jM;jd.Minimatch=xG;jd.escape=J2e;jd.unescape=RN;var P8t=q(iV(),1);fr();qe();De();qf();import{readFile as B8t}from"fs/promises";import{existsSync as Z2e,readdirSync as Ejn,statSync as Sjn}from"fs";import{join as X2e,relative as L8t}from"path";import{homedir as Tjn}from"os";function k8t(e){try{let t=(0,P8t.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(o=>o.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(o=>typeof o=="string")),{paths:n,content:t.content.trim()}}catch(t){return be(t),{paths:[],content:e.trim()}}}function yjn(e,t){return t.length===0?!0:t.some(r=>{try{return jd(e,r,{matchBase:!0,dot:!0})}catch(n){return be(n),!1}})}function eUe(e){let t=[];try{if(!Z2e(e))return t;let r=Ejn(e);for(let n of r){let o=X2e(e,n),i=Sjn(o);i.isDirectory()?t.push(...eUe(o)):i.isFile()&&n.endsWith(".md")&&t.push(o)}}catch(r){be(r)}return t}async function U8t(){let e=[];try{let t=X2e(Tjn(),Kn,"rules");if(Z2e(t)){let r=eUe(t);for(let n of r)try{let o=await B8t(n,"utf-8"),{paths:i,content:s}=k8t(o);i.length>0&&e.push({filePath:n,content:s,paths:i,isProjectRule:!1})}catch(o){be(o)}}}catch(t){be(t)}try{let t=X2e(Pe(),Kn,"rules");if(Z2e(t)){let r=eUe(t);for(let n of r)try{let o=await B8t(n,"utf-8"),{paths:i,content:s}=k8t(o);i.length>0&&e.push({filePath:L8t(Pe(),n),content:s,paths:i,isProjectRule:!0})}catch(o){be(o)}}}catch(t){be(t)}return e}function F8t(e,t){e=Qle(e);let r=Qle(Pe()),n=e.startsWith(r)?L8t(r,e):e;return t.filter(o=>yjn(n,o.paths))}var Rjn=`# hawaCodeMd
690
690
  Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function xjn(e="default"){let r=Je.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(o=>{let i=o.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${o.filePath} (${i}):
691
691
 
692
692
  ${o.content}`}).join(`
@@ -784,7 +784,7 @@ data: ${JSON.stringify(U)}
784
784
  Stack trace: `+d.stack)),new Response(c.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var zge=null,k4e=!1;function uAo(){zge=null,k4e=!1}Ft.on("proxy:changed",uAo);function dAo(){if(k4e)return zge;if(k4e=!0,it().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(zge=new Ker.ProxyAgent({uri:e}),er(`[proxy] using proxy: ${e}`)),zge}function pAo(){let e=dAo();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function jge(e){let t=e||process.env.API_TYPE,r=pAo();switch(t){case"openai":return sAo(r);case"openai-responses":return aAo(r);case"gemini":return cAo(r);default:return lAo(r)}}Hy();var Zer=q(ae(),1);function Jer(e,t){let r=[],n=Math.max(1,Math.floor(t)),o="",i=0;for(let s of e){let a=fAo(s);o&&i+a>n?(r.push(o),o=s,i=a):(o+=s,i+=a)}return o&&r.push(o),r}function fAo(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||mAo(t)?0:gAo(t)?2:1}function mAo(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function gAo(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function VS(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function U4e(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m ${o}s`:`${n}m ${o}s`}function AI(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Kge(e,t,r){let n=[];return typeof e=="number"&&n.push(U4e(e)),typeof t=="number"&&n.push(`${t} ${t===1?"turn":"turns"}`),typeof r=="number"&&n.push(`${AI(r)} tokens`),n.length>0?` (${n.join(" \xB7 ")})`:""}De();Ks();var cu={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function Jge(e,t){cu.totalCost+=e,cu.totalAPIDuration+=t}function Zge(e,t){cu.inputTokens+=e,cu.outputTokens+=t,Ft.emit("token:change",{inputTokens:cu.inputTokens,outputTokens:cu.outputTokens})}function Xge(e,t){cu.cacheCreationTokens+=e,cu.cacheReadTokens+=t}function UB(){return{inputTokens:cu.inputTokens,outputTokens:cu.outputTokens,cacheCreationTokens:cu.cacheCreationTokens,cacheReadTokens:cu.cacheReadTokens}}function F9(){return cu.totalCost}function eAe(){return Date.now()-cu.startTime}function Xer(){return cu.totalAPIDuration}function etr(e){cu.currentContextTokens=e}function ttr(){return cu.currentContextTokens}function AAo(){return Ct.grey(`Total duration (API): ${VS(cu.totalAPIDuration)}
785
785
  Total duration (wall): ${VS(eAe())}`)}function rtr(){(0,Zer.useEffect)(()=>{let e=()=>{process.stdout.write(`
786
786
  `+AAo()+`
787
- `);let t=Jn();zi({...t,lastCost:cu.totalCost,lastAPIDuration:cu.totalAPIDuration,lastDuration:eAe(),lastSessionId:yS})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}De();qe();qe();var F4e="2.4.29";globalThis.MACRO={VERSION:F4e,PACKAGE_URL:`@dahawa/${Mi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var tAe=process.env.HAWA_CODE_USER_AGENT||`${Mi}/${F4e} (${process.env.USER_TYPE})`;De();De();nr();function of(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Up(t);if(n?.type==="user"){t[t.length-1]=SAo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Up(t);n?.type==="user"&&(t[t.length-1]=hAo(n,r));return}}}),t}function hAo(e,t){return{...e,message:{...e.message,content:EAo(e.message.content,_Ao(t.content.content))}}}function _Ao(e){return`
787
+ `);let t=Jn();zi({...t,lastCost:cu.totalCost,lastAPIDuration:cu.totalAPIDuration,lastDuration:eAe(),lastSessionId:yS})};return process.on("exit",e),()=>{process.off("exit",e)}},[])}De();qe();qe();var F4e="2.4.30";globalThis.MACRO={VERSION:F4e,PACKAGE_URL:`@dahawa/${Mi}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var tAe=process.env.HAWA_CODE_USER_AGENT||`${Mi}/${F4e} (${process.env.USER_TYPE})`;De();De();nr();function of(e){let t=[];return e.filter(r=>r.type!=="progress"&&r.type!=="reminder").forEach(r=>{switch(r.type){case"user":{let n=Up(t);if(n?.type==="user"){t[t.length-1]=SAo(n,r);return}t.push(r);return}case"assistant":t.push(r);return;case"insert":{let n=Up(t);n?.type==="user"&&(t[t.length-1]=hAo(n,r));return}}}),t}function hAo(e,t){return{...e,message:{...e.message,content:EAo(e.message.content,_Ao(t.content.content))}}}function _Ao(e){return`
788
788
  <system-reminder>
789
789
  The user sent the following message:
790
790
  ${e}
@@ -3550,37 +3550,36 @@ async () => {
3550
3550
  - Instructions: ${a??"(none)"}
3551
3551
  - Methods: ${c}`}).join(`
3552
3552
  `)}async function SQr(){return Qei.replace("{{providers}}",await Gei())}async function Hei(e){let t=[];for(let r of e){if(r.type!=="connected")continue;let n={};try{let{tools:o}=await r.client.listTools();for(let i of o)n[i.name]=async s=>S1r(r.client,i.name,s)}catch(o){console.warn(`Failed to list tools for codemode client ${r.name}:`,o);continue}t.push({name:r.name,fns:n})}return t}function TQr(){let e=new d0e;return{name:"codemode",inputSchema:Fei,inputJSONSchema:{type:"object",properties:{code:{type:"string",description:"JavaScript async arrow function to execute"},timeout:{type:"number",description:"Execution timeout in seconds. Defaults to 60."}},required:["code"]},async description(t){return t?.code?"Execute JavaScript code":SQr()},async prompt(){return SQr()},userFacingName(){return"codemode"},async isEnabled(){return!0},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(t){return!t.code||typeof t.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(t){return t.error?`Error: ${t.error}`:Jnt(t.result)},renderToolUseMessage(t){return t.code.split(`
3553
- `)[0]??"codemode"},renderToolResultMessage(t){let r=iQr(t.result);return WO.createElement(v,{flexDirection:"column"},t.error?WO.createElement(v,{flexDirection:"row",key:"error"},WO.createElement(I,null," \u23BF "),WO.createElement(I,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,WO.createElement(v,{flexDirection:"row",key:"result"},WO.createElement(I,null," \u23BF "),WO.createElement(I,{key:"result-text"},r)))},async*call(t,r,n){let o=r??{abortController:new AbortController,readFileTimestamps:{}},i=fv(),s=Object.keys(i),[a,c]=await Promise.all([jb(),fbe().catch(()=>[])]),l=await Hei(a),u=p0e(),d={search:async g=>mQr(g,c,u,s),describe:async g=>EQr(g,c,u,eot()),saveSnippet:async(g,h,_,T,y)=>{if(typeof h!="string"||h.length===0)throw new Error("saveSnippet: code must be a non-empty string (a function or string of snippet code)");for(let[R,O]of[["inputSchema",T],["outputSchema",y]])if(O!==void 0&&(O===null||typeof O!="object"))throw new Error(`saveSnippet: ${R} must be an object when provided`);let C={name:g,description:_,code:h,savedAt:Date.now(),connectors:s,...T!==void 0?{inputSchema:T}:{},...y!==void 0?{outputSchema:y}:{}};return lQr(C),{saved:!0,name:g}},saveOutputSchema:async(g,h,_)=>{let[T,y,C]=Array.isArray(g)?g:[g,h,_];if(typeof T!="string"||!T.includes("."))throw new Error('saveOutputSchema: target must be in the form "provider.method"');if(y===null||typeof y!="object")throw new Error("saveOutputSchema: outputSchema must be an object");let R={target:T,outputSchema:y,description:C,savedAt:Date.now()};return pQr(R),{saved:!0,target:T}},__snippetCode:async g=>{let h=uQr(g);if(!h)throw new Error(`Snippet not found: ${g}`);return h.code}},p=typeof t.timeout=="number"&&t.timeout>0?t.timeout*1e3:void 0,f=await e.execute(aQr(t.code),l,d,p);yield{type:"result",data:f,resultForAssistant:f.error?`Error: ${f.error}`:Jnt(f.result)}}}}var qei=F.object({code:F.string().describe("JavaScript async arrow function to execute"),timeout:F.number().optional().describe("Execution timeout in seconds. Defaults to 60.")}),S3=TQr(),yQr={...S3,name:"codemode",inputSchema:qei,async description(e){return S3.description(e)},async prompt(){return S3.description()},userFacingName(){return"Code"},async isEnabled(){try{return(await fbe()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:S3.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return S3.renderToolResultMessage(e)},async*call(e,t,r){yield*S3.call(e,t,r)}};var T3=q(ae(),1);Nn();nr();BW();qe();var bQr=bc,CQr="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",IQr=`Every tool listed under <available_tools> MUST be invoked through ${bc}. Direct calls to any tool in <available_tools> are strictly forbidden.
3553
+ `)[0]??"codemode"},renderToolResultMessage(t){let r=iQr(t.result);return WO.createElement(v,{flexDirection:"column"},t.error?WO.createElement(v,{flexDirection:"row",key:"error"},WO.createElement(I,null," \u23BF "),WO.createElement(I,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,WO.createElement(v,{flexDirection:"row",key:"result"},WO.createElement(I,null," \u23BF "),WO.createElement(I,{key:"result-text"},r)))},async*call(t,r,n){let o=r??{abortController:new AbortController,readFileTimestamps:{}},i=fv(),s=Object.keys(i),[a,c]=await Promise.all([jb(),fbe().catch(()=>[])]),l=await Hei(a),u=p0e(),d={search:async g=>mQr(g,c,u,s),describe:async g=>EQr(g,c,u,eot()),saveSnippet:async(g,h,_,T,y)=>{if(typeof h!="string"||h.length===0)throw new Error("saveSnippet: code must be a non-empty string (a function or string of snippet code)");for(let[R,O]of[["inputSchema",T],["outputSchema",y]])if(O!==void 0&&(O===null||typeof O!="object"))throw new Error(`saveSnippet: ${R} must be an object when provided`);let C={name:g,description:_,code:h,savedAt:Date.now(),connectors:s,...T!==void 0?{inputSchema:T}:{},...y!==void 0?{outputSchema:y}:{}};return lQr(C),{saved:!0,name:g}},saveOutputSchema:async(g,h,_)=>{let[T,y,C]=Array.isArray(g)?g:[g,h,_];if(typeof T!="string"||!T.includes("."))throw new Error('saveOutputSchema: target must be in the form "provider.method"');if(y===null||typeof y!="object")throw new Error("saveOutputSchema: outputSchema must be an object");let R={target:T,outputSchema:y,description:C,savedAt:Date.now()};return pQr(R),{saved:!0,target:T}},__snippetCode:async g=>{let h=uQr(g);if(!h)throw new Error(`Snippet not found: ${g}`);return h.code}},p=typeof t.timeout=="number"&&t.timeout>0?t.timeout*1e3:void 0,f=await e.execute(aQr(t.code),l,d,p);yield{type:"result",data:f,resultForAssistant:f.error?`Error: ${f.error}`:Jnt(f.result)}}}}var qei=F.object({code:F.string().describe("JavaScript async arrow function to execute"),timeout:F.number().optional().describe("Execution timeout in seconds. Defaults to 60.")}),S3=TQr(),yQr={...S3,name:"codemode",inputSchema:qei,async description(e){return S3.description(e)},async prompt(){return S3.description()},userFacingName(){return"Code"},async isEnabled(){try{return(await fbe()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:S3.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return S3.renderToolResultMessage(e)},async*call(e,t,r){yield*S3.call(e,t,r)}};var T3=q(ae(),1);Nn();nr();BW();qe();var bQr=bc,CQr="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",IQr=`Every tool listed under <loadable_tools> MUST be invoked through ${bc}. Direct calls to any tool in <loadable_tools> are strictly forbidden.
3554
3554
 
3555
3555
  ## Discovery-First Rule
3556
- If you have NOT used a tool in this conversation, you MUST run a discovery pass first. Never guess method names, parameter names, types, or structure.
3556
+ If you have NOT used a tool in this conversation, you MUST load it first. Never guess method names, parameter names, types, or structure.
3557
3557
 
3558
3558
  ## Actions
3559
- - describe: ${bc}({ action: "describe", name: "<tool_name>" })
3559
+ - load: ${bc}({ action: "load", name: "<tool_name>" })
3560
3560
  \u2192 Returns the tool's full description, usage guide, and TypeScript type signature.
3561
- \u2192 Use this BEFORE your first call to any tool you are not 100% familiar with.
3562
3561
 
3563
3562
  - call: ${bc}({ action: "call", name: "<tool_name>", input: { ... } })
3564
3563
  \u2192 Executes the target tool.
3565
- \u2192 The \`input\` object MUST strictly match the TypeScript type signature returned by \`describe\`.
3564
+ \u2192 The \`input\` object MUST strictly match the TypeScript type signature returned by \`load\`.
3566
3565
 
3567
3566
  ## Rules
3568
- - ONLY proxy tools that appear in <available_tools>. Do not invent tool names.
3569
- - NEVER hallucinate \`input\` fields, types, or defaults. If you are uncertain about ANY parameter, run \`describe\` first.
3570
- - The default \`action\` is \`"call"\`, but always be explicit in your JSON.
3567
+ - ONLY proxy tools that appear in <loadable_tools>. Do not invent tool names.
3568
+ - NEVER hallucinate \`input\` fields, types, or defaults. If you are uncertain about ANY parameter, run \`load\` first.
3569
+ - The default \`action\` is \`"load"\`, but always be explicit in your JSON.
3571
3570
  - One tool per proxy call. Do not batch multiple target tools into a single \`input\`.
3572
3571
 
3573
3572
  ## Workflow
3574
- 1. Identify the tool you need from <available_tools>.
3575
- 2. Discovery pass: If you have not used this tool before, call \`describe\` to fetch its TypeScript type signature.
3573
+ 1. Identify the tool you need from <loadable_tools>.
3574
+ 2. Discovery pass: If you have not used this tool before, call \`load\` to fetch its TypeScript type signature.
3576
3575
  3. Construct the \`input\` object EXACTLY according to the returned schema \u2014 no extra fields, no assumed types.
3577
3576
  4. Execute via \`call\` with the validated \`input\`.
3578
3577
 
3579
- `;Hp();qe();br();var $ei=ze(()=>F.object({action:F.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:F.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:F.record(F.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002")})),Yei={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function vQr(e){return e?.options?._tools??await wn.getTools(!1)??[]}function not(e){return e.name!==bc&&e.name!==hx}var RQr={name:bQr,async description(){return CQr},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await vQr(t)).filter(not),o=(await Promise.all(n.map(async i=>`<tool><name>${i.name}</name><description>${i.isMcp?.()?s4.getSimpleDescription(i.name):await i.description?.()}</description></tool>`))).join(`
3578
+ `;Hp();qe();br();var $ei=ze(()=>F.object({action:F.enum(["call","load"]).default("load").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; load=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:F.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:F.record(F.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'load' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002load \u6A21\u5F0F\u5FFD\u7565\u3002")})),Yei={type:"object",properties:{action:{type:"string",enum:["call","load"],default:"load",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; load=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'load' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002load \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function vQr(e){return e?.options?._tools??await wn.getTools(!1)??[]}function not(e){return e.name!==bc&&e.name!==hx}var RQr={name:bQr,async description(){return CQr},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await vQr(t)).filter(not),o=(await Promise.all(n.map(async i=>`<tool><name>${i.name}</name><description>${i.isMcp?.()?s4.getSimpleDescription(i.name):await i.description?.()}</description></tool>`))).join(`
3580
3579
  `);return`${IQr}
3581
- <available_tools>
3580
+ <loadable_tools>
3582
3581
  ${o}
3583
- </available_tools>`},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return $ei()},get inputJSONSchema(){return Yei},userFacingName(){return bc},async isEnabled(){return ct.isProxyToolEnable()},needsPermissions(){return!1},renderToolUseMessage(e){return`${e?.action??"call"} ${e?.name??""}`.trim()},renderToolUseRejectedMessage(){return T3.createElement(v,null,T3.createElement(I,null,"tool execution was rejected"))},renderToolResultMessage(e){let t=e?.error?e.message:e?.action==="describe"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return T3.createElement(v,{flexDirection:"row"},T3.createElement(I,null,"\xA0\xA0\u23BF \xA0"),T3.createElement(I,null,t))},renderResultForAssistant(e){return e.message},async*call(e,t){let r=e.action??"call",n=await vQr(t),o=n.find(i=>i.name===e.name);if(!o){let i=n.filter(not).map(c=>c.name).join(", "),s=`<error>Tool not found: ${e.name}. Run ${bc}({action:'describe'}) or refer to the list. Available tools: ${i}</error>`,a={action:r,name:e.name,message:s,error:!0};yield{type:"result",resultForAssistant:s,data:a};return}if(!not(o)){let i=`<error>Tool ${e.name} cannot be invoked through ${bc}. Call it directly.</error>`,s={action:r,name:e.name,message:i,error:!0};yield{type:"result",resultForAssistant:i,data:s};return}if(r==="describe"){let i=await o.prompt({dangerouslySkipPermissions:t?.options?.dangerouslySkipPermissions},t),s="inputJSONSchema"in o&&o.inputJSONSchema?o.inputJSONSchema:yI(o.inputSchema),a=wT(s,""),c=[`# ${o.name}`,i,"","## Input (TypeScript)","```typescript",`type ${o.name}Input = ${a};`,"```"].join(`
3582
+ </loadable_tools>`},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return $ei()},get inputJSONSchema(){return Yei},userFacingName(){return bc},async isEnabled(){return ct.isProxyToolEnable()},needsPermissions(){return!1},renderToolUseMessage(e){return`${e?.action??"load"} ${e?.name??""}`.trim()},renderToolUseRejectedMessage(){return T3.createElement(v,null,T3.createElement(I,null,"tool execution was rejected"))},renderToolResultMessage(e){let t=e?.error?e.message:e?.action==="load"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return T3.createElement(v,{flexDirection:"row"},T3.createElement(I,null,"\xA0\xA0\u23BF \xA0"),T3.createElement(I,null,t))},renderResultForAssistant(e){return e.message},async*call(e,t){let r=e.action??"load",n=await vQr(t),o=n.find(i=>i.name===e.name);if(!o){let i=n.filter(not).map(c=>c.name).join(", "),s=`<error>Tool not found: ${e.name}. Run ${bc}({action:'load'}) or refer to the list. Available tools: ${i}</error>`,a={action:r,name:e.name,message:s,error:!0};yield{type:"result",resultForAssistant:s,data:a};return}if(!not(o)){let i=`<error>Tool ${e.name} cannot be invoked through ${bc}. Call it directly.</error>`,s={action:r,name:e.name,message:i,error:!0};yield{type:"result",resultForAssistant:i,data:s};return}if(r==="load"){let i=await o.prompt({dangerouslySkipPermissions:t?.options?.dangerouslySkipPermissions},t),s="inputJSONSchema"in o&&o.inputJSONSchema?o.inputJSONSchema:yI(o.inputSchema),a=wT(s,""),c=[`# ${o.name}`,i,"","## Input (TypeScript)","```typescript",`type ${o.name}Input = ${a};`,"```"].join(`
3584
3583
  `),l={action:r,name:o.name,schema:s,message:c};yield{type:"result",resultForAssistant:c,data:l};return}for await(let i of o.call(e.input??{},t,void 0))yield i}};var y3=()=>[tQr,yQr,RQr,PBr,zFr,Io,ph,kK,PK,_p,Ep,vBr,dh,hp,Af,gf,_J,cJ,eLr,sLr,gLr,ALr,hLr,_Lr,h0e,ULr,DLr,HLr,VLr,KLr,BK,XLr,n2r,OFr,wFr,DFr,UFr,$Fr,S2r,a2r,d2r,g2r],bp=ze(async()=>{let e=[...y3(),...await E5()],t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])}),o3=ze(async()=>{let e=y3().filter(r=>r.isReadOnly()),t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])});wn.add(bp);wn.add(o3);wn.getTools=bp;qe();var MLr="Launch a new agent to handle complex, multi-step tasks autonomously.";async function xQr(e,t){let r=e.tools,n=await ent(t);if(r){let o=Array.isArray(r)&&r.length===1&&r[0]==="*";r==="*"||o||Array.isArray(r)&&(n=n.filter(i=>r.includes(i.name)))}return n}async function ent(e){return await(e?o3():bp())}async function BLr(e){let r=(await wv()).map(n=>{let o=Array.isArray(n.tools)?n.tools.join(", "):"*";return`- ${n.agentType}: ${n.whenToUse} (Tools: ${o})`}).join(`
3585
3584
  `);return`Launch a new agent to handle complex, multi-step tasks autonomously.
3586
3585
 
@@ -3730,7 +3729,7 @@ Return ONLY a JSON object with the following format:
3730
3729
 
3731
3730
  > This memory file was truncated (${i?`${uot} byte limit`:`first ${lot} lines`}). Use the Read tool to view the complete file at: ${r}`:"";return{path:r,content:s+c}}catch(n){return be(`[memoryRecall] failed to read memory file ${r}: ${n}`),null}}))).filter(r=>r!==null)}k_();function YQr(e){return typeof e=="string"?{type:"text",text:e}:e}function Iti(e){if(typeof e=="string")return e;let t=[];if(Array.isArray(e))for(let r of e)t.push(YQr(r));else t.push(YQr(e));return t}async function vti(e,t,r){if(process.env.USER_TYPE!=="ant"||!r||!await eBr()){let i=await t();return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:{message:i,shouldSkipPermissionCheck:!1}}let[n,o]=await Promise.all([t(),t()]);return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:o.isApiErrorMessage?{message:n,shouldSkipPermissionCheck:!1}:n.isApiErrorMessage?{message:o,shouldSkipPermissionCheck:!1}:tBr(n,o)?await r(n,o):{message:n,shouldSkipPermissionCheck:!1}}async function*dZ(e,t,r,n,o,i){o.hookContext={hooks:it().hooks},Je.onQueryStart(),aBr.tryStart();let s=[...e];for(;;){for await(let d of NE([...s],t,r,n,o,i))yield d,s.push(d);let a=[];if(So.needNotification()&&a.push(...await So.takeNotificationMessages()),Ki.needNotification()){let d=await Ki.takeNotificationMessages();d&&a.push(...d)}let c=await Us.takeTeamLeadMailInbox();c&&c.length>0&&a.push({type:"text",text:Us.formatMessagesForContext(c)});let u=Je.getSessionContext(o.agentId).takePendingPrompts();if(u.length>0){let d=u.join(`
3732
3731
  `);a.push({type:"text",text:d})}if(a.length>0){let d=It(a);yield d,s.push(d);continue}for await(let d of sBr.tryStop(s,t,r,n,o))yield d,s.push(d);if(s.length>0&&s[s.length-1].type!=="user")break}!o.abortController.signal.aborted&&!it().disableSuggestion&&FQr.getSuggestionPrompt(s,o.abortController.signal).then(a=>{a&&Ft.emit(vie,a)}),o.abortController.signal.aborted||Rti(s,t,r,o).catch(a=>{be(a)});try{if(ct.isLazyToolEnable()){let a=Je.getInQueryContext()[c_];a&&a.size>0&&(a=[...a],yield It(`<system-notification> unload ${a.map(c=>c+" tool").join(", ")} success, must be reloaded before their next use. </system-notification>`))}}catch(a){throw a}Je.onQueryEnd(null,o.abortController.signal.aborted)}async function Rti(e,t,r,n){let o=n;n.lazyToolMode==="loading"&&n.options._tools&&(o={...n,options:{...n.options,tools:n.options._tools}});let i={messages:[...e],systemPrompt:t,userContext:r,systemContext:await Pi(),toolUseContext:o,querySource:"repl_main_thread"};qQr(i).catch(s=>{be(s)}),kQr(i).catch(s=>{be(s)})}async function*NE(e,t,r,n,o,i){o.turns||(o.turns={count:0}),o.turns.count++,it();let s=o.lazyToolMode==="proxy",a=o.lazyToolMode==="loading";if(s)o.options._tools||(o.options._tools=o.options.tools),o.options.tools=o.options._tools.filter(H=>H.name===bc||WDt.includes(H.name));else if(a){o.options._tools||(o.options._tools=o.options.tools);let H=Je.getInQueryContext(o.agentId)[c_],G=J=>J.name===Hd||J.name===Ru,oe=o.options._tools.filter(J=>p_.includes(J.name)&&!G(J)),le=new Map(o.options._tools.map(J=>[J.name,J])),L=H?[...H].filter(J=>!p_.includes(J)&&le.has(J)).map(J=>le.get(J)):[],me=o.options._tools.filter(G);o.options.tools=[...oe,...L,...me]}else o.options._tools&&(o.options.tools=o.options._tools,delete o.options._tools);e=wie(e);let{messages:c,wasCompacted:l}=await Xcr(e,o);if(l){e=c;for(let H of e)yield H}lp("session:startup",{agentId:o.agentId,messages:e.length,timestamp:Date.now(),context:r||{}});let u=e.filter(H=>H.type==="user").pop();if(u&&u.message.content){let H=u.message.content;typeof H=="string"&&nBr(H).catch(G=>{be(G)})}kti(o.agentId,u,o.abortController.signal);let{systemPrompt:d,reminders:p}=await _lr(t,r,{agentId:o.agentId,permissionMode:o.options?.permissionMode,tools:o.options.tools,allTools:o.options._tools??o.options.tools,lazyToolMode:o.lazyToolMode},e),f=Je.getInQueryContext()[yD];if(f&&f.filePath&&!Je.getInQueryContext().open_in_ide&&(yield nC("File opened in IDE: "+f.filePath),Je.getInQueryContext().open_in_ide=!0),!o.agentName){let H=await Us.takeMailInbox(Us.getCurrentTeamName(),o.agentName||_x);if(H&&H.length>0){let G=Us.formatMessagesForContext(H),oe=It([{type:"text",text:G}]);yield oe,e.push(oe)}}let h=Je.getSessionContext(o.agentId).takePendingPrompts();if(h&&h.length>0){let H=jQr(h.join(`
3733
- `));yield H,e.push(H)}let _=Mti(e,p);function T(){return tl(Dg.applyToMessages(MBr(of(e))),d,o.options.tools,o.abortController.signal,{dangerouslySkipPermissions:o.options.dangerouslySkipPermissions??!1,model:o.options.slowAndCapableModel,prependCLISysprompt:!0,agentId:o.agentId,thinking:o.options.thinking},o)}let y=await vti(o,T,i);if(y.message===null){yield Sr(dl);return}let C=y.message;if(process.env[H6]==="true")try{C.message.content=C.message.content.map(H=>{if(H.type==="tool_use"){let G=o.options.tools.find(oe=>oe.name===H.name);if(G.isMcp?.()){let oe=G.inputSchema.safeParse(H.input);return oe.success?H.input=oe.data:(re("\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u975E\u6CD5\uFF0C\u9700\u8981\u8FDB\u884C\u4FEE\u590D "+H.input),H.input=QQr(H.input)),H}else if(G?.isFixSchema?.()){let oe=G.inputSchema.safeParse(H.input);return oe.success&&(H.input=oe.data),H}}return H})}catch(H){re(`Error in fixing tool input schema: ${H}`)}let R=y.shouldSkipPermissionCheck,O=await Pi();uBr([...e,C],t,r,O,o,o.agentId?"subagent":"repl_main_thread").catch(H=>{be(H)}),yield C;let w=C.message.content.filter(H=>H.type==="tool_use");if(!w.length)return;let U=await q8t(w,o.agentId);if(U)for(let H of U)yield H;o={...o};let $=[];for await(let H of xti(w,C,n,o,R,e))yield H,H.type==="user"&&$.push(H);if(o.abortController.signal.aborted){let H=new Set($.flatMap(G=>G.message.content.filter(oe=>oe.type==="tool_result").map(oe=>oe.tool_use_id)));for(let G of w)if(!H.has(G.id)){let oe=It([T0e(G.id)]);yield oe,$.push(oe)}yield Sr(b3);return}let P=$.sort((H,G)=>{let oe=w.findIndex(L=>L.id===H.message.content[0].id),le=w.findIndex(L=>L.id===G.message.content[0].id);return oe-le});Dti(e,_),yield*await NE([...e,C,...P],t,r,n,o,i)}async function*xti(e,t,r,n,o,i){let s=new o_e;s.setAbortSignal(n.abortController.signal);for(let a of e){let c=new r_e,{toolName:l,isProxyCall:u}=zQr(a,n),d=WQr(n,l,u);d?(c.sync=!d.isReadOnly(),c.toolName=d.name):c.sync=!0,c.callable=()=>Nti(a,new Set(e.map(p=>p.id)),t,r,n,o,i),s.addTask(c)}for await(let a of s.getResult())yield a}function zQr(e,t){let r=e.input??{};return t.lazyToolMode==="proxy"&&e.name===bc&&(r.action??"call")==="call"&&r.name?{toolName:String(r.name),toolInput:r.input??{},isProxyCall:!0}:{toolName:e.name,toolInput:r,isProxyCall:!1}}function WQr(e,t,r){return e.options.tools.find(n=>n.name===t)??(r?e.options._tools?.find(n=>n.name===t):void 0)}async function*Nti(e,t,r,n,o,i,s){try{let{toolName:a,toolInput:c,isProxyCall:l}=zQr(e,o),u=WQr(o,a,l);if(!u){Qe("tengu_tool_use_error",{error:`No such tool available: ${a}`,messageID:r.message.id,toolName:a,toolUseID:e.id});let p=o.lazyToolMode==="proxy",f=o.lazyToolMode==="loading",h=o.options._tools?.some(_=>_.name===a)??!1;yield It([{type:"tool_result",content:p&&h?`Error: No such tool available: ${a}. Use ProxyTool({action:'describe'}) to view available tools.`:f&&h?`Error: No such tool available: ${a}, Use the ToolLoader to load it`:`Error: No such tool available: ${a}`,is_error:!0,tool_use_id:e.id}]);return}let d=c;try{if(o.abortController.signal.aborted){Qe("tengu_tool_use_cancelled",{toolName:u.name,toolUseID:e.id}),yield It([T0e(e.id)]);return}for await(let p of wti(u,e.id,t,d,o,n,r,i,s))yield p}catch(p){let f=pot(p);be(p),yield It([{type:"tool_result",content:`call tool ${e.id} error ${f} `,is_error:!0,tool_use_id:e.id}])}}catch(a){let c=pot(a);yield It([{type:"tool_result",content:`call tool ${e.id} error ${c} `,is_error:!0,tool_use_id:e.id}])}}function Oti(e,t){switch(e){case Io:{let{command:r,timeout:n,run_in_background:o}=Io.inputSchema.parse(t);return{command:r.replace(`cd ${Pe()} && `,""),...n?{timeout:n}:{},...o!==void 0?{run_in_background:o}:{}}}default:return t}}async function*wti(e,t,r,n,o,i,s,a,c){let l=e.inputSchema.safeParse(n);if(!l.success){Qe("tengu_tool_use_error",{error:`InputValidationError: ${l.error.message}`,messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200)});let y=o.lazyToolMode==="proxy"?` Use ProxyTool({action:'describe', name:'${e.name}'}) to view the correct parameter structure before retrying.`:"";yield It([{type:"tool_result",content:`InputValidationError: ${l.error.message}${y}`,is_error:!0,tool_use_id:t}]);return}let u=Oti(e,n),d=await e.validateInput?.(u,c&&c.length>0?{...o,historyMessages:c}:o);if(d?.result===!1){Qe("tengu_tool_use_error",{error:d?.message.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200),...d?.meta??{}}),yield It([{type:"tool_result",content:d.message,is_error:!0,tool_use_id:t}]);return}let p=new pJ(o.hookContext?.hooks),f=Je.getSessionContext(o.agentId).getSessionId(),g={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PreToolUse",tool_name:e.name,tool_input:u,tool_use_id:t},h={hookWarning:null,forceCheck:!1},_=await p.execute(g);if(_){if(_.systemMessage&&!_.suppressOutput&&(yield K0(t,r,Sr(_.systemMessage),[],[],{multiline:!1,freeze:!0})),_.continue===!1){Qe("tengu_tool_use_blocked_by_hook",{toolName:e.name,toolUseID:t,reason:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook"}),yield It([{type:"tool_result",content:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="deny"){Qe("tengu_tool_use_denied_by_hook",{toolName:e.name,toolUseID:t,reason:_.hookSpecificOutput.permissionDecisionReason||"Denied by PreToolUse hook"}),yield It([{type:"tool_result",content:_.hookSpecificOutput.permissionDecisionReason||"Tool execution denied by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="ask"?(a=!1,h.forceCheck=!0):_.hookSpecificOutput?.permissionDecision==="allow"&&(yield K0(t,r,Sr(_.hookSpecificOutput.permissionDecisionReason||"Tool execution allowed by PreToolUse hook"),[],[],{multiline:!1,freeze:!0})),_.hookSpecificOutput?.updatedInput)for(let y in _.hookSpecificOutput.updatedInput)y in u&&(u[y]=_.hookSpecificOutput.updatedInput[y]);h.hookWarning=`Hook PreToolUse:${e.name} requires confirmation for this command:${_.hookSpecificOutput.permissionDecisionReason}`}let T=a?{result:!0}:await i(e,u,o,s,t,h,c);if(T.result===!1){yield It([{type:"tool_result",content:T.message,is_error:!0,tool_use_id:t}]);return}try{o.currentToolUseID=t;let y=e.call(u,c&&c.length>0?{...o,historyMessages:c}:o,i);for await(let{value:C,aborted:R}of iBr(y,o.abortController.signal)){if(R){rc.abortResponse(t);let O=new G5(o.hookContext?.hooks),w={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:"User interrupted the tool execution",is_interrupt:!0};O.execute(w).catch(U=>{re("PostToolUseFailure hook error during interrupt:",U)}),yield It([T0e(t)]);return}switch(C.type){case"result":Qe("tengu_tool_use_success",{messageID:s.message.id,toolName:e.name});let O=new fJ(o.hookContext?.hooks),w={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUse",tool_name:e.name,tool_input:u,tool_response:C.data||{},tool_use_id:t},U=await O.execute(w);U&&U.decision==="block"&&(yield K0(t,r,Sr(U.reason?`PostToolUse:Read hook blocking error:${U.reason}`:"Tool execution blocked by PostToolUse hook"),[],[],{multiline:!1,freeze:!0}));let $="";if(U&&U.hookSpecificOutput?.additionalContext&&($=`<system-reminder>
3732
+ `));yield H,e.push(H)}let _=Mti(e,p);function T(){return tl(Dg.applyToMessages(MBr(of(e))),d,o.options.tools,o.abortController.signal,{dangerouslySkipPermissions:o.options.dangerouslySkipPermissions??!1,model:o.options.slowAndCapableModel,prependCLISysprompt:!0,agentId:o.agentId,thinking:o.options.thinking},o)}let y=await vti(o,T,i);if(y.message===null){yield Sr(dl);return}let C=y.message;if(process.env[H6]==="true")try{C.message.content=C.message.content.map(H=>{if(H.type==="tool_use"){let G=o.options.tools.find(oe=>oe.name===H.name);if(G.isMcp?.()){let oe=G.inputSchema.safeParse(H.input);return oe.success?H.input=oe.data:(re("\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u975E\u6CD5\uFF0C\u9700\u8981\u8FDB\u884C\u4FEE\u590D "+H.input),H.input=QQr(H.input)),H}else if(G?.isFixSchema?.()){let oe=G.inputSchema.safeParse(H.input);return oe.success&&(H.input=oe.data),H}}return H})}catch(H){re(`Error in fixing tool input schema: ${H}`)}let R=y.shouldSkipPermissionCheck,O=await Pi();uBr([...e,C],t,r,O,o,o.agentId?"subagent":"repl_main_thread").catch(H=>{be(H)}),yield C;let w=C.message.content.filter(H=>H.type==="tool_use");if(!w.length)return;let U=await q8t(w,o.agentId);if(U)for(let H of U)yield H;o={...o};let $=[];for await(let H of xti(w,C,n,o,R,e))yield H,H.type==="user"&&$.push(H);if(o.abortController.signal.aborted){let H=new Set($.flatMap(G=>G.message.content.filter(oe=>oe.type==="tool_result").map(oe=>oe.tool_use_id)));for(let G of w)if(!H.has(G.id)){let oe=It([T0e(G.id)]);yield oe,$.push(oe)}yield Sr(b3);return}let P=$.sort((H,G)=>{let oe=w.findIndex(L=>L.id===H.message.content[0].id),le=w.findIndex(L=>L.id===G.message.content[0].id);return oe-le});Dti(e,_),yield*await NE([...e,C,...P],t,r,n,o,i)}async function*xti(e,t,r,n,o,i){let s=new o_e;s.setAbortSignal(n.abortController.signal);for(let a of e){let c=new r_e,{toolName:l,isProxyCall:u}=zQr(a,n),d=WQr(n,l,u);d?(c.sync=!d.isReadOnly(),c.toolName=d.name):c.sync=!0,c.callable=()=>Nti(a,new Set(e.map(p=>p.id)),t,r,n,o,i),s.addTask(c)}for await(let a of s.getResult())yield a}function zQr(e,t){let r=e.input??{};return t.lazyToolMode==="proxy"&&e.name===bc&&(r.action??"call")==="call"&&r.name?{toolName:String(r.name),toolInput:r.input??{},isProxyCall:!0}:{toolName:e.name,toolInput:r,isProxyCall:!1}}function WQr(e,t,r){return e.options.tools.find(n=>n.name===t)??(r?e.options._tools?.find(n=>n.name===t):void 0)}async function*Nti(e,t,r,n,o,i,s){try{let{toolName:a,toolInput:c,isProxyCall:l}=zQr(e,o),u=WQr(o,a,l);if(!u){Qe("tengu_tool_use_error",{error:`No such tool available: ${a}`,messageID:r.message.id,toolName:a,toolUseID:e.id});let p=o.lazyToolMode==="proxy",f=o.lazyToolMode==="loading",h=o.options._tools?.some(_=>_.name===a)??!1;yield It([{type:"tool_result",content:p&&h?`Error: No such tool available: ${a}. Use ProxyTool({action:'load'}) to view available tools.`:f&&h?`Error: No such tool available: ${a}, Use the ToolLoader to load it`:`Error: No such tool available: ${a}`,is_error:!0,tool_use_id:e.id}]);return}let d=c;try{if(o.abortController.signal.aborted){Qe("tengu_tool_use_cancelled",{toolName:u.name,toolUseID:e.id}),yield It([T0e(e.id)]);return}for await(let p of wti(u,e.id,t,d,o,n,r,i,s))yield p}catch(p){let f=pot(p);be(p),yield It([{type:"tool_result",content:`call tool ${e.id} error ${f} `,is_error:!0,tool_use_id:e.id}])}}catch(a){let c=pot(a);yield It([{type:"tool_result",content:`call tool ${e.id} error ${c} `,is_error:!0,tool_use_id:e.id}])}}function Oti(e,t){switch(e){case Io:{let{command:r,timeout:n,run_in_background:o}=Io.inputSchema.parse(t);return{command:r.replace(`cd ${Pe()} && `,""),...n?{timeout:n}:{},...o!==void 0?{run_in_background:o}:{}}}default:return t}}async function*wti(e,t,r,n,o,i,s,a,c){let l=e.inputSchema.safeParse(n);if(!l.success){Qe("tengu_tool_use_error",{error:`InputValidationError: ${l.error.message}`,messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200)});let y=o.lazyToolMode==="proxy"?` Use ProxyTool({action:'load', name:'${e.name}'}) to view the correct parameter structure before retrying.`:"";yield It([{type:"tool_result",content:`InputValidationError: ${l.error.message}${y}`,is_error:!0,tool_use_id:t}]);return}let u=Oti(e,n),d=await e.validateInput?.(u,c&&c.length>0?{...o,historyMessages:c}:o);if(d?.result===!1){Qe("tengu_tool_use_error",{error:d?.message.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200),...d?.meta??{}}),yield It([{type:"tool_result",content:d.message,is_error:!0,tool_use_id:t}]);return}let p=new pJ(o.hookContext?.hooks),f=Je.getSessionContext(o.agentId).getSessionId(),g={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PreToolUse",tool_name:e.name,tool_input:u,tool_use_id:t},h={hookWarning:null,forceCheck:!1},_=await p.execute(g);if(_){if(_.systemMessage&&!_.suppressOutput&&(yield K0(t,r,Sr(_.systemMessage),[],[],{multiline:!1,freeze:!0})),_.continue===!1){Qe("tengu_tool_use_blocked_by_hook",{toolName:e.name,toolUseID:t,reason:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook"}),yield It([{type:"tool_result",content:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="deny"){Qe("tengu_tool_use_denied_by_hook",{toolName:e.name,toolUseID:t,reason:_.hookSpecificOutput.permissionDecisionReason||"Denied by PreToolUse hook"}),yield It([{type:"tool_result",content:_.hookSpecificOutput.permissionDecisionReason||"Tool execution denied by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="ask"?(a=!1,h.forceCheck=!0):_.hookSpecificOutput?.permissionDecision==="allow"&&(yield K0(t,r,Sr(_.hookSpecificOutput.permissionDecisionReason||"Tool execution allowed by PreToolUse hook"),[],[],{multiline:!1,freeze:!0})),_.hookSpecificOutput?.updatedInput)for(let y in _.hookSpecificOutput.updatedInput)y in u&&(u[y]=_.hookSpecificOutput.updatedInput[y]);h.hookWarning=`Hook PreToolUse:${e.name} requires confirmation for this command:${_.hookSpecificOutput.permissionDecisionReason}`}let T=a?{result:!0}:await i(e,u,o,s,t,h,c);if(T.result===!1){yield It([{type:"tool_result",content:T.message,is_error:!0,tool_use_id:t}]);return}try{o.currentToolUseID=t;let y=e.call(u,c&&c.length>0?{...o,historyMessages:c}:o,i);for await(let{value:C,aborted:R}of iBr(y,o.abortController.signal)){if(R){rc.abortResponse(t);let O=new G5(o.hookContext?.hooks),w={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:"User interrupted the tool execution",is_interrupt:!0};O.execute(w).catch(U=>{re("PostToolUseFailure hook error during interrupt:",U)}),yield It([T0e(t)]);return}switch(C.type){case"result":Qe("tengu_tool_use_success",{messageID:s.message.id,toolName:e.name});let O=new fJ(o.hookContext?.hooks),w={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUse",tool_name:e.name,tool_input:u,tool_response:C.data||{},tool_use_id:t},U=await O.execute(w);U&&U.decision==="block"&&(yield K0(t,r,Sr(U.reason?`PostToolUse:Read hook blocking error:${U.reason}`:"Tool execution blocked by PostToolUse hook"),[],[],{multiline:!1,freeze:!0}));let $="";if(U&&U.hookSpecificOutput?.additionalContext&&($=`<system-reminder>
3734
3733
  PostToolUse:${e.name} hook additional context: ${U.hookSpecificOutput.additionalContext}
3735
3734
  </system-reminder>`),typeof C.resultForAssistant=="function"){let P=C.resultForAssistant(t);if($&&Array.isArray(P)){let H=P.find(G=>G.type==="tool_result");H&&(Array.isArray(H.content)||(H.content=[{type:"text",text:H.content}]),H.content.push({type:"text",text:$}))}yield It(P,{data:C.data,resultForAssistant:C.resultForAssistant})}else{let P=Iti(C.resultForAssistant),H=[];Array.isArray(P)?H.push(...P):P&&H.push({type:"text",text:P}),$&&H.push({type:"text",text:$}),yield It([{type:"tool_result",content:H,tool_use_id:t}],{data:C.data,resultForAssistant:C.resultForAssistant})}return;case"progress":Qe("tengu_tool_use_progress",{messageID:s.message.id,toolName:e.name}),yield K0(t,r,C.content,C.normalizedMessages,C.tools,C.meta)}}}catch(y){re("\u5DE5\u5177\u6267\u884C\u9519\u8BEF\uFF1A",y);let C=pot(y);Qe("tengu_tool_use_error",{error:C.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,1e3)});let R=new G5(o.hookContext?.hooks),O={session_id:f,transcript_path:xl(),cwd:Pe(),permission_mode:o.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:C,is_interrupt:!1},w=await R.execute(O),U="";w?.hookSpecificOutput?.additionalContext&&(U=`<system-reminder>
3736
3735
  PostToolUseFailure:${e.name} hook additional context: ${w.hookSpecificOutput.additionalContext}
package/hands.js CHANGED
@@ -400,7 +400,7 @@ GFS4: `),console.error(e)});Ms[_c]||(n0t=global[_c]||[],o0t(Ms,n0t),Ms.close=(fu
400
400
  ${t.text}
401
401
  </teammate-message>`).join(`
402
402
 
403
- `)},async clearReadMessages(e,t){return Bl(e,()=>{let n=qh(e,t).filter(i=>!i.read);R_(e,t,n),Zt(`Cleared read messages for ${t} in team ${e}`)})},async isSubagentShutdown(e,t){if(!await this.getTeam(e))return!1;let n=await this.getAllMessages(e,t),i=[];for(let l of n)if(l.read)try{let c=JSON.parse(l.text);c.type==="shutdown_request"&&c.requestId&&i.push(c.requestId)}catch{}if(i.length===0)return!1;let o=await this.getAllMessages(e,"team-lead"),s=[];for(let l of o)if(l.read)try{let c=JSON.parse(l.text);c.type==="shutdown_approved"&&c.requestId&&s.push(c.requestId)}catch{}return i.some(l=>s.includes(l))},async waitSubagentShutdown(e,t,r){let n=Date.now(),i=r*1e3;for(;!await this.isSubagentShutdown(e,t);)if(await IC(200),Date.now()-n>=i)return!1;return!0},async waitForNewMessages(e,t,r){let n=Date.now(),o=(await this.getAllMessages(e,t)).length;for(;Date.now()-n<r;)if(await IC(200),(await this.getAllMessages(e,t)).length>o)return!0;return!1},async getTeamMemberState(e,t){let r=await this.getMember(e,t);return r?r.state:null},async updateTeamMemberStateSafe(e,t,r){try{return{success:!0,member:await this.updateTeamMemberState(e,t,r)}}catch{return{success:!1}}},async updateTeamMemberState(e,t,r){return Bl(e,()=>{let n=$h(e);if(!n)throw new Error(`Team '${e}' not found`);let i=n.members.find(o=>o.name===t);if(!i)throw new Error(`Member '${t}' not found in team '${e}'`);return i.state=r,A9(e,n),h9(e,"member_state_updated"),Zt(`Updated member ${t} state to ${r} in team ${e}`),i})},async hasUnreadIdleNotificationFromMember(e,t){return Bl(e,()=>{let r=qh(e,"team-lead"),n=!1,i=null;for(let o of r)if(o.from===t)try{JSON.parse(o.text).type==="idle_notification"&&((!i||o.timestamp>i)&&(i=o.timestamp),o.read||(n=!0))}catch{}return{hasUnread:n,latestTimestamp:i}})}};wln();Aa=ln});import{existsSync as b9,readFileSync as Dln,writeFileSync as M0t,mkdirSync as Rln,unlinkSync as Nln,readdirSync as Bln}from"fs";import{join as qX,dirname as tve}from"path";import{homedir as Oln}from"os";function GX(){let e=process.env.HAWA_CODE_TASK_LIST_ID??Aa.getCurrentTeamName()??Mln();return qX(kln,e)}function Mln(){return Je.getSessionContext().getSessionId()||"default"}function rve(e){let t=GX();return qX(t,`${e}.json`)}function Qln(){let e=GX();return qX(e,".lock")}function zX(e){b9(e)||Rln(e,{recursive:!0})}async function rx(e){let t=Qln();zX(tve(t));let r=new eve(t),n=3e4,i=100,o=Date.now();for(;!await r.acquire();){if(Date.now()-o>=n)throw new Error("Timed out waiting for lock for task operation");await new Promise(s=>setTimeout(s,i))}try{return e()}finally{await r.release()}}function nx(e){let t=rve(e);if(!b9(t))return null;try{let r=Dln(t,"utf-8");return JSON.parse(r)}catch(r){return K(`Failed to read task ${e}:`,r),null}}function N_(e){let t=rve(e.id);zX(tve(t));let r={...e,updatedAt:Date.now(),createdAt:e.createdAt||Date.now()};M0t(t,JSON.stringify(r,null,2),"utf-8")}function k0t(e){let t=rve(e);if(b9(t))try{Nln(t)}catch(r){throw K(`Failed to delete task ${e}:`,r),r}}function Pln(){let e=GX();zX(e);let t=y9();if(t.length===0)return"0";let r=-1;for(let n of t){let i=parseInt(n.id,10);!isNaN(i)&&i>r&&(r=i)}return String(r+1)}function rO(e){gr.emit("task:change",{taskId:e})}function y9(){let e=GX();if(!b9(e))return[];try{let t=Bln(e),r=[];for(let n of t)if(n.endsWith(".json")&&n!==".lock"){let i=n.replace(".json",""),o=nx(i);o&&r.push(o)}return r.sort((n,i)=>{let o=parseInt(n.id,10),s=parseInt(i.id,10);return!isNaN(o)&&!isNaN(s)?o-s:n.id.localeCompare(i.id)}),r}catch(t){return K("Failed to list tasks:",t),[]}}var Q0t,kln,O0t,eve,Lu,ix=$(()=>{ke();fs();Pi();Q0t=X(UX(),1);zh();kln=qX(Oln(),".hcode","tasks"),O0t=3e4;eve=class{lockFilePath;releaseFunc=null;constructor(t){this.lockFilePath=t}async acquire(t=O0t){let r=Date.now();for(zX(tve(this.lockFilePath)),b9(this.lockFilePath)||M0t(this.lockFilePath,"");Date.now()-r<t;)try{return this.releaseFunc=await(0,Q0t.lock)(this.lockFilePath,{stale:O0t*2,realpath:!1}),Zt(`Lock acquired: ${this.lockFilePath}`),!0}catch(n){if(n.code==="ELOCKED")await new Promise(i=>setTimeout(i,100));else return K("Error acquiring lock:",n),!1}return!1}async release(){if(this.releaseFunc)try{await this.releaseFunc(),this.releaseFunc=null,Zt(`Lock released: ${this.lockFilePath}`)}catch(t){K("Error releasing lock:",t)}}};Lu={async createTask(e){return rx(()=>{let t={...e,id:Pln(),status:"pending",blocks:[],blockedBy:[],createdAt:Date.now(),updatedAt:Date.now()};return N_(t),rO(t.id),Zt(`Created task: ${t.id} - ${t.subject}`),t})},async getTask(e){return rx(()=>nx(e))},async updateTask(e,t){return rx(()=>{let r=nx(e);if(!r)return null;if(t.status==="deleted"){k0t(e);let i=y9();for(let o of i)o.blocks.includes(e)&&(o.blocks=o.blocks.filter(s=>s!==e),N_(o)),o.blockedBy.includes(e)&&(o.blockedBy=o.blockedBy.filter(s=>s!==e),N_(o));return rO(e),Zt(`Deleted task via update: ${e}`),null}let n={...r,...t,id:r.id,createdAt:r.createdAt,updatedAt:Date.now()};return N_(n),rO(e),Zt(`Updated task: ${e}`),n})},async deleteTask(e){return rx(()=>{if(!nx(e))return!1;k0t(e);let r=y9();for(let n of r)n.blocks.includes(e)&&(n.blocks=n.blocks.filter(i=>i!==e),N_(n)),n.blockedBy.includes(e)&&(n.blockedBy=n.blockedBy.filter(i=>i!==e),N_(n));return rO(e),Zt(`Deleted task: ${e}`),!0})},async listTasks(){return rx(()=>y9())},async setTaskDependencies(e,t,r){return rx(()=>{let n=nx(e);return n?(t!==void 0&&(n.blocks=t),r!==void 0&&(n.blockedBy=r),n.updatedAt=Date.now(),N_(n),rO(e),n):null})},async addBlock(e,t){return rx(()=>{let r=nx(e),n=nx(t);return!r||!n?!1:(r.blocks.includes(t)||(r.blocks.push(t),r.updatedAt=Date.now(),N_(r)),n.blockedBy.includes(e)||(n.blockedBy.push(e),n.updatedAt=Date.now(),N_(n)),rO(e),!0)})},async getAvailableTasks(){return(await this.listTasks()).filter(t=>t.status==="pending"&&!t.owner&&t.blockedBy.length===0)},async getTaskStatistics(){let e=await this.listTasks();return{total:e.length,pending:e.filter(t=>t.status==="pending").length,inProgress:e.filter(t=>t.status==="in_progress").length,completed:e.filter(t=>t.status==="completed").length,blocked:e.filter(t=>t.blockedBy.length>0).length}},listTasksSync(){return y9()}}});var P0t={};ws(P0t,{emitReminderEvent:()=>yc,generateFileChangeReminder:()=>Fln,generateSystemReminders:()=>ive,getReminderSessionState:()=>Uln,resetReminderSession:()=>iO,systemReminderService:()=>nO});function Lln(){return it.isArchiveToolUseInputsEnable()}var nve,nO,ive,Fln,yc,iO,Uln,Vg=$(async()=>{l9();ke();TTe();Yg();await TX();Pi();Id();He();w_();Kv();ix();ar();zh();Er();nve=class{sessionState={lastTodoUpdate:0,lastFileAccess:0,sessionStartTime:Date.now(),remindersSent:new Set,contextPresent:!1,reminderCount:0,config:{todoEmptyReminder:!0,securityReminder:!0,performanceReminder:!0,maxRemindersPerSession:10}};eventDispatcher=new Map;reminderCache=new Map;constructor(){this.setupEventDispatcher()}async generateReminders(t=!1,r){this.sessionState.contextPresent=t;let{agentId:n,permissionMode:i,tools:o,allTools:s,lazyToolMode:a,contextInfo:l}=r||{};if(!t)return[];if(this.sessionState.reminderCount>=this.sessionState.config.maxRemindersPerSession)return[];let c=[],u=Date.now(),f=[()=>this.dispatchTaskEvent(n,o),()=>this.dispatchTodoEvent(n,o),()=>this.dispatchSecurityEvent(),()=>this.dispatchPerformanceEvent(n),()=>this.getMentionReminders(),()=>this.getSelectionChanged(n),()=>this.getPlanMode(n,i),()=>this.getLSPServer(o),async()=>this.getToolLazy(n,o,s,a),()=>this.getSubagentStartContext(n),()=>this.getAsyncTaskReminders(n),()=>this.getSessionStartContext(),()=>this.getRecalledMemories(n),async()=>this.getAgentTeamReminder(n),async()=>this.getContextOptimizationReminder(o,s,l,a)];for(let g of f){let m=await g();if(m){let A=Array.isArray(m)?m:[m];c.push(...A),this.sessionState.reminderCount+=A.length}}return c.length>0&&Et("system_reminder_batch",{count:String(c.length),types:c.map(g=>g.type).join(","),priorities:c.map(g=>g.priority).join(","),categories:c.map(g=>g.category).join(","),sessionCount:String(this.sessionState.reminderCount),agentId:n||"default",timestamp:String(u)}),c}dispatchTaskEvent(t,r){if(!it.isTasksEnable()||![ic,vf,Tu,oc].every(a=>r?.some(l=>l.name===a)))return null;let o=Lu.listTasksSync(),s=Date.now();if(o.length===0)return this.createReminderMessage("task","task","medium","The task tools haven't been used recently. If you're working on tasks that would benefit from tracking progress, consider using TaskCreate to add new tasks and TaskUpdate to update task status (set to in_progress when starting, completed when done). Also consider cleaning up the task list if it has become stale. Only use these if relevant to the current work. This is just a gentle reminder - ignore if not applicable. Make sure that you NEVER mention this reminder to the user.",s);{let a=o.filter(g=>g.status==="pending"),l=o.filter(g=>g.status==="in_progress"),c=o.filter(g=>g.status==="completed"),f=`Here are the existing tasks:
403
+ `)},async clearReadMessages(e,t){return Bl(e,()=>{let n=qh(e,t).filter(i=>!i.read);R_(e,t,n),Zt(`Cleared read messages for ${t} in team ${e}`)})},async isSubagentShutdown(e,t){if(!await this.getTeam(e))return!1;let n=await this.getAllMessages(e,t),i=[];for(let l of n)if(l.read)try{let c=JSON.parse(l.text);c.type==="shutdown_request"&&c.requestId&&i.push(c.requestId)}catch{}if(i.length===0)return!1;let o=await this.getAllMessages(e,"team-lead"),s=[];for(let l of o)if(l.read)try{let c=JSON.parse(l.text);c.type==="shutdown_approved"&&c.requestId&&s.push(c.requestId)}catch{}return i.some(l=>s.includes(l))},async waitSubagentShutdown(e,t,r){let n=Date.now(),i=r*1e3;for(;!await this.isSubagentShutdown(e,t);)if(await IC(200),Date.now()-n>=i)return!1;return!0},async waitForNewMessages(e,t,r){let n=Date.now(),o=(await this.getAllMessages(e,t)).length;for(;Date.now()-n<r;)if(await IC(200),(await this.getAllMessages(e,t)).length>o)return!0;return!1},async getTeamMemberState(e,t){let r=await this.getMember(e,t);return r?r.state:null},async updateTeamMemberStateSafe(e,t,r){try{return{success:!0,member:await this.updateTeamMemberState(e,t,r)}}catch{return{success:!1}}},async updateTeamMemberState(e,t,r){return Bl(e,()=>{let n=$h(e);if(!n)throw new Error(`Team '${e}' not found`);let i=n.members.find(o=>o.name===t);if(!i)throw new Error(`Member '${t}' not found in team '${e}'`);return i.state=r,A9(e,n),h9(e,"member_state_updated"),Zt(`Updated member ${t} state to ${r} in team ${e}`),i})},async hasUnreadIdleNotificationFromMember(e,t){return Bl(e,()=>{let r=qh(e,"team-lead"),n=!1,i=null;for(let o of r)if(o.from===t)try{JSON.parse(o.text).type==="idle_notification"&&((!i||o.timestamp>i)&&(i=o.timestamp),o.read||(n=!0))}catch{}return{hasUnread:n,latestTimestamp:i}})}};wln();Aa=ln});import{existsSync as b9,readFileSync as Dln,writeFileSync as M0t,mkdirSync as Rln,unlinkSync as Nln,readdirSync as Bln}from"fs";import{join as qX,dirname as tve}from"path";import{homedir as Oln}from"os";function GX(){let e=process.env.HAWA_CODE_TASK_LIST_ID??Aa.getCurrentTeamName()??Mln();return qX(kln,e)}function Mln(){return Je.getSessionContext().getSessionId()||"default"}function rve(e){let t=GX();return qX(t,`${e}.json`)}function Qln(){let e=GX();return qX(e,".lock")}function zX(e){b9(e)||Rln(e,{recursive:!0})}async function rx(e){let t=Qln();zX(tve(t));let r=new eve(t),n=3e4,i=100,o=Date.now();for(;!await r.acquire();){if(Date.now()-o>=n)throw new Error("Timed out waiting for lock for task operation");await new Promise(s=>setTimeout(s,i))}try{return e()}finally{await r.release()}}function nx(e){let t=rve(e);if(!b9(t))return null;try{let r=Dln(t,"utf-8");return JSON.parse(r)}catch(r){return K(`Failed to read task ${e}:`,r),null}}function N_(e){let t=rve(e.id);zX(tve(t));let r={...e,updatedAt:Date.now(),createdAt:e.createdAt||Date.now()};M0t(t,JSON.stringify(r,null,2),"utf-8")}function k0t(e){let t=rve(e);if(b9(t))try{Nln(t)}catch(r){throw K(`Failed to delete task ${e}:`,r),r}}function Pln(){let e=GX();zX(e);let t=y9();if(t.length===0)return"0";let r=-1;for(let n of t){let i=parseInt(n.id,10);!isNaN(i)&&i>r&&(r=i)}return String(r+1)}function rO(e){gr.emit("task:change",{taskId:e})}function y9(){let e=GX();if(!b9(e))return[];try{let t=Bln(e),r=[];for(let n of t)if(n.endsWith(".json")&&n!==".lock"){let i=n.replace(".json",""),o=nx(i);o&&r.push(o)}return r.sort((n,i)=>{let o=parseInt(n.id,10),s=parseInt(i.id,10);return!isNaN(o)&&!isNaN(s)?o-s:n.id.localeCompare(i.id)}),r}catch(t){return K("Failed to list tasks:",t),[]}}var Q0t,kln,O0t,eve,Lu,ix=$(()=>{ke();fs();Pi();Q0t=X(UX(),1);zh();kln=qX(Oln(),".hcode","tasks"),O0t=3e4;eve=class{lockFilePath;releaseFunc=null;constructor(t){this.lockFilePath=t}async acquire(t=O0t){let r=Date.now();for(zX(tve(this.lockFilePath)),b9(this.lockFilePath)||M0t(this.lockFilePath,"");Date.now()-r<t;)try{return this.releaseFunc=await(0,Q0t.lock)(this.lockFilePath,{stale:O0t*2,realpath:!1}),Zt(`Lock acquired: ${this.lockFilePath}`),!0}catch(n){if(n.code==="ELOCKED")await new Promise(i=>setTimeout(i,100));else return K("Error acquiring lock:",n),!1}return!1}async release(){if(this.releaseFunc)try{await this.releaseFunc(),this.releaseFunc=null,Zt(`Lock released: ${this.lockFilePath}`)}catch(t){K("Error releasing lock:",t)}}};Lu={async createTask(e){return rx(()=>{let t={...e,id:Pln(),status:"pending",blocks:[],blockedBy:[],createdAt:Date.now(),updatedAt:Date.now()};return N_(t),rO(t.id),Zt(`Created task: ${t.id} - ${t.subject}`),t})},async getTask(e){return rx(()=>nx(e))},async updateTask(e,t){return rx(()=>{let r=nx(e);if(!r)return null;if(t.status==="deleted"){k0t(e);let i=y9();for(let o of i)o.blocks.includes(e)&&(o.blocks=o.blocks.filter(s=>s!==e),N_(o)),o.blockedBy.includes(e)&&(o.blockedBy=o.blockedBy.filter(s=>s!==e),N_(o));return rO(e),Zt(`Deleted task via update: ${e}`),null}let n={...r,...t,id:r.id,createdAt:r.createdAt,updatedAt:Date.now()};return N_(n),rO(e),Zt(`Updated task: ${e}`),n})},async deleteTask(e){return rx(()=>{if(!nx(e))return!1;k0t(e);let r=y9();for(let n of r)n.blocks.includes(e)&&(n.blocks=n.blocks.filter(i=>i!==e),N_(n)),n.blockedBy.includes(e)&&(n.blockedBy=n.blockedBy.filter(i=>i!==e),N_(n));return rO(e),Zt(`Deleted task: ${e}`),!0})},async listTasks(){return rx(()=>y9())},async setTaskDependencies(e,t,r){return rx(()=>{let n=nx(e);return n?(t!==void 0&&(n.blocks=t),r!==void 0&&(n.blockedBy=r),n.updatedAt=Date.now(),N_(n),rO(e),n):null})},async addBlock(e,t){return rx(()=>{let r=nx(e),n=nx(t);return!r||!n?!1:(r.blocks.includes(t)||(r.blocks.push(t),r.updatedAt=Date.now(),N_(r)),n.blockedBy.includes(e)||(n.blockedBy.push(e),n.updatedAt=Date.now(),N_(n)),rO(e),!0)})},async getAvailableTasks(){return(await this.listTasks()).filter(t=>t.status==="pending"&&!t.owner&&t.blockedBy.length===0)},async getTaskStatistics(){let e=await this.listTasks();return{total:e.length,pending:e.filter(t=>t.status==="pending").length,inProgress:e.filter(t=>t.status==="in_progress").length,completed:e.filter(t=>t.status==="completed").length,blocked:e.filter(t=>t.blockedBy.length>0).length}},listTasksSync(){return y9()}}});var P0t={};ws(P0t,{emitReminderEvent:()=>yc,generateFileChangeReminder:()=>Fln,generateSystemReminders:()=>ive,getReminderSessionState:()=>Uln,resetReminderSession:()=>iO,systemReminderService:()=>nO});function Lln(){return it.isArchiveToolUseInputsEnable()}var nve,nO,ive,Fln,yc,iO,Uln,Vg=$(async()=>{l9();ke();TTe();Yg();await TX();Pi();Id();He();w_();Kv();ix();ar();zh();Er();nve=class{sessionState={lastTodoUpdate:0,lastFileAccess:0,sessionStartTime:Date.now(),remindersSent:new Set,contextPresent:!1,reminderCount:0,config:{todoEmptyReminder:!0,securityReminder:!0,performanceReminder:!0,maxRemindersPerSession:10}};eventDispatcher=new Map;reminderCache=new Map;constructor(){this.setupEventDispatcher()}async generateReminders(t=!1,r){this.sessionState.contextPresent=t;let{agentId:n,permissionMode:i,tools:o,allTools:s,lazyToolMode:a,contextInfo:l}=r||{};if(!t)return[];if(this.sessionState.reminderCount>=this.sessionState.config.maxRemindersPerSession)return[];let c=[],u=Date.now(),f=[()=>this.dispatchTaskEvent(n,o),()=>this.dispatchTodoEvent(n,o),()=>this.dispatchSecurityEvent(),()=>this.dispatchPerformanceEvent(n),()=>this.getMentionReminders(),()=>this.getSelectionChanged(n),()=>this.getPlanMode(n,i),()=>this.getLSPServer(o),()=>this.getSubagentStartContext(n),()=>this.getAsyncTaskReminders(n),()=>this.getSessionStartContext(),()=>this.getRecalledMemories(n),async()=>this.getAgentTeamReminder(n),async()=>this.getContextOptimizationReminder(o,s,l,a),async()=>this.getToolLazy(n,o,s,a)];for(let g of f){let m=await g();if(m){let A=Array.isArray(m)?m:[m];c.push(...A),this.sessionState.reminderCount+=A.length}}return c.length>0&&Et("system_reminder_batch",{count:String(c.length),types:c.map(g=>g.type).join(","),priorities:c.map(g=>g.priority).join(","),categories:c.map(g=>g.category).join(","),sessionCount:String(this.sessionState.reminderCount),agentId:n||"default",timestamp:String(u)}),c}dispatchTaskEvent(t,r){if(!it.isTasksEnable()||![ic,vf,Tu,oc].every(a=>r?.some(l=>l.name===a)))return null;let o=Lu.listTasksSync(),s=Date.now();if(o.length===0)return this.createReminderMessage("task","task","medium","The task tools haven't been used recently. If you're working on tasks that would benefit from tracking progress, consider using TaskCreate to add new tasks and TaskUpdate to update task status (set to in_progress when starting, completed when done). Also consider cleaning up the task list if it has become stale. Only use these if relevant to the current work. This is just a gentle reminder - ignore if not applicable. Make sure that you NEVER mention this reminder to the user.",s);{let a=o.filter(g=>g.status==="pending"),l=o.filter(g=>g.status==="in_progress"),c=o.filter(g=>g.status==="completed"),f=`Here are the existing tasks:
404
404
 
405
405
  ${o.map(g=>{let m=g.blockedBy.length>0?` \u203A blocked by #${g.blockedBy.join(", #")}`:"";return`#${g.id}. [${g.status}] ${g.subject}${m}`}).join(`
406
406
  `)}
@@ -484,9 +484,9 @@ ${l}. Members must communicate with each other using the ${jp} tool`;if(n){c+=`
484
484
  Warning: Team "${r}" has ${f.length} active ${g}, so it cannot be deleted.`}c+=`
485
485
 
486
486
  You don't need to keep checking on the team's tool progress\u2014members will notify you when they complete their tasks. Continue with other work or respond to the user instead`}return[this.createReminderMessage("agent_team","task","medium",c,s,!0)]}getContextOptimizationReminder(t,r,n,i){let o=it.isMessageArchivingEnable(),s=it.isMemoEnable();if(!o&&!s)return null;let a=r??t,l=o&&a?.some(I=>I.name===vu),c=s&&a?.some(I=>I.name===M0);if(!l&&!c)return null;let u=t?.some(I=>I.name===vu),f=t?.some(I=>I.name===M0),g=Date.now(),m=n?.percentUsed,A=.92*100,h=[],_=(I,w)=>i==="proxy"?`use ${I} via ${ja}({action:'call', name:'${I}'})`:w?`use ${I}`:`load ${I} with ${$c}`;l&&(Lln()?h.push(`${_(vu,!!u)} to archive tool_result messages (use "__tool_result__") and specific tool_use input fields (e.g. "content", "user.name") that are no longer needed for the current task. Do not archive results or input fields required for ongoing reasoning`):h.push(`${_(vu,!!u)} to archive tool_result messages (use "__tool_result__") that are no longer needed for the current task. Do not archive results required for ongoing reasoning`)),c&&h.push(`${_(M0,!!f)} to persist long analysis conclusions, plans, or error records to keep them out of the context window while remaining retrievable later`),l&&c&&h.push(`${vu} and ${M0} work together: archive obsolete tool_result messages, and persist long-term conclusions or plans to Memo so they stay retrievable outside the context window.`);let y="";m!==void 0?y=`Context usage is ${m}%. The system will automatically compact prior messages when usage reaches ${A}%. If the history contains a lot of content irrelevant to the current task, clean it up proactively even when context usage is low. Reduce context usage by: `:y="Reduce context usage by: ";let S=h.length===1?`${y}${h[0]}`:`${y}${h.map(I=>`- ${I}`).join(`
487
- `)}`;return this.createReminderMessage("message_archiving_context","performance","medium",S,g,!0)}async getToolLazy(t,r,n,i){let o=it.getLazyToolMode();if(o==="off"||i==="off"||i===void 0)return null;if(o==="proxy"&&i==="proxy"){let I=`\u4F7F\u7528 ${ja} \u8C03\u7528\u81EA\u5DF1\u7684\u5DE5\u5177\uFF0C\u5FC5\u987B\u83B7\u53D6\u5230\u5DE5\u5177\u7684\u53C2\u6570\u7ED3\u6784\u624D\u80FD\u8FDB\u884C\u5DE5\u5177\u8C03\u7528\u3002\u4E0D\u80FD\u901A\u8FC7 ${ja} \u8C03\u7528 ${jb} \u7684\u65B9\u6CD5\u3002
487
+ `)}`;return this.createReminderMessage("message_archiving_context","performance","medium",S,g,!0)}async getToolLazy(t,r,n,i){let o=it.getLazyToolMode();if(o==="off"||i==="off"||i===void 0)return null;if(o==="proxy"&&i==="proxy"){let I=`\u4F7F\u7528 ${ja} \u52A0\u8F7D\u81EA\u5DF1\u7684\u5DE5\u5177\u540E\u624D\u53EF\u4EE5\u8C03\u7528\uFF0C\u4E0D\u80FD\u901A\u8FC7 ${ja} \u8C03\u7528 ${jb} \u7684\u65B9\u6CD5\u3002
488
488
  \u4F7F\u7528 ${jb} \u8C03\u7528\u81EA\u5DF1\u7684\u65B9\u6CD5\uFF0C\u5982\u679C ${jb} \u65B9\u6CD5\u6CA1\u6709\u63D0\u4F9B output JSON schema\uFF0C\u901A\u8FC7\u8C03\u7528\u7ED3\u679C\u5206\u6790\u51FA output JSON schema\uFF0C\u53EF\u4EE5\u4FDD\u5B58\u4E0B\u6765\u4EE5\u4FBF\u540E\u7EED\u4F7F\u7528\u3002
489
- `;return[this.createReminderMessage("tool","general","high",I,Date.now(),!1)]}if(!(o==="loading"&&i==="loading"))return null;let s=n??await en.getTools(!1),a=r?.map(I=>I.name)??[],l=new Set(a),c=s.filter(I=>!Yp.includes(I.name)&&!l.has(I.name)).map(I=>I.name),u=s.some(I=>I.name===$c),f=s.some(I=>I.name===El),g=(process.env.HAWA_CODE_SHOW_LAZY_TOOL_METHOD+"").toLowerCase()==="true",m=u?`Load them with ${$c} if needed; call it in parallel with other tools when possible.`:"",A=u?`If a tool is not listed in <loaded_tools> or <default_tools>, do not use it directly; you should load it first. Load tools with ${$c} if needed; call it in parallel with other tools when possible.`:"",h=f?`Unload tools you no longer need with ${El}; call it in parallel with other tools when possible. You do not need to unload if you are returning results to the user.`:"",_=`Not yet loaded tools : ${c.length?c.join(", ")+". "+m:"none."} Loaded tools: ${a.length?a.join(", ")+". "+h:"none."}.`,y=`${c.length>0?A:""} ${a.length>0?h:""}.`,S=g?_:y;return[this.createReminderMessage("tool","general","high",S,Date.now(),g)]}getRecalledMemories(t){let n=Je.getQueryContext(t).recalledMemories;if(!n||n.length===0)return null;let i=Date.now(),s=`The following memories were recalled and may be relevant to the current task. Use them only if they are helpful:
489
+ `;return[this.createReminderMessage("tool","general","high",I,Date.now(),!0)]}if(!(o==="loading"&&i==="loading"))return null;let s=n??await en.getTools(!1),a=r?.map(I=>I.name)??[],l=new Set(a),c=s.filter(I=>!Yp.includes(I.name)&&!l.has(I.name)).map(I=>I.name),u=s.some(I=>I.name===$c),f=s.some(I=>I.name===El),g=(process.env.HAWA_CODE_SHOW_LAZY_TOOL_METHOD+"").toLowerCase()==="true",m=u?`Load them with ${$c} if needed; call it in parallel with other tools when possible.`:"",A=u?`If a tool is not listed in <loaded_tools> or <default_tools>, do not use it directly; you should load it first. Load tools with ${$c} if needed; call it in parallel with other tools when possible.`:"",h=f?`Unload tools you no longer need with ${El}; call it in parallel with other tools when possible. You do not need to unload if you are returning results to the user.`:"",_=`Not yet loaded tools : ${c.length?c.join(", ")+". "+m:"none."} Loaded tools: ${a.length?a.join(", ")+". "+h:"none."}.`,y=`${c.length>0?A:""} ${a.length>0?h:""}.`,S=g?_:y;return[this.createReminderMessage("tool","general","high",S,Date.now(),g)]}getRecalledMemories(t){let n=Je.getQueryContext(t).recalledMemories;if(!n||n.length===0)return null;let i=Date.now(),s=`The following memories were recalled and may be relevant to the current task. Use them only if they are helpful:
490
490
 
491
491
  ${n.map(a=>`## ${a.path.split(/[\\/]/).pop()||a.path}
492
492
  ${a.content}`).join(`
@@ -758,7 +758,7 @@ data: ${JSON.stringify(z)}
758
758
  `);a=Q.pop()||"";for(let z of Q){let Y=z.trim();if(!(!Y||Y==="data: [DONE]"))if(Y.startsWith("data: ")){let q=Y.slice(6);try{let G=JSON.parse(q);w(G)}catch(G){this.logger&&this.logger.error({err:G,line:Y},"Failed to parse Gemini SSE chunk")}}else try{let q=JSON.parse(Y);w(q)}catch{}}};(async()=>{try{for(;;){let{value:Q,done:z}=await s.read();if(z)break;a+=n.decode(Q,{stream:!0}),O()}I()}catch(Q){o.error(Q)}})()}})}convertGeminiResponseToAnthropic(t){this.logger&&this.logger.debug({response:t},"Original Gemini response");try{if(!t.candidates||!t.candidates[0])throw new Error("No candidates found in Gemini response");let r=t.candidates[0],n=[];r.content&&r.content.parts&&r.content.parts.forEach(o=>{if(o.text&&n.push({type:"text",text:o.text}),o.functionCall){let s=`toolu_${WB()}`,a=o.functionCall.thoughtSignature||o.functionCall.thought_signature||null;n.push({type:"tool_use",id:s,name:o.functionCall.name,input:o.functionCall.args||{},thought_signature:a})}}),r.groundingMetadata&&(this.logger&&this.logger.debug({groundingMetadata:r.groundingMetadata},"Processing grounding metadata"),r.groundingMetadata.webSearchQueries&&n.push({type:"text",text:`
759
759
 
760
760
  [Search queries used: ${r.groundingMetadata.webSearchQueries.join(", ")}]`}));let i={id:`msg_${Math.random().toString(36).slice(2)}`,type:"message",role:"assistant",model:t.modelVersion||"gemini",content:n,stop_reason:r.finishReason?r.finishReason==="STOP"&&n.some(o=>o.type==="tool_use")?"tool_use":this.mapGeminiFinishReason(r.finishReason):"end_turn",stop_sequence:null,usage:{input_tokens:t.usageMetadata?.promptTokenCount||0,output_tokens:t.usageMetadata?.candidatesTokenCount||0}};return this.logger&&this.logger.debug({result:i},"Conversion complete, final Anthropic response"),i}catch{throw lHr(`Provider error: ${JSON.stringify(t)}`,500,"provider_error")}}mapGeminiFinishReason(t){switch(t){case"STOP":return"end_turn";case"MAX_TOKENS":return"max_tokens";case"SAFETY":case"RECITATION":return"stop_sequence";default:return"end_turn"}}},gbe=new mbe;var Igt=X(bgt(),1);ar();fs();function Gg(e){return e?typeof e.entries=="function"?Object.fromEntries(e.entries()):{...e}:{}}function Cgt(e){let t=String(e?.["x-thinking-level"]??"medium").toLowerCase();return["off","low","medium","high"].includes(t)?t:"medium"}function Crn(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t}}function Srn(e,t){if(t==="off"){delete e.reasoning;return}e.reasoning={effort:t,summary:"auto"}}function Irn(e,t="chat"){let r={request:{},response:{},openai:{request:{},response:{}}};return r.request.model=e.request.body.model,r.request.messages=e.request.body.messages,r.request.system=e.request.body.system,r.response.content=e.response.body.content,r.response.usage=e.response.body?.usage,t==="responses"?(r.openai.request.model=e.openai.request.body.model,r.openai.request.input=e.openai.request.body.input,r.openai.response.output=e.openai.response.body?.output,r.openai.response.usage=e.openai.response.body?.usage):(r.openai.request.model=e.openai.request.body.model,r.openai.request.messages=e.openai.request.body.messages,r.openai.response.choices=e.openai.response.body.choices,r.openai.response.usage=e.openai.response.body?.usage),r}function j5(e,t,r){$z(t,e),qz(t,Irn(e,r),r)}function P2(e){let t=[],r=e.getReader(),n,i=new Promise(l=>n=l),o=!1,s=()=>{o||(o=!0,n(Buffer.concat(t).toString("utf8")))};return{stream:new ReadableStream({async pull(l){try{let{done:c,value:u}=await r.read();if(c){l.close(),s();return}t.push(u),l.enqueue(u)}catch(c){l.error(c),s()}},cancel(l){r.cancel(l).catch(()=>{}),s()}}),done:i}}function Y5(e){let t=new Headers(e);return t.delete("content-encoding"),t.delete("content-length"),t.delete("transfer-encoding"),t}function qIe(e,t,r,n,i){let o;try{o={type:"error",error:{type:"api_error",message:JSON.parse(i).error?.message??`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}catch{o={type:"error",error:{type:"api_error",message:`${e}: ${n}`,code:`${t}_${r}_ERROR`}}}return new Response(JSON.stringify(o),{status:r,statusText:n,headers:{"Content-Type":"application/json"}})}var Sgt=["/v1/messages"];function GIe(e){let t;try{typeof e=="string"?t=new Qv(e):e instanceof Qv?t=e:t=new Qv(e.url)}catch{return""}let r=t.pathname;for(let n of Sgt){let i=r.indexOf(n);if(i!==-1)return t.origin+r.slice(0,i)}return t.origin}function XZ(e,t){let r=typeof e=="string"?e:e instanceof Qv?e.toString():e.url,n;try{n=new Qv(r).pathname}catch{return!1}return Sgt.some(i=>n.includes(i))&&(t.method==="POST"||t.method==="post")}function Trn(e){return async(t,r)=>{if(!XZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await eJ.transformRequestOut(n),o=GIe(t)+"/chat/completions",s=Gg(r.headers),a=s.authorization??s.Authorization??"";Crn(i,Cgt(s));let l=await e(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:a},body:JSON.stringify(i),signal:r.signal});if(!l.ok){let _=await l.text();return K(`OpenAI Chat Completions API error: ${l.status}`,{url:o,errorResponse:_}),qIe("OpenAI Chat Completions API error","OPENROUTER",l.status,l.statusText,_)}let c=n.stream===!0,u=s["x-agent-id"],f={request:{url:o,method:r.method,headers:s,body:n},response:{status:l.status,statusText:l.statusText,headers:Gg(l.headers)},openai:{request:{body:i},response:{}}};if(!c){let _=await l.text(),y=new Response(_,{status:l.status,statusText:l.statusText,headers:Y5(l.headers)}),S=await eJ.transformResponseIn(y,n),I=await S.text();try{j5({...f,openai:{...f.openai,response:{body:JSON.parse(_)}},response:{...f.response,body:JSON.parse(I)}},u)}catch(w){K("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u975E\u6D41\u5F0F):",w)}return new Response(I,{status:S.status,statusText:S.statusText,headers:S.headers})}let g=P2(l.body),m=new Response(g.stream,{status:l.status,statusText:l.statusText,headers:Y5(l.headers)}),A=await eJ.transformResponseIn(m,n),h=P2(A.body);return Promise.all([g.done,h.done]).then(async([_,y])=>{try{j5({...f,openai:{...f.openai,response:{body:await Jot(_)}},response:{...f.response,body:await LU(y)}},u)}catch(S){K("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Chat \u6D41\u5F0F):"+S?.stack)}}).catch(_=>K("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Chat):"+_)),new Response(h.stream,{status:A.status,statusText:A.statusText,headers:A.headers})}}function vrn(e){return async(t,r)=>{if(!XZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=await tJ.transformRequestOut(n),o=Gg(r.headers);Srn(i,Cgt(o));let s=JSON.stringify(i),l=GIe(t)+"/responses",c=o.authorization??o.Authorization??"";if(!c)return new Response(JSON.stringify({type:"error",error:{type:"api_error",message:"Missing Authorization header",code:"RESPONSES_AUTH_MISSING"}}),{status:401,headers:{"Content-Type":"application/json"}});let u=await e(l,{method:"POST",headers:{"Content-Type":"application/json",Authorization:c,"x-api-key":c.replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal});if(!u.ok){let S=await u.text();return K(`OpenAI Responses API error: ${u.status} ${u.statusText}`,{url:l,status:u.status,errorResponse:S}),qIe("OpenAI Responses API error","RESPONSES",u.status,u.statusText,S)}let f=n.stream===!0,g=o["x-agent-id"],m={request:{url:l,method:r.method,headers:o,body:n},response:{status:u.status,statusText:u.statusText,headers:Gg(u.headers)},openai:{request:{body:i},response:{}}};if(!f){let S=await u.text(),I=new Response(S,{status:u.status,statusText:u.statusText,headers:Y5(u.headers)}),w=await tJ.transformResponseIn(I,n),O=await w.text();try{j5({...m,openai:{...m.openai,response:{body:JSON.parse(S)}},response:{...m.response,body:JSON.parse(O)}},g,"responses")}catch(Q){K("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u975E\u6D41\u5F0F):",Q)}return new Response(O,{status:w.status,statusText:w.statusText,headers:w.headers})}let A=P2(u.body),h=new Response(A.stream,{status:u.status,statusText:u.statusText,headers:Y5(u.headers)}),_=await tJ.transformResponseIn(h,n),y=P2(_.body);return Promise.all([A.done,y.done]).then(async([S,I])=>{try{j5({...m,openai:{...m.openai,response:{body:await Kot(S)}},response:{...m.response,body:await LU(I)}},g,"responses")}catch(w){K("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Responses \u6D41\u5F0F):"+w?.stack)}}).catch(S=>K("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Responses):"+S)),new Response(y.stream,{status:_.status,statusText:_.statusText,headers:_.headers})}}function xrn(e){return async(t,r)=>{if(!XZ(t,r))return e(t,r);let n=JSON.parse(r.body),i=Gg(r.headers),o=await gbe.transformRequestOut(n),s=JSON.stringify(o),a=GIe(t)+`/models/${n.model}:streamGenerateContent?alt=sse`,l=i.authorization??i.Authorization??"",c;try{c=await e(a,{method:"POST",headers:{"Content-Type":"application/json","x-goog-api-key":String(l).replace(/^Bearer\s+/i,"").trim()},body:s,signal:r.signal})}catch(y){throw K("gemini request error:",y),y}if(!c.ok){let y=await c.text();return K(`Gemini API error response: ${c.status} ${c.statusText}`,{url:a,status:c.status,errorResponse:y}),qIe("Gemini API error","Gemini",c.status,c.statusText,y)}let u=n.stream===!0,f=i["x-agent-id"],g={request:{url:a,method:r.method,headers:Gg(r.headers),body:n},response:{status:c.status,statusText:c.statusText,headers:Gg(c.headers)},openai:{request:{body:o},response:{}}},m=P2(c.body),A=new Response(m.stream,{status:c.status,statusText:c.statusText,headers:Y5(c.headers)}),h=await gbe.transformResponseIn(A),_=P2(h.body);return Promise.all([m.done,_.done]).then(async([y,S])=>{try{let I=u?Zot(y):JSON.parse(y),w=u?await LU(S):JSON.parse(S);j5({...g,openai:{...g.openai,response:{body:I}},response:{...g.response,body:w}},f)}catch(I){K("\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF(Gemini):"+I?.stack)}}).catch(y=>K("\u65E5\u5FD7\u805A\u5408\u9519\u8BEF(Gemini):"+y)),new Response(_.stream,{status:h.status,statusText:h.statusText,headers:h.headers})}}function wrn(e){return async(t,r)=>{if(!XZ(t,r))return e(t,r);let n=r.body;if(r.body)try{let f=JSON.parse(r.body);n=JSON.stringify(f)}catch{}let i=Gg(r.headers);["1","true"].includes(String(process.env.HAWA_CODE_X_API_KEY_DISABLED??"").toLowerCase())&&(delete i["x-api-key"],delete i["X-API-Key"]),["1","true"].includes(String(process.env.HAWA_CODE_AUTH_DISABLED??"").toLowerCase())&&(delete i.authorization,delete i.Authorization),delete i["content-length"];let a=await e(t,{method:r.method,headers:i,body:n,signal:r.signal});if(!a.ok){let f=await a.text();K(`API error response: ${a.status} ${a.statusText}`,{url:typeof t=="string"?t:t instanceof Qv?t.toString():t.url,status:a.status,errorResponse:f});let g;try{let m=JSON.parse(f);g={type:"error",error:{type:"api_error",message:m.error?.message||m.message||`API error: ${a.statusText}`,code:m.error?.code||m.code||`API_${a.status}_ERROR`}},m.error?.details&&(g.error.details=m.error.details)}catch{g={type:"error",error:{type:"api_error",message:`API error: ${a.statusText}`,code:`API_${a.status}_ERROR`}}}return new Response(JSON.stringify(g),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"application/json"}})}let l=a.clone(),c=!(Object.hasOwn(JSON.parse(n),"stream")&&!JSON.parse(n).stream),u={request:{url:typeof t=="string"?t:t instanceof Qv?t.toString():t.url,method:r.method,headers:Gg(r.headers),body:JSON.parse(n)},response:{status:a.status,statusText:a.statusText,headers:Gg(a.headers)}};return(async()=>{if(c){let m=await a.text();u.response.body=await LU(m)}else u.response.body=await a.json();let g=Gg(r.headers)["x-agent-id"];$z(g,u),qz(g,{request:u.request.body.messages,response:u.response.body.content,usage:u.response.body?.usage})})().catch(f=>K(`\u65E5\u5FD7\u89E3\u6790\u9519\u8BEF:
761
- Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var ZZ=null,$Ie=!1;function Drn(){ZZ=null,$Ie=!1}gr.on("proxy:changed",Drn);function Rrn(){if($Ie)return ZZ;if($Ie=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(ZZ=new Igt.ProxyAgent({uri:e}),Zt(`[proxy] using proxy: ${e}`)),ZZ}function Nrn(){let e=Rrn();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function eX(e){let t=e||process.env.API_TYPE,r=Nrn();switch(t){case"openai":return Trn(r);case"openai-responses":return vrn(r);case"gemini":return xrn(r);default:return wrn(r)}}_h();var Mrn=X(pe(),1);function Tgt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Brn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Brn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Orn(t)?0:krn(t)?2:1}function Orn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function krn(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function b_(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function cS(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();fs();var gc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function tX(e,t){gc.totalCost+=e,gc.totalAPIDuration+=t}function rX(e,t){gc.inputTokens+=e,gc.outputTokens+=t,gr.emit("token:change",{inputTokens:gc.inputTokens,outputTokens:gc.outputTokens})}function nX(e,t){gc.cacheCreationTokens+=e,gc.cacheReadTokens+=t}function zIe(){return{inputTokens:gc.inputTokens,outputTokens:gc.outputTokens,cacheCreationTokens:gc.cacheCreationTokens,cacheReadTokens:gc.cacheReadTokens}}function vgt(){return gc.totalCost}function xgt(){return Date.now()-gc.startTime}function wgt(){return gc.totalAPIDuration}function Dgt(e){gc.currentContextTokens=e}function Rgt(){return gc.currentContextTokens}ke();He();He();var jIe="2.4.29";globalThis.MACRO={VERSION:jIe,PACKAGE_URL:`@dahawa/${Ji}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var iX=process.env.HAWA_CODE_USER_AGENT||`${Ji}/${jIe} (${process.env.USER_TYPE})`;import{randomUUID as By}from"crypto";fs();ke();Wt();Er();ke();He();import{existsSync as v_,readdirSync as can,statSync as uan}from"fs";import{join as pS,relative as dan}from"path";import{homedir as yEt}from"os";import{platform as fan}from"process";import{readFile as mS}from"fs/promises";Er();zg();ar();import{join as Urn,sep as Hrn}from"path";function Cm(){if(!bm())return!1;try{let e=ut();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ep(){return(Urn(Oe(),".hcode","team-memory")+Hrn).normalize("NFC")}function S_(e){let t=e.normalize("NFC"),r=ep();return t.startsWith(r)}var bEt=X(r9(),1);Pi();var cTe=(e,t,r)=>{let n=e instanceof RegExp?Wht(e,r):e,i=t instanceof RegExp?Wht(t,r):t,o=n!==null&&i!=null&&Xon(n,i,r);return o&&{start:o[0],end:o[1],pre:r.slice(0,o[0]),body:r.slice(o[0]+n.length,o[1]),post:r.slice(o[1]+i.length)}},Wht=(e,t)=>{let r=t.match(e);return r?r[0]:null},Xon=(e,t,r)=>{let n,i,o,s,a,l=r.indexOf(e),c=r.indexOf(t,l+1),u=l;if(l>=0&&c>0){if(e===t)return[l,c];for(n=[],o=r.length;u>=0&&!a;){if(u===l)n.push(u),l=r.indexOf(e,u+1);else if(n.length===1){let f=n.pop();f!==void 0&&(a=[f,c])}else i=n.pop(),i!==void 0&&i<o&&(o=i,s=c),c=r.indexOf(t,u+1);u=l<c&&l>=0?l:c}n.length&&s!==void 0&&(a=[o,s])}return a};var Kht="\0SLASH"+Math.random()+"\0",Jht="\0OPEN"+Math.random()+"\0",fTe="\0CLOSE"+Math.random()+"\0",Zht="\0COMMA"+Math.random()+"\0",Xht="\0PERIOD"+Math.random()+"\0",esn=new RegExp(Kht,"g"),tsn=new RegExp(Jht,"g"),rsn=new RegExp(fTe,"g"),nsn=new RegExp(Zht,"g"),isn=new RegExp(Xht,"g"),osn=/\\\\/g,ssn=/\\{/g,asn=/\\}/g,lsn=/\\,/g,csn=/\\\./g,usn=1e5,dsn=4e6;function uTe(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function fsn(e){return e.replace(osn,Kht).replace(ssn,Jht).replace(asn,fTe).replace(lsn,Zht).replace(csn,Xht)}function psn(e){return e.replace(esn,"\\").replace(tsn,"{").replace(rsn,"}").replace(nsn,",").replace(isn,".")}function eEt(e){if(!e)return[""];let t=[],r=cTe("{","}",e);if(!r)return e.split(",");let{pre:n,body:i,post:o}=r,s=n.split(",");s[s.length-1]+="{"+i+"}";let a=eEt(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),t.push.apply(t,s),t}function tEt(e,t={}){if(!e)return[];let{max:r=usn,maxLength:n=dsn}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),dTe(fsn(e),r,n,!0).map(psn)}function msn(e){return"{"+e+"}"}function gsn(e){return/^-?0\d/.test(e)}function Asn(e,t){return e<=t}function hsn(e,t){return e>=t}function n9(e,t,r,n,i,o){let s=[],a=0;for(let l=0;l<e.length;l++)for(let c=0;c<r.length;c++){if(s.length>=n)return s;let u=e[l]+t+r[c];if(!(o&&!u)){if(a+u.length>i)return s;s.push(u),a+=u.length}}return s}function Esn(e,t,r,n){let i=e.split(/\.\./),o=[];if(i[0]===void 0||i[1]===void 0)return o;let s=uTe(i[0]),a=uTe(i[1]),l=Math.max(i[0].length,i[1].length),c=i.length===3&&i[2]!==void 0?Math.max(Math.abs(uTe(i[2])),1):1,u=Asn;a<s&&(c*=-1,u=hsn);let g=i.some(gsn),m=0;for(let A=s;u(A,a)&&o.length<r;A+=c){let h;if(t)h=String.fromCharCode(A),h==="\\"&&(h="");else if(h=String(A),g){let _=l-h.length;if(_>0){let y=new Array(_+1).join("0");A<0?h="-"+y+h.slice(1):h=y+h}}if(m+h.length>n)break;o.push(h),m+=h.length}return o}function dTe(e,t,r,n){let i=[""],o=!1,s=!0;for(;;){let a=cTe("{","}",e);if(!a)return n9(i,e,[""],t,r,o);let l=a.pre;if(/\$$/.test(l)){if(i=n9(i,l+"{"+a.body+"}",[""],t,r,o&&!a.post.length),s=!1,!a.post.length)break;e=a.post;continue}let c=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body),f=c||u,g=a.body.indexOf(",")>=0;if(!f&&!g){if(a.post.match(/,(?!,).*\}/)){e=a.pre+"{"+a.body+fTe+a.post,n=!0;continue}return n9(i,l+"{"+a.body+"}"+a.post,[""],t,r,o)}s&&(o=n&&!f,s=!1);let m;if(f)m=Esn(a.body,u,t,r);else{let A=eEt(a.body);if(A.length===1&&A[0]!==void 0&&(A=dTe(A[0],t,r,!1).map(msn),A.length===1)){if(i=n9(i,l+A[0],[""],t,r,o&&!a.post.length),!a.post.length)break;e=a.post;continue}let h=o&&!a.post.length&&!l;for(let y=0;h&&y<i.length;y++)i[y]&&(h=!1);m=[];let _=0;e:for(let y=0;y<A.length;y++){let S=dTe(A[y],t,r,!1);for(let I=0;I<S.length;I++){let w=S[I];if(!(h&&!w)){if(m.length>=t||_+w.length>r)break e;m.push(w),_+=w.length}}}}if(i=n9(i,l,m,t,r,o&&!a.post.length),!a.post.length)break;e=a.post}return i}var i9=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var _sn={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o9=e=>e.replace(/[[\]\\-]/g,"\\$&"),ysn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rEt=e=>e.join(""),nEt=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let n=[],i=[],o=r+1,s=!1,a=!1,l=!1,c=!1,u=r,f="";e:for(;o<e.length;){let h=e.charAt(o);if((h==="!"||h==="^")&&o===r+1){c=!0,o++;continue}if(h==="]"&&s&&!l){u=o+1;break}if(s=!0,h==="\\"&&!l){l=!0,o++;continue}if(h==="["&&!l){for(let[_,[y,S,I]]of Object.entries(_sn))if(e.startsWith(_,o)){if(f)return["$.",!1,e.length-r,!0];o+=_.length,I?i.push(y):n.push(y),a=a||S;continue e}}if(l=!1,f){h>f?n.push(o9(f)+"-"+o9(h)):h===f&&n.push(o9(h)),f="",o++;continue}if(e.startsWith("-]",o+1)){n.push(o9(h+"-")),o+=2;continue}if(e.startsWith("-",o+1)){f=h,o+=2;continue}n.push(o9(h)),o++}if(u<o)return["",!1,0,!1];if(!n.length&&!i.length)return["$.",!1,e.length-r,!0];if(i.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!c){let h=n[0].length===2?n[0].slice(-1):n[0];return[ysn(h),!1,u-r,!1]}let g="["+(c?"^":"")+rEt(n)+"]",m="["+(c?"":"^")+rEt(i)+"]";return[n.length&&i.length?"("+g+"|"+m+")":n.length?g:m,a,u-r,!0]};var fS=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!0}={})=>r?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var zd,bsn=new Set(["!","?","+","*","@"]),pTe=e=>bsn.has(e),iEt=e=>pTe(e.type),Csn=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),Ssn=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Isn=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),oEt=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Tsn="(?!(?:^|/)\\.\\.?(?:$|/))",hX="(?!\\.)",vsn=new Set(["[","."]),xsn=new Set(["..","."]),wsn=new Set("().*{}+?[]^$\\!"),Dsn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),mTe="[^/]",sEt=mTe+"*?",aEt=mTe+"+?",Rsn=0,Gv=class{type;#e;#t;#n=!1;#r=[];#o;#i;#l;#s=!1;#a;#d;#p=!1;id=++Rsn;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(t,r,n={}){this.type=t,t&&(this.#t=!0),this.#o=r,this.#e=this.#o?this.#o.#e:this,this.#a=this.#e===this?n:this.#e.#a,this.#l=this.#e===this?[]:this.#e.#l,t==="!"&&!this.#e.#s&&this.#l.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#f(){if(this!==this.#e)throw new Error("should only call on root");if(this.#s)return this;this.toString(),this.#s=!0;let t;for(;t=this.#l.pop();){if(t.type!=="!")continue;let r=t,n=r.#o;for(;n;){for(let i=r.#i+1;!n.type&&i<n.#r.length;i++)for(let o of t.#r){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(n.#r[i])}r=n,n=r.#o}}return this}push(...t){for(let r of t)if(r!==""){if(typeof r!="string"&&!(r instanceof zd&&r.#o===this))throw new Error("invalid part: "+r);this.#r.push(r)}}toJSON(){let t=this.type===null?this.#r.slice().map(r=>typeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#i===0)return!0;let t=this.#o;for(let r=0;r<this.#i;r++){let n=t.#r[r];if(!(n instanceof zd&&n.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#i===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let r=new zd(this.type,t);for(let n of this.#r)r.copyIn(n);return r}static#c(t,r,n,i,o){let s=i.maxExtglobRecursion??2,a=!1,l=!1,c=-1,u=!1;if(r.type===null){let h=n,_="";for(;h<t.length;){let y=t.charAt(h++);if(a||y==="\\"){a=!a,_+=y;continue}if(l){h===c+1?(y==="^"||y==="!")&&(u=!0):y==="]"&&!(h===c+2&&u)&&(l=!1),_+=y;continue}else if(y==="["){l=!0,c=h,u=!1,_+=y;continue}if(!i.noext&&pTe(y)&&t.charAt(h)==="("&&o<=s){r.push(_),_="";let I=new zd(y,r);h=zd.#c(t,I,h,i,o+1),r.push(I);continue}_+=y}return r.push(_),h}let f=n+1,g=new zd(null,r),m=[],A="";for(;f<t.length;){let h=t.charAt(f++);if(a||h==="\\"){a=!a,A+=h;continue}if(l){f===c+1?(h==="^"||h==="!")&&(u=!0):h==="]"&&!(f===c+2&&u)&&(l=!1),A+=h;continue}else if(h==="["){l=!0,c=f,u=!1,A+=h;continue}if(!i.noext&&pTe(h)&&t.charAt(f)==="("&&(o<=s||r&&r.#E(h))){let y=r&&r.#E(h)?0:1;g.push(A),A="";let S=new zd(h,g);g.push(S),f=zd.#c(t,S,f,i,o+y);continue}if(h==="|"){g.push(A),A="",m.push(g),g=new zd(null,r);continue}if(h===")")return A===""&&r.#r.length===0&&(r.#p=!0),g.push(A),A="",r.push(...m,g),f;A+=h}return r.type=null,r.#t=void 0,r.#r=[t.substring(n-1)],f}#g(t){return this.#h(t,Ssn)}#h(t,r=Csn){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null)return!1;let n=t.#r[0];return!n||typeof n!="object"||n.type===null?!1:this.#E(n.type,r)}#E(t,r=Isn){return!!r.get(this.type)?.includes(t)}#A(t,r){let n=t.#r[0],i=new zd(null,n,this.options);i.#r.push(""),n.push(i),this.#v(t,r)}#v(t,r){let n=t.#r[0];this.#r.splice(r,1,...n.#r);for(let i of n.#r)typeof i=="object"&&(i.#o=this);this.#d=void 0}#y(t){return!!oEt.get(this.type)?.has(t)}#S(t){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let r=t.#r[0];return!r||typeof r!="object"||r.type===null?!1:this.#y(r.type)}#I(t){let r=oEt.get(this.type),n=t.#r[0],i=r?.get(n.type);if(!i)return!1;this.#r=n.#r;for(let o of this.#r)typeof o=="object"&&(o.#o=this);this.type=i,this.#d=void 0,this.#p=!1}static fromGlob(t,r={}){let n=new zd(null,void 0,r);return zd.#c(t,n,0,r,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[r,n,i,o]=this.toRegExpSource();if(!(i||this.#t||this.#a.nocase&&!this.#a.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;let a=(this.#a.nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${r}$`,a),{_src:r,_glob:t})}get options(){return this.#a}toRegExpSource(t){let r=t??!!this.#a.dot;if(this.#e===this&&(this.#_(),this.#f()),!iEt(this)){let l=this.isStart()&&this.isEnd()&&!this.#r.some(m=>typeof m!="string"),c=this.#r.map(m=>{let[A,h,_,y]=typeof m=="string"?zd.#C(m,this.#t,l):m.toRegExpSource(t);return this.#t=this.#t||_,this.#n=this.#n||y,A}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&xsn.has(this.#r[0]))){let A=vsn,h=r&&A.has(c.charAt(0))||c.startsWith("\\.")&&A.has(c.charAt(2))||c.startsWith("\\.\\.")&&A.has(c.charAt(4)),_=!r&&!t&&A.has(c.charAt(0));u=h?Tsn:_?hX:""}let f="";return this.isEnd()&&this.#e.#s&&this.#o?.type==="!"&&(f="(?:$|\\/)"),[u+c+f,fS(c),this.#t=!!this.#t,this.#n]}let n=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:",o=this.#b(r);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let l=this.toString(),c=this;return c.#r=[l],c.type=null,c.#t=void 0,[l,fS(this.toString()),!1,!1]}let s=!n||t||r||!hX?"":this.#b(!0);s===o&&(s=""),s&&(o=`(?:${o})(?:${s})*?`);let a="";if(this.type==="!"&&this.#p)a=(this.isStart()&&!r?hX:"")+aEt;else{let l=this.type==="!"?"))"+(this.isStart()&&!r&&!t?hX:"")+sEt+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&s?")":this.type==="*"&&s?")?":`)${this.type}`;a=i+o+l}return[a,fS(o),this.#t=!!this.#t,this.#n]}#_(){if(iEt(this)){let t=0,r=!1;do{r=!0;for(let n=0;n<this.#r.length;n++){let i=this.#r[n];typeof i=="object"&&(i.#_(),this.#h(i)?(r=!1,this.#v(i,n)):this.#g(i)?(r=!1,this.#A(i,n)):this.#S(i)&&(r=!1,this.#I(i)))}}while(!r&&++t<10)}else for(let t of this.#r)typeof t=="object"&&t.#_();this.#d=void 0}#b(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[n,i,o,s]=r.toRegExpSource(t);return this.#n=this.#n||s,n}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#C(t,r,n=!1){let i=!1,o="",s=!1,a=!1;for(let l=0;l<t.length;l++){let c=t.charAt(l);if(i){i=!1,o+=(wsn.has(c)?"\\":"")+c;continue}if(c==="*"){if(a)continue;a=!0,o+=n&&/^[*]+$/.test(t)?aEt:sEt,r=!0;continue}else a=!1;if(c==="\\"){l===t.length-1?o+="\\\\":i=!0;continue}if(c==="["){let[u,f,g,m]=nEt(t,l);if(g){o+=u,s=s||f,l+=g-1,r=r||m;continue}}if(c==="?"){o+=mTe,r=!0;continue}o+=Dsn(c)}return[o,fS(t),!!r,s]}};zd=Gv;var gTe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!1}={})=>r?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var hc=(e,t,r={})=>(i9(t),!r.nocomment&&t.charAt(0)==="#"?!1:new Y2(t,r).match(e)),Nsn=/^\*+([^+@!?*[(]*)$/,Bsn=e=>t=>!t.startsWith(".")&&t.endsWith(e),Osn=e=>t=>t.endsWith(e),ksn=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),Msn=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Qsn=/^\*+\.\*+$/,Psn=e=>!e.startsWith(".")&&e.includes("."),Lsn=e=>e!=="."&&e!==".."&&e.includes("."),Fsn=/^\.\*+$/,Usn=e=>e!=="."&&e!==".."&&e.startsWith("."),Hsn=/^\*+$/,$sn=e=>e.length!==0&&!e.startsWith("."),qsn=e=>e.length!==0&&e!=="."&&e!=="..",Gsn=/^\?+([^+@!?*[(]*)?$/,zsn=([e,t=""])=>{let r=uEt([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},jsn=([e,t=""])=>{let r=dEt([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},Ysn=([e,t=""])=>{let r=dEt([e]);return t?n=>r(n)&&n.endsWith(t):r},Vsn=([e,t=""])=>{let r=uEt([e]);return t?n=>r(n)&&n.endsWith(t):r},uEt=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},dEt=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},fEt=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",lEt={win32:{sep:"\\"},posix:{sep:"/"}},Wsn=fEt==="win32"?lEt.win32.sep:lEt.posix.sep;hc.sep=Wsn;var Jc=Symbol("globstar **");hc.GLOBSTAR=Jc;var Ksn="[^/]",Jsn=Ksn+"*?",Zsn="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Xsn="(?:(?!(?:\\/|^)\\.).)*?",ean=(e,t={})=>r=>hc(r,e,t);hc.filter=ean;var Sm=(e,t={})=>Object.assign({},e,t),tan=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return hc;let t=hc;return Object.assign((n,i,o={})=>t(n,i,Sm(e,o)),{Minimatch:class extends t.Minimatch{constructor(i,o={}){super(i,Sm(e,o))}static defaults(i){return t.defaults(Sm(e,i)).Minimatch}},AST:class extends t.AST{constructor(i,o,s={}){super(i,o,Sm(e,s))}static fromGlob(i,o={}){return t.AST.fromGlob(i,Sm(e,o))}},unescape:(n,i={})=>t.unescape(n,Sm(e,i)),escape:(n,i={})=>t.escape(n,Sm(e,i)),filter:(n,i={})=>t.filter(n,Sm(e,i)),defaults:n=>t.defaults(Sm(e,n)),makeRe:(n,i={})=>t.makeRe(n,Sm(e,i)),braceExpand:(n,i={})=>t.braceExpand(n,Sm(e,i)),match:(n,i,o={})=>t.match(n,i,Sm(e,o)),sep:t.sep,GLOBSTAR:Jc})};hc.defaults=tan;var pEt=(e,t={})=>(i9(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:tEt(e,{max:t.braceExpandMax}));hc.braceExpand=pEt;var ran=(e,t={})=>new Y2(e,t).makeRe();hc.makeRe=ran;var nan=(e,t,r={})=>{let n=new Y2(t,r);return e=e.filter(i=>n.match(i)),n.options.nonull&&!e.length&&e.push(t),e};hc.match=nan;var cEt=/[?*]|[+@!]\(.*?\)|\[|\]/,ian=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Y2=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,r={}){i9(t),r=r||{},this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion??200,this.pattern=t,this.platform=r.platform||fEt,this.isWindows=this.platform==="win32";let n="allowWindowsEscape";this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r[n]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let i=this.globParts.map((o,s,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let l=o[0]===""&&o[1]===""&&(o[2]==="?"||!cEt.test(o[2]))&&!cEt.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(l)return[...o.slice(0,4),...o.slice(4).map(u=>this.parse(u))];if(c)return[o[0],...o.slice(1).map(u=>this.parse(u))]}return o.map(l=>this.parse(l))});if(this.debug(this.pattern,i),this.set=i.filter(o=>o.indexOf(!1)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let s=this.set[o];s[0]===""&&s[1]===""&&this.globParts[o][2]==="?"&&typeof s[3]=="string"&&/^[a-z]:$/i.test(s[3])&&(s[2]="?")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let n of t)for(let i=0;i<n.length;i++)n[i]==="**"&&(n[i]="*");let{optimizationLevel:r=1}=this.options;return r>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let n=-1;for(;(n=r.indexOf("**",n+1))!==-1;){let i=n;for(;r[i+1]==="**";)i++;i!==n&&r.splice(n,i-n)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((n,i)=>{let o=n[n.length-1];return i==="**"&&o==="**"?n:i===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(n.pop(),n):(n.push(i),n)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let i=1;i<t.length-1;i++){let o=t[i];i===1&&o===""&&t[0]===""||(o==="."||o==="")&&(r=!0,t.splice(i,1),i--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(r=!0,t.pop())}let n=0;for(;(n=t.indexOf("..",n+1))!==-1;){let i=t[n-1];i&&i!=="."&&i!==".."&&i!=="**"&&!(this.isWindows&&/^[a-z]:$/i.test(i))&&(r=!0,t.splice(n-1,2),n-=2)}}while(r);return t.length===0?[""]:t}firstPhasePreProcess(t){let r=!1;do{r=!1;for(let n of t){let i=-1;for(;(i=n.indexOf("**",i+1))!==-1;){let s=i;for(;n[s+1]==="**";)s++;s>i&&n.splice(i+1,s-i);let a=n[i+1],l=n[i+2],c=n[i+3];if(a!==".."||!l||l==="."||l===".."||!c||c==="."||c==="..")continue;r=!0,n.splice(i,1);let u=n.slice(0);u[i]="**",t.push(u),i--}if(!this.preserveMultipleSlashes){for(let s=1;s<n.length-1;s++){let a=n[s];s===1&&a===""&&n[0]===""||(a==="."||a==="")&&(r=!0,n.splice(s,1),s--)}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(r=!0,n.pop())}let o=0;for(;(o=n.indexOf("..",o+1))!==-1;){let s=n[o-1];if(s&&s!=="."&&s!==".."&&s!=="**"){r=!0;let l=o===1&&n[o+1]==="**"?["."]:[];n.splice(o-1,2,...l),n.length===0&&n.push(""),o-=2}}}}while(r);return t}secondPhasePreProcess(t){for(let r=0;r<t.length-1;r++)for(let n=r+1;n<t.length;n++){let i=this.partsMatch(t[r],t[n],!this.preserveMultipleSlashes);if(i){t[r]=[],t[n]=i;break}}return t.filter(r=>r.length)}partsMatch(t,r,n=!1){let i=0,o=0,s=[],a="";for(;i<t.length&&o<r.length;)if(t[i]===r[o])s.push(a==="b"?r[o]:t[i]),i++,o++;else if(n&&t[i]==="**"&&r[o]===t[i+1])s.push(t[i]),i++;else if(n&&r[o]==="**"&&t[i]===r[o+1])s.push(r[o]),o++;else if(t[i]==="*"&&r[o]&&(this.options.dot||!r[o].startsWith("."))&&r[o]!=="**"){if(a==="b")return!1;a="a",s.push(t[i]),i++,o++}else if(r[o]==="*"&&t[i]&&(this.options.dot||!t[i].startsWith("."))&&t[i]!=="**"){if(a==="a")return!1;a="b",s.push(r[o]),i++,o++}else return!1;return t.length===r.length&&s}parseNegate(){if(this.nonegate)return;let t=this.pattern,r=!1,n=0;for(let i=0;i<t.length&&t.charAt(i)==="!";i++)r=!r,n++;n&&(this.pattern=t.slice(n)),this.negate=r}matchOne(t,r,n=!1){let i=0,o=0;if(this.isWindows){let a=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),l=!a&&t[0]===""&&t[1]===""&&t[2]==="?"&&/^[a-z]:$/i.test(t[3]),c=typeof r[0]=="string"&&/^[a-z]:$/i.test(r[0]),u=!c&&r[0]===""&&r[1]===""&&r[2]==="?"&&typeof r[3]=="string"&&/^[a-z]:$/i.test(r[3]),f=l?3:a?0:void 0,g=u?3:c?0:void 0;if(typeof f=="number"&&typeof g=="number"){let[m,A]=[t[f],r[g]];m.toLowerCase()===A.toLowerCase()&&(r[g]=m,o=g,i=f)}}let{optimizationLevel:s=1}=this.options;return s>=2&&(t=this.levelTwoFileOptimize(t)),r.includes(Jc)?this.#e(t,r,n,i,o):this.#n(t,r,n,i,o)}#e(t,r,n,i,o){let s=r.indexOf(Jc,o),a=r.lastIndexOf(Jc),[l,c,u]=n?[r.slice(o,s),r.slice(s+1),[]]:[r.slice(o,s),r.slice(s+1,a),r.slice(a+1)];if(l.length){let S=t.slice(i,i+l.length);if(!this.#n(S,l,n,0,0))return!1;i+=l.length,o+=l.length}let f=0;if(u.length){if(u.length+i>t.length)return!1;let S=t.length-u.length;if(this.#n(t,u,n,S,0))f=u.length;else{if(t[t.length-1]!==""||i+u.length===t.length||(S--,!this.#n(t,u,n,S,0)))return!1;f=u.length+1}}if(!c.length){let S=!!f;for(let I=i;I<t.length-f;I++){let w=String(t[I]);if(S=!0,w==="."||w===".."||!this.options.dot&&w.startsWith("."))return!1}return n||S}let g=[[[],0]],m=g[0],A=0,h=[0];for(let S of c)S===Jc?(h.push(A),m=[[],0],g.push(m)):(m[0].push(S),A++);let _=g.length-1,y=t.length-f;for(let S of g)S[1]=y-(h[_--]+S[0].length);return!!this.#t(t,g,i,0,n,0,!!f)}#t(t,r,n,i,o,s,a){let l=r[i];if(!l){for(let f=n;f<t.length;f++){a=!0;let g=t[f];if(g==="."||g===".."||!this.options.dot&&g.startsWith("."))return!1}return a}let[c,u]=l;for(;n<=u;){if(this.#n(t.slice(0,n+c.length),c,o,n,0)&&s<this.maxGlobstarRecursion){let m=this.#t(t,r,n+c.length,i+1,o,s+1,a);if(m!==!1)return m}let g=t[n];if(g==="."||g===".."||!this.options.dot&&g.startsWith("."))return!1;n++}return o||null}#n(t,r,n,i,o){let s,a,l,c;for(s=i,a=o,c=t.length,l=r.length;s<c&&a<l;s++,a++){this.debug("matchOne loop");let u=r[a],f=t[s];if(this.debug(r,u,f),u===!1||u===Jc)return!1;let g;if(typeof u=="string"?(g=f===u,this.debug("string match",u,f,g)):(g=u.test(f),this.debug("pattern match",u,f,g)),!g)return!1}if(s===c&&a===l)return!0;if(s===c)return n;if(a===l)return s===c-1&&t[s]==="";throw new Error("wtf?")}braceExpand(){return pEt(this.pattern,this.options)}parse(t){i9(t);let r=this.options;if(t==="**")return Jc;if(t==="")return"";let n,i=null;(n=t.match(Hsn))?i=r.dot?qsn:$sn:(n=t.match(Nsn))?i=(r.nocase?r.dot?Msn:ksn:r.dot?Osn:Bsn)(n[1]):(n=t.match(Gsn))?i=(r.nocase?r.dot?jsn:zsn:r.dot?Ysn:Vsn)(n):(n=t.match(Qsn))?i=r.dot?Lsn:Psn:(n=t.match(Fsn))&&(i=Usn);let o=Gv.fromGlob(t,this.options).toMMPattern();return i&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:i}),o}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,n=r.noglobstar?Jsn:r.dot?Zsn:Xsn,i=new Set(r.nocase?["i"]:[]),o=t.map(l=>{let c=l.map(f=>{if(f instanceof RegExp)for(let g of f.flags.split(""))i.add(g);return typeof f=="string"?ian(f):f===Jc?Jc:f._src});c.forEach((f,g)=>{let m=c[g+1],A=c[g-1];f!==Jc||A===Jc||(A===void 0?m!==void 0&&m!==Jc?c[g+1]="(?:\\/|"+n+"\\/)?"+m:c[g]=n:m===void 0?c[g-1]=A+"(?:\\/|\\/"+n+")?":m!==Jc&&(c[g-1]=A+"(?:\\/|\\/"+n+"\\/)"+m,c[g+1]=Jc))});let u=c.filter(f=>f!==Jc);if(this.partial&&u.length>=1){let f=[];for(let g=1;g<=u.length;g++)f.push(u.slice(0,g).join("/"));return"(?:"+f.join("|")+")"}return u.join("/")}).join("|"),[s,a]=t.length>1?["(?:",")"]:["",""];o="^"+s+o+a+"$",this.partial&&(o="^(?:\\/|"+s+o.slice(1,-1)+a+")$"),this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let n=this.options;this.isWindows&&(t=t.split("\\").join("/"));let i=this.slashSplit(t);this.debug(this.pattern,"split",i);let o=this.set;this.debug(this.pattern,"set",o);let s=i[i.length-1];if(!s)for(let a=i.length-2;!s&&a>=0;a--)s=i[a];for(let a of o){let l=i;if(n.matchBase&&a.length===1&&(l=[s]),this.matchOne(l,a,r))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(t){return hc.defaults(t).Minimatch}};hc.AST=Gv;hc.Minimatch=Y2;hc.escape=gTe;hc.unescape=fS;var AEt=X(r9(),1);Er();He();ke();wu();import{readFile as mEt}from"fs/promises";import{existsSync as ATe,readdirSync as oan,statSync as san}from"fs";import{join as hTe,relative as hEt}from"path";import{homedir as aan}from"os";function gEt(e){try{let t=(0,AEt.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return ve(t),{paths:[],content:e.trim()}}}function lan(e,t){return t.length===0?!0:t.some(r=>{try{return hc(e,r,{matchBase:!0,dot:!0})}catch(n){return ve(n),!1}})}function ETe(e){let t=[];try{if(!ATe(e))return t;let r=oan(e);for(let n of r){let i=hTe(e,n),o=san(i);o.isDirectory()?t.push(...ETe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function EEt(){let e=[];try{let t=hTe(aan(),Xr,"rules");if(ATe(t)){let r=ETe(t);for(let n of r)try{let i=await mEt(n,"utf-8"),{paths:o,content:s}=gEt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){ve(i)}}}catch(t){ve(t)}try{let t=hTe(Oe(),Xr,"rules");if(ATe(t)){let r=ETe(t);for(let n of r)try{let i=await mEt(n,"utf-8"),{paths:o,content:s}=gEt(i);o.length>0&&e.push({filePath:hEt(Oe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function _Et(e,t){e=FV(e);let r=FV(Oe()),n=e.startsWith(r)?hEt(r,e):e;return t.filter(i=>lan(n,i.paths))}var pan=`# hawaCodeMd
761
+ Stack trace: `+f.stack)),new Response(l.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}var ZZ=null,$Ie=!1;function Drn(){ZZ=null,$Ie=!1}gr.on("proxy:changed",Drn);function Rrn(){if($Ie)return ZZ;if($Ie=!0,ut().proxy!==!0)return null;let e=process.env.HTTPS_PROXY||process.env.HTTP_PROXY||process.env.https_proxy||process.env.http_proxy;return e&&(ZZ=new Igt.ProxyAgent({uri:e}),Zt(`[proxy] using proxy: ${e}`)),ZZ}function Nrn(){let e=Rrn();return e?((t,r={})=>global.fetch(t,{...r,dispatcher:e})):global.fetch}function eX(e){let t=e||process.env.API_TYPE,r=Nrn();switch(t){case"openai":return Trn(r);case"openai-responses":return vrn(r);case"gemini":return xrn(r);default:return wrn(r)}}_h();var Mrn=X(pe(),1);function Tgt(e,t){let r=[],n=Math.max(1,Math.floor(t)),i="",o=0;for(let s of e){let a=Brn(s);i&&o+a>n?(r.push(i),i=s,o=a):(i+=s,o+=a)}return i&&r.push(i),r}function Brn(e){if(e===" ")return 4;let t=e.codePointAt(0);return t===void 0||t===0||t<32||t>=127&&t<160||Orn(t)?0:krn(t)?2:1}function Orn(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071}function krn(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=129280&&e<=129535||e>=131072&&e<=262141)}function b_(e){if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4),n=(e%6e4/1e3).toFixed(1);return t>0?`${t}h ${r}m ${n}s`:r>0?`${r}m ${n}s`:`${n}s`}function cS(e){return new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}ke();fs();var gc={totalCost:0,totalAPIDuration:0,startTime:Date.now(),inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,currentContextTokens:0};function tX(e,t){gc.totalCost+=e,gc.totalAPIDuration+=t}function rX(e,t){gc.inputTokens+=e,gc.outputTokens+=t,gr.emit("token:change",{inputTokens:gc.inputTokens,outputTokens:gc.outputTokens})}function nX(e,t){gc.cacheCreationTokens+=e,gc.cacheReadTokens+=t}function zIe(){return{inputTokens:gc.inputTokens,outputTokens:gc.outputTokens,cacheCreationTokens:gc.cacheCreationTokens,cacheReadTokens:gc.cacheReadTokens}}function vgt(){return gc.totalCost}function xgt(){return Date.now()-gc.startTime}function wgt(){return gc.totalAPIDuration}function Dgt(e){gc.currentContextTokens=e}function Rgt(){return gc.currentContextTokens}ke();He();He();var jIe="2.4.30";globalThis.MACRO={VERSION:jIe,PACKAGE_URL:`@dahawa/${Ji}`,README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};var iX=process.env.HAWA_CODE_USER_AGENT||`${Ji}/${jIe} (${process.env.USER_TYPE})`;import{randomUUID as By}from"crypto";fs();ke();Wt();Er();ke();He();import{existsSync as v_,readdirSync as can,statSync as uan}from"fs";import{join as pS,relative as dan}from"path";import{homedir as yEt}from"os";import{platform as fan}from"process";import{readFile as mS}from"fs/promises";Er();zg();ar();import{join as Urn,sep as Hrn}from"path";function Cm(){if(!bm())return!1;try{let e=ut();if(e.autoMemory?.teamMemoryEnabled!==void 0)return e.autoMemory.teamMemoryEnabled}catch{}return!1}function ep(){return(Urn(Oe(),".hcode","team-memory")+Hrn).normalize("NFC")}function S_(e){let t=e.normalize("NFC"),r=ep();return t.startsWith(r)}var bEt=X(r9(),1);Pi();var cTe=(e,t,r)=>{let n=e instanceof RegExp?Wht(e,r):e,i=t instanceof RegExp?Wht(t,r):t,o=n!==null&&i!=null&&Xon(n,i,r);return o&&{start:o[0],end:o[1],pre:r.slice(0,o[0]),body:r.slice(o[0]+n.length,o[1]),post:r.slice(o[1]+i.length)}},Wht=(e,t)=>{let r=t.match(e);return r?r[0]:null},Xon=(e,t,r)=>{let n,i,o,s,a,l=r.indexOf(e),c=r.indexOf(t,l+1),u=l;if(l>=0&&c>0){if(e===t)return[l,c];for(n=[],o=r.length;u>=0&&!a;){if(u===l)n.push(u),l=r.indexOf(e,u+1);else if(n.length===1){let f=n.pop();f!==void 0&&(a=[f,c])}else i=n.pop(),i!==void 0&&i<o&&(o=i,s=c),c=r.indexOf(t,u+1);u=l<c&&l>=0?l:c}n.length&&s!==void 0&&(a=[o,s])}return a};var Kht="\0SLASH"+Math.random()+"\0",Jht="\0OPEN"+Math.random()+"\0",fTe="\0CLOSE"+Math.random()+"\0",Zht="\0COMMA"+Math.random()+"\0",Xht="\0PERIOD"+Math.random()+"\0",esn=new RegExp(Kht,"g"),tsn=new RegExp(Jht,"g"),rsn=new RegExp(fTe,"g"),nsn=new RegExp(Zht,"g"),isn=new RegExp(Xht,"g"),osn=/\\\\/g,ssn=/\\{/g,asn=/\\}/g,lsn=/\\,/g,csn=/\\\./g,usn=1e5,dsn=4e6;function uTe(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function fsn(e){return e.replace(osn,Kht).replace(ssn,Jht).replace(asn,fTe).replace(lsn,Zht).replace(csn,Xht)}function psn(e){return e.replace(esn,"\\").replace(tsn,"{").replace(rsn,"}").replace(nsn,",").replace(isn,".")}function eEt(e){if(!e)return[""];let t=[],r=cTe("{","}",e);if(!r)return e.split(",");let{pre:n,body:i,post:o}=r,s=n.split(",");s[s.length-1]+="{"+i+"}";let a=eEt(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),t.push.apply(t,s),t}function tEt(e,t={}){if(!e)return[];let{max:r=usn,maxLength:n=dsn}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),dTe(fsn(e),r,n,!0).map(psn)}function msn(e){return"{"+e+"}"}function gsn(e){return/^-?0\d/.test(e)}function Asn(e,t){return e<=t}function hsn(e,t){return e>=t}function n9(e,t,r,n,i,o){let s=[],a=0;for(let l=0;l<e.length;l++)for(let c=0;c<r.length;c++){if(s.length>=n)return s;let u=e[l]+t+r[c];if(!(o&&!u)){if(a+u.length>i)return s;s.push(u),a+=u.length}}return s}function Esn(e,t,r,n){let i=e.split(/\.\./),o=[];if(i[0]===void 0||i[1]===void 0)return o;let s=uTe(i[0]),a=uTe(i[1]),l=Math.max(i[0].length,i[1].length),c=i.length===3&&i[2]!==void 0?Math.max(Math.abs(uTe(i[2])),1):1,u=Asn;a<s&&(c*=-1,u=hsn);let g=i.some(gsn),m=0;for(let A=s;u(A,a)&&o.length<r;A+=c){let h;if(t)h=String.fromCharCode(A),h==="\\"&&(h="");else if(h=String(A),g){let _=l-h.length;if(_>0){let y=new Array(_+1).join("0");A<0?h="-"+y+h.slice(1):h=y+h}}if(m+h.length>n)break;o.push(h),m+=h.length}return o}function dTe(e,t,r,n){let i=[""],o=!1,s=!0;for(;;){let a=cTe("{","}",e);if(!a)return n9(i,e,[""],t,r,o);let l=a.pre;if(/\$$/.test(l)){if(i=n9(i,l+"{"+a.body+"}",[""],t,r,o&&!a.post.length),s=!1,!a.post.length)break;e=a.post;continue}let c=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(a.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(a.body),f=c||u,g=a.body.indexOf(",")>=0;if(!f&&!g){if(a.post.match(/,(?!,).*\}/)){e=a.pre+"{"+a.body+fTe+a.post,n=!0;continue}return n9(i,l+"{"+a.body+"}"+a.post,[""],t,r,o)}s&&(o=n&&!f,s=!1);let m;if(f)m=Esn(a.body,u,t,r);else{let A=eEt(a.body);if(A.length===1&&A[0]!==void 0&&(A=dTe(A[0],t,r,!1).map(msn),A.length===1)){if(i=n9(i,l+A[0],[""],t,r,o&&!a.post.length),!a.post.length)break;e=a.post;continue}let h=o&&!a.post.length&&!l;for(let y=0;h&&y<i.length;y++)i[y]&&(h=!1);m=[];let _=0;e:for(let y=0;y<A.length;y++){let S=dTe(A[y],t,r,!1);for(let I=0;I<S.length;I++){let w=S[I];if(!(h&&!w)){if(m.length>=t||_+w.length>r)break e;m.push(w),_+=w.length}}}}if(i=n9(i,l,m,t,r,o&&!a.post.length),!a.post.length)break;e=a.post}return i}var i9=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var _sn={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o9=e=>e.replace(/[[\]\\-]/g,"\\$&"),ysn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rEt=e=>e.join(""),nEt=(e,t)=>{let r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let n=[],i=[],o=r+1,s=!1,a=!1,l=!1,c=!1,u=r,f="";e:for(;o<e.length;){let h=e.charAt(o);if((h==="!"||h==="^")&&o===r+1){c=!0,o++;continue}if(h==="]"&&s&&!l){u=o+1;break}if(s=!0,h==="\\"&&!l){l=!0,o++;continue}if(h==="["&&!l){for(let[_,[y,S,I]]of Object.entries(_sn))if(e.startsWith(_,o)){if(f)return["$.",!1,e.length-r,!0];o+=_.length,I?i.push(y):n.push(y),a=a||S;continue e}}if(l=!1,f){h>f?n.push(o9(f)+"-"+o9(h)):h===f&&n.push(o9(h)),f="",o++;continue}if(e.startsWith("-]",o+1)){n.push(o9(h+"-")),o+=2;continue}if(e.startsWith("-",o+1)){f=h,o+=2;continue}n.push(o9(h)),o++}if(u<o)return["",!1,0,!1];if(!n.length&&!i.length)return["$.",!1,e.length-r,!0];if(i.length===0&&n.length===1&&/^\\?.$/.test(n[0])&&!c){let h=n[0].length===2?n[0].slice(-1):n[0];return[ysn(h),!1,u-r,!1]}let g="["+(c?"^":"")+rEt(n)+"]",m="["+(c?"":"^")+rEt(i)+"]";return[n.length&&i.length?"("+g+"|"+m+")":n.length?g:m,a,u-r,!0]};var fS=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!0}={})=>r?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var zd,bsn=new Set(["!","?","+","*","@"]),pTe=e=>bsn.has(e),iEt=e=>pTe(e.type),Csn=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),Ssn=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Isn=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),oEt=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Tsn="(?!(?:^|/)\\.\\.?(?:$|/))",hX="(?!\\.)",vsn=new Set(["[","."]),xsn=new Set(["..","."]),wsn=new Set("().*{}+?[]^$\\!"),Dsn=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),mTe="[^/]",sEt=mTe+"*?",aEt=mTe+"+?",Rsn=0,Gv=class{type;#e;#t;#n=!1;#r=[];#o;#i;#l;#s=!1;#a;#d;#p=!1;id=++Rsn;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(t,r,n={}){this.type=t,t&&(this.#t=!0),this.#o=r,this.#e=this.#o?this.#o.#e:this,this.#a=this.#e===this?n:this.#e.#a,this.#l=this.#e===this?[]:this.#e.#l,t==="!"&&!this.#e.#s&&this.#l.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#f(){if(this!==this.#e)throw new Error("should only call on root");if(this.#s)return this;this.toString(),this.#s=!0;let t;for(;t=this.#l.pop();){if(t.type!=="!")continue;let r=t,n=r.#o;for(;n;){for(let i=r.#i+1;!n.type&&i<n.#r.length;i++)for(let o of t.#r){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(n.#r[i])}r=n,n=r.#o}}return this}push(...t){for(let r of t)if(r!==""){if(typeof r!="string"&&!(r instanceof zd&&r.#o===this))throw new Error("invalid part: "+r);this.#r.push(r)}}toJSON(){let t=this.type===null?this.#r.slice().map(r=>typeof r=="string"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#i===0)return!0;let t=this.#o;for(let r=0;r<this.#i;r++){let n=t.#r[r];if(!(n instanceof zd&&n.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#i===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let r=new zd(this.type,t);for(let n of this.#r)r.copyIn(n);return r}static#c(t,r,n,i,o){let s=i.maxExtglobRecursion??2,a=!1,l=!1,c=-1,u=!1;if(r.type===null){let h=n,_="";for(;h<t.length;){let y=t.charAt(h++);if(a||y==="\\"){a=!a,_+=y;continue}if(l){h===c+1?(y==="^"||y==="!")&&(u=!0):y==="]"&&!(h===c+2&&u)&&(l=!1),_+=y;continue}else if(y==="["){l=!0,c=h,u=!1,_+=y;continue}if(!i.noext&&pTe(y)&&t.charAt(h)==="("&&o<=s){r.push(_),_="";let I=new zd(y,r);h=zd.#c(t,I,h,i,o+1),r.push(I);continue}_+=y}return r.push(_),h}let f=n+1,g=new zd(null,r),m=[],A="";for(;f<t.length;){let h=t.charAt(f++);if(a||h==="\\"){a=!a,A+=h;continue}if(l){f===c+1?(h==="^"||h==="!")&&(u=!0):h==="]"&&!(f===c+2&&u)&&(l=!1),A+=h;continue}else if(h==="["){l=!0,c=f,u=!1,A+=h;continue}if(!i.noext&&pTe(h)&&t.charAt(f)==="("&&(o<=s||r&&r.#E(h))){let y=r&&r.#E(h)?0:1;g.push(A),A="";let S=new zd(h,g);g.push(S),f=zd.#c(t,S,f,i,o+y);continue}if(h==="|"){g.push(A),A="",m.push(g),g=new zd(null,r);continue}if(h===")")return A===""&&r.#r.length===0&&(r.#p=!0),g.push(A),A="",r.push(...m,g),f;A+=h}return r.type=null,r.#t=void 0,r.#r=[t.substring(n-1)],f}#g(t){return this.#h(t,Ssn)}#h(t,r=Csn){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null)return!1;let n=t.#r[0];return!n||typeof n!="object"||n.type===null?!1:this.#E(n.type,r)}#E(t,r=Isn){return!!r.get(this.type)?.includes(t)}#A(t,r){let n=t.#r[0],i=new zd(null,n,this.options);i.#r.push(""),n.push(i),this.#v(t,r)}#v(t,r){let n=t.#r[0];this.#r.splice(r,1,...n.#r);for(let i of n.#r)typeof i=="object"&&(i.#o=this);this.#d=void 0}#y(t){return!!oEt.get(this.type)?.has(t)}#S(t){if(!t||typeof t!="object"||t.type!==null||t.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let r=t.#r[0];return!r||typeof r!="object"||r.type===null?!1:this.#y(r.type)}#I(t){let r=oEt.get(this.type),n=t.#r[0],i=r?.get(n.type);if(!i)return!1;this.#r=n.#r;for(let o of this.#r)typeof o=="object"&&(o.#o=this);this.type=i,this.#d=void 0,this.#p=!1}static fromGlob(t,r={}){let n=new zd(null,void 0,r);return zd.#c(t,n,0,r,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[r,n,i,o]=this.toRegExpSource();if(!(i||this.#t||this.#a.nocase&&!this.#a.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;let a=(this.#a.nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${r}$`,a),{_src:r,_glob:t})}get options(){return this.#a}toRegExpSource(t){let r=t??!!this.#a.dot;if(this.#e===this&&(this.#_(),this.#f()),!iEt(this)){let l=this.isStart()&&this.isEnd()&&!this.#r.some(m=>typeof m!="string"),c=this.#r.map(m=>{let[A,h,_,y]=typeof m=="string"?zd.#C(m,this.#t,l):m.toRegExpSource(t);return this.#t=this.#t||_,this.#n=this.#n||y,A}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&xsn.has(this.#r[0]))){let A=vsn,h=r&&A.has(c.charAt(0))||c.startsWith("\\.")&&A.has(c.charAt(2))||c.startsWith("\\.\\.")&&A.has(c.charAt(4)),_=!r&&!t&&A.has(c.charAt(0));u=h?Tsn:_?hX:""}let f="";return this.isEnd()&&this.#e.#s&&this.#o?.type==="!"&&(f="(?:$|\\/)"),[u+c+f,fS(c),this.#t=!!this.#t,this.#n]}let n=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:",o=this.#b(r);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let l=this.toString(),c=this;return c.#r=[l],c.type=null,c.#t=void 0,[l,fS(this.toString()),!1,!1]}let s=!n||t||r||!hX?"":this.#b(!0);s===o&&(s=""),s&&(o=`(?:${o})(?:${s})*?`);let a="";if(this.type==="!"&&this.#p)a=(this.isStart()&&!r?hX:"")+aEt;else{let l=this.type==="!"?"))"+(this.isStart()&&!r&&!t?hX:"")+sEt+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&s?")":this.type==="*"&&s?")?":`)${this.type}`;a=i+o+l}return[a,fS(o),this.#t=!!this.#t,this.#n]}#_(){if(iEt(this)){let t=0,r=!1;do{r=!0;for(let n=0;n<this.#r.length;n++){let i=this.#r[n];typeof i=="object"&&(i.#_(),this.#h(i)?(r=!1,this.#v(i,n)):this.#g(i)?(r=!1,this.#A(i,n)):this.#S(i)&&(r=!1,this.#I(i)))}}while(!r&&++t<10)}else for(let t of this.#r)typeof t=="object"&&t.#_();this.#d=void 0}#b(t){return this.#r.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[n,i,o,s]=r.toRegExpSource(t);return this.#n=this.#n||s,n}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#C(t,r,n=!1){let i=!1,o="",s=!1,a=!1;for(let l=0;l<t.length;l++){let c=t.charAt(l);if(i){i=!1,o+=(wsn.has(c)?"\\":"")+c;continue}if(c==="*"){if(a)continue;a=!0,o+=n&&/^[*]+$/.test(t)?aEt:sEt,r=!0;continue}else a=!1;if(c==="\\"){l===t.length-1?o+="\\\\":i=!0;continue}if(c==="["){let[u,f,g,m]=nEt(t,l);if(g){o+=u,s=s||f,l+=g-1,r=r||m;continue}}if(c==="?"){o+=mTe,r=!0;continue}o+=Dsn(c)}return[o,fS(t),!!r,s]}};zd=Gv;var gTe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:r=!1}={})=>r?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var hc=(e,t,r={})=>(i9(t),!r.nocomment&&t.charAt(0)==="#"?!1:new Y2(t,r).match(e)),Nsn=/^\*+([^+@!?*[(]*)$/,Bsn=e=>t=>!t.startsWith(".")&&t.endsWith(e),Osn=e=>t=>t.endsWith(e),ksn=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),Msn=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Qsn=/^\*+\.\*+$/,Psn=e=>!e.startsWith(".")&&e.includes("."),Lsn=e=>e!=="."&&e!==".."&&e.includes("."),Fsn=/^\.\*+$/,Usn=e=>e!=="."&&e!==".."&&e.startsWith("."),Hsn=/^\*+$/,$sn=e=>e.length!==0&&!e.startsWith("."),qsn=e=>e.length!==0&&e!=="."&&e!=="..",Gsn=/^\?+([^+@!?*[(]*)?$/,zsn=([e,t=""])=>{let r=uEt([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},jsn=([e,t=""])=>{let r=dEt([e]);return t?(t=t.toLowerCase(),n=>r(n)&&n.toLowerCase().endsWith(t)):r},Ysn=([e,t=""])=>{let r=dEt([e]);return t?n=>r(n)&&n.endsWith(t):r},Vsn=([e,t=""])=>{let r=uEt([e]);return t?n=>r(n)&&n.endsWith(t):r},uEt=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(".")},dEt=([e])=>{let t=e.length;return r=>r.length===t&&r!=="."&&r!==".."},fEt=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",lEt={win32:{sep:"\\"},posix:{sep:"/"}},Wsn=fEt==="win32"?lEt.win32.sep:lEt.posix.sep;hc.sep=Wsn;var Jc=Symbol("globstar **");hc.GLOBSTAR=Jc;var Ksn="[^/]",Jsn=Ksn+"*?",Zsn="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Xsn="(?:(?!(?:\\/|^)\\.).)*?",ean=(e,t={})=>r=>hc(r,e,t);hc.filter=ean;var Sm=(e,t={})=>Object.assign({},e,t),tan=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return hc;let t=hc;return Object.assign((n,i,o={})=>t(n,i,Sm(e,o)),{Minimatch:class extends t.Minimatch{constructor(i,o={}){super(i,Sm(e,o))}static defaults(i){return t.defaults(Sm(e,i)).Minimatch}},AST:class extends t.AST{constructor(i,o,s={}){super(i,o,Sm(e,s))}static fromGlob(i,o={}){return t.AST.fromGlob(i,Sm(e,o))}},unescape:(n,i={})=>t.unescape(n,Sm(e,i)),escape:(n,i={})=>t.escape(n,Sm(e,i)),filter:(n,i={})=>t.filter(n,Sm(e,i)),defaults:n=>t.defaults(Sm(e,n)),makeRe:(n,i={})=>t.makeRe(n,Sm(e,i)),braceExpand:(n,i={})=>t.braceExpand(n,Sm(e,i)),match:(n,i,o={})=>t.match(n,i,Sm(e,o)),sep:t.sep,GLOBSTAR:Jc})};hc.defaults=tan;var pEt=(e,t={})=>(i9(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:tEt(e,{max:t.braceExpandMax}));hc.braceExpand=pEt;var ran=(e,t={})=>new Y2(e,t).makeRe();hc.makeRe=ran;var nan=(e,t,r={})=>{let n=new Y2(t,r);return e=e.filter(i=>n.match(i)),n.options.nonull&&!e.length&&e.push(t),e};hc.match=nan;var cEt=/[?*]|[+@!]\(.*?\)|\[|\]/,ian=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Y2=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,r={}){i9(t),r=r||{},this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion??200,this.pattern=t,this.platform=r.platform||fEt,this.isWindows=this.platform==="win32";let n="allowWindowsEscape";this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r[n]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let i=this.globParts.map((o,s,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let l=o[0]===""&&o[1]===""&&(o[2]==="?"||!cEt.test(o[2]))&&!cEt.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(l)return[...o.slice(0,4),...o.slice(4).map(u=>this.parse(u))];if(c)return[o[0],...o.slice(1).map(u=>this.parse(u))]}return o.map(l=>this.parse(l))});if(this.debug(this.pattern,i),this.set=i.filter(o=>o.indexOf(!1)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let s=this.set[o];s[0]===""&&s[1]===""&&this.globParts[o][2]==="?"&&typeof s[3]=="string"&&/^[a-z]:$/i.test(s[3])&&(s[2]="?")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let n of t)for(let i=0;i<n.length;i++)n[i]==="**"&&(n[i]="*");let{optimizationLevel:r=1}=this.options;return r>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let n=-1;for(;(n=r.indexOf("**",n+1))!==-1;){let i=n;for(;r[i+1]==="**";)i++;i!==n&&r.splice(n,i-n)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((n,i)=>{let o=n[n.length-1];return i==="**"&&o==="**"?n:i===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(n.pop(),n):(n.push(i),n)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let i=1;i<t.length-1;i++){let o=t[i];i===1&&o===""&&t[0]===""||(o==="."||o==="")&&(r=!0,t.splice(i,1),i--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(r=!0,t.pop())}let n=0;for(;(n=t.indexOf("..",n+1))!==-1;){let i=t[n-1];i&&i!=="."&&i!==".."&&i!=="**"&&!(this.isWindows&&/^[a-z]:$/i.test(i))&&(r=!0,t.splice(n-1,2),n-=2)}}while(r);return t.length===0?[""]:t}firstPhasePreProcess(t){let r=!1;do{r=!1;for(let n of t){let i=-1;for(;(i=n.indexOf("**",i+1))!==-1;){let s=i;for(;n[s+1]==="**";)s++;s>i&&n.splice(i+1,s-i);let a=n[i+1],l=n[i+2],c=n[i+3];if(a!==".."||!l||l==="."||l===".."||!c||c==="."||c==="..")continue;r=!0,n.splice(i,1);let u=n.slice(0);u[i]="**",t.push(u),i--}if(!this.preserveMultipleSlashes){for(let s=1;s<n.length-1;s++){let a=n[s];s===1&&a===""&&n[0]===""||(a==="."||a==="")&&(r=!0,n.splice(s,1),s--)}n[0]==="."&&n.length===2&&(n[1]==="."||n[1]==="")&&(r=!0,n.pop())}let o=0;for(;(o=n.indexOf("..",o+1))!==-1;){let s=n[o-1];if(s&&s!=="."&&s!==".."&&s!=="**"){r=!0;let l=o===1&&n[o+1]==="**"?["."]:[];n.splice(o-1,2,...l),n.length===0&&n.push(""),o-=2}}}}while(r);return t}secondPhasePreProcess(t){for(let r=0;r<t.length-1;r++)for(let n=r+1;n<t.length;n++){let i=this.partsMatch(t[r],t[n],!this.preserveMultipleSlashes);if(i){t[r]=[],t[n]=i;break}}return t.filter(r=>r.length)}partsMatch(t,r,n=!1){let i=0,o=0,s=[],a="";for(;i<t.length&&o<r.length;)if(t[i]===r[o])s.push(a==="b"?r[o]:t[i]),i++,o++;else if(n&&t[i]==="**"&&r[o]===t[i+1])s.push(t[i]),i++;else if(n&&r[o]==="**"&&t[i]===r[o+1])s.push(r[o]),o++;else if(t[i]==="*"&&r[o]&&(this.options.dot||!r[o].startsWith("."))&&r[o]!=="**"){if(a==="b")return!1;a="a",s.push(t[i]),i++,o++}else if(r[o]==="*"&&t[i]&&(this.options.dot||!t[i].startsWith("."))&&t[i]!=="**"){if(a==="a")return!1;a="b",s.push(r[o]),i++,o++}else return!1;return t.length===r.length&&s}parseNegate(){if(this.nonegate)return;let t=this.pattern,r=!1,n=0;for(let i=0;i<t.length&&t.charAt(i)==="!";i++)r=!r,n++;n&&(this.pattern=t.slice(n)),this.negate=r}matchOne(t,r,n=!1){let i=0,o=0;if(this.isWindows){let a=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),l=!a&&t[0]===""&&t[1]===""&&t[2]==="?"&&/^[a-z]:$/i.test(t[3]),c=typeof r[0]=="string"&&/^[a-z]:$/i.test(r[0]),u=!c&&r[0]===""&&r[1]===""&&r[2]==="?"&&typeof r[3]=="string"&&/^[a-z]:$/i.test(r[3]),f=l?3:a?0:void 0,g=u?3:c?0:void 0;if(typeof f=="number"&&typeof g=="number"){let[m,A]=[t[f],r[g]];m.toLowerCase()===A.toLowerCase()&&(r[g]=m,o=g,i=f)}}let{optimizationLevel:s=1}=this.options;return s>=2&&(t=this.levelTwoFileOptimize(t)),r.includes(Jc)?this.#e(t,r,n,i,o):this.#n(t,r,n,i,o)}#e(t,r,n,i,o){let s=r.indexOf(Jc,o),a=r.lastIndexOf(Jc),[l,c,u]=n?[r.slice(o,s),r.slice(s+1),[]]:[r.slice(o,s),r.slice(s+1,a),r.slice(a+1)];if(l.length){let S=t.slice(i,i+l.length);if(!this.#n(S,l,n,0,0))return!1;i+=l.length,o+=l.length}let f=0;if(u.length){if(u.length+i>t.length)return!1;let S=t.length-u.length;if(this.#n(t,u,n,S,0))f=u.length;else{if(t[t.length-1]!==""||i+u.length===t.length||(S--,!this.#n(t,u,n,S,0)))return!1;f=u.length+1}}if(!c.length){let S=!!f;for(let I=i;I<t.length-f;I++){let w=String(t[I]);if(S=!0,w==="."||w===".."||!this.options.dot&&w.startsWith("."))return!1}return n||S}let g=[[[],0]],m=g[0],A=0,h=[0];for(let S of c)S===Jc?(h.push(A),m=[[],0],g.push(m)):(m[0].push(S),A++);let _=g.length-1,y=t.length-f;for(let S of g)S[1]=y-(h[_--]+S[0].length);return!!this.#t(t,g,i,0,n,0,!!f)}#t(t,r,n,i,o,s,a){let l=r[i];if(!l){for(let f=n;f<t.length;f++){a=!0;let g=t[f];if(g==="."||g===".."||!this.options.dot&&g.startsWith("."))return!1}return a}let[c,u]=l;for(;n<=u;){if(this.#n(t.slice(0,n+c.length),c,o,n,0)&&s<this.maxGlobstarRecursion){let m=this.#t(t,r,n+c.length,i+1,o,s+1,a);if(m!==!1)return m}let g=t[n];if(g==="."||g===".."||!this.options.dot&&g.startsWith("."))return!1;n++}return o||null}#n(t,r,n,i,o){let s,a,l,c;for(s=i,a=o,c=t.length,l=r.length;s<c&&a<l;s++,a++){this.debug("matchOne loop");let u=r[a],f=t[s];if(this.debug(r,u,f),u===!1||u===Jc)return!1;let g;if(typeof u=="string"?(g=f===u,this.debug("string match",u,f,g)):(g=u.test(f),this.debug("pattern match",u,f,g)),!g)return!1}if(s===c&&a===l)return!0;if(s===c)return n;if(a===l)return s===c-1&&t[s]==="";throw new Error("wtf?")}braceExpand(){return pEt(this.pattern,this.options)}parse(t){i9(t);let r=this.options;if(t==="**")return Jc;if(t==="")return"";let n,i=null;(n=t.match(Hsn))?i=r.dot?qsn:$sn:(n=t.match(Nsn))?i=(r.nocase?r.dot?Msn:ksn:r.dot?Osn:Bsn)(n[1]):(n=t.match(Gsn))?i=(r.nocase?r.dot?jsn:zsn:r.dot?Ysn:Vsn)(n):(n=t.match(Qsn))?i=r.dot?Lsn:Psn:(n=t.match(Fsn))&&(i=Usn);let o=Gv.fromGlob(t,this.options).toMMPattern();return i&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:i}),o}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,n=r.noglobstar?Jsn:r.dot?Zsn:Xsn,i=new Set(r.nocase?["i"]:[]),o=t.map(l=>{let c=l.map(f=>{if(f instanceof RegExp)for(let g of f.flags.split(""))i.add(g);return typeof f=="string"?ian(f):f===Jc?Jc:f._src});c.forEach((f,g)=>{let m=c[g+1],A=c[g-1];f!==Jc||A===Jc||(A===void 0?m!==void 0&&m!==Jc?c[g+1]="(?:\\/|"+n+"\\/)?"+m:c[g]=n:m===void 0?c[g-1]=A+"(?:\\/|\\/"+n+")?":m!==Jc&&(c[g-1]=A+"(?:\\/|\\/"+n+"\\/)"+m,c[g+1]=Jc))});let u=c.filter(f=>f!==Jc);if(this.partial&&u.length>=1){let f=[];for(let g=1;g<=u.length;g++)f.push(u.slice(0,g).join("/"));return"(?:"+f.join("|")+")"}return u.join("/")}).join("|"),[s,a]=t.length>1?["(?:",")"]:["",""];o="^"+s+o+a+"$",this.partial&&(o="^(?:\\/|"+s+o.slice(1,-1)+a+")$"),this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,r=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&r)return!0;let n=this.options;this.isWindows&&(t=t.split("\\").join("/"));let i=this.slashSplit(t);this.debug(this.pattern,"split",i);let o=this.set;this.debug(this.pattern,"set",o);let s=i[i.length-1];if(!s)for(let a=i.length-2;!s&&a>=0;a--)s=i[a];for(let a of o){let l=i;if(n.matchBase&&a.length===1&&(l=[s]),this.matchOne(l,a,r))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(t){return hc.defaults(t).Minimatch}};hc.AST=Gv;hc.Minimatch=Y2;hc.escape=gTe;hc.unescape=fS;var AEt=X(r9(),1);Er();He();ke();wu();import{readFile as mEt}from"fs/promises";import{existsSync as ATe,readdirSync as oan,statSync as san}from"fs";import{join as hTe,relative as hEt}from"path";import{homedir as aan}from"os";function gEt(e){try{let t=(0,AEt.default)(e),r=t.data.paths,n=[];return typeof r=="string"?n=r.split(",").map(i=>i.trim()).filter(Boolean):Array.isArray(r)&&(n=r.filter(i=>typeof i=="string")),{paths:n,content:t.content.trim()}}catch(t){return ve(t),{paths:[],content:e.trim()}}}function lan(e,t){return t.length===0?!0:t.some(r=>{try{return hc(e,r,{matchBase:!0,dot:!0})}catch(n){return ve(n),!1}})}function ETe(e){let t=[];try{if(!ATe(e))return t;let r=oan(e);for(let n of r){let i=hTe(e,n),o=san(i);o.isDirectory()?t.push(...ETe(i)):o.isFile()&&n.endsWith(".md")&&t.push(i)}}catch(r){ve(r)}return t}async function EEt(){let e=[];try{let t=hTe(aan(),Xr,"rules");if(ATe(t)){let r=ETe(t);for(let n of r)try{let i=await mEt(n,"utf-8"),{paths:o,content:s}=gEt(i);o.length>0&&e.push({filePath:n,content:s,paths:o,isProjectRule:!1})}catch(i){ve(i)}}}catch(t){ve(t)}try{let t=hTe(Oe(),Xr,"rules");if(ATe(t)){let r=ETe(t);for(let n of r)try{let i=await mEt(n,"utf-8"),{paths:o,content:s}=gEt(i);o.length>0&&e.push({filePath:hEt(Oe(),n),content:s,paths:o,isProjectRule:!0})}catch(i){ve(i)}}}catch(t){ve(t)}return e}function _Et(e,t){e=FV(e);let r=FV(Oe()),n=e.startsWith(r)?hEt(r,e):e;return t.filter(i=>lan(n,i.paths))}var pan=`# hawaCodeMd
762
762
  Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.`;function man(e="default"){let r=Je.getSessionContext(e).getData("matchedPathRules");return!r||r.length===0?"":r.map(i=>{let o=i.isProjectRule?"project instructions, checked into the codebase":"user's private global instructions for all projects";return`Contents of ${i.filePath} (${o}):
763
763
 
764
764
  ${i.content}`}).join(`
@@ -1130,7 +1130,7 @@ You are powered by the model ${e}.`}async function Ax(){return s9()?`gitStatus:
1130
1130
  <context name="${c}">${u}</context>`;let s=i.map(c=>{let u=c.prompt({},t),f=JSON.stringify("inputJSONSchema"in c&&c.inputJSONSchema?c.inputJSONSchema:d0(c.inputSchema));return{name:c.name,description:`${u}
1131
1131
 
1132
1132
  Schema:
1133
- ${f}`}}),{messages:a}=t,l=Fdn(o);return Udn(o,l,s,a)}},hbt=Hdn;Yg();var $u=X(pe(),1),IO=X(pe(),1);ke();ke();import{existsSync as $dn,readdirSync as qdn,statSync as Gdn}from"fs";import{join as zdn}from"path";function jdn(){let e=Zi.plan();if(!$dn(e))return[];try{return qdn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=zdn(e,r),i=Gdn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var Ebt=({onSelect:e})=>{let[t,r]=(0,IO.useState)([]),[n,i]=(0,IO.useState)(0),[o,s]=(0,IO.useState)(!1);(0,IO.useEffect)(()=>{let c=jdn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];er((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Be();return o?$u.createElement(R,{flexDirection:"column",marginY:1},$u.createElement(R,{marginBottom:1},$u.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),$u.createElement(R,{marginBottom:1},$u.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return $u.createElement(R,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},$u.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),$u.createElement(v,{color:f?l.claude:l.text}," "),$u.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&$u.createElement(v,{dimColor:!0}," ","(",lAe(c.modified),")"))}),$u.createElement(R,{marginTop:1,marginLeft:2},$u.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):$u.createElement(R,{flexDirection:"column",marginY:1},$u.createElement(v,null,"Loading plan history..."))};var _bt=X(pe(),1),Ydn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return vi.isPlanMode()?(e("Already in plan mode."),null):_bt.createElement(Ebt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?vi.setCurrentPlanFilePath(t):vi.generatePlanFilePath(),vi.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},ybt=Ydn;Yg();var Vdn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return vi.isAutoMode()?"Already in auto mode.":(vi.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},bbt=Vdn;Er();import{resolve as Wdn}from"path";var Kdn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Oe(),n=Wdn(r,t);da(n);let i=Oe();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Cbt=Kdn;var XSt=X(pe(),1);var $n=X(pe(),1);var wfn=X(pe(),1);var q9=X(pe(),1),Tfn=X(vbt(),1);var xbt={info:"blue",success:"green",error:"red",warning:"yellow"},ufn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:xbt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:xbt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Vt.info),e==="success"&&(t=Vt.tick),e==="error"&&(t=Vt.cross),e==="warning"&&(t=Vt.warning),{icon:t}}},wbt=ufn;var dfn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Dbt=dfn;var ffn={styles:{input:({isFocused:e})=>({dimColor:!e})}},Rbt=ffn;var pfn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Nbt=pfn;var mfn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},Bbt=mfn;var gfn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Vt.square,remainingCharacter:Vt.squareLightShade})},Obt=gfn;var Afn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},kbt=Afn;var hfn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Mbt=hfn;var Efn={success:"green",error:"red",warning:"yellow",info:"blue"},_fn={success:Vt.tick,error:Vt.cross,warning:Vt.warning,info:Vt.info},yfn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Efn[e]}),message:()=>({})},config:({variant:e})=>({icon:_fn[e]})},Qbt=yfn;var bfn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Vt.line})},Pbt=bfn;var Cfn={styles:{value:()=>({})}},Lbt=Cfn;var Sfn={styles:{value:()=>({})}},Fbt=Sfn;var Ifn={styles:{value:()=>({})}},Ubt=Ifn;var vfn={components:{Alert:wbt,Badge:Dbt,ConfirmInput:Rbt,MultiSelect:Nbt,OrderedList:Bbt,ProgressBar:Obt,Select:kbt,Spinner:Mbt,StatusMessage:Qbt,UnorderedList:Pbt,TextInput:Lbt,EmailInput:Fbt,PasswordInput:Ubt}},xfn=(0,q9.createContext)(vfn);var mo=e=>(0,q9.useContext)(xfn).components[e];var Dfn=X(pe(),1);var M_=X(pe(),1);var vO=X(pe(),1);var Hbt=X(pe(),1);var G9=Vt.line;var bee=(0,Hbt.createContext)({marker:G9});function $bt({children:e}){let{marker:t}=(0,vO.useContext)(bee),{styles:r}=mo("UnorderedList");return vO.default.createElement(R,{...r.listItem()},vO.default.createElement(v,{...r.marker()},t),vO.default.createElement(R,{...r.content()},e))}var qbt=X(pe(),1),rxe=(0,qbt.createContext)({depth:0});function Rfn({children:e}){let{depth:t}=(0,M_.useContext)(rxe),{styles:r,config:n}=mo("UnorderedList"),i=(0,M_.useMemo)(()=>({depth:t+1}),[t]),o=(0,M_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??G9}:{marker:G9}},[n,t]);return M_.default.createElement(rxe.Provider,{value:i},M_.default.createElement(bee.Provider,{value:o},M_.default.createElement(R,{...r.list()},e)))}Rfn.Item=$bt;var Bfn=X(pe(),1);var Nfn=X(pe(),1);var z9=X(pe(),1);var xO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Gbt=X(pe(),1);var wO=X(pe(),1);var j9=X(pe(),1);function zbt({isFocused:e,isSelected:t,children:r}){let{styles:n}=mo("Select");return j9.default.createElement(R,{...n.option({isFocused:e})},e&&j9.default.createElement(v,{...n.focusIndicator()},Vt.pointer),j9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&j9.default.createElement(v,{...n.selectedIndicator()},Vt.tick))}var Dm=X(pe(),1);import{isDeepStrictEqual as Ofn}from"node:util";var kfn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},jbt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new xO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},Ybt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Dm.useReducer)(kfn,{visibleOptionCount:e,defaultValue:r,options:t},jbt),[s,a]=(0,Dm.useState)(t);t!==s&&!Ofn(t,s)&&(o({type:"reset",state:jbt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Dm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Dm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Dm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Dm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Dm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Vbt=({isDisabled:e=!1,state:t})=>{er((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function DO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=Ybt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Vbt({isDisabled:e,state:s});let{styles:a}=mo("Select");return wO.default.createElement(R,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=wO.default.createElement(wO.default.Fragment,null,l.label.slice(0,u),wO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return wO.default.createElement(zbt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Mfn=X(pe(),1);var Wbt=X(pe(),1);var Pfn=X(pe(),1);var Cee=X(pe(),1);var Qfn=X(pe(),1);var EMi=cr.inverse(" ");var Zg=X(pe(),1);var RO=X(pe(),1);var Kbt=X(pe(),1);var See=(0,Kbt.createContext)({marker:Vt.line});function Iee({children:e}){let{marker:t}=(0,RO.useContext)(See),{styles:r}=mo("OrderedList");return RO.default.createElement(R,{...r.listItem()},RO.default.createElement(v,{...r.marker()},t),RO.default.createElement(R,{...r.content()},e))}var Jbt=X(pe(),1),nxe=(0,Jbt.createContext)({marker:""});function Xg({children:e}){let{marker:t}=(0,Zg.useContext)(nxe),{styles:r}=mo("OrderedList"),n=0;for(let o of Zg.default.Children.toArray(e))!(0,Zg.isValidElement)(o)||o.type!==Iee||n++;let i=String(n).length;return Zg.default.createElement(R,{...r.list()},Zg.default.Children.map(e,(o,s)=>{if(!(0,Zg.isValidElement)(o)||o.type!==Iee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Zg.default.createElement(nxe.Provider,{value:{marker:l}},Zg.default.createElement(See.Provider,{value:{marker:l}},o))}))}Xg.Item=Iee;var Ffn=X(pe(),1);var ixe=X(pe(),1);var Lfn=X(pe(),1);var YMi=cr.inverse(" ");var Ufn=X(pe(),1);var Hfn=X(pe(),1);var qfn=X(pe(),1);var Tee=X(pe(),1);var $fn=X(pe(),1);var hQi=cr.inverse(" ");var qi=X(pe(),1);var oxe=X(pe(),1),sxe=X(pe(),1);l9();fs();Pi();ix();ar();var Zbt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function eA(){let e=[...Zbt,...[...Zbt].reverse()],{frame:t}=BR({interval:120});return oxe.createElement(R,{flexWrap:"nowrap",height:1,width:2},oxe.createElement(v,{color:Be().claude},e[t%e.length]))}var wee=X(pe(),1);var xee=null,Q_=null,vee=new Set;function lxe(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Kpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function axe(){Q_&&(xee=lxe(Q_),vee.forEach(e=>e(xee)))}function Gfn(e,t){return Q_!==e&&(Q_&&Q_.off("resize",axe),Q_=e,xee=lxe(e),e.on("resize",axe)),vee.add(t),()=>{vee.delete(t),vee.size===0&&Q_&&(Q_.off("resize",axe),Q_=null,xee=null)}}function cxe(){let{stdout:e}=Ob(),[t,r]=(0,wee.useState)(()=>lxe(e));return(0,wee.useEffect)(()=>Gfn(e,r),[e]),t}function NO(){return cxe()}He();Bf();ke();mh();ke();var sLi=X(Rxe(),1);import{homedir as t4}from"os";import{join as kO}from"path";import{existsSync as r4,mkdirSync as HSt,appendFileSync as USt,readFileSync as $St,constants as Hgn,writeFileSync as $gn,unlinkSync as qSt,statSync as qgn}from"fs";import{platform as GSt}from"process";import{accessSync as Ggn}from"fs";var Ugn="2.4.29",e4={VERSION:Ugn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var Ex=kO(V0,".update.lock"),zgn=300*1e3;function zSt(){try{if(r4(V0)||HSt(V0,{recursive:!0}),r4(Ex)){let e=qgn(Ex);if(Date.now()-e.mtimeMs<zgn)return!1;try{qSt(Ex)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return $gn(Ex,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function jSt(){try{r4(Ex)&&$St(Ex,"utf8")===`${process.pid}`&&qSt(Ex)}catch(e){ve(`Failed to release lock: ${e}`)}}async function Nxe(){try{let e=await ai("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{Ggn(t,Hgn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function YSt(e){if(!zSt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:e4.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{r4(e)||HSt(e,{recursive:!0});let t=await ai(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1133
+ ${f}`}}),{messages:a}=t,l=Fdn(o);return Udn(o,l,s,a)}},hbt=Hdn;Yg();var $u=X(pe(),1),IO=X(pe(),1);ke();ke();import{existsSync as $dn,readdirSync as qdn,statSync as Gdn}from"fs";import{join as zdn}from"path";function jdn(){let e=Zi.plan();if(!$dn(e))return[];try{return qdn(e).filter(r=>r.endsWith(".md")).map(r=>{let n=zdn(e,r),i=Gdn(n);return{name:r,path:n,modified:i.mtime}}).sort((r,n)=>n.modified.getTime()-r.modified.getTime())}catch{return[]}}var Ebt=({onSelect:e})=>{let[t,r]=(0,IO.useState)([]),[n,i]=(0,IO.useState)(0),[o,s]=(0,IO.useState)(!1);(0,IO.useEffect)(()=>{let c=jdn();r(c),s(!0)},[]);let a=[{label:"New plan",value:"__NEW_PLAN__",isNew:!0},...t.map(c=>({label:c.name,value:c.path,isNew:!1,modified:c.modified}))];er((c,u)=>{if(u.upArrow)i(f=>f>0?f-1:a.length-1);else if(u.downArrow)i(f=>f<a.length-1?f+1:0);else if(u.return){let f=a[n];f&&e(f.value)}else u.escape&&e("__CANCELLED__")});let l=Be();return o?$u.createElement(R,{flexDirection:"column",marginY:1},$u.createElement(R,{marginBottom:1},$u.createElement(v,{bold:!0,color:l.claude},"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),$u.createElement(R,{marginBottom:1},$u.createElement(v,{bold:!0,color:l.claude}," Select a plan to continue, or create a new one")),a.map((c,u)=>{let f=u===n;return $u.createElement(R,{key:c.isNew?"new":c.value,flexDirection:"row",marginLeft:2},$u.createElement(v,{color:f?l.claude:l.text},f?"\u276F":" "),$u.createElement(v,{color:f?l.claude:l.text}," "),$u.createElement(v,{color:f?l.claude:l.text,bold:c.isNew},c.isNew?c.label:c.label.replace(".md","")),!c.isNew&&c.modified&&$u.createElement(v,{dimColor:!0}," ","(",lAe(c.modified),")"))}),$u.createElement(R,{marginTop:1,marginLeft:2},$u.createElement(v,{dimColor:!0},"\u2191/\u2193 to select \xB7 Enter to confirm \xB7 Esc to cancel"))):$u.createElement(R,{flexDirection:"column",marginY:1},$u.createElement(v,null,"Loading plan history..."))};var _bt=X(pe(),1),Ydn={type:"local-jsx",name:"plan",description:()=>"Enable plan mode",isEnabled:!0,isHidden:!1,disableCancel:!0,async call(e){return vi.isPlanMode()?(e("Already in plan mode."),null):_bt.createElement(Ebt,{onSelect:t=>{if(t==="__CANCELLED__"){e("Cancelled.");return}t&&t!=="__NEW_PLAN__"?vi.setCurrentPlanFilePath(t):vi.generatePlanFilePath(),vi.setMode("plan",!0,!1),e("Enabled plan mode")}})},userFacingName(){return"plan"}},ybt=Ydn;Yg();var Vdn={type:"local",name:"auto",description:()=>"Enable auto mode",isEnabled:!0,isHidden:!1,async call(){return vi.isAutoMode()?"Already in auto mode.":(vi.setMode("auto",!0),"Enabled auto mode")},userFacingName(){return"auto"}},bbt=Vdn;Er();import{resolve as Wdn}from"path";var Kdn={type:"local",name:"cd",description:()=>"Move this session to a new working directory",isEnabled:!0,isHidden:!1,argNames:["path"],async call(e){let t=e.trim();if(t==="")throw new Error("Missing directory path. Usage: /cd <path>");let r=Oe(),n=Wdn(r,t);da(n);let i=Oe();return i===r?`Already in ${i}.`:`Changed directory to ${i}/`},userFacingName(){return"cd"}},Cbt=Kdn;var XSt=X(pe(),1);var $n=X(pe(),1);var wfn=X(pe(),1);var q9=X(pe(),1),Tfn=X(vbt(),1);var xbt={info:"blue",success:"green",error:"red",warning:"yellow"},ufn={styles:{container:({variant:e})=>({flexGrow:1,borderStyle:"round",borderColor:xbt[e],gap:1,paddingX:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:xbt[e]}),content:()=>({flexShrink:1,flexGrow:1,minWidth:0,flexDirection:"column",gap:1}),title:()=>({bold:!0}),message:()=>({})},config({variant:e}){let t;return e==="info"&&(t=Vt.info),e==="success"&&(t=Vt.tick),e==="error"&&(t=Vt.cross),e==="warning"&&(t=Vt.warning),{icon:t}}},wbt=ufn;var dfn={styles:{container:({color:e})=>({backgroundColor:e}),label:()=>({color:"black"})}},Dbt=dfn;var ffn={styles:{input:({isFocused:e})=>({dimColor:!e})}},Rbt=ffn;var pfn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},Nbt=pfn;var mfn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})}},Bbt=mfn;var gfn={styles:{container:()=>({flexGrow:1,minWidth:0}),completed:()=>({color:"magenta"}),remaining:()=>({dimColor:!0})},config:()=>({completedCharacter:Vt.square,remainingCharacter:Vt.squareLightShade})},Obt=gfn;var Afn={styles:{container:()=>({flexDirection:"column"}),option:({isFocused:e})=>({gap:1,paddingLeft:e?0:2}),selectedIndicator:()=>({color:"green"}),focusIndicator:()=>({color:"blue"}),label({isFocused:e,isSelected:t}){let r;return t&&(r="green"),e&&(r="blue"),{color:r}},highlightedText:()=>({bold:!0})}},kbt=Afn;var hfn={styles:{container:()=>({gap:1}),frame:()=>({color:"blue"}),label:()=>({})}},Mbt=hfn;var Efn={success:"green",error:"red",warning:"yellow",info:"blue"},_fn={success:Vt.tick,error:Vt.cross,warning:Vt.warning,info:Vt.info},yfn={styles:{container:()=>({gap:1}),iconContainer:()=>({flexShrink:0}),icon:({variant:e})=>({color:Efn[e]}),message:()=>({})},config:({variant:e})=>({icon:_fn[e]})},Qbt=yfn;var bfn={styles:{list:()=>({flexDirection:"column"}),listItem:()=>({gap:1}),marker:()=>({dimColor:!0}),content:()=>({flexDirection:"column"})},config:()=>({marker:Vt.line})},Pbt=bfn;var Cfn={styles:{value:()=>({})}},Lbt=Cfn;var Sfn={styles:{value:()=>({})}},Fbt=Sfn;var Ifn={styles:{value:()=>({})}},Ubt=Ifn;var vfn={components:{Alert:wbt,Badge:Dbt,ConfirmInput:Rbt,MultiSelect:Nbt,OrderedList:Bbt,ProgressBar:Obt,Select:kbt,Spinner:Mbt,StatusMessage:Qbt,UnorderedList:Pbt,TextInput:Lbt,EmailInput:Fbt,PasswordInput:Ubt}},xfn=(0,q9.createContext)(vfn);var mo=e=>(0,q9.useContext)(xfn).components[e];var Dfn=X(pe(),1);var M_=X(pe(),1);var vO=X(pe(),1);var Hbt=X(pe(),1);var G9=Vt.line;var bee=(0,Hbt.createContext)({marker:G9});function $bt({children:e}){let{marker:t}=(0,vO.useContext)(bee),{styles:r}=mo("UnorderedList");return vO.default.createElement(R,{...r.listItem()},vO.default.createElement(v,{...r.marker()},t),vO.default.createElement(R,{...r.content()},e))}var qbt=X(pe(),1),rxe=(0,qbt.createContext)({depth:0});function Rfn({children:e}){let{depth:t}=(0,M_.useContext)(rxe),{styles:r,config:n}=mo("UnorderedList"),i=(0,M_.useMemo)(()=>({depth:t+1}),[t]),o=(0,M_.useMemo)(()=>{let{marker:s}=n();return typeof s=="string"?{marker:s}:Array.isArray(s)?{marker:s[t]??s.at(-1)??G9}:{marker:G9}},[n,t]);return M_.default.createElement(rxe.Provider,{value:i},M_.default.createElement(bee.Provider,{value:o},M_.default.createElement(R,{...r.list()},e)))}Rfn.Item=$bt;var Bfn=X(pe(),1);var Nfn=X(pe(),1);var z9=X(pe(),1);var xO=class extends Map{first;constructor(t){let r=[],n,i,o=0;for(let s of t){let a={...s,previous:i,next:void 0,index:o};i&&(i.next=a),n||=a,r.push([s.value,a]),o++,i=a}super(r),this.first=n}};var Gbt=X(pe(),1);var wO=X(pe(),1);var j9=X(pe(),1);function zbt({isFocused:e,isSelected:t,children:r}){let{styles:n}=mo("Select");return j9.default.createElement(R,{...n.option({isFocused:e})},e&&j9.default.createElement(v,{...n.focusIndicator()},Vt.pointer),j9.default.createElement(v,{...n.label({isFocused:e,isSelected:t})},r),t&&j9.default.createElement(v,{...n.selectedIndicator()},Vt.tick))}var Dm=X(pe(),1);import{isDeepStrictEqual as Ofn}from"node:util";var kfn=(e,t)=>{switch(t.type){case"focus-next-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.next;if(!n)return e;if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let o=Math.min(e.optionMap.size,e.visibleToIndex+1),s=o-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:s,visibleToIndex:o}}case"focus-previous-option":{if(!e.focusedValue)return e;let r=e.optionMap.get(e.focusedValue);if(!r)return e;let n=r.previous;if(!n)return e;if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let o=Math.max(0,e.visibleFromIndex-1),s=o+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:o,visibleToIndex:s}}case"select-focused-option":return{...e,previousValue:e.value,value:e.focusedValue};case"reset":return t.state}},jbt=({visibleOptionCount:e,defaultValue:t,options:r})=>{let n=typeof e=="number"?Math.min(e,r.length):r.length,i=new xO(r);return{optionMap:i,visibleOptionCount:n,focusedValue:i.first?.value,visibleFromIndex:0,visibleToIndex:n,previousValue:t,value:t}},Ybt=({visibleOptionCount:e=5,options:t,defaultValue:r,onChange:n})=>{let[i,o]=(0,Dm.useReducer)(kfn,{visibleOptionCount:e,defaultValue:r,options:t},jbt),[s,a]=(0,Dm.useState)(t);t!==s&&!Ofn(t,s)&&(o({type:"reset",state:jbt({visibleOptionCount:e,defaultValue:r,options:t})}),a(t));let l=(0,Dm.useCallback)(()=>{o({type:"focus-next-option"})},[]),c=(0,Dm.useCallback)(()=>{o({type:"focus-previous-option"})},[]),u=(0,Dm.useCallback)(()=>{o({type:"select-focused-option"})},[]),f=(0,Dm.useMemo)(()=>t.map((g,m)=>({...g,index:m})).slice(i.visibleFromIndex,i.visibleToIndex),[t,i.visibleFromIndex,i.visibleToIndex]);return(0,Dm.useEffect)(()=>{i.value&&i.previousValue!==i.value&&n?.(i.value)},[i.previousValue,i.value,t,n]),{focusedValue:i.focusedValue,visibleFromIndex:i.visibleFromIndex,visibleToIndex:i.visibleToIndex,value:i.value,visibleOptions:f,focusNextOption:l,focusPreviousOption:c,selectFocusedOption:u}};var Vbt=({isDisabled:e=!1,state:t})=>{er((r,n)=>{n.downArrow&&t.focusNextOption(),n.upArrow&&t.focusPreviousOption(),n.return&&t.selectFocusedOption()},{isActive:!e})};function DO({isDisabled:e=!1,visibleOptionCount:t=5,highlightText:r,options:n,defaultValue:i,onChange:o}){let s=Ybt({visibleOptionCount:t,options:n,defaultValue:i,onChange:o});Vbt({isDisabled:e,state:s});let{styles:a}=mo("Select");return wO.default.createElement(R,{...a.container()},s.visibleOptions.map(l=>{let c=l.label;if(r&&l.label.includes(r)){let u=l.label.indexOf(r);c=wO.default.createElement(wO.default.Fragment,null,l.label.slice(0,u),wO.default.createElement(v,{...a.highlightedText()},r),l.label.slice(u+r.length))}return wO.default.createElement(zbt,{key:l.value,isFocused:!e&&s.focusedValue===l.value,isSelected:s.value===l.value},c)}))}var Mfn=X(pe(),1);var Wbt=X(pe(),1);var Pfn=X(pe(),1);var Cee=X(pe(),1);var Qfn=X(pe(),1);var EMi=cr.inverse(" ");var Zg=X(pe(),1);var RO=X(pe(),1);var Kbt=X(pe(),1);var See=(0,Kbt.createContext)({marker:Vt.line});function Iee({children:e}){let{marker:t}=(0,RO.useContext)(See),{styles:r}=mo("OrderedList");return RO.default.createElement(R,{...r.listItem()},RO.default.createElement(v,{...r.marker()},t),RO.default.createElement(R,{...r.content()},e))}var Jbt=X(pe(),1),nxe=(0,Jbt.createContext)({marker:""});function Xg({children:e}){let{marker:t}=(0,Zg.useContext)(nxe),{styles:r}=mo("OrderedList"),n=0;for(let o of Zg.default.Children.toArray(e))!(0,Zg.isValidElement)(o)||o.type!==Iee||n++;let i=String(n).length;return Zg.default.createElement(R,{...r.list()},Zg.default.Children.map(e,(o,s)=>{if(!(0,Zg.isValidElement)(o)||o.type!==Iee)return o;let a=`${String(s+1).padStart(i)}.`,l=`${t}${a}`;return Zg.default.createElement(nxe.Provider,{value:{marker:l}},Zg.default.createElement(See.Provider,{value:{marker:l}},o))}))}Xg.Item=Iee;var Ffn=X(pe(),1);var ixe=X(pe(),1);var Lfn=X(pe(),1);var YMi=cr.inverse(" ");var Ufn=X(pe(),1);var Hfn=X(pe(),1);var qfn=X(pe(),1);var Tee=X(pe(),1);var $fn=X(pe(),1);var hQi=cr.inverse(" ");var qi=X(pe(),1);var oxe=X(pe(),1),sxe=X(pe(),1);l9();fs();Pi();ix();ar();var Zbt=process.platform==="darwin"?["\xB7","\u2722","\u2733","\u2217","\u273B","\u273D"]:["\xB7","\u2722","*","\u2217","\u273B","\u273D"];function eA(){let e=[...Zbt,...[...Zbt].reverse()],{frame:t}=BR({interval:120});return oxe.createElement(R,{flexWrap:"nowrap",height:1,width:2},oxe.createElement(v,{color:Be().claude},e[t%e.length]))}var wee=X(pe(),1);var xee=null,Q_=null,vee=new Set;function lxe(e){let{columns:t,rows:r}=e;if(t&&r)return{columns:t,rows:r};let n=Kpe();return{columns:t||n.columns||80,rows:r||n.rows||24}}function axe(){Q_&&(xee=lxe(Q_),vee.forEach(e=>e(xee)))}function Gfn(e,t){return Q_!==e&&(Q_&&Q_.off("resize",axe),Q_=e,xee=lxe(e),e.on("resize",axe)),vee.add(t),()=>{vee.delete(t),vee.size===0&&Q_&&(Q_.off("resize",axe),Q_=null,xee=null)}}function cxe(){let{stdout:e}=Ob(),[t,r]=(0,wee.useState)(()=>lxe(e));return(0,wee.useEffect)(()=>Gfn(e,r),[e]),t}function NO(){return cxe()}He();Bf();ke();mh();ke();var sLi=X(Rxe(),1);import{homedir as t4}from"os";import{join as kO}from"path";import{existsSync as r4,mkdirSync as HSt,appendFileSync as USt,readFileSync as $St,constants as Hgn,writeFileSync as $gn,unlinkSync as qSt,statSync as qgn}from"fs";import{platform as GSt}from"process";import{accessSync as Ggn}from"fs";var Ugn="2.4.30",e4={VERSION:Ugn,PACKAGE_URL:"@dahawa/hawa-code",README_URL:"https://github.com/italking/hawa-code",ISSUES_EXPLAINER:"report the issue at https://github.com/italking/hawa-code/issues"};He();var Ex=kO(V0,".update.lock"),zgn=300*1e3;function zSt(){try{if(r4(V0)||HSt(V0,{recursive:!0}),r4(Ex)){let e=qgn(Ex);if(Date.now()-e.mtimeMs<zgn)return!1;try{qSt(Ex)}catch(r){return ve(`Failed to remove stale lock file: ${r}`),!1}}return $gn(Ex,`${process.pid}`,"utf8"),!0}catch(e){return ve(`Failed to acquire lock: ${e}`),!1}}function jSt(){try{r4(Ex)&&$St(Ex,"utf8")===`${process.pid}`&&qSt(Ex)}catch(e){ve(`Failed to release lock: ${e}`)}}async function Nxe(){try{let e=await ai("npm -g config get prefix");if(e.code!==0)return ve("Failed to check npm permissions"),{hasPermissions:!1,npmPrefix:null};let t=e.stdout.trim(),r=!1;try{Ggn(t,Hgn.W_OK),r=!0}catch{r=!1}return r?{hasPermissions:!0,npmPrefix:t}:(ve("Insufficient permissions for global npm install."),{hasPermissions:!1,npmPrefix:t})}catch(e){return ve(`Failed to verify npm global install permissions: ${e}`),{hasPermissions:!1,npmPrefix:null}}}async function YSt(e){if(!zSt())throw Et("tengu_auto_updater_prefix_lock_contention",{pid:String(process.pid),currentVersion:e4.VERSION,prefix:e}),new Error("Another process is currently setting up npm prefix");try{r4(e)||HSt(e,{recursive:!0});let t=await ai(`npm -g config set prefix ${e}`);if(t.code!==0)throw new Error(`Failed to set npm prefix: ${t.stderr}`);let r=`
1134
1134
  # npm global path
1135
1135
  export PATH="${e}/bin:$PATH"
1136
1136
  `;if(GSt==="win32"){let n=await ai(`setx PATH "${process.env.PATH};${e}"`);if(n.code!==0)throw new Error(`Failed to update PATH on Windows: ${n.stderr}`)}else{let n=[kO(t4(),".bashrc"),kO(t4(),".bash_profile"),kO(t4(),".zshrc"),kO(t4(),".config","fish","config.fish")];for(let i of n)if(r4(i))try{if(!$St(i,"utf8").includes(e)){if(i.includes("fish")){let s=`
@@ -3376,37 +3376,36 @@ async () => {
3376
3376
  - Instructions: ${a??"(none)"}
3377
3377
  - Methods: ${l}`}).join(`
3378
3378
  `)}async function M7t(){return l6n.replace("{{providers}}",await c6n())}async function u6n(e){let t=[];for(let r of e){if(r.type!=="connected")continue;let n={};try{let{tools:i}=await r.client.listTools();for(let o of i)n[o.name]=async s=>b5t(r.client,o.name,s)}catch(i){console.warn(`Failed to list tools for codemode client ${r.name}:`,i);continue}t.push({name:r.name,fns:n})}return t}function Q7t(){let e=new Ese;return{name:"codemode",inputSchema:a6n,inputJSONSchema:{type:"object",properties:{code:{type:"string",description:"JavaScript async arrow function to execute"},timeout:{type:"number",description:"Execution timeout in seconds. Defaults to 60."}},required:["code"]},async description(t){return t?.code?"Execute JavaScript code":M7t()},async prompt(){return M7t()},userFacingName(){return"codemode"},async isEnabled(){return!0},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(t){return!t.code||typeof t.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(t){return t.error?`Error: ${t.error}`:aFe(t.result)},renderToolUseMessage(t){return t.code.split(`
3379
- `)[0]??"codemode"},renderToolResultMessage(t){let r=y7t(t.result);return q1.createElement(R,{flexDirection:"column"},t.error?q1.createElement(R,{flexDirection:"row",key:"error"},q1.createElement(v,null," \u23BF "),q1.createElement(v,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,q1.createElement(R,{flexDirection:"row",key:"result"},q1.createElement(v,null," \u23BF "),q1.createElement(v,{key:"result-text"},r)))},async*call(t,r,n){let i=r??{abortController:new AbortController,readFileTimestamps:{}},o=cy(),s=Object.keys(o),[a,l]=await Promise.all([pE(),Die().catch(()=>[])]),c=await u6n(a),u=_se(),f={search:async A=>D7t(A,l,u,s),describe:async A=>k7t(A,l,u,uFe()),saveSnippet:async(A,h,_,y,S)=>{if(typeof h!="string"||h.length===0)throw new Error("saveSnippet: code must be a non-empty string (a function or string of snippet code)");for(let[w,O]of[["inputSchema",y],["outputSchema",S]])if(O!==void 0&&(O===null||typeof O!="object"))throw new Error(`saveSnippet: ${w} must be an object when provided`);let I={name:A,description:_,code:h,savedAt:Date.now(),connectors:s,...y!==void 0?{inputSchema:y}:{},...S!==void 0?{outputSchema:S}:{}};return I7t(I),{saved:!0,name:A}},saveOutputSchema:async(A,h,_)=>{let[y,S,I]=Array.isArray(A)?A:[A,h,_];if(typeof y!="string"||!y.includes("."))throw new Error('saveOutputSchema: target must be in the form "provider.method"');if(S===null||typeof S!="object")throw new Error("saveOutputSchema: outputSchema must be an object");let w={target:y,outputSchema:S,description:I,savedAt:Date.now()};return x7t(w),{saved:!0,target:y}},__snippetCode:async A=>{let h=T7t(A);if(!h)throw new Error(`Snippet not found: ${A}`);return h.code}},g=typeof t.timeout=="number"&&t.timeout>0?t.timeout*1e3:void 0,m=await e.execute(C7t(t.code),c,f,g);yield{type:"result",data:m,resultForAssistant:m.error?`Error: ${m.error}`:aFe(m.result)}}}}var d6n=k.object({code:k.string().describe("JavaScript async arrow function to execute"),timeout:k.number().optional().describe("Execution timeout in seconds. Defaults to 60.")}),sQ=Q7t(),P7t={...sQ,name:"codemode",inputSchema:d6n,async description(e){return sQ.description(e)},async prompt(){return sQ.description()},userFacingName(){return"Code"},async isEnabled(){try{return(await Die()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:sQ.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return sQ.renderToolResultMessage(e)},async*call(e,t,r){yield*sQ.call(e,t,r)}};var aQ=X(pe(),1);Pr();Wt();IP();He();var L7t=ja,F7t="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",U7t=`Every tool listed under <available_tools> MUST be invoked through ${ja}. Direct calls to any tool in <available_tools> are strictly forbidden.
3379
+ `)[0]??"codemode"},renderToolResultMessage(t){let r=y7t(t.result);return q1.createElement(R,{flexDirection:"column"},t.error?q1.createElement(R,{flexDirection:"row",key:"error"},q1.createElement(v,null," \u23BF "),q1.createElement(v,{color:"red",key:"error-text"},`Error: ${t.error}`)):null,q1.createElement(R,{flexDirection:"row",key:"result"},q1.createElement(v,null," \u23BF "),q1.createElement(v,{key:"result-text"},r)))},async*call(t,r,n){let i=r??{abortController:new AbortController,readFileTimestamps:{}},o=cy(),s=Object.keys(o),[a,l]=await Promise.all([pE(),Die().catch(()=>[])]),c=await u6n(a),u=_se(),f={search:async A=>D7t(A,l,u,s),describe:async A=>k7t(A,l,u,uFe()),saveSnippet:async(A,h,_,y,S)=>{if(typeof h!="string"||h.length===0)throw new Error("saveSnippet: code must be a non-empty string (a function or string of snippet code)");for(let[w,O]of[["inputSchema",y],["outputSchema",S]])if(O!==void 0&&(O===null||typeof O!="object"))throw new Error(`saveSnippet: ${w} must be an object when provided`);let I={name:A,description:_,code:h,savedAt:Date.now(),connectors:s,...y!==void 0?{inputSchema:y}:{},...S!==void 0?{outputSchema:S}:{}};return I7t(I),{saved:!0,name:A}},saveOutputSchema:async(A,h,_)=>{let[y,S,I]=Array.isArray(A)?A:[A,h,_];if(typeof y!="string"||!y.includes("."))throw new Error('saveOutputSchema: target must be in the form "provider.method"');if(S===null||typeof S!="object")throw new Error("saveOutputSchema: outputSchema must be an object");let w={target:y,outputSchema:S,description:I,savedAt:Date.now()};return x7t(w),{saved:!0,target:y}},__snippetCode:async A=>{let h=T7t(A);if(!h)throw new Error(`Snippet not found: ${A}`);return h.code}},g=typeof t.timeout=="number"&&t.timeout>0?t.timeout*1e3:void 0,m=await e.execute(C7t(t.code),c,f,g);yield{type:"result",data:m,resultForAssistant:m.error?`Error: ${m.error}`:aFe(m.result)}}}}var d6n=k.object({code:k.string().describe("JavaScript async arrow function to execute"),timeout:k.number().optional().describe("Execution timeout in seconds. Defaults to 60.")}),sQ=Q7t(),P7t={...sQ,name:"codemode",inputSchema:d6n,async description(e){return sQ.description(e)},async prompt(){return sQ.description()},userFacingName(){return"Code"},async isEnabled(){try{return(await Die()).length>0}catch{return!1}},isReadOnly(){return!1},isMcp(){return!1},needsPermissions(){return!0},async validateInput(e){return!e.code||typeof e.code!="string"?{result:!1,message:"code is required"}:{result:!0}},renderResultForAssistant(e){return e.error?`Error: ${e.error}`:sQ.renderResultForAssistant(e)},renderToolUseMessage(e){return e.code},renderToolResultMessage(e){return sQ.renderToolResultMessage(e)},async*call(e,t,r){yield*sQ.call(e,t,r)}};var aQ=X(pe(),1);Pr();Wt();IP();He();var L7t=ja,F7t="\u901A\u8FC7\u5DE5\u5177 name \u4EE3\u7406\u8C03\u7528\u6240\u6709\u5176\u4ED6\u5DE5\u5177\uFF0C\u5E76\u63D0\u4F9B\u83B7\u53D6\u5DE5\u5177\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784\u7684\u80FD\u529B",U7t=`Every tool listed under <loadable_tools> MUST be invoked through ${ja}. Direct calls to any tool in <loadable_tools> are strictly forbidden.
3380
3380
 
3381
3381
  ## Discovery-First Rule
3382
- If you have NOT used a tool in this conversation, you MUST run a discovery pass first. Never guess method names, parameter names, types, or structure.
3382
+ If you have NOT used a tool in this conversation, you MUST load it first. Never guess method names, parameter names, types, or structure.
3383
3383
 
3384
3384
  ## Actions
3385
- - describe: ${ja}({ action: "describe", name: "<tool_name>" })
3385
+ - load: ${ja}({ action: "load", name: "<tool_name>" })
3386
3386
  \u2192 Returns the tool's full description, usage guide, and TypeScript type signature.
3387
- \u2192 Use this BEFORE your first call to any tool you are not 100% familiar with.
3388
3387
 
3389
3388
  - call: ${ja}({ action: "call", name: "<tool_name>", input: { ... } })
3390
3389
  \u2192 Executes the target tool.
3391
- \u2192 The \`input\` object MUST strictly match the TypeScript type signature returned by \`describe\`.
3390
+ \u2192 The \`input\` object MUST strictly match the TypeScript type signature returned by \`load\`.
3392
3391
 
3393
3392
  ## Rules
3394
- - ONLY proxy tools that appear in <available_tools>. Do not invent tool names.
3395
- - NEVER hallucinate \`input\` fields, types, or defaults. If you are uncertain about ANY parameter, run \`describe\` first.
3396
- - The default \`action\` is \`"call"\`, but always be explicit in your JSON.
3393
+ - ONLY proxy tools that appear in <loadable_tools>. Do not invent tool names.
3394
+ - NEVER hallucinate \`input\` fields, types, or defaults. If you are uncertain about ANY parameter, run \`load\` first.
3395
+ - The default \`action\` is \`"load"\`, but always be explicit in your JSON.
3397
3396
  - One tool per proxy call. Do not batch multiple target tools into a single \`input\`.
3398
3397
 
3399
3398
  ## Workflow
3400
- 1. Identify the tool you need from <available_tools>.
3401
- 2. Discovery pass: If you have not used this tool before, call \`describe\` to fetch its TypeScript type signature.
3399
+ 1. Identify the tool you need from <loadable_tools>.
3400
+ 2. Discovery pass: If you have not used this tool before, call \`load\` to fetch its TypeScript type signature.
3402
3401
  3. Construct the \`input\` object EXACTLY according to the returned schema \u2014 no extra fields, no assumed types.
3403
3402
  4. Execute via \`call\` with the validated \`input\`.
3404
3403
 
3405
- `;Id();He();ar();var f6n=Pe(()=>k.object({action:k.enum(["call","describe"]).default("call").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:k.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:k.record(k.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002")})),p6n={type:"object",properties:{action:{type:"string",enum:["call","describe"],default:"call",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; describe=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'describe' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002describe \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function H7t(e){return e?.options?._tools??await en.getTools(!1)??[]}function pFe(e){return e.name!==ja&&e.name!==jb}var $7t={name:L7t,async description(){return F7t},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await H7t(t)).filter(pFe),i=(await Promise.all(n.map(async o=>`<tool><name>${o.name}</name><description>${o.isMcp?.()?VO.getSimpleDescription(o.name):await o.description?.()}</description></tool>`))).join(`
3404
+ `;Id();He();ar();var f6n=Pe(()=>k.object({action:k.enum(["call","load"]).default("load").describe("call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; load=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"),name:k.string().describe("\u76EE\u6807\u5DE5\u5177\u7684 name"),input:k.record(k.unknown()).optional().describe("call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'load' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002load \u6A21\u5F0F\u5FFD\u7565\u3002")})),p6n={type:"object",properties:{action:{type:"string",enum:["call","load"],default:"load",description:"call=\u6267\u884C\u76EE\u6807\u5DE5\u5177; load=\u83B7\u53D6\u76EE\u6807\u5DE5\u5177\u7684\u8BE6\u7EC6\u8BF4\u660E\u4E0E\u5165\u53C2\u7ED3\u6784"},name:{type:"string",description:"\u76EE\u6807\u5DE5\u5177\u7684 name"},input:{type:"object",description:"call \u6A21\u5F0F\uFF1A\u76EE\u6807\u5DE5\u5177\u7684\u5165\u53C2\u5BF9\u8C61\uFF0C\u5FC5\u987B\u4E0E\u5176 TypeScript \u7C7B\u578B\u7B7E\u540D\u4E00\u81F4\uFF1B\u4E0D\u786E\u5B9A\u53C2\u6570\u65F6\u5148\u7528 action:'load' \u67E5\u8BE2\uFF0C\u5207\u52FF\u731C\u6D4B\u3002load \u6A21\u5F0F\u5FFD\u7565\u3002"}},required:["name"]};async function H7t(e){return e?.options?._tools??await en.getTools(!1)??[]}function pFe(e){return e.name!==ja&&e.name!==jb}var $7t={name:L7t,async description(){return F7t},async prompt({dangerouslySkipPermissions:e}={},t){let n=(await H7t(t)).filter(pFe),i=(await Promise.all(n.map(async o=>`<tool><name>${o.name}</name><description>${o.isMcp?.()?VO.getSimpleDescription(o.name):await o.description?.()}</description></tool>`))).join(`
3406
3405
  `);return`${U7t}
3407
- <available_tools>
3406
+ <loadable_tools>
3408
3407
  ${i}
3409
- </available_tools>`},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return f6n()},get inputJSONSchema(){return p6n},userFacingName(){return ja},async isEnabled(){return it.isProxyToolEnable()},needsPermissions(){return!1},renderToolUseMessage(e){return`${e?.action??"call"} ${e?.name??""}`.trim()},renderToolUseRejectedMessage(){return aQ.createElement(R,null,aQ.createElement(v,null,"tool execution was rejected"))},renderToolResultMessage(e){let t=e?.error?e.message:e?.action==="describe"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return aQ.createElement(R,{flexDirection:"row"},aQ.createElement(v,null,"\xA0\xA0\u23BF \xA0"),aQ.createElement(v,null,t))},renderResultForAssistant(e){return e.message},async*call(e,t){let r=e.action??"call",n=await H7t(t),i=n.find(o=>o.name===e.name);if(!i){let o=n.filter(pFe).map(l=>l.name).join(", "),s=`<error>Tool not found: ${e.name}. Run ${ja}({action:'describe'}) or refer to the list. Available tools: ${o}</error>`,a={action:r,name:e.name,message:s,error:!0};yield{type:"result",resultForAssistant:s,data:a};return}if(!pFe(i)){let o=`<error>Tool ${e.name} cannot be invoked through ${ja}. Call it directly.</error>`,s={action:r,name:e.name,message:o,error:!0};yield{type:"result",resultForAssistant:o,data:s};return}if(r==="describe"){let o=await i.prompt({dangerouslySkipPermissions:t?.options?.dangerouslySkipPermissions},t),s="inputJSONSchema"in i&&i.inputJSONSchema?i.inputJSONSchema:d0(i.inputSchema),a=yA(s,""),l=[`# ${i.name}`,o,"","## Input (TypeScript)","```typescript",`type ${i.name}Input = ${a};`,"```"].join(`
3408
+ </loadable_tools>`},isReadOnly(){return!1},isConcurrencySafe(){return!1},get inputSchema(){return f6n()},get inputJSONSchema(){return p6n},userFacingName(){return ja},async isEnabled(){return it.isProxyToolEnable()},needsPermissions(){return!1},renderToolUseMessage(e){return`${e?.action??"load"} ${e?.name??""}`.trim()},renderToolUseRejectedMessage(){return aQ.createElement(R,null,aQ.createElement(v,null,"tool execution was rejected"))},renderToolResultMessage(e){let t=e?.error?e.message:e?.action==="load"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return aQ.createElement(R,{flexDirection:"row"},aQ.createElement(v,null,"\xA0\xA0\u23BF \xA0"),aQ.createElement(v,null,t))},renderResultForAssistant(e){return e.message},async*call(e,t){let r=e.action??"load",n=await H7t(t),i=n.find(o=>o.name===e.name);if(!i){let o=n.filter(pFe).map(l=>l.name).join(", "),s=`<error>Tool not found: ${e.name}. Run ${ja}({action:'load'}) or refer to the list. Available tools: ${o}</error>`,a={action:r,name:e.name,message:s,error:!0};yield{type:"result",resultForAssistant:s,data:a};return}if(!pFe(i)){let o=`<error>Tool ${e.name} cannot be invoked through ${ja}. Call it directly.</error>`,s={action:r,name:e.name,message:o,error:!0};yield{type:"result",resultForAssistant:o,data:s};return}if(r==="load"){let o=await i.prompt({dangerouslySkipPermissions:t?.options?.dangerouslySkipPermissions},t),s="inputJSONSchema"in i&&i.inputJSONSchema?i.inputJSONSchema:d0(i.inputSchema),a=yA(s,""),l=[`# ${i.name}`,o,"","## Input (TypeScript)","```typescript",`type ${i.name}Input = ${a};`,"```"].join(`
3410
3409
  `),c={action:r,name:i.name,schema:s,message:l};yield{type:"result",resultForAssistant:l,data:c};return}for await(let o of i.call(e.input??{},t,void 0))yield o}};var q7t=()=>[A7t,P7t,$7t,v9t,l7t,Gi,$m,H3,$3,a1,l1,A9t,r1,t1,i1,dE,N9t,H6,j3t,b$t,R$t,N$t,B$t,O$t,Ise,X$t,Y$t,nqt,aqt,dqt,U3,mqt,Eqt,zzt,jzt,Yzt,Xzt,o7t,Mqt,Cqt,vqt,Rqt],cf=Pe(async()=>{let e=[...q7t(),...await cM()],t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])}),GM=Pe(async()=>{let e=q7t().filter(r=>r.isReadOnly()),t=await Promise.all(e.map(r=>r.isEnabled()));return e.filter((r,n)=>t[n])});en.add(cf);en.add(GM);en.getTools=cf;He();var V$t="Launch a new agent to handle complex, multi-step tasks autonomously.";async function G7t(e,t){let r=e.tools,n=await uLe(t);if(r){let i=Array.isArray(r)&&r.length===1&&r[0]==="*";r==="*"||i||Array.isArray(r)&&(n=n.filter(o=>r.includes(o.name)))}return n}async function uLe(e){return await(e?GM():cf())}async function W$t(e){let r=(await Sy()).map(n=>{let i=Array.isArray(n.tools)?n.tools.join(", "):"*";return`- ${n.agentType}: ${n.whenToUse} (Tools: ${i})`}).join(`
3411
3410
  `);return`Launch a new agent to handle complex, multi-step tasks autonomously.
3412
3411
 
@@ -3540,7 +3539,7 @@ Return ONLY a JSON object with the following format:
3540
3539
  {"selected_memories": ["filename1.md", "filename2.md"]}`;try{let c=(await V2({systemPrompt:[U6n],userPrompt:a,agentId:"memory-selector",signal:r})).message.content.find(A=>A.type==="text");if(!c||c.type!=="text")return[];let u=c.text.trim(),f=u.match(/\{[\s\S]*\}/),g=f?f[0]:u;return(w0e(g).selected_memories||[]).filter(A=>i.has(A))}catch(l){return r.aborted?[]:(ve(`[memdir] selectRelevantMemories failed: ${l}`),[])}}var EFe=200,_Fe=4096;async function Z7t(e){return(await Promise.all(e.map(async({path:r})=>{try{let{content:n,totalLines:i}=hW(r,0,EFe),o=n.length>_Fe,s=o?n.slice(0,_Fe):n,l=i>EFe||o?`
3541
3540
 
3542
3541
  > This memory file was truncated (${o?`${_Fe} byte limit`:`first ${EFe} lines`}). Use the Read tool to view the complete file at: ${r}`:"";return{path:r,content:s+l}}catch(n){return ve(`[memoryRecall] failed to read memory file ${r}: ${n}`),null}}))).filter(r=>r!==null)}zg();function X7t(e){return typeof e=="string"?{type:"text",text:e}:e}function $6n(e){if(typeof e=="string")return e;let t=[];if(Array.isArray(e))for(let r of e)t.push(X7t(r));else t.push(X7t(e));return t}async function q6n(e,t,r){if(process.env.USER_TYPE!=="ant"||!r||!await Y5t()){let o=await t();return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:{message:o,shouldSkipPermissionCheck:!1}}let[n,i]=await Promise.all([t(),t()]);return e.abortController.signal.aborted?{message:null,shouldSkipPermissionCheck:!1}:i.isApiErrorMessage?{message:n,shouldSkipPermissionCheck:!1}:n.isApiErrorMessage?{message:i,shouldSkipPermissionCheck:!1}:V5t(n,i)?await r(n,i):{message:n,shouldSkipPermissionCheck:!1}}async function*_E(e,t,r,n,i,o){i.turns||(i.turns={count:0}),i.turns.count++,ut();let s=i.lazyToolMode==="proxy",a=i.lazyToolMode==="loading";if(s)i.options._tools||(i.options._tools=i.options.tools),i.options.tools=i.options._tools.filter(G=>G.name===ja||_Ke.includes(G.name));else if(a){i.options._tools||(i.options._tools=i.options.tools);let G=Je.getInQueryContext(i.agentId)[xg],L=he=>he.name===$c||he.name===El,ee=i.options._tools.filter(he=>Yp.includes(he.name)&&!L(he)),Ee=new Map(i.options._tools.map(he=>[he.name,he])),M=G?[...G].filter(he=>!Yp.includes(he)&&Ee.has(he)).map(he=>Ee.get(he)):[],me=i.options._tools.filter(L);i.options.tools=[...ee,...M,...me]}else i.options._tools&&(i.options.tools=i.options._tools,delete i.options._tools);e=kz(e);let{messages:l,wasCompacted:c}=await oyt(e,i);if(c){e=l;for(let G of e)yield G}yc("session:startup",{agentId:i.agentId,messages:e.length,timestamp:Date.now(),context:r||{}});let u=e.filter(G=>G.type==="user").pop();if(u&&u.message.content){let G=u.message.content;typeof G=="string"&&W5t(G).catch(L=>{ve(L)})}J6n(i.agentId,u,i.abortController.signal);let{systemPrompt:f,reminders:g}=await ijt(t,r,{agentId:i.agentId,permissionMode:i.options?.permissionMode,tools:i.options.tools,allTools:i.options._tools??i.options.tools,lazyToolMode:i.lazyToolMode},e),m=Je.getInQueryContext()[pT];if(m&&m.filePath&&!Je.getInQueryContext().open_in_ide&&(yield EE("File opened in IDE: "+m.filePath),Je.getInQueryContext().open_in_ide=!0),!i.agentName){let G=await Aa.takeMailInbox(Aa.getCurrentTeamName(),i.agentName||uN);if(G&&G.length>0){let L=Aa.formatMessagesForContext(G),ee=jt([{type:"text",text:L}]);yield ee,e.push(ee)}}let h=Je.getSessionContext(i.agentId).takePendingPrompts();if(h&&h.length>0){let G=njt(h.join(`
3543
- `));yield G,e.push(G)}let _=W6n(e,g);function y(){return Vs(bS.applyToMessages(S9t(jd(e))),f,i.options.tools,i.abortController.signal,{dangerouslySkipPermissions:i.options.dangerouslySkipPermissions??!1,model:i.options.slowAndCapableModel,prependCLISysprompt:!0,agentId:i.agentId,thinking:i.options.thinking},i)}let S=await q6n(i,y,o);if(S.message===null){yield Mr(Hl);return}let I=S.message;if(process.env[XL]==="true")try{I.message.content=I.message.content.map(G=>{if(G.type==="tool_use"){let L=i.options.tools.find(ee=>ee.name===G.name);if(L.isMcp?.()){let ee=L.inputSchema.safeParse(G.input);return ee.success?G.input=ee.data:(K("\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u975E\u6CD5\uFF0C\u9700\u8981\u8FDB\u884C\u4FEE\u590D "+G.input),G.input=J7t(G.input)),G}else if(L?.isFixSchema?.()){let ee=L.inputSchema.safeParse(G.input);return ee.success&&(G.input=ee.data),G}}return G})}catch(G){K(`Error in fixing tool input schema: ${G}`)}let w=S.shouldSkipPermissionCheck,O=await Ys();Z5t([...e,I],t,r,O,i,i.agentId?"subagent":"repl_main_thread").catch(G=>{ve(G)}),yield I;let Q=I.message.content.filter(G=>G.type==="tool_use");if(!Q.length)return;let z=await SEt(Q,i.agentId);if(z)for(let G of z)yield G;i={...i};let Y=[];for await(let G of G6n(Q,I,n,i,w,e))yield G,G.type==="user"&&Y.push(G);if(i.abortController.signal.aborted){let G=new Set(Y.flatMap(L=>L.message.content.filter(ee=>ee.type==="tool_result").map(ee=>ee.tool_use_id)));for(let L of Q)if(!G.has(L.id)){let ee=jt([vse(L.id)]);yield ee,Y.push(ee)}yield Mr(CFe);return}let q=Y.sort((G,L)=>{let ee=Q.findIndex(M=>M.id===G.message.content[0].id),Ee=Q.findIndex(M=>M.id===L.message.content[0].id);return ee-Ee});V6n(e,_),yield*await _E([...e,I,...q],t,r,n,i,o)}async function*G6n(e,t,r,n,i,o){let s=new wX;s.setAbortSignal(n.abortController.signal);for(let a of e){let l=new vX,{toolName:c,isProxyCall:u}=tjt(a,n),f=rjt(n,c,u);f?(l.sync=!f.isReadOnly(),l.toolName=f.name):l.sync=!0,l.callable=()=>z6n(a,new Set(e.map(g=>g.id)),t,r,n,i,o),s.addTask(l)}for await(let a of s.getResult())yield a}function tjt(e,t){let r=e.input??{};return t.lazyToolMode==="proxy"&&e.name===ja&&(r.action??"call")==="call"&&r.name?{toolName:String(r.name),toolInput:r.input??{},isProxyCall:!0}:{toolName:e.name,toolInput:r,isProxyCall:!1}}function rjt(e,t,r){return e.options.tools.find(n=>n.name===t)??(r?e.options._tools?.find(n=>n.name===t):void 0)}async function*z6n(e,t,r,n,i,o,s){try{let{toolName:a,toolInput:l,isProxyCall:c}=tjt(e,i),u=rjt(i,a,c);if(!u){Et("tengu_tool_use_error",{error:`No such tool available: ${a}`,messageID:r.message.id,toolName:a,toolUseID:e.id});let g=i.lazyToolMode==="proxy",m=i.lazyToolMode==="loading",h=i.options._tools?.some(_=>_.name===a)??!1;yield jt([{type:"tool_result",content:g&&h?`Error: No such tool available: ${a}. Use ProxyTool({action:'describe'}) to view available tools.`:m&&h?`Error: No such tool available: ${a}, Use the ToolLoader to load it`:`Error: No such tool available: ${a}`,is_error:!0,tool_use_id:e.id}]);return}let f=l;try{if(i.abortController.signal.aborted){Et("tengu_tool_use_cancelled",{toolName:u.name,toolUseID:e.id}),yield jt([vse(e.id)]);return}for await(let g of Y6n(u,e.id,t,f,i,n,r,o,s))yield g}catch(g){let m=bFe(g);ve(g),yield jt([{type:"tool_result",content:`call tool ${e.id} error ${m} `,is_error:!0,tool_use_id:e.id}])}}catch(a){let l=bFe(a);yield jt([{type:"tool_result",content:`call tool ${e.id} error ${l} `,is_error:!0,tool_use_id:e.id}])}}function j6n(e,t){switch(e){case Gi:{let{command:r,timeout:n,run_in_background:i}=Gi.inputSchema.parse(t);return{command:r.replace(`cd ${Oe()} && `,""),...n?{timeout:n}:{},...i!==void 0?{run_in_background:i}:{}}}default:return t}}async function*Y6n(e,t,r,n,i,o,s,a,l){let c=e.inputSchema.safeParse(n);if(!c.success){Et("tengu_tool_use_error",{error:`InputValidationError: ${c.error.message}`,messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200)});let S=i.lazyToolMode==="proxy"?` Use ProxyTool({action:'describe', name:'${e.name}'}) to view the correct parameter structure before retrying.`:"";yield jt([{type:"tool_result",content:`InputValidationError: ${c.error.message}${S}`,is_error:!0,tool_use_id:t}]);return}let u=j6n(e,n),f=await e.validateInput?.(u,l&&l.length>0?{...i,historyMessages:l}:i);if(f?.result===!1){Et("tengu_tool_use_error",{error:f?.message.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200),...f?.meta??{}}),yield jt([{type:"tool_result",content:f.message,is_error:!0,tool_use_id:t}]);return}let g=new V3(i.hookContext?.hooks),m=Je.getSessionContext(i.agentId).getSessionId(),A={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PreToolUse",tool_name:e.name,tool_input:u,tool_use_id:t},h={hookWarning:null,forceCheck:!1},_=await g.execute(A);if(_){if(_.systemMessage&&!_.suppressOutput&&(yield zv(t,r,Mr(_.systemMessage),[],[],{multiline:!1,freeze:!0})),_.continue===!1){Et("tengu_tool_use_blocked_by_hook",{toolName:e.name,toolUseID:t,reason:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook"}),yield jt([{type:"tool_result",content:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="deny"){Et("tengu_tool_use_denied_by_hook",{toolName:e.name,toolUseID:t,reason:_.hookSpecificOutput.permissionDecisionReason||"Denied by PreToolUse hook"}),yield jt([{type:"tool_result",content:_.hookSpecificOutput.permissionDecisionReason||"Tool execution denied by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="ask"?(a=!1,h.forceCheck=!0):_.hookSpecificOutput?.permissionDecision==="allow"&&(yield zv(t,r,Mr(_.hookSpecificOutput.permissionDecisionReason||"Tool execution allowed by PreToolUse hook"),[],[],{multiline:!1,freeze:!0})),_.hookSpecificOutput?.updatedInput)for(let S in _.hookSpecificOutput.updatedInput)S in u&&(u[S]=_.hookSpecificOutput.updatedInput[S]);h.hookWarning=`Hook PreToolUse:${e.name} requires confirmation for this command:${_.hookSpecificOutput.permissionDecisionReason}`}let y=a?{result:!0}:await o(e,u,i,s,t,h,l);if(y.result===!1){yield jt([{type:"tool_result",content:y.message,is_error:!0,tool_use_id:t}]);return}try{i.currentToolUseID=t;let S=e.call(u,l&&l.length>0?{...i,historyMessages:l}:i,o);for await(let{value:I,aborted:w}of J5t(S,i.abortController.signal)){if(w){Vd.abortResponse(t);let O=new fM(i.hookContext?.hooks),Q={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:"User interrupted the tool execution",is_interrupt:!0};O.execute(Q).catch(z=>{K("PostToolUseFailure hook error during interrupt:",z)}),yield jt([vse(t)]);return}switch(I.type){case"result":Et("tengu_tool_use_success",{messageID:s.message.id,toolName:e.name});let O=new W3(i.hookContext?.hooks),Q={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUse",tool_name:e.name,tool_input:u,tool_response:I.data||{},tool_use_id:t},z=await O.execute(Q);z&&z.decision==="block"&&(yield zv(t,r,Mr(z.reason?`PostToolUse:Read hook blocking error:${z.reason}`:"Tool execution blocked by PostToolUse hook"),[],[],{multiline:!1,freeze:!0}));let Y="";if(z&&z.hookSpecificOutput?.additionalContext&&(Y=`<system-reminder>
3542
+ `));yield G,e.push(G)}let _=W6n(e,g);function y(){return Vs(bS.applyToMessages(S9t(jd(e))),f,i.options.tools,i.abortController.signal,{dangerouslySkipPermissions:i.options.dangerouslySkipPermissions??!1,model:i.options.slowAndCapableModel,prependCLISysprompt:!0,agentId:i.agentId,thinking:i.options.thinking},i)}let S=await q6n(i,y,o);if(S.message===null){yield Mr(Hl);return}let I=S.message;if(process.env[XL]==="true")try{I.message.content=I.message.content.map(G=>{if(G.type==="tool_use"){let L=i.options.tools.find(ee=>ee.name===G.name);if(L.isMcp?.()){let ee=L.inputSchema.safeParse(G.input);return ee.success?G.input=ee.data:(K("\u6A21\u578B\u8FD4\u56DE\u7684\u5DE5\u5177\u975E\u6CD5\uFF0C\u9700\u8981\u8FDB\u884C\u4FEE\u590D "+G.input),G.input=J7t(G.input)),G}else if(L?.isFixSchema?.()){let ee=L.inputSchema.safeParse(G.input);return ee.success&&(G.input=ee.data),G}}return G})}catch(G){K(`Error in fixing tool input schema: ${G}`)}let w=S.shouldSkipPermissionCheck,O=await Ys();Z5t([...e,I],t,r,O,i,i.agentId?"subagent":"repl_main_thread").catch(G=>{ve(G)}),yield I;let Q=I.message.content.filter(G=>G.type==="tool_use");if(!Q.length)return;let z=await SEt(Q,i.agentId);if(z)for(let G of z)yield G;i={...i};let Y=[];for await(let G of G6n(Q,I,n,i,w,e))yield G,G.type==="user"&&Y.push(G);if(i.abortController.signal.aborted){let G=new Set(Y.flatMap(L=>L.message.content.filter(ee=>ee.type==="tool_result").map(ee=>ee.tool_use_id)));for(let L of Q)if(!G.has(L.id)){let ee=jt([vse(L.id)]);yield ee,Y.push(ee)}yield Mr(CFe);return}let q=Y.sort((G,L)=>{let ee=Q.findIndex(M=>M.id===G.message.content[0].id),Ee=Q.findIndex(M=>M.id===L.message.content[0].id);return ee-Ee});V6n(e,_),yield*await _E([...e,I,...q],t,r,n,i,o)}async function*G6n(e,t,r,n,i,o){let s=new wX;s.setAbortSignal(n.abortController.signal);for(let a of e){let l=new vX,{toolName:c,isProxyCall:u}=tjt(a,n),f=rjt(n,c,u);f?(l.sync=!f.isReadOnly(),l.toolName=f.name):l.sync=!0,l.callable=()=>z6n(a,new Set(e.map(g=>g.id)),t,r,n,i,o),s.addTask(l)}for await(let a of s.getResult())yield a}function tjt(e,t){let r=e.input??{};return t.lazyToolMode==="proxy"&&e.name===ja&&(r.action??"call")==="call"&&r.name?{toolName:String(r.name),toolInput:r.input??{},isProxyCall:!0}:{toolName:e.name,toolInput:r,isProxyCall:!1}}function rjt(e,t,r){return e.options.tools.find(n=>n.name===t)??(r?e.options._tools?.find(n=>n.name===t):void 0)}async function*z6n(e,t,r,n,i,o,s){try{let{toolName:a,toolInput:l,isProxyCall:c}=tjt(e,i),u=rjt(i,a,c);if(!u){Et("tengu_tool_use_error",{error:`No such tool available: ${a}`,messageID:r.message.id,toolName:a,toolUseID:e.id});let g=i.lazyToolMode==="proxy",m=i.lazyToolMode==="loading",h=i.options._tools?.some(_=>_.name===a)??!1;yield jt([{type:"tool_result",content:g&&h?`Error: No such tool available: ${a}. Use ProxyTool({action:'load'}) to view available tools.`:m&&h?`Error: No such tool available: ${a}, Use the ToolLoader to load it`:`Error: No such tool available: ${a}`,is_error:!0,tool_use_id:e.id}]);return}let f=l;try{if(i.abortController.signal.aborted){Et("tengu_tool_use_cancelled",{toolName:u.name,toolUseID:e.id}),yield jt([vse(e.id)]);return}for await(let g of Y6n(u,e.id,t,f,i,n,r,o,s))yield g}catch(g){let m=bFe(g);ve(g),yield jt([{type:"tool_result",content:`call tool ${e.id} error ${m} `,is_error:!0,tool_use_id:e.id}])}}catch(a){let l=bFe(a);yield jt([{type:"tool_result",content:`call tool ${e.id} error ${l} `,is_error:!0,tool_use_id:e.id}])}}function j6n(e,t){switch(e){case Gi:{let{command:r,timeout:n,run_in_background:i}=Gi.inputSchema.parse(t);return{command:r.replace(`cd ${Oe()} && `,""),...n?{timeout:n}:{},...i!==void 0?{run_in_background:i}:{}}}default:return t}}async function*Y6n(e,t,r,n,i,o,s,a,l){let c=e.inputSchema.safeParse(n);if(!c.success){Et("tengu_tool_use_error",{error:`InputValidationError: ${c.error.message}`,messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200)});let S=i.lazyToolMode==="proxy"?` Use ProxyTool({action:'load', name:'${e.name}'}) to view the correct parameter structure before retrying.`:"";yield jt([{type:"tool_result",content:`InputValidationError: ${c.error.message}${S}`,is_error:!0,tool_use_id:t}]);return}let u=j6n(e,n),f=await e.validateInput?.(u,l&&l.length>0?{...i,historyMessages:l}:i);if(f?.result===!1){Et("tengu_tool_use_error",{error:f?.message.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,200),...f?.meta??{}}),yield jt([{type:"tool_result",content:f.message,is_error:!0,tool_use_id:t}]);return}let g=new V3(i.hookContext?.hooks),m=Je.getSessionContext(i.agentId).getSessionId(),A={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PreToolUse",tool_name:e.name,tool_input:u,tool_use_id:t},h={hookWarning:null,forceCheck:!1},_=await g.execute(A);if(_){if(_.systemMessage&&!_.suppressOutput&&(yield zv(t,r,Mr(_.systemMessage),[],[],{multiline:!1,freeze:!0})),_.continue===!1){Et("tengu_tool_use_blocked_by_hook",{toolName:e.name,toolUseID:t,reason:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook"}),yield jt([{type:"tool_result",content:_.stopReason?"Error: "+_.stopReason:"Tool execution blocked by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="deny"){Et("tengu_tool_use_denied_by_hook",{toolName:e.name,toolUseID:t,reason:_.hookSpecificOutput.permissionDecisionReason||"Denied by PreToolUse hook"}),yield jt([{type:"tool_result",content:_.hookSpecificOutput.permissionDecisionReason||"Tool execution denied by PreToolUse hook",is_error:!0,tool_use_id:t}]);return}if(_.hookSpecificOutput?.permissionDecision==="ask"?(a=!1,h.forceCheck=!0):_.hookSpecificOutput?.permissionDecision==="allow"&&(yield zv(t,r,Mr(_.hookSpecificOutput.permissionDecisionReason||"Tool execution allowed by PreToolUse hook"),[],[],{multiline:!1,freeze:!0})),_.hookSpecificOutput?.updatedInput)for(let S in _.hookSpecificOutput.updatedInput)S in u&&(u[S]=_.hookSpecificOutput.updatedInput[S]);h.hookWarning=`Hook PreToolUse:${e.name} requires confirmation for this command:${_.hookSpecificOutput.permissionDecisionReason}`}let y=a?{result:!0}:await o(e,u,i,s,t,h,l);if(y.result===!1){yield jt([{type:"tool_result",content:y.message,is_error:!0,tool_use_id:t}]);return}try{i.currentToolUseID=t;let S=e.call(u,l&&l.length>0?{...i,historyMessages:l}:i,o);for await(let{value:I,aborted:w}of J5t(S,i.abortController.signal)){if(w){Vd.abortResponse(t);let O=new fM(i.hookContext?.hooks),Q={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:"User interrupted the tool execution",is_interrupt:!0};O.execute(Q).catch(z=>{K("PostToolUseFailure hook error during interrupt:",z)}),yield jt([vse(t)]);return}switch(I.type){case"result":Et("tengu_tool_use_success",{messageID:s.message.id,toolName:e.name});let O=new W3(i.hookContext?.hooks),Q={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUse",tool_name:e.name,tool_input:u,tool_response:I.data||{},tool_use_id:t},z=await O.execute(Q);z&&z.decision==="block"&&(yield zv(t,r,Mr(z.reason?`PostToolUse:Read hook blocking error:${z.reason}`:"Tool execution blocked by PostToolUse hook"),[],[],{multiline:!1,freeze:!0}));let Y="";if(z&&z.hookSpecificOutput?.additionalContext&&(Y=`<system-reminder>
3544
3543
  PostToolUse:${e.name} hook additional context: ${z.hookSpecificOutput.additionalContext}
3545
3544
  </system-reminder>`),typeof I.resultForAssistant=="function"){let q=I.resultForAssistant(t);if(Y&&Array.isArray(q)){let G=q.find(L=>L.type==="tool_result");G&&(Array.isArray(G.content)||(G.content=[{type:"text",text:G.content}]),G.content.push({type:"text",text:Y}))}yield jt(q,{data:I.data,resultForAssistant:I.resultForAssistant})}else{let q=$6n(I.resultForAssistant),G=[];Array.isArray(q)?G.push(...q):q&&G.push({type:"text",text:q}),Y&&G.push({type:"text",text:Y}),yield jt([{type:"tool_result",content:G,tool_use_id:t}],{data:I.data,resultForAssistant:I.resultForAssistant})}return;case"progress":Et("tengu_tool_use_progress",{messageID:s.message.id,toolName:e.name}),yield zv(t,r,I.content,I.normalizedMessages,I.tools,I.meta)}}}catch(S){K("\u5DE5\u5177\u6267\u884C\u9519\u8BEF\uFF1A",S);let I=bFe(S);Et("tengu_tool_use_error",{error:I.slice(0,2e3),messageID:s.message.id,toolName:e.name,toolInput:JSON.stringify(n).slice(0,1e3)});let w=new fM(i.hookContext?.hooks),O={session_id:m,transcript_path:Ya(),cwd:Oe(),permission_mode:i.options?.dangerouslySkipPermissions?"dangerouslySkipPermissions":"default",hook_event_name:"PostToolUseFailure",tool_name:e.name,tool_input:u,tool_use_id:t,error:I,is_interrupt:!1},Q=await w.execute(O),z="";Q?.hookSpecificOutput?.additionalContext&&(z=`<system-reminder>
3546
3545
  PostToolUseFailure:${e.name} hook additional context: ${Q.hookSpecificOutput.additionalContext}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dahawa/hawa-code",
3
- "version": "2.4.29",
3
+ "version": "2.4.30",
4
4
  "bin": {
5
5
  "hcode": "hawa.js"
6
6
  },
package/webServer/app.js CHANGED
@@ -89,7 +89,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let l="<p>An error
89
89
  `):[],p=t?r:r.slice(0,30),c=r.length>30;return ut.default.createElement("div",{className:"tool-result-detail tool-result-taskoutput"},ut.default.createElement("div",{className:"result-header"},ut.default.createElement("span",{className:`result-status ${i?"status-error":o?"status-success":"status-warn"}`},l?"Task":"Shell"," ",a,e.exit_code!==null&&e.exit_code!==void 0&&` (exit ${e.exit_code})`),ut.default.createElement("span",{className:"tool-meta"},e.task_id)),s&&ut.default.createElement("div",{className:"result-note"},l?"Task is still running...":"Shell is still running..."),u&&ut.default.createElement(ut.default.Fragment,null,ut.default.createElement("pre",{className:"code-block stdout-block"},ut.default.createElement("code",null,p.join(`
90
90
  `))),c&&!t&&ut.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"... ",r.length-30," more lines (click to expand)")),f&&ut.default.createElement("pre",{className:"code-block stderr-block"},ut.default.createElement("code",null,e.stderr)))}var we=E(x(),1);function rb({data:e}){let[t,n]=(0,we.useState)(!1);if(e.run_in_background)return we.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},we.default.createElement("div",{className:"result-header"},we.default.createElement("span",{className:"result-status status-info"},"Running in background")));let l=e.stdout&&e.stdout.trim(),a=e.stderr&&e.stderr.trim();if(!l&&!a&&!e.interrupted)return we.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},we.default.createElement("div",{className:"result-header"},we.default.createElement("span",{className:"result-status status-success"},"Done (no output)")));let s=l?e.stdout.split(`
91
91
  `):[],i=t?s:s.slice(0,30),o=s.length>30;return we.default.createElement("div",{className:"tool-result-detail tool-result-powershell"},we.default.createElement("div",{className:"result-header"},e.interrupted?we.default.createElement("span",{className:"result-status status-warn"},"Interrupted"):we.default.createElement("span",{className:"result-status status-success"},"exit 0"),e.stdoutLines>0&&we.default.createElement("span",{className:"tool-meta"},e.stdoutLines," lines")),l&&we.default.createElement(we.default.Fragment,null,we.default.createElement("pre",{className:"code-block stdout-block"},we.default.createElement("code",null,i.join(`
92
- `))),o&&!t&&we.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"... ",s.length-30," more lines (click to expand)")),a&&we.default.createElement("pre",{className:"code-block stderr-block"},we.default.createElement("code",null,e.stderr)),e.interrupted&&we.default.createElement("div",{className:"result-note"},"Command was aborted before completion"))}var Qu=E(x(),1);function cb({data:e}){let t=e.toolNames||[];return Qu.default.createElement("div",{className:"tool-result-detail tool-result-toolloader"},Qu.default.createElement("div",{className:"result-header"},Qu.default.createElement("span",{className:"result-status status-success"},e.message||`Tools loaded: ${t.join(", ")}`)))}var Zu=E(x(),1);function fb({data:e}){let n=e.message?.startsWith("<error>")?"status-error":"status-success";return Zu.default.createElement("div",{className:"tool-result-detail tool-result-toolunloader"},Zu.default.createElement("div",{className:"result-header"},Zu.default.createElement("span",{className:`result-status ${n}`},e.message||"Tools unloaded")))}var Zn=E(x(),1);function db({data:e}){return e.error?Zn.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Zn.default.createElement("div",{className:"result-header"},Zn.default.createElement("span",{className:"result-status status-error"},e.error))):Zn.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Zn.default.createElement("div",{className:"result-header"},Zn.default.createElement("span",{className:"result-status status-success"},e.edit_mode==="delete"?`Deleted cell ${e.cell_number}`:`${e.edit_mode==="insert"?"Inserted":"Updated"} cell ${e.cell_number}`)),Zn.default.createElement("pre",{className:"code-block"},Zn.default.createElement("code",null,e.new_source)))}var Nl=E(x(),1);function pb({data:e}){return Nl.default.createElement("div",{className:"tool-result-detail tool-result-websearch"},Nl.default.createElement("div",{className:"result-header"},Nl.default.createElement("span",{className:"result-status status-success"},"Found ",e.results.length," ",e.results.length===1?"result":"results")),e.summaryText&&Nl.default.createElement("div",{className:"result-summary markdown-body"},e.summaryText),e.results.length>0&&Nl.default.createElement("ul",{className:"result-list"},e.results.map((t,n)=>Nl.default.createElement("li",{key:n},Nl.default.createElement("a",{href:t.link,target:"_blank",rel:"noreferrer"},t.title)))))}var Xn=E(x(),1);function mb({data:e}){let[t,n]=(0,Xn.useState)(!1),l=e.aiAnalysis||"No content could be analyzed",a=l.length>400,s=t||!a?l:l.slice(0,400)+"...";return Xn.default.createElement("div",{className:"tool-result-detail tool-result-webfetch"},Xn.default.createElement("div",{className:"result-header"},Xn.default.createElement("span",{className:"result-status status-success"},"Content ",e.fromCache?"from cache":"fetched"," and analyzed"),Xn.default.createElement("span",{className:"tool-meta"},e.url)),Xn.default.createElement("div",{className:"result-content markdown-body",style:{whiteSpace:"pre-wrap"}},s),a&&!t&&Xn.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"click to expand"))}var vi=E(x(),1);function gb({data:e}){return vi.default.createElement("div",{className:"tool-result-detail tool-result-taskstop"},vi.default.createElement("div",{className:"result-header"},vi.default.createElement("span",{className:`result-status ${e.stopped?"status-success":"status-error"}`},e.message),vi.default.createElement("span",{className:"tool-meta"},e.task_id," (",e.task_type,")")))}var Tl=E(x(),1);function tE(e){return e==="completed"?"\u2612":"\u2610"}function hb({data:e}){let t=e.todos||[];return t.length===0?Tl.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},Tl.default.createElement("div",{className:"result-header"},Tl.default.createElement("span",{className:"result-status status-info"},"No todos currently"))):Tl.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},t.map((n,l)=>{let a=n.status==="completed",s=n.status==="in_progress";return Tl.default.createElement("div",{key:l,className:"todo-item"},Tl.default.createElement("span",{className:`todo-checkbox ${a?"completed":""}`},tE(n.status)),Tl.default.createElement("span",{className:`todo-content ${a?"completed":""} ${s?"in-progress":""}`},n.content))}))}var yi=E(x(),1);function vb({data:e}){return yi.default.createElement("div",{className:"tool-result-detail tool-result-think"},yi.default.createElement("div",{className:"result-header"},yi.default.createElement("span",{className:"result-status status-success"},"Thought logged")),yi.default.createElement("div",{className:"result-content"},e.thought))}var lt=E(x(),1);function yb({data:e}){if(e.error)return lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-error"},e.error)));if(e.cancelled)return lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-warn"},"Question asking was cancelled")));let t=Object.entries(e.answers||{});return t.length===0?lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-info"},"No answers provided by user"))):lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-success"},"User answered questions")),lt.default.createElement("ul",{className:"result-list"},t.map(([n,l],a)=>lt.default.createElement("li",{key:a},lt.default.createElement("strong",null,n)," \u2192 ",l))))}var ea=E(x(),1);function bb({data:e}){return e.error?ea.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},ea.default.createElement("div",{className:"result-header"},ea.default.createElement("span",{className:"result-status status-error"},e.error))):ea.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},ea.default.createElement("div",{className:"result-header"},ea.default.createElement("span",{className:`result-status ${e.approved?"status-success":"status-warn"}`},e.approved?"Entered plan mode":"User declined to enter plan mode")))}var Kt=E(x(),1);function Sb({data:e}){return e.error?Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-error"},e.error))):e.cancelled||!e.approved?Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-warn"},"Keep planning"))):Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-success"},"User approved ",e.manualApproval?"manual approval":"auto-accept"," plan")),e.plan&&Kt.default.createElement("div",{className:"result-content markdown-body"},e.plan),e.planFilePath&&Kt.default.createElement("div",{className:"tool-meta"},"Plan saved to: ",e.planFilePath))}var bi=E(x(),1);function Nb({data:e}){let t=e.message?.startsWith("Failed")||!e.worktreePath;return bi.default.createElement("div",{className:"tool-result-detail tool-result-enterworktree"},bi.default.createElement("div",{className:"result-header"},bi.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Created worktree")),bi.default.createElement("div",{className:"result-content"},e.message))}var ns=E(x(),1);function Tb({data:e}){let t=e.message?.startsWith("Error")||e.message?.startsWith("Cancelled");return ns.default.createElement("div",{className:"tool-result-detail tool-result-exitworktree"},ns.default.createElement("div",{className:"result-header"},ns.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Exited worktree"),ns.default.createElement("span",{className:"tool-meta"},e.action)),ns.default.createElement("div",{className:"result-content"},e.message))}var Si=E(x(),1);function Eb({data:e}){let t=e.message?.startsWith("<error>");return Si.default.createElement("div",{className:"tool-result-detail tool-result-slashcommand"},Si.default.createElement("div",{className:"result-header"},Si.default.createElement("span",{className:`result-status ${t?"status-error":"status-info"}`},'The "',e.commandWithArgs?.split(" ")[0],'" slash command is running')),t&&Si.default.createElement("div",{className:"result-content"},e.message))}var ta=E(x(),1);function xb({data:e}){let t=e.message?.startsWith("<error>");return ta.default.createElement("div",{className:"tool-result-detail tool-result-skill"},ta.default.createElement("div",{className:"result-header"},ta.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Skill error":e.fork?"Skill completed":"Successfully loaded skill"),ta.default.createElement("span",{className:"tool-meta"},e.skillName)),!t&&e.baseDirectory&&ta.default.createElement("div",{className:"tool-meta"},"Base directory: ",e.baseDirectory),t&&ta.default.createElement("div",{className:"result-content"},e.message))}var Xu=E(x(),1);function _b({data:e}){let t=e.message?.startsWith("Error");return Xu.default.createElement("div",{className:"tool-result-detail tool-result-croncreate"},Xu.default.createElement("div",{className:"result-header"},Xu.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?e.message:`Scheduled ${e.jobId} ${e.description}`)))}var Vu=E(x(),1);function kb({data:e}){return Vu.default.createElement("div",{className:"tool-result-detail tool-result-crondelete"},Vu.default.createElement("div",{className:"result-header"},Vu.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-warn"}`},e.message)))}var ln=E(x(),1);function Ab({data:e}){return!e.jobs||e.jobs.length===0?ln.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},ln.default.createElement("div",{className:"result-header"},ln.default.createElement("span",{className:"result-status status-info"},"No cron jobs scheduled"))):ln.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},ln.default.createElement("div",{className:"result-header"},ln.default.createElement("span",{className:"result-status status-success"},"Scheduled cron jobs")),ln.default.createElement("ul",{className:"result-list"},e.jobs.map(t=>{let n=t.prompt.length>50?t.prompt.slice(0,50)+"...":t.prompt;return ln.default.createElement("li",{key:t.id},ln.default.createElement("code",null,t.id),": ",n," ",ln.default.createElement("span",{className:"tool-meta"},"(",t.recurring?"recurring":"one-shot"," \xB7 ",t.description,")"))})))}var El=E(x(),1);function Mb({data:e}){return El.default.createElement("div",{className:"tool-result-detail tool-result-teamcreate"},El.default.createElement("div",{className:"result-header"},El.default.createElement("span",{className:"result-status status-success"},"Created team: ",e.name)),El.default.createElement("div",{className:"result-content"},e.description&&El.default.createElement("div",null,"Description: ",e.description),El.default.createElement("div",null,"Lead: ",e.leadAgentId),El.default.createElement("div",null,"Members: ",e.members?.length||0)))}var Ni=E(x(),1);function Cb({data:e}){return Ni.default.createElement("div",{className:"tool-result-detail tool-result-teamdelete"},Ni.default.createElement("div",{className:"result-header"},Ni.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?`Deleted team: ${e.teamName}`:`Failed to delete team: ${e.teamName}`)),!e.success&&Ni.default.createElement("div",{className:"result-content"},e.message))}var Ti=E(x(),1);function Ob({data:e}){return Ti.default.createElement("div",{className:"tool-result-detail tool-result-sendmessage"},Ti.default.createElement("div",{className:"result-header"},Ti.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?e.message:"Failed to send message")),!e.success&&Ti.default.createElement("div",{className:"result-content"},e.message))}var xl=E(x(),1);function nE(e){let t=!1,n=!1;for(let l of Object.values(e))for(let a of l)a==="__tool_result__"?t=!0:n=!0;return{hasToolResult:t,hasInputFields:n}}function lE(e){return e==="__tool_result__"?"tool result":`input field "${e}"`}function wb({data:e}){let t=e.action==="archive"?"Archived":"Unarchived",n=e.action==="archive"?e.archivedToolUseInputFields??{}:e.unarchivedToolUseInputFields??{},l=Object.keys(n).length,{hasToolResult:a,hasInputFields:s}=nE(n),i="tool result(s)";return a&&s?i="tool result(s) and input field(s)":s&&(i="input field(s)"),xl.default.createElement("div",{className:"tool-result-detail tool-result-messagearchiving"},xl.default.createElement("div",{className:"result-header"},xl.default.createElement("span",{className:"result-status status-success"},t," ",i," for ",l," tool use(s)")),Object.entries(n).map(([o,u])=>xl.default.createElement("div",{key:o,className:"result-fields"},xl.default.createElement("span",{className:"result-tool-use-id"},o,":"),u.map((f,r)=>xl.default.createElement("span",{key:`${f}-${r}`,className:"result-field"},r>0?", ":"",lE(f))))),e.action==="archive"&&e.summary&&xl.default.createElement("div",{className:"result-summary"},e.summary))}var te=E(x(),1);function zb({data:e}){return te.default.createElement("div",{className:"tool-result-detail tool-result-memo"},(()=>{switch(e.action){case"write":{let{result:n}=e;return te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:`result-status ${n.success?"status-success":"status-error"}`},"\u23BF Memo ",n.success?"saved":"failed",": ",n.key),n.success&&n.savedChars!==void 0&&te.default.createElement("span",{className:"result-meta"},"(",n.savedChars," chars)")),!n.success&&n.error&&te.default.createElement("div",{className:"memo-error"},n.error))}case"read":{let{note:n}=e;return n?te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-success"},"\u23BF Memo read: ",n.key),te.default.createElement("span",{className:"result-meta"},n.summary)),te.default.createElement("div",{className:"memo-content"},n.content)):te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-warn"},"\u23BF Memo not found"))}case"list":{let{notes:n}=e;return te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-info"},"\u23BF Memo list (",n.length," memos)")),n.length>0&&te.default.createElement("table",{className:"memo-table"},te.default.createElement("thead",null,te.default.createElement("tr",null,te.default.createElement("th",null,"#"),te.default.createElement("th",null,"Key"),te.default.createElement("th",null,"Summary"),te.default.createElement("th",null,"Updated"))),te.default.createElement("tbody",null,n.map((l,a)=>te.default.createElement("tr",{key:l.key},te.default.createElement("td",null,a+1),te.default.createElement("td",{className:"memo-key"},l.key),te.default.createElement("td",null,l.summary),te.default.createElement("td",{className:"memo-date"},l.updatedAt))))))}case"delete":{let{success:n,key:l}=e;return te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:`result-status ${n?"status-success":"status-warn"}`},"\u23BF Memo ",n?"deleted":"not found",": ",l))}default:return null}})())}var Ku=E(x(),1);function Ub({data:e}){let t=e?.action==="describe"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return Ku.default.createElement("div",{className:"tool-result-detail tool-result-proxy"},Ku.default.createElement("div",{className:"result-header"},Ku.default.createElement("span",{className:"result-status status-success"},t)))}var wt=E(x(),1);function Db({data:e}){let[t,n]=(0,wt.useState)(!1);if(e?.error)return wt.default.createElement("div",{className:"tool-result-detail tool-result-codemode"},wt.default.createElement("div",{className:"result-header"},wt.default.createElement("span",{className:"result-status status-error"},"Error: ",e.error)));let a=((typeof e?.result=="string"?e.result:JSON.stringify(e?.result,null,2))??"").split(`
92
+ `))),o&&!t&&we.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"... ",s.length-30," more lines (click to expand)")),a&&we.default.createElement("pre",{className:"code-block stderr-block"},we.default.createElement("code",null,e.stderr)),e.interrupted&&we.default.createElement("div",{className:"result-note"},"Command was aborted before completion"))}var Qu=E(x(),1);function cb({data:e}){let t=e.toolNames||[];return Qu.default.createElement("div",{className:"tool-result-detail tool-result-toolloader"},Qu.default.createElement("div",{className:"result-header"},Qu.default.createElement("span",{className:"result-status status-success"},e.message||`Tools loaded: ${t.join(", ")}`)))}var Zu=E(x(),1);function fb({data:e}){let n=e.message?.startsWith("<error>")?"status-error":"status-success";return Zu.default.createElement("div",{className:"tool-result-detail tool-result-toolunloader"},Zu.default.createElement("div",{className:"result-header"},Zu.default.createElement("span",{className:`result-status ${n}`},e.message||"Tools unloaded")))}var Zn=E(x(),1);function db({data:e}){return e.error?Zn.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Zn.default.createElement("div",{className:"result-header"},Zn.default.createElement("span",{className:"result-status status-error"},e.error))):Zn.default.createElement("div",{className:"tool-result-detail tool-result-notebookedit"},Zn.default.createElement("div",{className:"result-header"},Zn.default.createElement("span",{className:"result-status status-success"},e.edit_mode==="delete"?`Deleted cell ${e.cell_number}`:`${e.edit_mode==="insert"?"Inserted":"Updated"} cell ${e.cell_number}`)),Zn.default.createElement("pre",{className:"code-block"},Zn.default.createElement("code",null,e.new_source)))}var Nl=E(x(),1);function pb({data:e}){return Nl.default.createElement("div",{className:"tool-result-detail tool-result-websearch"},Nl.default.createElement("div",{className:"result-header"},Nl.default.createElement("span",{className:"result-status status-success"},"Found ",e.results.length," ",e.results.length===1?"result":"results")),e.summaryText&&Nl.default.createElement("div",{className:"result-summary markdown-body"},e.summaryText),e.results.length>0&&Nl.default.createElement("ul",{className:"result-list"},e.results.map((t,n)=>Nl.default.createElement("li",{key:n},Nl.default.createElement("a",{href:t.link,target:"_blank",rel:"noreferrer"},t.title)))))}var Xn=E(x(),1);function mb({data:e}){let[t,n]=(0,Xn.useState)(!1),l=e.aiAnalysis||"No content could be analyzed",a=l.length>400,s=t||!a?l:l.slice(0,400)+"...";return Xn.default.createElement("div",{className:"tool-result-detail tool-result-webfetch"},Xn.default.createElement("div",{className:"result-header"},Xn.default.createElement("span",{className:"result-status status-success"},"Content ",e.fromCache?"from cache":"fetched"," and analyzed"),Xn.default.createElement("span",{className:"tool-meta"},e.url)),Xn.default.createElement("div",{className:"result-content markdown-body",style:{whiteSpace:"pre-wrap"}},s),a&&!t&&Xn.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"click to expand"))}var vi=E(x(),1);function gb({data:e}){return vi.default.createElement("div",{className:"tool-result-detail tool-result-taskstop"},vi.default.createElement("div",{className:"result-header"},vi.default.createElement("span",{className:`result-status ${e.stopped?"status-success":"status-error"}`},e.message),vi.default.createElement("span",{className:"tool-meta"},e.task_id," (",e.task_type,")")))}var Tl=E(x(),1);function tE(e){return e==="completed"?"\u2612":"\u2610"}function hb({data:e}){let t=e.todos||[];return t.length===0?Tl.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},Tl.default.createElement("div",{className:"result-header"},Tl.default.createElement("span",{className:"result-status status-info"},"No todos currently"))):Tl.default.createElement("div",{className:"tool-result-detail tool-result-todowrite"},t.map((n,l)=>{let a=n.status==="completed",s=n.status==="in_progress";return Tl.default.createElement("div",{key:l,className:"todo-item"},Tl.default.createElement("span",{className:`todo-checkbox ${a?"completed":""}`},tE(n.status)),Tl.default.createElement("span",{className:`todo-content ${a?"completed":""} ${s?"in-progress":""}`},n.content))}))}var yi=E(x(),1);function vb({data:e}){return yi.default.createElement("div",{className:"tool-result-detail tool-result-think"},yi.default.createElement("div",{className:"result-header"},yi.default.createElement("span",{className:"result-status status-success"},"Thought logged")),yi.default.createElement("div",{className:"result-content"},e.thought))}var lt=E(x(),1);function yb({data:e}){if(e.error)return lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-error"},e.error)));if(e.cancelled)return lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-warn"},"Question asking was cancelled")));let t=Object.entries(e.answers||{});return t.length===0?lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-info"},"No answers provided by user"))):lt.default.createElement("div",{className:"tool-result-detail tool-result-askuserquestion"},lt.default.createElement("div",{className:"result-header"},lt.default.createElement("span",{className:"result-status status-success"},"User answered questions")),lt.default.createElement("ul",{className:"result-list"},t.map(([n,l],a)=>lt.default.createElement("li",{key:a},lt.default.createElement("strong",null,n)," \u2192 ",l))))}var ea=E(x(),1);function bb({data:e}){return e.error?ea.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},ea.default.createElement("div",{className:"result-header"},ea.default.createElement("span",{className:"result-status status-error"},e.error))):ea.default.createElement("div",{className:"tool-result-detail tool-result-enterplanmode"},ea.default.createElement("div",{className:"result-header"},ea.default.createElement("span",{className:`result-status ${e.approved?"status-success":"status-warn"}`},e.approved?"Entered plan mode":"User declined to enter plan mode")))}var Kt=E(x(),1);function Sb({data:e}){return e.error?Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-error"},e.error))):e.cancelled||!e.approved?Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-warn"},"Keep planning"))):Kt.default.createElement("div",{className:"tool-result-detail tool-result-exitplanmode"},Kt.default.createElement("div",{className:"result-header"},Kt.default.createElement("span",{className:"result-status status-success"},"User approved ",e.manualApproval?"manual approval":"auto-accept"," plan")),e.plan&&Kt.default.createElement("div",{className:"result-content markdown-body"},e.plan),e.planFilePath&&Kt.default.createElement("div",{className:"tool-meta"},"Plan saved to: ",e.planFilePath))}var bi=E(x(),1);function Nb({data:e}){let t=e.message?.startsWith("Failed")||!e.worktreePath;return bi.default.createElement("div",{className:"tool-result-detail tool-result-enterworktree"},bi.default.createElement("div",{className:"result-header"},bi.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Created worktree")),bi.default.createElement("div",{className:"result-content"},e.message))}var ns=E(x(),1);function Tb({data:e}){let t=e.message?.startsWith("Error")||e.message?.startsWith("Cancelled");return ns.default.createElement("div",{className:"tool-result-detail tool-result-exitworktree"},ns.default.createElement("div",{className:"result-header"},ns.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Failed":"Exited worktree"),ns.default.createElement("span",{className:"tool-meta"},e.action)),ns.default.createElement("div",{className:"result-content"},e.message))}var Si=E(x(),1);function Eb({data:e}){let t=e.message?.startsWith("<error>");return Si.default.createElement("div",{className:"tool-result-detail tool-result-slashcommand"},Si.default.createElement("div",{className:"result-header"},Si.default.createElement("span",{className:`result-status ${t?"status-error":"status-info"}`},'The "',e.commandWithArgs?.split(" ")[0],'" slash command is running')),t&&Si.default.createElement("div",{className:"result-content"},e.message))}var ta=E(x(),1);function xb({data:e}){let t=e.message?.startsWith("<error>");return ta.default.createElement("div",{className:"tool-result-detail tool-result-skill"},ta.default.createElement("div",{className:"result-header"},ta.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?"Skill error":e.fork?"Skill completed":"Successfully loaded skill"),ta.default.createElement("span",{className:"tool-meta"},e.skillName)),!t&&e.baseDirectory&&ta.default.createElement("div",{className:"tool-meta"},"Base directory: ",e.baseDirectory),t&&ta.default.createElement("div",{className:"result-content"},e.message))}var Xu=E(x(),1);function _b({data:e}){let t=e.message?.startsWith("Error");return Xu.default.createElement("div",{className:"tool-result-detail tool-result-croncreate"},Xu.default.createElement("div",{className:"result-header"},Xu.default.createElement("span",{className:`result-status ${t?"status-error":"status-success"}`},t?e.message:`Scheduled ${e.jobId} ${e.description}`)))}var Vu=E(x(),1);function kb({data:e}){return Vu.default.createElement("div",{className:"tool-result-detail tool-result-crondelete"},Vu.default.createElement("div",{className:"result-header"},Vu.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-warn"}`},e.message)))}var ln=E(x(),1);function Ab({data:e}){return!e.jobs||e.jobs.length===0?ln.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},ln.default.createElement("div",{className:"result-header"},ln.default.createElement("span",{className:"result-status status-info"},"No cron jobs scheduled"))):ln.default.createElement("div",{className:"tool-result-detail tool-result-cronlist"},ln.default.createElement("div",{className:"result-header"},ln.default.createElement("span",{className:"result-status status-success"},"Scheduled cron jobs")),ln.default.createElement("ul",{className:"result-list"},e.jobs.map(t=>{let n=t.prompt.length>50?t.prompt.slice(0,50)+"...":t.prompt;return ln.default.createElement("li",{key:t.id},ln.default.createElement("code",null,t.id),": ",n," ",ln.default.createElement("span",{className:"tool-meta"},"(",t.recurring?"recurring":"one-shot"," \xB7 ",t.description,")"))})))}var El=E(x(),1);function Mb({data:e}){return El.default.createElement("div",{className:"tool-result-detail tool-result-teamcreate"},El.default.createElement("div",{className:"result-header"},El.default.createElement("span",{className:"result-status status-success"},"Created team: ",e.name)),El.default.createElement("div",{className:"result-content"},e.description&&El.default.createElement("div",null,"Description: ",e.description),El.default.createElement("div",null,"Lead: ",e.leadAgentId),El.default.createElement("div",null,"Members: ",e.members?.length||0)))}var Ni=E(x(),1);function Cb({data:e}){return Ni.default.createElement("div",{className:"tool-result-detail tool-result-teamdelete"},Ni.default.createElement("div",{className:"result-header"},Ni.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?`Deleted team: ${e.teamName}`:`Failed to delete team: ${e.teamName}`)),!e.success&&Ni.default.createElement("div",{className:"result-content"},e.message))}var Ti=E(x(),1);function Ob({data:e}){return Ti.default.createElement("div",{className:"tool-result-detail tool-result-sendmessage"},Ti.default.createElement("div",{className:"result-header"},Ti.default.createElement("span",{className:`result-status ${e.success?"status-success":"status-error"}`},e.success?e.message:"Failed to send message")),!e.success&&Ti.default.createElement("div",{className:"result-content"},e.message))}var xl=E(x(),1);function nE(e){let t=!1,n=!1;for(let l of Object.values(e))for(let a of l)a==="__tool_result__"?t=!0:n=!0;return{hasToolResult:t,hasInputFields:n}}function lE(e){return e==="__tool_result__"?"tool result":`input field "${e}"`}function wb({data:e}){let t=e.action==="archive"?"Archived":"Unarchived",n=e.action==="archive"?e.archivedToolUseInputFields??{}:e.unarchivedToolUseInputFields??{},l=Object.keys(n).length,{hasToolResult:a,hasInputFields:s}=nE(n),i="tool result(s)";return a&&s?i="tool result(s) and input field(s)":s&&(i="input field(s)"),xl.default.createElement("div",{className:"tool-result-detail tool-result-messagearchiving"},xl.default.createElement("div",{className:"result-header"},xl.default.createElement("span",{className:"result-status status-success"},t," ",i," for ",l," tool use(s)")),Object.entries(n).map(([o,u])=>xl.default.createElement("div",{key:o,className:"result-fields"},xl.default.createElement("span",{className:"result-tool-use-id"},o,":"),u.map((f,r)=>xl.default.createElement("span",{key:`${f}-${r}`,className:"result-field"},r>0?", ":"",lE(f))))),e.action==="archive"&&e.summary&&xl.default.createElement("div",{className:"result-summary"},e.summary))}var te=E(x(),1);function zb({data:e}){return te.default.createElement("div",{className:"tool-result-detail tool-result-memo"},(()=>{switch(e.action){case"write":{let{result:n}=e;return te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:`result-status ${n.success?"status-success":"status-error"}`},"\u23BF Memo ",n.success?"saved":"failed",": ",n.key),n.success&&n.savedChars!==void 0&&te.default.createElement("span",{className:"result-meta"},"(",n.savedChars," chars)")),!n.success&&n.error&&te.default.createElement("div",{className:"memo-error"},n.error))}case"read":{let{note:n}=e;return n?te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-success"},"\u23BF Memo read: ",n.key),te.default.createElement("span",{className:"result-meta"},n.summary)),te.default.createElement("div",{className:"memo-content"},n.content)):te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-warn"},"\u23BF Memo not found"))}case"list":{let{notes:n}=e;return te.default.createElement(te.default.Fragment,null,te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:"result-status status-info"},"\u23BF Memo list (",n.length," memos)")),n.length>0&&te.default.createElement("table",{className:"memo-table"},te.default.createElement("thead",null,te.default.createElement("tr",null,te.default.createElement("th",null,"#"),te.default.createElement("th",null,"Key"),te.default.createElement("th",null,"Summary"),te.default.createElement("th",null,"Updated"))),te.default.createElement("tbody",null,n.map((l,a)=>te.default.createElement("tr",{key:l.key},te.default.createElement("td",null,a+1),te.default.createElement("td",{className:"memo-key"},l.key),te.default.createElement("td",null,l.summary),te.default.createElement("td",{className:"memo-date"},l.updatedAt))))))}case"delete":{let{success:n,key:l}=e;return te.default.createElement("div",{className:"result-header"},te.default.createElement("span",{className:`result-status ${n?"status-success":"status-warn"}`},"\u23BF Memo ",n?"deleted":"not found",": ",l))}default:return null}})())}var Ku=E(x(),1);function Ub({data:e}){let t=e?.action==="load"&&e?.name?`${e.name} tool is loaded`:e?.message??"";return Ku.default.createElement("div",{className:"tool-result-detail tool-result-proxy"},Ku.default.createElement("div",{className:"result-header"},Ku.default.createElement("span",{className:"result-status status-success"},t)))}var wt=E(x(),1);function Db({data:e}){let[t,n]=(0,wt.useState)(!1);if(e?.error)return wt.default.createElement("div",{className:"tool-result-detail tool-result-codemode"},wt.default.createElement("div",{className:"result-header"},wt.default.createElement("span",{className:"result-status status-error"},"Error: ",e.error)));let a=((typeof e?.result=="string"?e.result:JSON.stringify(e?.result,null,2))??"").split(`
93
93
  `),s=a.length>30,i=t?a:a.slice(0,30);return wt.default.createElement("div",{className:"tool-result-detail tool-result-codemode"},wt.default.createElement("div",{className:"result-header"},wt.default.createElement("span",{className:"result-status status-success"},"Result"),a.length>1&&wt.default.createElement("span",{className:"tool-meta"},a.length," lines")),wt.default.createElement("pre",{className:"code-block"},wt.default.createElement("code",null,i.join(`
94
94
  `))),s&&!t&&wt.default.createElement("div",{className:"expand-toggle",onClick:()=>n(!0)},"... ",a.length-30," more lines (click to expand)"))}function Lb({message:e}){let{toolName:t,toolData:n,isError:l,isRemote:a}=e.metadata||{},[s,i]=(0,Z.useState)(!1),o=e.content,u=o.length>200,f=s||!u?o:o.substring(0,200)+"... (click to expand)",r=(0,Z.useMemo)(()=>{try{return le.parse(f)}catch{return f}},[f]);if(l||!n)return Z.default.createElement("div",{className:`message-item message-tool-result ${l?"error":""}`},Z.default.createElement("div",{className:"result-content markdown-body custom-scrollbar",onClick:()=>u&&i(!s),style:{cursor:u?"pointer":"default"},dangerouslySetInnerHTML:{__html:r}}));let p=n;return p?.type==="mcp"?Z.default.createElement("div",{className:`message-item message-tool-result${a?" remote":""}`},Z.default.createElement(ob,{data:p})):Z.default.createElement("div",{className:`message-item message-tool-result${a?" remote":""}`},(()=>{switch(t){case"Read":return Z.default.createElement(Ry,{data:p});case"Edit":return Z.default.createElement(Iy,{data:p});case"Write":return Z.default.createElement(Fy,{data:p});case"Bash":return Z.default.createElement(eb,{data:p});case"Grep":return Z.default.createElement(tb,{data:p});case"Glob":return Z.default.createElement(nb,{data:p});case"LS":return Z.default.createElement(lb,{data:p});case"Agent":return Z.default.createElement(ab,{data:p});case"LSP":return Z.default.createElement(sb,{data:p});case"Cwd":return Z.default.createElement(ib,{data:p});case"TaskOutput":return Z.default.createElement(ub,{data:p});case"PowerShell":return Z.default.createElement(rb,{data:p});case"ToolLoader":return Z.default.createElement(cb,{data:p});case"ToolUnLoader":return Z.default.createElement(fb,{data:p});case"NotebookEdit":return Z.default.createElement(db,{data:p});case"WebSearch":return Z.default.createElement(pb,{data:p});case"WebFetch":return Z.default.createElement(mb,{data:p});case"TaskStop":return Z.default.createElement(gb,{data:p});case"TodoWrite":return Z.default.createElement(hb,{data:p});case"Think":return Z.default.createElement(vb,{data:p});case"AskUserQuestion":return Z.default.createElement(yb,{data:p});case"EnterPlanMode":return Z.default.createElement(bb,{data:p});case"ExitPlanMode":return Z.default.createElement(Sb,{data:p});case"EnterWorktreeTool":return Z.default.createElement(Nb,{data:p});case"ExitWorktreeTool":return Z.default.createElement(Tb,{data:p});case"SlashCommand":return Z.default.createElement(Eb,{data:p});case"Skill":return Z.default.createElement(xb,{data:p});case"CronCreate":return Z.default.createElement(_b,{data:p});case"CronDelete":return Z.default.createElement(kb,{data:p});case"CronList":return Z.default.createElement(Ab,{data:p});case"TeamCreate":return Z.default.createElement(Mb,{data:p});case"TeamDelete":return Z.default.createElement(Cb,{data:p});case"SendMessage":return Z.default.createElement(Ob,{data:p});case"MessageArchiving":return Z.default.createElement(wb,{data:p});case"Memo":return Z.default.createElement(zb,{data:p});case"ProxyTool":return Z.default.createElement(Ub,{data:p});case"codemode":return Z.default.createElement(Db,{data:p});default:return Z.default.createElement("pre",{className:"tool-result-text"},e.content)}})())}le.setOptions({breaks:!0,gfm:!0});function Bb({message:e,pendingUserResponses:t,sendUserResponse:n}){switch(e.messageType){case"user_text":return Me.default.createElement(aE,{content:e.content});case"assistant_text":return Me.default.createElement(sE,{content:e.content,metadata:e.metadata});case"assistant_thinking":return Me.default.createElement(iE,{content:e.content});case"tool_use":return Me.default.createElement(Wy,{message:e,pendingUserResponses:t,sendUserResponse:n});case"tool_result":return Me.default.createElement(Lb,{message:e});case"progress":return Me.default.createElement(oE,{content:e.content});case"error":return Me.default.createElement(uE,{content:e.content});default:return null}}function $u(e){return(0,Me.useMemo)(()=>{try{return le.parse(e)}catch{return e}},[e])}function aE({content:e}){let t=$u(e);return Me.default.createElement("div",{className:"message-item message-user"},Me.default.createElement("div",{className:"message-content markdown-body",dangerouslySetInnerHTML:{__html:t}}))}function sE({content:e,metadata:t}){let n=$u(e);return Me.default.createElement("div",{className:"message-item message-assistant"},Me.default.createElement("div",{className:"message-content markdown-body",dangerouslySetInnerHTML:{__html:n}}))}function iE({content:e}){let[t,n]=(0,Me.useState)(!1),l=$u(e);return Me.default.createElement("div",{className:"message-item message-thinking"},Me.default.createElement("details",{open:t,onToggle:a=>n(a.target.open)},Me.default.createElement("summary",null,"Thinking..."),t&&Me.default.createElement("div",{className:"message-content markdown-body",style:{marginTop:4},dangerouslySetInnerHTML:{__html:l}})))}function oE({content:e}){let t=$u(e);return Me.default.createElement("div",{className:"message-item message-progress"},Me.default.createElement("div",{className:"markdown-body",dangerouslySetInnerHTML:{__html:t}}))}function uE({content:e}){return Me.default.createElement("div",{className:"message-item message-error"},e)}var rE=new Set(["TaskCreate","TaskGet","TaskList","TaskUpdate","TodoWrite","TeamCreate"]),cE=new Set(["ToolLoader","ToolUnLoader","MessageArchiving"]);function fE(e,t){return!!(rE.has(e)||t!=="DAHAWA_DEBUG"&&cE.has(e))}var Hb="*-* ",qb="<system-notification>";function Qb(e,t={}){let{userType:n}=t,l=[],a=0,s=new Map;for(let i of e)if(i.type==="user"&&i.message?.content){let o=i.message.content;if(Array.isArray(o))for(let u of o)u.type==="tool_result"&&u.tool_use_id&&s.set(u.tool_use_id,u)}for(let i of e)if(!(!i||!i.type))switch(i.type){case"user":dE(i,s,l,()=>`msg_${a++}`);break;case"assistant":pE(i,s,e,l,()=>`msg_${a++}`,n);break;case"progress":mE(i,l,()=>`msg_${a++}`);break}return l}function dE(e,t,n,l){let a=e.message?.content;if(a){if(typeof a=="string"){if(!a.trim())return;let s=a.trim();if(s.startsWith(Hb)||s.startsWith(qb)||/<system-reminder>.*?<\/system-reminder>/s.test(s))return;let i=jb(s);n.push({id:l(),messageType:"user_text",content:i??s});return}if(Array.isArray(a)){for(let s of a)if(s.type==="text"){if(!s.text||s.text.trim()==="")continue;let i=s.text.trim();if(i.startsWith(Hb)||i.startsWith(qb)||/<system-reminder>.*?<\/system-reminder>/s.test(i))continue;let o=jb(s.text);n.push({id:l(),messageType:"user_text",content:o??s.text})}}}}function jb(e){let t=Gb(e,"command-message");if(!t)return null;let n=Gb(e,"command-args");return`> /${t}${n?" "+n:""}`}function Gb(e,t){if(!e.trim()||!t.trim())return null;let n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`<${n}(?:\\s+[^>]*)?>([\\s\\S]*?)<\\/${n}>`,"i").exec(e)?.[1]??null}function pE(e,t,n,l,a,s){let i=e.message?.content;if(!(!i||!Array.isArray(i)))for(let o of i)switch(o.type){case"text":if(o.text&&o.text.trim()){if(o.text.trim()==="No response requested.")break;l.push({id:a(),messageType:"assistant_text",content:o.text,metadata:{costUSD:e.costUSD,durationMs:e.durationMs}})}break;case"thinking":o.thinking&&o.thinking.trim()&&l.push({id:a(),messageType:"assistant_thinking",content:o.thinking,metadata:{isCollapsed:!0}});break;case"tool_use":{let u=o.id,f=o.name||"unknown_tool",r=f,p=o.input,c=!1;if(f==="ProxyTool"){let m=o.input;m&&(m.action??"call")==="call"&&m.name&&(r=m.name,p=m.input??{},c=!0)}if(fE(r,s))break;let{name:d,isRemote:v,displayName:y}=gE(r),S=y??d,g=u?t.has(u):!1;if(l.push({id:a(),messageType:"tool_use",content:d,metadata:{toolName:d,toolDisplayName:S,toolInput:bE(p),toolUseId:u,toolInputRaw:p,isRemote:v,isInProgress:!g,isProxyCall:c}}),u&&t.has(u)){let m=t.get(u),h=yE(m),b=vE(n,u),D=r.startsWith("mcp_")&&!r.startsWith("mcp_hands_")?hE(m,S):b;l.push({id:a(),messageType:"tool_result",content:h,metadata:{toolName:d,toolDisplayName:S,toolUseId:u,isError:m.is_error||!1,toolData:D,isRemote:v,isProxyCall:c}})}break}}}function mE(e,t,n){let l=e.content?.message?.content;if(!(!l||!Array.isArray(l)))for(let a of l)a.type==="text"&&a.text&&a.text.trim()&&t.push({id:n(),messageType:"progress",content:a.text})}var Yb={mcp_hands_Read:"Read",mcp_hands_Edit:"Edit",mcp_hands_Write:"Write",mcp_hands_Bash:"Bash",mcp_hands_Grep:"Grep",mcp_hands_Glob:"Glob",mcp_hands_LSP:"LSP",mcp_hands_NotebookEdit:"NotebookEdit",mcp_hands_TaskOutput:"TaskOutput",mcp_hands_TaskStop:"TaskStop",mcp_hands_PowerShell:"PowerShell"};function gE(e){if(Yb[e]){let t=Yb[e];return{name:t,isRemote:!0,displayName:`\u2601 ${t}`}}if(e.startsWith("mcp_hands_")){let t=e.slice(10);return{name:t,isRemote:!0,displayName:`\u2601 ${t}`}}if(e.startsWith("mcp_")){let t=e.slice(4),n=t.indexOf("_");if(n!==-1){let l=t.slice(0,n),a=t.slice(n+1);return{name:e,isRemote:!1,displayName:`${l}:${a}`}}}return{name:e,isRemote:!1}}function hE(e,t){return e?{type:"mcp",displayName:t,content:e.content??"",isError:e.is_error||!1}:{type:"mcp",displayName:t,content:"",isError:!1}}function vE(e,t){for(let n of e){if(!n.toolUseResult?.data)continue;let l=n.message?.content;if(!Array.isArray(l))continue;if(l.some(s=>s.type==="tool_result"&&s.tool_use_id===t))return n.toolUseResult.data}}function yE(e){if(!e)return"";let t=e.content;return t?typeof t=="string"?t:Array.isArray(t)?t.filter(n=>n.type==="text").map(n=>n.text||"").join(`
95
95
  `):JSON.stringify(t):e.is_error?"[Error]":"[Empty result]"}function bE(e){if(!e)return"";let t=typeof e=="string"?e:JSON.stringify(e,null,2);return t.length>800?t.substring(0,800)+"...":t}function Zb({rawMessages:e,autoScroll:t,userType:n,pendingUserResponses:l,sendUserResponse:a}){let s=(0,$t.useRef)(null),i=(0,$t.useRef)(!1),o=(0,$t.useMemo)(()=>Qb(e,{userType:n}),[e,n]);(0,$t.useEffect)(()=>{t&&s.current&&!i.current&&(s.current.scrollTop=s.current.scrollHeight)},[o,t]);let u=()=>{if(!s.current)return;let{scrollTop:f,scrollHeight:r,clientHeight:p}=s.current,c=r-f-p<50;i.current=!c};return o.length===0?$t.default.createElement("div",{className:"message-list"},$t.default.createElement("div",{className:"empty-state"},"Waiting for messages...")):$t.default.createElement("div",{className:"message-list",ref:s,onScroll:u},o.map(f=>$t.default.createElement(Bb,{key:f.id,message:f,pendingUserResponses:l,sendUserResponse:a})))}var Re=E(x(),1);function Xb({activeAgent:e,isLoading:t=!1,promptStatus:n,onSubmit:l,onInterrupt:a}){let[s,i]=(0,Re.useState)(""),o=(0,Re.useRef)(null),u=e==="main",f=u&&s.trim()!=="",r=u&&t,p=(0,Re.useCallback)(()=>{let y=o.current;if(!y)return;y.style.height="auto";let S=parseFloat(getComputedStyle(y).minHeight)||0;y.style.height=`${Math.min(Math.max(y.scrollHeight,S),200)}px`},[]);(0,Re.useEffect)(()=>{p()},[s,p]);let c=y=>{y.key==="Enter"&&!y.shiftKey&&!y.nativeEvent.isComposing&&(y.preventDefault(),f&&(l(s),i("")))},d=()=>{f&&(l(s),i(""))},v=s.startsWith("!")?"bash":s.startsWith("/")?"command":"text";return Re.default.createElement("div",{className:"prompt-input-bar"},Re.default.createElement("div",{className:"prompt-input-inner"},Re.default.createElement("span",{className:`prompt-input-mode ${v}`},v==="bash"?"!":v==="command"?"/":null),Re.default.createElement("textarea",{ref:o,className:"prompt-input-field",value:s,onChange:y=>i(y.target.value),onKeyDown:c,placeholder:u?t?"Agent is busy; your prompt will be queued...":"Type a prompt and press Enter...":"Switch to Main agent to type a prompt",disabled:!u,rows:3}),r?Re.default.createElement("button",{className:"prompt-input-interrupt",onClick:a,type:"button",title:"Interrupt"},Re.default.createElement("span",{className:"interrupt-icon"})):Re.default.createElement("button",{className:"prompt-input-send",onClick:d,disabled:!f,type:"button",title:"Send"},Re.default.createElement("span",{className:"send-icon"}))))}var se=E(x(),1);var zt=E(x(),1);function Vb(){let[e,t]=(0,zt.useState)(null),[n,l]=(0,zt.useState)(null),[a,s]=(0,zt.useState)(null),[i,o]=(0,zt.useState)(!0),[u,f]=(0,zt.useState)(null),r=(0,zt.useCallback)(async()=>{try{let[v,y,S]=await Promise.all([fetch("/api/settings"),fetch("/api/settings/sources"),fetch("/api/model-config")]);if(!v.ok)throw new Error(`Failed to load settings: ${v.status}`);if(!y.ok)throw new Error(`Failed to load settings sources: ${y.status}`);if(!S.ok)throw new Error(`Failed to load model config: ${S.status}`);let g=await v.json(),m=await y.json(),h=await S.json();t(g),l({user:m.user||{},project:m.project||{}}),s(h),f(null)}catch(v){f(v instanceof Error?v.message:"Failed to load settings")}finally{o(!1)}},[]);(0,zt.useEffect)(()=>{r();let v=()=>{r()};return window.addEventListener("settings:changed",v),()=>{window.removeEventListener("settings:changed",v)}},[r]);let p=(0,zt.useCallback)(async(v,y,S)=>{let g=await fetch(`/api/settings/${v}/${y}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:S})});if(!g.ok){let m=await g.json().catch(()=>({error:"Update failed"}));throw new Error(m.error||"Update failed")}await r()},[r]),c=(0,zt.useCallback)(async(v,y)=>{let S=await fetch(`/api/settings/${v}/${y}`,{method:"DELETE"});if(!S.ok){let g=await S.json().catch(()=>({error:"Reset failed"}));throw new Error(g.error||"Reset failed")}await r()},[r]),d=(0,zt.useCallback)(async v=>{let y=await fetch("/api/model-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});if(!y.ok){let S=await y.json().catch(()=>({error:"Update model config failed",details:[]})),g=[S.error,...S.details||[]].filter(Boolean).join(`