agent-afk 5.190.0 → 5.191.0

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/dist/cli.mjs CHANGED
@@ -430,7 +430,7 @@ ${o}`,paths:[t,n]}:o!==null?i={content:o,paths:[n]}:r!==null?i={content:r,paths:
430
430
 
431
431
  ${t}`}var Yve,W_=b(()=>{"use strict";Yve=new Set(["script","style","noscript","template","svg"])});function Zve(e,t){return new Promise((n,r)=>{if(t?.aborted){r(t.reason??new Error("aborted"));return}let o=()=>{clearTimeout(i),r(t?.reason??new Error("aborted"))},i=setTimeout(()=>{t?.removeEventListener("abort",o),n()},e);t?.addEventListener("abort",o,{once:!0})})}function VW(e,t,n){let r=Math.min(t*2**e,n);return Math.round(Math.random()*r)}function eke(e,t){let n=e.headers.get("retry-after");if(n===null)return null;let r=Number(n.trim());return!Number.isFinite(r)||r<0?null:Math.min(r*1e3,t)}async function YW(e,t,n={},r={}){let o=r.retries??3,i=r.baseDelayMs??500,s=r.maxDelayMs??1e4,a=r.sleep??Zve,l=n.signal??void 0,c;for(let u=0;u<=o;u++){if(l?.aborted)throw l.reason??new Error("aborted");try{let d=await e(t,n);if(!Qve.has(d.status)||u===o)return d;let p=eke(d,s)??VW(u,i,s);B("[web/retryFetch] retrying",{url:t,attempt:u,status:d.status,waitMs:p}),await d.body?.cancel().catch(()=>{}),await a(p,l)}catch(d){if(l?.aborted||(c=d,u===o))throw d;let p=VW(u,i,s);B("[web/retryFetch] retrying after error",{url:t,attempt:u,waitMs:p}),await a(p,l)}}throw c??new Error("retryFetch: exhausted without a result")}var Qve,XW=b(()=>{"use strict";me();Qve=new Set([429,502,503,504])});import{BlockList as tke,isIP as G_}from"node:net";import{lookup as nke}from"node:dns/promises";import{Agent as rke}from"undici";function ZW(){let e=k.AFK_WEB_ALLOW_PRIVATE_HOSTS?.trim().toLowerCase();return e==="1"||e==="true"}function ake(e){return e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e}function K_(e){let t=G_(e);return t===0?!1:ske.check(e,t===4?"ipv4":"ipv6")}async function eK(e){return nke(e,{all:!0,verbatim:!0})}async function Pa(e,t={}){if(t.allowPrivateHosts??ZW())return{allowed:!0};let n;try{n=new URL(e)}catch{return{allowed:!1,reason:`"${e}" is not a valid absolute URL`}}if(n.protocol!=="http:"&&n.protocol!=="https:")return{allowed:!1,reason:`protocol "${n.protocol}" not supported (http/https only)`};let r=ake(n.hostname),o=(a,l)=>`refusing to fetch ${l} \u2014 internal/private address ${a} (loopback, link-local, cloud metadata, or RFC1918 space). Set AFK_WEB_ALLOW_PRIVATE_HOSTS=1 to allow private-host access.`;if(G_(r)!==0)return K_(r)?{allowed:!1,reason:o(r,r)}:{allowed:!0};let i=t.lookupFn??eK,s;try{s=await i(r)}catch{return{allowed:!0}}for(let a of s)if(K_(a.address))return{allowed:!1,reason:o(a.address,`${r} (resolved)`)};return{allowed:!0}}async function of(e,t={}){let n=await Pa(e,t);if(!n.allowed)throw new Vt(n.reason)}async function Ki(e,t,n={},r={}){let o={...r.lookupFn!==void 0?{lookupFn:r.lookupFn}:{},...r.allowPrivateHosts!==void 0?{allowPrivateHosts:r.allowPrivateHosts}:{}},i=t;for(let s=0;s<=QW;s++){await of(i,o);let a={...n,redirect:"manual",...e===globalThis.fetch&&!(r.allowPrivateHosts??ZW())?{dispatcher:lke}:{}},l=await YW(e,i,a,r.retry??{});if(!cke.has(l.status))return l;let c=l.headers.get("location");if(c===null||c.trim()==="")return l;let u;try{u=new URL(c,l.url||i).toString()}catch{return l}await l.body?.cancel().catch(()=>{}),i=u}throw new Vt(`too many redirects (>${QW}) starting from ${t}`)}var oke,ike,ske,Vt,lke,QW,cke,Ia=b(()=>{"use strict";F();XW();oke=[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.168.0.0",16]],ike=[["::",96],["64:ff9b::",96],["fc00::",7],["fe80::",10]],ske=(()=>{let e=new tke;for(let[t,n]of oke)e.addSubnet(t,n,"ipv4");for(let[t,n]of ike)e.addSubnet(t,n,"ipv6");return e})(),Vt=class extends Error{constructor(t){super(t),this.name="EgressBlockedError"}};lke=new rke({connect:{lookup(e,t,n){eK(e).then(r=>{let o=r.find(s=>K_(s.address));if(o!==void 0){n(new Vt(`refusing to connect to ${e} (resolved) \u2014 internal/private address ${o.address} (loopback, link-local, cloud metadata, or RFC1918 space). Set AFK_WEB_ALLOW_PRIVATE_HOSTS=1 to allow private-host access.`),"",0);return}let i=r[0];if(i===void 0){n(new Error(`DNS lookup returned no addresses for ${e}`),"",0);return}n(null,i.address,G_(i.address))},r=>n(r,"",0))}}});QW=20,cke=new Set([301,302,303,307,308])});var z_={};Pn(z_,{enforceDomainPolicy:()=>Cr,loadBrowserConfig:()=>q_});import{readFileSync as uke}from"node:fs";import{join as dke}from"path";function pke(e){let n=e.replace(/[.+?()[\]{}/\\^$|]/g,"\\$&").replace(/\*/g,"[^.]*");return new RegExp(`^${n}$`,"i")}function tK(e,t){return pke(t).test(e)}function gke(e,t){if(e!==void 0){let n=e.trim().toLowerCase();if(n==="1"||n==="true"||n==="yes")return!0;if(n==="0"||n==="false"||n==="no")return!1}if(t!==void 0){if(mke.has(t))return!0;if(fke.has(t))return!1}return!1}function nK(e){return e===void 0||e.trim()===""?[]:e.split(",").map(t=>t.trim().toLowerCase()).filter(t=>t.length>0)}function hke(e){if(e===void 0||e==="")return"auto";if(e==="playwright"||e==="agent-browser"||e==="auto")return e;throw new Error(`AFK_BROWSER_BACKEND: must be "playwright", "agent-browser", or "auto", got: ${e}`)}function rK(e){let t=e===void 0||e.trim()===""?"default":e.trim();return mc(t),t}function yke(e){if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function bke(e){try{return uke(e,"utf8")}catch(t){if(t.code==="ENOENT")return;throw t}}function wke(e,t){let n={...e};if(typeof t.headless=="boolean"&&(n.headless=t.headless),Array.isArray(t.allowedDomains)&&(n.allowedDomains=t.allowedDomains.filter(r=>typeof r=="string").map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)),Array.isArray(t.blockedDomains)&&(n.blockedDomains=t.blockedDomains.filter(r=>typeof r=="string").map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)),typeof t.domSnapshots=="boolean"&&(n.domSnapshots=t.domSnapshots),t.backend==="playwright"||t.backend==="agent-browser"||t.backend==="auto")n.backend=t.backend;else if(t.backend!==void 0)throw new Error(`AFK_BROWSER_BACKEND: must be "playwright", "agent-browser", or "auto", got: ${String(t.backend)}`);return typeof t.defaultProfile=="string"&&(n.defaultProfile=rK(t.defaultProfile)),n}function q_(e){let t=e?.env??k,n=e?.readFileSync??bke,r=e?.surface??t.AGENT_SURFACE,o=gke(t.AFK_BROWSER_HEADLESS,r),i=nK(t.AFK_BROWSER_ALLOWED_DOMAINS),s=nK(t.AFK_BROWSER_BLOCKED_DOMAINS),a=yke(t.AFK_BROWSER_DOM_SNAPSHOTS),l=hke(t.AFK_BROWSER_BACKEND),c=rK(t.AFK_BROWSER_DEFAULT_PROFILE),u={headless:o,allowedDomains:i,blockedDomains:s,domSnapshots:a,backend:l,configPath:null,defaultProfile:c},d=t.AFK_BROWSER_CONFIG,p=d!==void 0&&d.trim()!==""?d.trim():dke(zn(),"browser.json"),f=n(p);if(f===void 0)return u;let g;try{g=JSON.parse(f)}catch(y){throw new Error(`Failed to parse browser config at ${p}: ${String(y)}`)}if(typeof g!="object"||g===null||Array.isArray(g))throw new Error(`Browser config at ${p} must be a JSON object`);let h=wke(u,g);return h.configPath=p,h}function Cr(e,t){let n;try{n=new URL(e).hostname.toLowerCase()}catch{return{allowed:!1,reason:`invalid URL: ${e}`}}for(let r of t.blockedDomains)if(tK(n,r))return{allowed:!1,reason:`blocked by AFK_BROWSER_BLOCKED_DOMAINS: ${r}`};return t.allowedDomains.length>0&&!t.allowedDomains.some(o=>tK(n,o))?{allowed:!1,reason:"not in AFK_BROWSER_ALLOWED_DOMAINS"}:{allowed:!0}}var mke,fke,Gi=b(()=>{"use strict";F();U();mke=new Set(["daemon","subagent","telegram","afk"]),fke=new Set(["repl","interactive","cli"])});import{readFileSync as Ske}from"node:fs";import{join as vke}from"node:path";import{homedir as kke}from"node:os";function xke(e){let t=e??Tke,n;try{n=Ske(t,"utf8")}catch{return null}let r;try{r=JSON.parse(n)}catch{return null}if(typeof r!="object"||r===null||Array.isArray(r))return null;let o=r;if(typeof o.url!="string"||typeof o.token!="string"||typeof o.pid!="number")return null;let i;try{i=new URL(o.url)}catch{return null}let{hostname:s,protocol:a}=i;if(!(s==="127.0.0.1"||s==="localhost"||s==="::1")||a!=="http:")throw new Error(`Agent Browser connection file contains an untrusted URL: ${o.url}. Only http://127.0.0.1 or http://localhost is permitted.`);return{url:o.url,token:o.token,pid:o.pid,version:typeof o.version=="string"?o.version:"unknown"}}function Eke(e){try{return process.kill(e,0),!0}catch{return!1}}async function Rke(e,t,n=2e3){try{let r=new AbortController,o=setTimeout(()=>r.abort(),n),i=await fetch(`${e}/health`,{method:"GET",headers:{Authorization:`Bearer ${t}`,Host:"127.0.0.1:8833"},signal:r.signal});return clearTimeout(o),i.ok}catch{return!1}}async function J_(e){let t=xke(e);return t===null?{available:!1,connection:null,reason:"connection file missing or invalid"}:Eke(t.pid)?await Rke(t.url,t.token)?{available:!0,connection:t,reason:null}:{available:!1,connection:t,reason:`health probe failed at ${t.url}`}:{available:!1,connection:t,reason:`stale connection file: PID ${t.pid} not alive`}}var Tke,oK=b(()=>{"use strict";Tke=vke(kke(),".config","agent-browser","connection.json")});async function iK(e){let{config:t,surface:n}=e;if(t.backend==="playwright")return{backend:"playwright",reason:"explicit config: backend=playwright",probeMs:0,availability:null};if(t.backend==="agent-browser"){let s=Date.now(),a=await J_(),l=Date.now()-s;if(!a.available)throw new Error(`AFK_BROWSER_BACKEND=agent-browser but Agent Browser is not available: ${a.reason}`);return{backend:"agent-browser",reason:"explicit config: backend=agent-browser",probeMs:l,availability:a}}if(n&&Ake.has(n))return{backend:"playwright",reason:`auto: surface "${n}" excluded from Agent Browser`,probeMs:0,availability:null};if(t.headless)return{backend:"playwright",reason:"auto: headless mode requires Playwright",probeMs:0,availability:null};let r=Date.now(),o=await J_(),i=Date.now()-r;return o.available?{backend:"agent-browser",reason:"auto: Agent Browser available and preferred",probeMs:i,availability:o}:{backend:"playwright",reason:`auto: Agent Browser unavailable (${o.reason})`,probeMs:i,availability:o}}var Ake,sK=b(()=>{"use strict";oK();Ake=new Set(["daemon","subagent"])});import{createHash as Cke}from"crypto";function aK(e){return!!(e.role==="textbox"&&e.kind==="password"||e.label&&_ke.test(e.label))}function lK(e){return Cke("sha256").update(e,"utf8").digest("hex").slice(0,8)}function cK(e){let t=e.replace(/\s+/g," ").trim();return t.length<=80?t:t.slice(0,77)+"..."}var _ke,hw=b(()=>{"use strict";_ke=/password|secret|token|api[_-]?key|otp|2fa/i});import{randomBytes as Pke}from"crypto";import{mkdir as Ike,stat as Mke,writeFile as Oke}from"fs/promises";import{join as V_}from"path";import{gzip as $ke}from"zlib";import{promisify as Dke}from"util";function Lke(e){return V_(qt(e),"browser")}function Fke(e){return V_(Lke(e),"screenshots")}function Nke(){return new Date().toISOString().replace(/[:.]/g,"-")}function Bke(){return Pke(3).toString("hex")}async function su(e,t,n){if(t.length>uK)throw new Error(`writeScreenshotSidecar: buffer exceeds ${uK} byte cap (received ${t.length} bytes). Refusing to write oversized screenshot.`);let r=Fke(e);await Ike(r,{recursive:!0});let o=`${Nke()}-${Bke()}-${n}.png`,i=V_(r,o);await Oke(i,t);let{size:s}=await Mke(i);return{path:i,bytes:s}}var hst,uK,Y_=b(()=>{"use strict";U();hw();hst=Dke($ke);uK=5*1024*1024});var yw,dK=b(()=>{"use strict";yw=class{baseUrl;token;constructor(t){this.baseUrl=t.url,this.token=t.token}async call(t,n,r=3e4){let o={version:1,method:t,params:n},i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let a=await fetch(`${this.baseUrl}/agent`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`,Host:new URL(this.baseUrl).host},body:JSON.stringify(o),signal:i.signal});if(!a.ok){let l=await a.text().catch(()=>"");throw new Error(`Agent Browser ${t} failed (HTTP ${a.status}): ${l}`)}return await a.json()}finally{clearTimeout(s)}}async listTabs(){return(await this.call("tabs.list",null)).tabs}async openTab(t){return{tabId:(await this.call("tabs.open",{url:t},6e4)).tab_id}}async closeTab(t){await this.call("tabs.close",{tab_id:t})}async read(t,n){return this.call("page.read",{tab_id:t,mode:n?.mode??"main",...n?.query?{query:n.query}:{},...n?.budget?{budget:n.budget}:{}})}async inspect(t,n){return this.call("page.inspect",{tab_id:t,mode:n?.mode??"interactive",...n?.query?{query:n.query}:{},...n?.limit?{limit:n.limit}:{}})}async click(t,n){await this.call("page.click",{tab_id:t,element_id:n})}async fill(t,n,r){await this.call("page.fill",{tab_id:t,element_id:n,value:r})}async press(t,n,r){await this.call("page.press",{tab_id:t,key:n,...r?{element_id:r}:{}})}async select(t,n,r){await this.call("page.select",{tab_id:t,element_id:n,value:r})}async waitFor(t,n,r){await this.call("page.wait",{tab_id:t,condition:n,...r?.value?{value:r.value}:{},...r?.timeout?{timeout:r.timeout}:{}},(r?.timeout??3e4)+5e3)}async evalScript(t,n){return this.call("page.eval",{tab_id:t,script:n})}async screenshot(t){return this.call("page.screenshot",{tab_id:t})}}});function X_(e){return{id:e.id,role:e.role,label:e.label,kind:e.kind,value:e.value,state:{disabled:e.disabled,...e.checked!==void 0?{checked:e.checked}:{},...e.selected!==void 0?{selected:e.selected}:{},...e.expanded!==void 0?{expanded:e.expanded}:{}},bbox:e.bbox,...e.selector?{selector:e.selector}:{}}}function pK(e,t){switch(t.kind){case"element_id":if(e.has(t.elementId))return t.elementId;throw new Error(`Element ${t.elementId} not found in current observation. Call browser_observe to refresh.`);case"selector":return null;case"semantic":return null}}async function Q_(e,t,n,r,o,i){switch(n){case"click":await e.click(t,r);break;case"fill":if(o===void 0)throw new Error("fill requires a value");await e.fill(t,r,o);break;case"press":if(o===void 0)throw new Error("press requires a value (key combo)");await e.press(t,o,r);break;case"select":if(o===void 0)throw new Error("select requires a value");await e.select(t,r,o);break;case"hover":throw new Error("hover is not supported by Agent Browser; use element_id from a prior observation to target clicks instead");case"scroll_to":{let s=r.replace(/\\/g,"\\\\").replace(/"/g,'\\"');await e.evalScript(t,`document.querySelector('[data-element-id="${s}"]')?.scrollIntoView({behavior:'smooth',block:'center'})`);break}case"wait_for":await e.waitFor(t,"element",{value:r,timeout:i??1e4});break;default:throw new Error(`Unknown action: ${n}`)}}async function mK(e,t){if(t.target.kind!=="semantic")throw new Error("resolveSemanticAndAct called with non-semantic target");let{elements:n}=await e.client.inspect(e.tabId,{mode:"interactive",query:t.target.text,limit:10}),r=n;if(t.target.role){let l=t.target.role.toLowerCase();r=n.filter(c=>c.role.toLowerCase()===l)}if(r.length===0)throw new Error(`No element found matching semantic target: text="${t.target.text}"`+(t.target.role?`, role="${t.target.role}"`:""));if(r.length>1)return{outcome:"ambiguous_target",query:{text:t.target.text,...t.target.role?{role:t.target.role}:{}},candidates:r.slice(0,5).map(X_)};let i=r[0].id;await Q_(e.client,e.tabId,t.action,i,t.value,t.timeoutMs);let s=await e.client.read(e.tabId,{mode:"main"}),a=Cr(s.url,e.config);return a.allowed?{elementId:i}:{outcome:"blocked_by_policy",url:s.url,reason:`action navigated to blocked domain: ${a.reason}`}}var fK=b(()=>{"use strict";Gi()});var gK={};Pn(gK,{AgentBrowserProvider:()=>Z_});var Z_,hK=b(()=>{"use strict";Gi();Y_();dK();fK();Z_=class{name="agent-browser";config;client;sessions=new Map;constructor(t,n){this.config=t,this.client=new yw(n)}async open(t){let n=Cr(t.url,this.config);if(!n.allowed)return{outcome:"blocked_by_policy",url:t.url,reason:n.reason};let r=this.sessions.get(t.sessionId);if(r)await this.client.evalScript(r.tabId,`window.location.href = ${JSON.stringify(t.url)}`),await this.client.waitFor(r.tabId,"load",{timeout:t.timeoutMs??3e4});else{let{tabId:s}=await this.client.openTab(t.url);await this.client.waitFor(s,"load",{timeout:t.timeoutMs??3e4}),r={tabId:s,observationCounter:0,knownElements:new Map,lastAction:null,lastActionAt:null,currentUrl:null,currentTitle:null},this.sessions.set(t.sessionId,r)}let o=await this.client.read(r.tabId,{mode:"main"}),i=Cr(o.url,this.config);return i.allowed?this.buildObservation(r,t.sessionId,t.screenshot,void 0,"browser_open"):(await this.client.evalScript(r.tabId,"window.location.href = 'about:blank'").catch(()=>{}),{outcome:"blocked_by_policy",url:o.url,reason:`redirected to blocked domain: ${i.reason}`})}async observe(t){let n=this.sessions.get(t.sessionId);if(!n)throw new Error(`No Agent Browser tab open for session ${t.sessionId}. Call browser_open first.`);return this.buildObservation(n,t.sessionId,t.screenshot,t.maxElements,"browser_observe")}async act(t){let n=this.sessions.get(t.sessionId);if(!n)throw new Error(`No Agent Browser tab open for session ${t.sessionId}. Call browser_open first.`);let r=pK(n.knownElements,t.target);if(r===null){if(t.target.kind==="semantic"){let s=await mK({client:this.client,config:this.config,tabId:n.tabId},t);return"outcome"in s?s:(n.lastAction=`browser_act:${t.action}`,n.lastActionAt=new Date().toISOString(),this.buildObservation(n,t.sessionId,t.screenshot,void 0,"browser_act"))}throw t.target.kind==="selector"?new Error("selector targets are not supported by Agent Browser; use element_id or semantic targets"):new Error(`Cannot resolve target: ${JSON.stringify(t.target)}`)}await Q_(this.client,n.tabId,t.action,r,t.value,t.timeoutMs),n.lastAction=`browser_act:${t.action}`,n.lastActionAt=new Date().toISOString();let o=await this.client.read(n.tabId,{mode:"main"}),i=Cr(o.url,this.config);return i.allowed?this.buildObservation(n,t.sessionId,t.screenshot,void 0,"browser_act"):(await this.client.evalScript(n.tabId,"window.location.href = 'about:blank'").catch(()=>{}),{outcome:"blocked_by_policy",url:o.url,reason:`action navigated to blocked domain: ${i.reason}`})}async render(t){throw new Error("AgentBrowserProvider does not support render(). Use PlaywrightProvider for one-shot content fetches.")}async screenshot(t){let n=this.sessions.get(t.sessionId);if(!n)throw new Error(`No Agent Browser tab open for session ${t.sessionId}. Call browser_open first.`);if(t.target!==void 0||t.fullPage)throw new Error("Agent Browser does not support element or full-page screenshots; omit target and fullPage.");let r=await this.client.screenshot(n.tabId),o=Buffer.from(r.data,"base64"),i=o.length>=24?o.readUInt32BE(16):0,s=o.length>=24?o.readUInt32BE(20):0;return{path:(await su(t.sessionId,o,"browser_screenshot")).path,bytes:o.length,width:i,height:s,dataBase64:r.data,mediaType:"image/png"}}async extract(t){throw new Error("AgentBrowserProvider does not support extract() yet.")}async close(t){let n=this.sessions.get(t.sessionId);if(n){try{await this.client.closeTab(n.tabId)}catch{}this.sessions.delete(t.sessionId)}}describe(t){let n=this.sessions.get(t);return n?{active:!0,url:n.currentUrl,title:n.currentTitle,lastAction:n.lastAction,lastActionAt:n.lastActionAt,openTabs:1}:null}async shutdown(){let t=Array.from(this.sessions.entries()).map(async([,n])=>{try{await this.client.closeTab(n.tabId)}catch{}});await Promise.all(t),this.sessions.clear()}async buildObservation(t,n,r,o,i="browser_open"){let[s,a]=await Promise.all([this.client.read(t.tabId,{mode:"main",budget:4e3}),this.client.inspect(t.tabId,{mode:"interactive",limit:o??80})]),l=a.elements.map(X_),c=o??80,u=l.slice(0,c);t.observationCounter+=1,t.knownElements=new Map(u.map(h=>[h.id,h])),t.currentUrl=s.url,t.currentTitle=s.title;let d=[];l.length>c&&d.push(`page has ${l.length} interactive elements; showing first ${c}`);let p=null;if(r)try{let h=await this.client.screenshot(t.tabId),y=Buffer.from(h.data,"base64");p=(await su(n,y,i)).path}catch{d.push("screenshot capture failed")}let f=`obs_${t.observationCounter.toString(36)}`,g={httpStatus:null,loadingState:"idle",hasDialog:!1,consoleErrors:0};return{observationId:f,url:s.url,title:s.title,textSummary:s.content.slice(0,4e3),interactive:u,status:g,warnings:d,screenshotPath:p,capturedAt:new Date().toISOString()}}}});import{existsSync as Uke,readFileSync as jke}from"node:fs";import{createRequire as Hke}from"node:module";import{dirname as Wke,join as Kke}from"node:path";function wK(e){if(typeof e=="string")return e;let t=[],n=e;for(let r=0;r<qke&&n instanceof Error;r++)t.push(n.message),n=n.cause;return t.length>0?t.join(" | "):String(e)}function wn(e){let t=wK(e);return bK.some(n=>t.includes(n))}function zke(){try{let t=Hke(import.meta.url).resolve("playwright/package.json"),n=JSON.parse(jke(t,"utf8"));if(typeof n!="object"||n===null)return;let r=n.bin,o=typeof r=="string"?r:typeof r=="object"&&r!==null?r.playwright:void 0;if(typeof o!="string"||o.length===0)return;let i=Kke(Wke(t),o);return Uke(i)?`node ${/\s/.test(i)?`"${i}"`:i} install chromium`:void 0}catch{return}}function sf(){return yK??=zke()??Gke,yK}function eP(e){return e.includes("install chromium")}function nr(e,t){let n=wK(e),r=t?.latched===!0?` ${Jke}`:"";if(n.includes("Executable doesn't exist")){let o="";return t?.headless===!0?o=" This launch was headless, which needs the `chromium_headless_shell-*` build.":t?.headless===!1&&(o=" This launch was headed, which needs the full `chromium-*` build \u2014 the headless shell alone does not satisfy it."),`browser tools require the Playwright chromium binary. Install via: ${sf()}.${o}${r}`}return`browser tools require the optional \`playwright\` peer dependency. Install via: pnpm add playwright (then ${sf()}). Or pick a different tool.${r}`}function au(e,t,n=!1){if(!wn(e))return e;let r=e instanceof Error?e.message:String(e);return new Error(`${r}
432
432
 
433
- ${nr(e,{headless:t,latched:n})}`,{cause:e})}var bK,Gke,qke,yK,Jke,bw=b(()=>{"use strict";bK=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],Gke="pnpm exec playwright install chromium",qke=4;Jke="This session already latched the failure, so browser tools keep fast-failing with this same error \u2014 after installing, call browser_close once to retry."});import Ma from"node:fs";import ww from"node:path";import{randomBytes as Vke}from"node:crypto";function Yke(){try{return"5.190.0"}catch{}try{let e=ww.resolve(import.meta.dirname,"../../../package.json"),t=Ma.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var Xke,Sw,SK=b(()=>{"use strict";bw();U();me();Xke=Yke(),Sw=class{config;browser;sessions=new Map;launchPromise;launchFailure;shutdownComplete=!1;constructor(t){this.config=t}clearLaunchFailure(){this.launchFailure=void 0}latchLaunchFailure(t){this.launchFailure={error:t}}async ensureBrowser(){if(this.browser!==void 0&&this.browser.isConnected())return this.browser;if(this.launchFailure!==void 0)throw this.launchFailure.error;return this.browser!==void 0&&!this.browser.isConnected()&&(this.browser=void 0,this.launchPromise=void 0),this.launchPromise!==void 0?this.launchPromise:(this.launchPromise=(async()=>{let t;try{({chromium:t}=await import("playwright"))}catch(n){let r=au(n,this.config.headless,!0);throw this.latchLaunchFailure(r),this.launchPromise=void 0,r}try{let n=await t.launch({headless:this.config.headless});return this.browser=n,this.clearLaunchFailure(),n}catch(n){let r=au(n,this.config.headless,!0);throw this.latchLaunchFailure(r),r}finally{this.launchPromise=void 0}})(),this.launchPromise)}isBrowserActive(){return this.browser!==void 0&&this.browser.isConnected()}async ensureContext(t){let n=this.sessions.get(t);if(n!==void 0)return n.context;let r=await this.ensureBrowser(),o=this.loadStorageState(this.config.defaultProfile),i=await r.newContext({...this.contextOptions(),...o!==void 0?{storageState:o}:{}}),s={context:i,page:void 0,consoleErrors:0,lastHttpStatus:null,openDialog:void 0};return this.sessions.set(t,s),i}async ensurePage(t){let n=this.sessions.get(t);if(n!==void 0&&n.page!==void 0)return n.page;await this.ensureContext(t);let r=this.sessions.get(t);if(r===void 0)throw new Error(`[BrowserLauncher] session entry disappeared for sessionId=${t}`);if(r.page!==void 0)return r.page;let o=await r.context.newPage();return r.page=o,o.on("console",i=>{i.type()==="error"&&(r.consoleErrors+=1)}),o.on("request",i=>{i.isNavigationRequest()&&i.frame()===o.mainFrame()&&(r.lastHttpStatus=null)}),o.on("response",i=>{i.frame()===o.mainFrame()&&i.request().isNavigationRequest()&&(r.lastHttpStatus=i.status())}),o.on("dialog",i=>{r.openDialog=i}),o}getPage(t){return this.sessions.get(t)?.page}async renderHtml(t,n){let o=await(await this.ensureBrowser()).newContext(this.contextOptions()),i;n.requestGuard!==void 0&&await o.route("**/*",async a=>{try{await n.requestGuard(a.request().url()),await a.continue()}catch(l){i=l,await a.abort("blockedbyclient")}});let s=()=>{o.close().catch(()=>{})};if(n.signal?.aborted===!0)throw await o.close().catch(()=>{}),new Error("render aborted");n.signal!==void 0&&n.signal.addEventListener("abort",s,{once:!0});try{let a=await o.newPage(),l;try{l=await a.goto(t,{timeout:n.timeoutMs,waitUntil:n.waitUntil})}catch(p){throw i??p}if(i!==void 0)throw i;let c=await a.content();if(i!==void 0)throw i;let u=a.url(),d=l!==null?l.status():null;return{html:c,finalUrl:u,httpStatus:d}}finally{n.signal!==void 0&&n.signal.removeEventListener("abort",s),await o.close().catch(()=>{})}}getConsoleErrorCount(t){return this.sessions.get(t)?.consoleErrors??0}getLastHttpStatus(t){return this.sessions.get(t)?.lastHttpStatus??null}hasOpenDialog(t){return this.sessions.get(t)?.openDialog!==void 0}async dismissDialog(t,n=!0){let r=this.sessions.get(t);if(r===void 0||r.openDialog===void 0)return;let o=r.openDialog;r.openDialog=void 0,n?await o.accept():await o.dismiss()}async closeSession(t){this.clearLaunchFailure();let n=this.sessions.get(t);n!==void 0&&(this.sessions.delete(t),await this.saveStorageState(this.config.defaultProfile,n.context),n.page!==void 0&&await n.page.close().catch(()=>{}),await n.context.close().catch(()=>{}))}async shutdown(){if(this.clearLaunchFailure(),this.shutdownComplete)return;this.shutdownComplete=!0;let t=[...this.sessions.keys()];if(await Promise.all(t.map(n=>this.closeSession(n))),this.browser!==void 0){let n=this.browser;this.browser=void 0,await n.close().catch(()=>{})}}activeSessions(){return this.sessions.size}contextOptions(){return{viewport:{width:1280,height:800},userAgent:`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 agent-afk/${Xke}`}}loadStorageState(t){let n=fc(t);try{if(!Ma.existsSync(n))return;let r=JSON.parse(Ma.readFileSync(n,"utf8"));return B("[browser/vault] restored session",{profile:t,file:n}),r}catch(r){B("[browser/vault] ignoring unreadable vault",{profile:t,file:n,err:r});return}}async saveStorageState(t,n){try{let r=fc(t);if(!Ma.existsSync(r))return;let o=await n.storageState(),i=ww.join(ww.dirname(r),`.${ww.basename(r)}.${process.pid}.${Vke(4).toString("hex")}.tmp`);Ma.writeFileSync(i,JSON.stringify(o),{mode:384}),Ma.chmodSync(i,384),Ma.renameSync(i,r),B("[browser/vault] saved session",{profile:t,file:r})}catch(r){B("[browser/vault] save failed",{profile:t,err:r})}}}});import{createHash as Qke}from"node:crypto";function Zke(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function eTe(e,t,n){return`el_${Qke("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function tTe(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function vK(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function TK(e,t){let n=e.role??"",r=e.name??"";kK.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])TK(i,t)}async function nTe(e){return e.evaluate(t=>{let n=Array.from(document.querySelectorAll(t)),r=[];for(let o of n){let i=o.getBoundingClientRect(),s=o;if(i.width===0&&i.height===0){let u=window.getComputedStyle(s);if(u.display==="none"||u.visibility==="hidden")continue}let a=o.tagName.toLowerCase(),l=o.getAttribute("aria-label")??o.getAttribute("placeholder")??(o.textContent??"").replace(/\s+/g," ").trim().slice(0,100),c=a==="input"?o.type||null:o.getAttribute("type");r.push({name:l,tagName:a,type:c,id:o.id||null,testId:o.getAttribute("data-testid"),bbox:{x:Math.round(i.left),y:Math.round(i.top),w:Math.round(i.width),h:Math.round(i.height)}})}return r},xK).catch(()=>[])}async function rTe(e){return e.evaluate(t=>{let n={button:"button",a:"link",input:"textbox",textarea:"textbox",select:"combobox"},r=Array.from(document.querySelectorAll(t)),o=[];for(let i of r){let s=i.tagName.toLowerCase(),a=i.getAttribute("role")??"",l=i.getAttribute("aria-label")??i.getAttribute("placeholder")??(i.textContent??"").replace(/\s+/g," ").trim().slice(0,100),c=a||(n[s]??"");if(s==="input"){let h=i.type;h==="checkbox"?c="checkbox":h==="radio"?c="radio":h==="button"||h==="submit"||h==="reset"?c="button":h==="search"?c="searchbox":c="textbox"}if(!c)continue;let u="value"in i?i.value:void 0,d=u!==void 0?String(u):void 0,p=i.disabled??!1,f=s==="input"?i.checked:void 0,g={role:c,name:l,disabled:p};d!==void 0&&(g.value=d),f!==void 0&&(g.checked=f),o.push(g)}return o},xK).catch(()=>[])}function oTe(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function vw(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=oTe(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=nTe(e),l=e.evaluate(()=>document.body?.innerText??"").catch(()=>""),c=Promise.resolve(e.url()),u=e.title().catch(()=>""),[d,p,f,g,h]=await Promise.all([s,a,l,c,u]),y,w=!1;d!==null?(y=[],TK(d,y)):(o.push("observation skipped accessibility tree (returned null)"),w=!0,y=(await rTe(e)).filter($=>kK.has($.role??"")));let S=new Map;for(let I of p){let $=vK(I.name),j=S.get($);(!j||j.bbox.w===0&&I.bbox.w>0)&&S.set($,I)}let v=y.map(I=>({ax:I,dom:S.get(vK(I.name??""))})),x=r?v:v.filter(I=>I.dom?I.dom.bbox.w>0||I.dom.bbox.h>0:!0);x.sort((I,$)=>{let j=I.dom?.bbox.y??0,O=$.dom?.bbox.y??0;if(j!==O)return j-O;let W=I.dom?.bbox.x??0,q=$.dom?.bbox.x??0;return W-q}),x.length>200&&o.push("page has 200+ interactive elements; consider scoping");let E=x.slice(0,n).map((I,$)=>{let j=I.ax.role??"generic",O=I.ax.name??"",W=eTe(j,O,$),q=I.dom?.bbox??{x:0,y:0,w:0,h:0},K=I.dom?.type??null,H=null;I.ax.value!==void 0&&I.ax.value!==null&&(H=String(I.ax.value)),I.ax.checked!==void 0&&(H=String(I.ax.checked)),aK({role:j,kind:K})&&(H="[redacted]");let Y={disabled:I.ax.disabled??!1};I.ax.checked!==void 0&&(Y.checked=I.ax.checked===!0||I.ax.checked==="mixed"),I.ax.selected!==void 0&&(Y.selected=I.ax.selected),I.ax.expanded!==void 0&&(Y.expanded=I.ax.expanded);let ie;I.dom?.testId?ie=`[data-testid="${I.dom.testId}"]`:I.dom?.id&&(ie=`#${I.dom.id}`);let M={id:W,role:j,label:Zke(O),kind:K,value:H,state:Y,bbox:q};return ie!==void 0&&(M.selector=ie),M}),C="idle";try{let I=await e.evaluate(()=>document.readyState);I==="loading"?C="loading":I==="interactive"?C="navigating":C="idle"}catch{C="navigating"}C!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),w&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let _=tTe(f),R=`obs_${t.observationCounter.toString(36)}`,P=new Date().toISOString();return{observationId:R,url:g,title:h,textSummary:_,interactive:E,status:{httpStatus:t.httpStatus??null,loadingState:C,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:P}}var kK,xK,EK=b(()=>{"use strict";hw();kK=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);xK="a[href], button, input, select, textarea, [role], [tabindex], label"});async function RK(e,t){try{let n=await e.nth(t).evaluate(s=>{let a=s,l=a.getAttribute("role")??a.tagName.toLowerCase(),c=a.getAttribute("aria-label")??a.getAttribute("placeholder")??(a.innerText!=null?a.innerText.trim().slice(0,200):"")??a.getAttribute("title")??"",u=a.getBoundingClientRect();return{role:l,label:c,x:Math.round(u.x),y:Math.round(u.y),w:Math.round(u.width),h:Math.round(u.height)}}),r=`${n.role}:${n.label}:${t}`,o=0;for(let s=0;s<r.length;s++)o=o*31+r.charCodeAt(s)>>>0;return{id:`el_${o.toString(16).padStart(6,"0").slice(0,6)}`,role:n.role,label:n.label,kind:null,value:null,state:{disabled:!1},bbox:{x:n.x,y:n.y,w:n.w,h:n.h}}}catch{return null}}async function tP(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>RK(e,i)))).filter(o=>o!==null)}async function iTe(e){let t=new Set,n=[];for(let{loc:r,count:o}of e)for(let i=0;i<o;i++){let s;try{s=await r.nth(i).evaluate(a=>{let l=a,c=l.getBoundingClientRect();return`${l.tagName}@${Math.round(c.x)},${Math.round(c.y)}`})}catch{continue}t.has(s)||(t.add(s),n.push({key:s,locator:r,index:i}))}return n}async function nP(e,t,n){switch(t.kind){case"element_id":return sTe(e,t,n);case"selector":return aTe(e,t);case"semantic":return lTe(e,t)}}async function sTe(e,t,n){let r=n.get(t.elementId);if(r===void 0)return{outcome:"not_found",query:t};if(r.selector!==void 0){let l=e.locator(r.selector);if(await l.count()===1)return{outcome:"resolved",locator:l}}let o=e.getByRole(r.role,{name:r.label,exact:!0}),i=await o.count();if(i===0)return{outcome:"not_found",query:t};if(i===1)return{outcome:"resolved",locator:o};let s=await tP(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function aTe(e,t){let n=e.locator(t.selector),r=await n.count();if(r===0)return{outcome:"not_found",query:t};if(r===1)return{outcome:"resolved",locator:n};let o=await tP(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function lTe(e,t){return t.role!==void 0?cTe(e,t.text,t.role):uTe(e,t.text,t)}async function cTe(e,t,n){let r=e.getByRole(n,{name:t}),o=await r.count();if(o===0)return{outcome:"not_found",query:{kind:"semantic",text:t,role:n}};if(o===1)return{outcome:"resolved",locator:r};let i=await tP(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function uTe(e,t,n){let r=e.getByRole("button",{name:t}),o=e.getByRole("link",{name:t}),i=e.getByLabel(t,{exact:!1}),[s,a,l]=await Promise.all([r.count(),o.count(),i.count()]);if(s+a+l===0)return{outcome:"not_found",query:n};let u=[];s>0&&u.push({loc:r,count:s}),a>0&&u.push({loc:o,count:a}),l>0&&u.push({loc:i,count:l});let d=await iTe(u);if(d.length===0)return{outcome:"not_found",query:n};if(d.length===1){let h=d[0];return h===void 0?{outcome:"not_found",query:n}:{outcome:"resolved",locator:h.locator.nth(h.index)}}let p=d.slice(0,5),f=[];for(let h=0;h<p.length;h++){let y=p[h];if(y===void 0)continue;let w=await RK(y.locator,y.index);if(w!==null){let S=`${w.role}:${w.label}:${h}`,v=0;for(let x=0;x<S.length;x++)v=v*31+S.charCodeAt(x)>>>0;f.push({...w,id:`el_${v.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var AK=b(()=>{"use strict"});async function rP(e,t,n,r){let o=e.url();if(o===n)return null;let i=Cr(o,t);if(i.allowed)return null;try{await e.goBack()}catch{await r()}return{outcome:"blocked_by_policy",url:o,reason:i.reason}}var CK=b(()=>{"use strict";Gi()});var iP={};Pn(iP,{PlaywrightProvider:()=>oP});function _K(e){switch(e.kind){case"semantic":return e.role!==void 0?`semantic('${e.text}', role='${e.role}')`:`semantic('${e.text}')`;case"element_id":return`element_id(${e.elementId})`;case"selector":return`selector(${e.selector})`}}var oP,sP=b(()=>{"use strict";SK();EK();AK();Gi();CK();Y_();oP=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new Sw(t)}async open(t){let n=Cr(t.url,this.config);if(!n.allowed)return{outcome:"blocked_by_policy",url:t.url,reason:n.reason};let{sessionId:r}=t,o=await this.launcher.ensurePage(r),i=this.ensureSessionState(r),s=null,a=null;try{await o.goto(t.url,{timeout:t.timeoutMs??3e4,waitUntil:t.waitFor??"load"})}catch(d){a=d}let l=o.url();if(!(a!==null&&(l===""||l==="about:blank"))){let d=await rP(o,this.config,t.url,()=>this.close({sessionId:r}));if(d!==null)return d}(t.screenshot===!0||a!==null)&&(s=await this.captureScreenshot(o,r,"browser_open")),i.observationCounter+=1;let u=await vw(o,{observationCounter:i.observationCounter,screenshotPath:s,consoleErrors:this.launcher.getConsoleErrorCount(r),httpStatus:this.launcher.getLastHttpStatus(r),hasDialog:this.launcher.hasOpenDialog(r)});if(this.updateSessionFromObservation(i,u.interactive,u.url,u.title,"browser_open"),a!==null)throw a;return u}async observe(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_observe: no page open for session ${n}`);let o=this.ensureSessionState(n),i=null;t.screenshot===!0&&(i=await this.captureScreenshot(r,n,"browser_observe")),o.observationCounter+=1;let s=await vw(r,{observationCounter:o.observationCounter,screenshotPath:i,consoleErrors:this.launcher.getConsoleErrorCount(n),httpStatus:this.launcher.getLastHttpStatus(n),hasDialog:this.launcher.hasOpenDialog(n),includeHidden:t.includeHidden,maxElements:t.maxElements});return this.updateSessionFromObservation(o,s.interactive,s.url,s.title,"browser_observe"),s}async act(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_act: no page open for session ${n}`);let o=this.ensureSessionState(n),i=r.url(),s=t.timeoutMs??3e4,a=await nP(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${_K(t.target)}`);if(a.outcome==="ambiguous_target")return a;let{locator:l}=a,c=null,u=async()=>{switch(t.action){case"click":await l.click({timeout:s});break;case"fill":await l.fill(t.value??"");break;case"press":await l.press(t.value??"");break;case"select":await l.selectOption(t.value??"");break;case"hover":await l.hover({timeout:s});break;case"scroll_to":await l.scrollIntoViewIfNeeded({timeout:s});break;case"wait_for":await l.waitFor({timeout:s,state:"visible"});break}};try{await u()}catch(h){if(h instanceof Error&&/navigation|net::ERR/i.test(h.message))try{await u()}catch(y){c=y}else c=h}let d=await rP(r,this.config,i,()=>this.close({sessionId:n}));if(d!==null)return d;let p=null;(t.screenshot===!0||c!==null)&&(p=await this.captureScreenshot(r,n,"browser_act")),o.observationCounter+=1;let f=await vw(r,{observationCounter:o.observationCounter,screenshotPath:p,consoleErrors:this.launcher.getConsoleErrorCount(n),httpStatus:this.launcher.getLastHttpStatus(n),hasDialog:this.launcher.hasOpenDialog(n)}),g=`browser_act:${t.action}`;if(this.updateSessionFromObservation(o,f.interactive,f.url,f.title,g),c!==null)throw c;return f}async render(t){return this.launcher.renderHtml(t.url,{timeoutMs:t.timeoutMs??3e4,waitUntil:t.waitFor??"load",signal:t.signal,requestGuard:t.requestGuard})}async screenshot(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_screenshot: no page open for session ${n}`);let o=this.ensureSessionState(n),i;if(t.target!==void 0){let u=await nP(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${_K(t.target)}`);if(u.outcome==="ambiguous_target")throw new Error("screenshot target ambiguous; specify element_id or selector");i=await u.locator.screenshot()}else i=await r.screenshot({fullPage:t.fullPage??!1});let{path:s,bytes:a}=await su(n,i,"browser_screenshot"),l=0,c=0;if(t.fullPage===!0)try{let u=await r.evaluate(()=>({w:document.documentElement.scrollWidth,h:document.documentElement.scrollHeight}));l=u.w,c=u.h}catch{let u=r.viewportSize();l=u?.width??0,c=u?.height??0}else{let u=r.viewportSize();l=u?.width??0,c=u?.height??0}return{path:s,bytes:a,width:l,height:c,dataBase64:i.toString("base64"),mediaType:"image/png"}}async extract(t){throw new Error("browser_extract not implemented in Phase 1")}async close(t){await this.launcher.closeSession(t.sessionId),this.sessions.delete(t.sessionId)}describe(t){let n=this.sessions.get(t);if(n===void 0)return null;let r=this.launcher.getPage(t);return{active:r!==void 0,url:n.currentUrl,title:n.currentTitle,lastAction:n.lastAction,lastActionAt:n.lastActionAt,openTabs:r!==void 0?1:0}}async shutdown(){this.sessions.clear(),await this.launcher.shutdown()}ensureSessionState(t){let n=this.sessions.get(t);if(n!==void 0)return n;let r={observationCounter:0,knownElements:new Map,lastAction:null,lastActionAt:null,currentUrl:null,currentTitle:null};return this.sessions.set(t,r),r}updateSessionFromObservation(t,n,r,o,i){t.knownElements=new Map(n.map(s=>[s.id,s])),t.currentUrl=r,t.currentTitle=o,t.lastAction=i,t.lastActionAt=new Date().toISOString()}async captureScreenshot(t,n,r){try{let o=await t.screenshot({fullPage:!1}),{path:i}=await su(n,o,r);return i}catch{return null}}}});var $a={};Pn($a,{__resetBrowserRegistryForTests:()=>hTe,browserProviderActive:()=>mTe,closeBrowserProvider:()=>lP,getBrowserProvider:()=>pTe,getLastRoutingDecision:()=>gTe,peekBrowserProvider:()=>fTe});function PK(){Promise.resolve(lP()).then(()=>{process.exit(130)})}function IK(){Promise.resolve(lP()).then(()=>{process.exit(143)})}function MK(){po=null}function dTe(){kw||(process.on("SIGINT",PK),process.on("SIGTERM",IK),process.on("exit",MK),kw=!0)}function OK(){kw&&(process.removeListener("SIGINT",PK),process.removeListener("SIGTERM",IK),process.removeListener("exit",MK),kw=!1)}async function pTe(e){return po!==null?po:(Oa!==null||(Oa=(async()=>{let t=q_(e),n=e?.surface??(e?.env??{}).AGENT_SURFACE??k.AGENT_SURFACE,r=await iK({config:t,surface:n});aP=r;let o;if(r.backend==="agent-browser"){let{AgentBrowserProvider:i}=await Promise.resolve().then(()=>(hK(),gK)),s=r.availability.connection;o=new i(t,s)}else{let{PlaywrightProvider:i}=await Promise.resolve().then(()=>(sP(),iP));o=new i(t)}return dTe(),po=o,Oa=null,o})()),Oa)}async function lP(){if(po===null)return;let e=po;po=null,Oa=null,OK(),await e.shutdown()}function mTe(){return po!==null}function fTe(){return po}function gTe(){return aP}function hTe(){po=null,Oa=null,aP=null,OK()}var po,Oa,kw,aP,Da=b(()=>{"use strict";Gi();sK();F();po=null,Oa=null,kw=!1,aP=null});async function $K(e,t){try{return await qW(e,t)}catch(n){return B("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function kTe(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(Da(),$a)),r=await n();try{return await r.render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}catch(o){if(r.name==="agent-browser"){let{PlaywrightProvider:i}=await Promise.resolve().then(()=>(sP(),iP)),{loadBrowserConfig:s}=await Promise.resolve().then(()=>(Gi(),z_)),a=s(),l=new i(a);try{return await l.render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}finally{await l.shutdown()}}throw o}}async function DK(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??kTe,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s="",a=e,l=null,c=null;try{let d=await Ki(n,e,{headers:vTe,signal:t.signal},o);l=d.status,a=d.url||e;let p=d.headers.get("content-type")??"";if(d.ok){if(STe.test(p))throw new Error(`web_scrape markdown mode received binary content (${p.split(";")[0]}). Use mode: "raw" to fetch the bytes, or a different tool.`);let f=await d.text();if(wTe.test(p)&&!bTe.test(p))return{title:"",markdown:f.trim(),finalUrl:a,usedRender:!1};if(s=f,i=await $K(f,a),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(d){if(t.signal.aborted||d instanceof Vt||d instanceof Error&&d.message.startsWith("web_scrape markdown mode received binary"))throw d;c=d}if(!(i===null||i.textLength<200)&&i!==null){let d=H_({html:s,extractedTextLength:i.textLength});return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1,...d!==void 0?{advisory:d}:{}}}try{await of(e,o);let d=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:f=>of(f,o)});d.finalUrl!==e&&/^https?:\/\//i.test(d.finalUrl)&&await of(d.finalUrl,o);let p=await $K(d.html,d.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||p.textLength>=i.textLength){let f=H_({html:d.html,extractedTextLength:p.textLength});return{title:p.title,markdown:p.markdown,finalUrl:d.finalUrl,usedRender:!0,...f!==void 0?{advisory:f}:{}}}}catch(d){if(t.signal.aborted||d instanceof Vt)throw d;if(i===null){let p=d instanceof Error?d.message:String(d),f=c instanceof Error?c.message:`HTTP ${l??"error"}`,g=new Error(`web_scrape could not retrieve ${e}: fetch failed (${f}) and render failed (${p}).`);throw g.cause=d,g}}if(i!==null)return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1};throw new Error(`web_scrape could not retrieve any content from ${e} (HTTP ${l??"error"}).`)}var bTe,wTe,STe,vTe,LK=b(()=>{"use strict";zW();W_();Ia();me();bTe=/(text\/html|application\/xhtml\+xml)/i,wTe=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,STe=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,vTe={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 agent-afk/web_scrape",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}});function ETe(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(TTe,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","x-api-key":e.apiKey,"User-Agent":"agent-afk/web_scrape"},body:JSON.stringify({query:n,type:"auto",numResults:Math.min(Math.max(r,1),xTe),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=le(u);d&&(l=`: ${d.length>200?d.slice(0,200)+"\u2026":d}`)}catch{}let c=i.statusText?` ${i.statusText}`:"";throw new Error(`Exa Search HTTP ${i.status}${c}${l}`)}let s;try{s=await i.json()}catch(l){throw new Error(`Exa Search response was not JSON: ${l instanceof Error?l.message:String(l)}`)}return(s.results??[]).slice(0,r).map(l=>({title:(l.title??"").trim()||"(untitled)",url:l.url??"",description:(l.highlights?.[0]??"").trim()})).filter(l=>l.url.length>0)}}}function FK(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?ETe({apiKey:e.exaApiKey,fetchFn:e.fetchFn}):{error:'web_scrape search mode requires a search backend. Set EXA_API_KEY (free tier at https://exa.ai) to enable it. Use mode: "markdown" to read a known URL, or mode: "raw" for a direct fetch.'}}function NK(e,t){if(t.length===0)return`# Search results for "${e}"
433
+ ${nr(e,{headless:t,latched:n})}`,{cause:e})}var bK,Gke,qke,yK,Jke,bw=b(()=>{"use strict";bK=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],Gke="pnpm exec playwright install chromium",qke=4;Jke="This session already latched the failure, so browser tools keep fast-failing with this same error \u2014 after installing, call browser_close once to retry."});import Ma from"node:fs";import ww from"node:path";import{randomBytes as Vke}from"node:crypto";function Yke(){try{return"5.191.0"}catch{}try{let e=ww.resolve(import.meta.dirname,"../../../package.json"),t=Ma.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var Xke,Sw,SK=b(()=>{"use strict";bw();U();me();Xke=Yke(),Sw=class{config;browser;sessions=new Map;launchPromise;launchFailure;shutdownComplete=!1;constructor(t){this.config=t}clearLaunchFailure(){this.launchFailure=void 0}latchLaunchFailure(t){this.launchFailure={error:t}}async ensureBrowser(){if(this.browser!==void 0&&this.browser.isConnected())return this.browser;if(this.launchFailure!==void 0)throw this.launchFailure.error;return this.browser!==void 0&&!this.browser.isConnected()&&(this.browser=void 0,this.launchPromise=void 0),this.launchPromise!==void 0?this.launchPromise:(this.launchPromise=(async()=>{let t;try{({chromium:t}=await import("playwright"))}catch(n){let r=au(n,this.config.headless,!0);throw this.latchLaunchFailure(r),this.launchPromise=void 0,r}try{let n=await t.launch({headless:this.config.headless});return this.browser=n,this.clearLaunchFailure(),n}catch(n){let r=au(n,this.config.headless,!0);throw this.latchLaunchFailure(r),r}finally{this.launchPromise=void 0}})(),this.launchPromise)}isBrowserActive(){return this.browser!==void 0&&this.browser.isConnected()}async ensureContext(t){let n=this.sessions.get(t);if(n!==void 0)return n.context;let r=await this.ensureBrowser(),o=this.loadStorageState(this.config.defaultProfile),i=await r.newContext({...this.contextOptions(),...o!==void 0?{storageState:o}:{}}),s={context:i,page:void 0,consoleErrors:0,lastHttpStatus:null,openDialog:void 0};return this.sessions.set(t,s),i}async ensurePage(t){let n=this.sessions.get(t);if(n!==void 0&&n.page!==void 0)return n.page;await this.ensureContext(t);let r=this.sessions.get(t);if(r===void 0)throw new Error(`[BrowserLauncher] session entry disappeared for sessionId=${t}`);if(r.page!==void 0)return r.page;let o=await r.context.newPage();return r.page=o,o.on("console",i=>{i.type()==="error"&&(r.consoleErrors+=1)}),o.on("request",i=>{i.isNavigationRequest()&&i.frame()===o.mainFrame()&&(r.lastHttpStatus=null)}),o.on("response",i=>{i.frame()===o.mainFrame()&&i.request().isNavigationRequest()&&(r.lastHttpStatus=i.status())}),o.on("dialog",i=>{r.openDialog=i}),o}getPage(t){return this.sessions.get(t)?.page}async renderHtml(t,n){let o=await(await this.ensureBrowser()).newContext(this.contextOptions()),i;n.requestGuard!==void 0&&await o.route("**/*",async a=>{try{await n.requestGuard(a.request().url()),await a.continue()}catch(l){i=l,await a.abort("blockedbyclient")}});let s=()=>{o.close().catch(()=>{})};if(n.signal?.aborted===!0)throw await o.close().catch(()=>{}),new Error("render aborted");n.signal!==void 0&&n.signal.addEventListener("abort",s,{once:!0});try{let a=await o.newPage(),l;try{l=await a.goto(t,{timeout:n.timeoutMs,waitUntil:n.waitUntil})}catch(p){throw i??p}if(i!==void 0)throw i;let c=await a.content();if(i!==void 0)throw i;let u=a.url(),d=l!==null?l.status():null;return{html:c,finalUrl:u,httpStatus:d}}finally{n.signal!==void 0&&n.signal.removeEventListener("abort",s),await o.close().catch(()=>{})}}getConsoleErrorCount(t){return this.sessions.get(t)?.consoleErrors??0}getLastHttpStatus(t){return this.sessions.get(t)?.lastHttpStatus??null}hasOpenDialog(t){return this.sessions.get(t)?.openDialog!==void 0}async dismissDialog(t,n=!0){let r=this.sessions.get(t);if(r===void 0||r.openDialog===void 0)return;let o=r.openDialog;r.openDialog=void 0,n?await o.accept():await o.dismiss()}async closeSession(t){this.clearLaunchFailure();let n=this.sessions.get(t);n!==void 0&&(this.sessions.delete(t),await this.saveStorageState(this.config.defaultProfile,n.context),n.page!==void 0&&await n.page.close().catch(()=>{}),await n.context.close().catch(()=>{}))}async shutdown(){if(this.clearLaunchFailure(),this.shutdownComplete)return;this.shutdownComplete=!0;let t=[...this.sessions.keys()];if(await Promise.all(t.map(n=>this.closeSession(n))),this.browser!==void 0){let n=this.browser;this.browser=void 0,await n.close().catch(()=>{})}}activeSessions(){return this.sessions.size}contextOptions(){return{viewport:{width:1280,height:800},userAgent:`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 agent-afk/${Xke}`}}loadStorageState(t){let n=fc(t);try{if(!Ma.existsSync(n))return;let r=JSON.parse(Ma.readFileSync(n,"utf8"));return B("[browser/vault] restored session",{profile:t,file:n}),r}catch(r){B("[browser/vault] ignoring unreadable vault",{profile:t,file:n,err:r});return}}async saveStorageState(t,n){try{let r=fc(t);if(!Ma.existsSync(r))return;let o=await n.storageState(),i=ww.join(ww.dirname(r),`.${ww.basename(r)}.${process.pid}.${Vke(4).toString("hex")}.tmp`);Ma.writeFileSync(i,JSON.stringify(o),{mode:384}),Ma.chmodSync(i,384),Ma.renameSync(i,r),B("[browser/vault] saved session",{profile:t,file:r})}catch(r){B("[browser/vault] save failed",{profile:t,err:r})}}}});import{createHash as Qke}from"node:crypto";function Zke(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function eTe(e,t,n){return`el_${Qke("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function tTe(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function vK(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function TK(e,t){let n=e.role??"",r=e.name??"";kK.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])TK(i,t)}async function nTe(e){return e.evaluate(t=>{let n=Array.from(document.querySelectorAll(t)),r=[];for(let o of n){let i=o.getBoundingClientRect(),s=o;if(i.width===0&&i.height===0){let u=window.getComputedStyle(s);if(u.display==="none"||u.visibility==="hidden")continue}let a=o.tagName.toLowerCase(),l=o.getAttribute("aria-label")??o.getAttribute("placeholder")??(o.textContent??"").replace(/\s+/g," ").trim().slice(0,100),c=a==="input"?o.type||null:o.getAttribute("type");r.push({name:l,tagName:a,type:c,id:o.id||null,testId:o.getAttribute("data-testid"),bbox:{x:Math.round(i.left),y:Math.round(i.top),w:Math.round(i.width),h:Math.round(i.height)}})}return r},xK).catch(()=>[])}async function rTe(e){return e.evaluate(t=>{let n={button:"button",a:"link",input:"textbox",textarea:"textbox",select:"combobox"},r=Array.from(document.querySelectorAll(t)),o=[];for(let i of r){let s=i.tagName.toLowerCase(),a=i.getAttribute("role")??"",l=i.getAttribute("aria-label")??i.getAttribute("placeholder")??(i.textContent??"").replace(/\s+/g," ").trim().slice(0,100),c=a||(n[s]??"");if(s==="input"){let h=i.type;h==="checkbox"?c="checkbox":h==="radio"?c="radio":h==="button"||h==="submit"||h==="reset"?c="button":h==="search"?c="searchbox":c="textbox"}if(!c)continue;let u="value"in i?i.value:void 0,d=u!==void 0?String(u):void 0,p=i.disabled??!1,f=s==="input"?i.checked:void 0,g={role:c,name:l,disabled:p};d!==void 0&&(g.value=d),f!==void 0&&(g.checked=f),o.push(g)}return o},xK).catch(()=>[])}function oTe(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function vw(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=oTe(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=nTe(e),l=e.evaluate(()=>document.body?.innerText??"").catch(()=>""),c=Promise.resolve(e.url()),u=e.title().catch(()=>""),[d,p,f,g,h]=await Promise.all([s,a,l,c,u]),y,w=!1;d!==null?(y=[],TK(d,y)):(o.push("observation skipped accessibility tree (returned null)"),w=!0,y=(await rTe(e)).filter($=>kK.has($.role??"")));let S=new Map;for(let I of p){let $=vK(I.name),j=S.get($);(!j||j.bbox.w===0&&I.bbox.w>0)&&S.set($,I)}let v=y.map(I=>({ax:I,dom:S.get(vK(I.name??""))})),x=r?v:v.filter(I=>I.dom?I.dom.bbox.w>0||I.dom.bbox.h>0:!0);x.sort((I,$)=>{let j=I.dom?.bbox.y??0,O=$.dom?.bbox.y??0;if(j!==O)return j-O;let W=I.dom?.bbox.x??0,q=$.dom?.bbox.x??0;return W-q}),x.length>200&&o.push("page has 200+ interactive elements; consider scoping");let E=x.slice(0,n).map((I,$)=>{let j=I.ax.role??"generic",O=I.ax.name??"",W=eTe(j,O,$),q=I.dom?.bbox??{x:0,y:0,w:0,h:0},K=I.dom?.type??null,H=null;I.ax.value!==void 0&&I.ax.value!==null&&(H=String(I.ax.value)),I.ax.checked!==void 0&&(H=String(I.ax.checked)),aK({role:j,kind:K})&&(H="[redacted]");let Y={disabled:I.ax.disabled??!1};I.ax.checked!==void 0&&(Y.checked=I.ax.checked===!0||I.ax.checked==="mixed"),I.ax.selected!==void 0&&(Y.selected=I.ax.selected),I.ax.expanded!==void 0&&(Y.expanded=I.ax.expanded);let ie;I.dom?.testId?ie=`[data-testid="${I.dom.testId}"]`:I.dom?.id&&(ie=`#${I.dom.id}`);let M={id:W,role:j,label:Zke(O),kind:K,value:H,state:Y,bbox:q};return ie!==void 0&&(M.selector=ie),M}),C="idle";try{let I=await e.evaluate(()=>document.readyState);I==="loading"?C="loading":I==="interactive"?C="navigating":C="idle"}catch{C="navigating"}C!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),w&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let _=tTe(f),R=`obs_${t.observationCounter.toString(36)}`,P=new Date().toISOString();return{observationId:R,url:g,title:h,textSummary:_,interactive:E,status:{httpStatus:t.httpStatus??null,loadingState:C,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:P}}var kK,xK,EK=b(()=>{"use strict";hw();kK=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);xK="a[href], button, input, select, textarea, [role], [tabindex], label"});async function RK(e,t){try{let n=await e.nth(t).evaluate(s=>{let a=s,l=a.getAttribute("role")??a.tagName.toLowerCase(),c=a.getAttribute("aria-label")??a.getAttribute("placeholder")??(a.innerText!=null?a.innerText.trim().slice(0,200):"")??a.getAttribute("title")??"",u=a.getBoundingClientRect();return{role:l,label:c,x:Math.round(u.x),y:Math.round(u.y),w:Math.round(u.width),h:Math.round(u.height)}}),r=`${n.role}:${n.label}:${t}`,o=0;for(let s=0;s<r.length;s++)o=o*31+r.charCodeAt(s)>>>0;return{id:`el_${o.toString(16).padStart(6,"0").slice(0,6)}`,role:n.role,label:n.label,kind:null,value:null,state:{disabled:!1},bbox:{x:n.x,y:n.y,w:n.w,h:n.h}}}catch{return null}}async function tP(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>RK(e,i)))).filter(o=>o!==null)}async function iTe(e){let t=new Set,n=[];for(let{loc:r,count:o}of e)for(let i=0;i<o;i++){let s;try{s=await r.nth(i).evaluate(a=>{let l=a,c=l.getBoundingClientRect();return`${l.tagName}@${Math.round(c.x)},${Math.round(c.y)}`})}catch{continue}t.has(s)||(t.add(s),n.push({key:s,locator:r,index:i}))}return n}async function nP(e,t,n){switch(t.kind){case"element_id":return sTe(e,t,n);case"selector":return aTe(e,t);case"semantic":return lTe(e,t)}}async function sTe(e,t,n){let r=n.get(t.elementId);if(r===void 0)return{outcome:"not_found",query:t};if(r.selector!==void 0){let l=e.locator(r.selector);if(await l.count()===1)return{outcome:"resolved",locator:l}}let o=e.getByRole(r.role,{name:r.label,exact:!0}),i=await o.count();if(i===0)return{outcome:"not_found",query:t};if(i===1)return{outcome:"resolved",locator:o};let s=await tP(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function aTe(e,t){let n=e.locator(t.selector),r=await n.count();if(r===0)return{outcome:"not_found",query:t};if(r===1)return{outcome:"resolved",locator:n};let o=await tP(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function lTe(e,t){return t.role!==void 0?cTe(e,t.text,t.role):uTe(e,t.text,t)}async function cTe(e,t,n){let r=e.getByRole(n,{name:t}),o=await r.count();if(o===0)return{outcome:"not_found",query:{kind:"semantic",text:t,role:n}};if(o===1)return{outcome:"resolved",locator:r};let i=await tP(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function uTe(e,t,n){let r=e.getByRole("button",{name:t}),o=e.getByRole("link",{name:t}),i=e.getByLabel(t,{exact:!1}),[s,a,l]=await Promise.all([r.count(),o.count(),i.count()]);if(s+a+l===0)return{outcome:"not_found",query:n};let u=[];s>0&&u.push({loc:r,count:s}),a>0&&u.push({loc:o,count:a}),l>0&&u.push({loc:i,count:l});let d=await iTe(u);if(d.length===0)return{outcome:"not_found",query:n};if(d.length===1){let h=d[0];return h===void 0?{outcome:"not_found",query:n}:{outcome:"resolved",locator:h.locator.nth(h.index)}}let p=d.slice(0,5),f=[];for(let h=0;h<p.length;h++){let y=p[h];if(y===void 0)continue;let w=await RK(y.locator,y.index);if(w!==null){let S=`${w.role}:${w.label}:${h}`,v=0;for(let x=0;x<S.length;x++)v=v*31+S.charCodeAt(x)>>>0;f.push({...w,id:`el_${v.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var AK=b(()=>{"use strict"});async function rP(e,t,n,r){let o=e.url();if(o===n)return null;let i=Cr(o,t);if(i.allowed)return null;try{await e.goBack()}catch{await r()}return{outcome:"blocked_by_policy",url:o,reason:i.reason}}var CK=b(()=>{"use strict";Gi()});var iP={};Pn(iP,{PlaywrightProvider:()=>oP});function _K(e){switch(e.kind){case"semantic":return e.role!==void 0?`semantic('${e.text}', role='${e.role}')`:`semantic('${e.text}')`;case"element_id":return`element_id(${e.elementId})`;case"selector":return`selector(${e.selector})`}}var oP,sP=b(()=>{"use strict";SK();EK();AK();Gi();CK();Y_();oP=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new Sw(t)}async open(t){let n=Cr(t.url,this.config);if(!n.allowed)return{outcome:"blocked_by_policy",url:t.url,reason:n.reason};let{sessionId:r}=t,o=await this.launcher.ensurePage(r),i=this.ensureSessionState(r),s=null,a=null;try{await o.goto(t.url,{timeout:t.timeoutMs??3e4,waitUntil:t.waitFor??"load"})}catch(d){a=d}let l=o.url();if(!(a!==null&&(l===""||l==="about:blank"))){let d=await rP(o,this.config,t.url,()=>this.close({sessionId:r}));if(d!==null)return d}(t.screenshot===!0||a!==null)&&(s=await this.captureScreenshot(o,r,"browser_open")),i.observationCounter+=1;let u=await vw(o,{observationCounter:i.observationCounter,screenshotPath:s,consoleErrors:this.launcher.getConsoleErrorCount(r),httpStatus:this.launcher.getLastHttpStatus(r),hasDialog:this.launcher.hasOpenDialog(r)});if(this.updateSessionFromObservation(i,u.interactive,u.url,u.title,"browser_open"),a!==null)throw a;return u}async observe(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_observe: no page open for session ${n}`);let o=this.ensureSessionState(n),i=null;t.screenshot===!0&&(i=await this.captureScreenshot(r,n,"browser_observe")),o.observationCounter+=1;let s=await vw(r,{observationCounter:o.observationCounter,screenshotPath:i,consoleErrors:this.launcher.getConsoleErrorCount(n),httpStatus:this.launcher.getLastHttpStatus(n),hasDialog:this.launcher.hasOpenDialog(n),includeHidden:t.includeHidden,maxElements:t.maxElements});return this.updateSessionFromObservation(o,s.interactive,s.url,s.title,"browser_observe"),s}async act(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_act: no page open for session ${n}`);let o=this.ensureSessionState(n),i=r.url(),s=t.timeoutMs??3e4,a=await nP(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${_K(t.target)}`);if(a.outcome==="ambiguous_target")return a;let{locator:l}=a,c=null,u=async()=>{switch(t.action){case"click":await l.click({timeout:s});break;case"fill":await l.fill(t.value??"");break;case"press":await l.press(t.value??"");break;case"select":await l.selectOption(t.value??"");break;case"hover":await l.hover({timeout:s});break;case"scroll_to":await l.scrollIntoViewIfNeeded({timeout:s});break;case"wait_for":await l.waitFor({timeout:s,state:"visible"});break}};try{await u()}catch(h){if(h instanceof Error&&/navigation|net::ERR/i.test(h.message))try{await u()}catch(y){c=y}else c=h}let d=await rP(r,this.config,i,()=>this.close({sessionId:n}));if(d!==null)return d;let p=null;(t.screenshot===!0||c!==null)&&(p=await this.captureScreenshot(r,n,"browser_act")),o.observationCounter+=1;let f=await vw(r,{observationCounter:o.observationCounter,screenshotPath:p,consoleErrors:this.launcher.getConsoleErrorCount(n),httpStatus:this.launcher.getLastHttpStatus(n),hasDialog:this.launcher.hasOpenDialog(n)}),g=`browser_act:${t.action}`;if(this.updateSessionFromObservation(o,f.interactive,f.url,f.title,g),c!==null)throw c;return f}async render(t){return this.launcher.renderHtml(t.url,{timeoutMs:t.timeoutMs??3e4,waitUntil:t.waitFor??"load",signal:t.signal,requestGuard:t.requestGuard})}async screenshot(t){let{sessionId:n}=t,r=this.launcher.getPage(n);if(r===void 0)throw new Error(`browser_screenshot: no page open for session ${n}`);let o=this.ensureSessionState(n),i;if(t.target!==void 0){let u=await nP(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${_K(t.target)}`);if(u.outcome==="ambiguous_target")throw new Error("screenshot target ambiguous; specify element_id or selector");i=await u.locator.screenshot()}else i=await r.screenshot({fullPage:t.fullPage??!1});let{path:s,bytes:a}=await su(n,i,"browser_screenshot"),l=0,c=0;if(t.fullPage===!0)try{let u=await r.evaluate(()=>({w:document.documentElement.scrollWidth,h:document.documentElement.scrollHeight}));l=u.w,c=u.h}catch{let u=r.viewportSize();l=u?.width??0,c=u?.height??0}else{let u=r.viewportSize();l=u?.width??0,c=u?.height??0}return{path:s,bytes:a,width:l,height:c,dataBase64:i.toString("base64"),mediaType:"image/png"}}async extract(t){throw new Error("browser_extract not implemented in Phase 1")}async close(t){await this.launcher.closeSession(t.sessionId),this.sessions.delete(t.sessionId)}describe(t){let n=this.sessions.get(t);if(n===void 0)return null;let r=this.launcher.getPage(t);return{active:r!==void 0,url:n.currentUrl,title:n.currentTitle,lastAction:n.lastAction,lastActionAt:n.lastActionAt,openTabs:r!==void 0?1:0}}async shutdown(){this.sessions.clear(),await this.launcher.shutdown()}ensureSessionState(t){let n=this.sessions.get(t);if(n!==void 0)return n;let r={observationCounter:0,knownElements:new Map,lastAction:null,lastActionAt:null,currentUrl:null,currentTitle:null};return this.sessions.set(t,r),r}updateSessionFromObservation(t,n,r,o,i){t.knownElements=new Map(n.map(s=>[s.id,s])),t.currentUrl=r,t.currentTitle=o,t.lastAction=i,t.lastActionAt=new Date().toISOString()}async captureScreenshot(t,n,r){try{let o=await t.screenshot({fullPage:!1}),{path:i}=await su(n,o,r);return i}catch{return null}}}});var $a={};Pn($a,{__resetBrowserRegistryForTests:()=>hTe,browserProviderActive:()=>mTe,closeBrowserProvider:()=>lP,getBrowserProvider:()=>pTe,getLastRoutingDecision:()=>gTe,peekBrowserProvider:()=>fTe});function PK(){Promise.resolve(lP()).then(()=>{process.exit(130)})}function IK(){Promise.resolve(lP()).then(()=>{process.exit(143)})}function MK(){po=null}function dTe(){kw||(process.on("SIGINT",PK),process.on("SIGTERM",IK),process.on("exit",MK),kw=!0)}function OK(){kw&&(process.removeListener("SIGINT",PK),process.removeListener("SIGTERM",IK),process.removeListener("exit",MK),kw=!1)}async function pTe(e){return po!==null?po:(Oa!==null||(Oa=(async()=>{let t=q_(e),n=e?.surface??(e?.env??{}).AGENT_SURFACE??k.AGENT_SURFACE,r=await iK({config:t,surface:n});aP=r;let o;if(r.backend==="agent-browser"){let{AgentBrowserProvider:i}=await Promise.resolve().then(()=>(hK(),gK)),s=r.availability.connection;o=new i(t,s)}else{let{PlaywrightProvider:i}=await Promise.resolve().then(()=>(sP(),iP));o=new i(t)}return dTe(),po=o,Oa=null,o})()),Oa)}async function lP(){if(po===null)return;let e=po;po=null,Oa=null,OK(),await e.shutdown()}function mTe(){return po!==null}function fTe(){return po}function gTe(){return aP}function hTe(){po=null,Oa=null,aP=null,OK()}var po,Oa,kw,aP,Da=b(()=>{"use strict";Gi();sK();F();po=null,Oa=null,kw=!1,aP=null});async function $K(e,t){try{return await qW(e,t)}catch(n){return B("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function kTe(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(Da(),$a)),r=await n();try{return await r.render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}catch(o){if(r.name==="agent-browser"){let{PlaywrightProvider:i}=await Promise.resolve().then(()=>(sP(),iP)),{loadBrowserConfig:s}=await Promise.resolve().then(()=>(Gi(),z_)),a=s(),l=new i(a);try{return await l.render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}finally{await l.shutdown()}}throw o}}async function DK(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??kTe,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s="",a=e,l=null,c=null;try{let d=await Ki(n,e,{headers:vTe,signal:t.signal},o);l=d.status,a=d.url||e;let p=d.headers.get("content-type")??"";if(d.ok){if(STe.test(p))throw new Error(`web_scrape markdown mode received binary content (${p.split(";")[0]}). Use mode: "raw" to fetch the bytes, or a different tool.`);let f=await d.text();if(wTe.test(p)&&!bTe.test(p))return{title:"",markdown:f.trim(),finalUrl:a,usedRender:!1};if(s=f,i=await $K(f,a),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(d){if(t.signal.aborted||d instanceof Vt||d instanceof Error&&d.message.startsWith("web_scrape markdown mode received binary"))throw d;c=d}if(!(i===null||i.textLength<200)&&i!==null){let d=H_({html:s,extractedTextLength:i.textLength});return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1,...d!==void 0?{advisory:d}:{}}}try{await of(e,o);let d=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:f=>of(f,o)});d.finalUrl!==e&&/^https?:\/\//i.test(d.finalUrl)&&await of(d.finalUrl,o);let p=await $K(d.html,d.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||p.textLength>=i.textLength){let f=H_({html:d.html,extractedTextLength:p.textLength});return{title:p.title,markdown:p.markdown,finalUrl:d.finalUrl,usedRender:!0,...f!==void 0?{advisory:f}:{}}}}catch(d){if(t.signal.aborted||d instanceof Vt)throw d;if(i===null){let p=d instanceof Error?d.message:String(d),f=c instanceof Error?c.message:`HTTP ${l??"error"}`,g=new Error(`web_scrape could not retrieve ${e}: fetch failed (${f}) and render failed (${p}).`);throw g.cause=d,g}}if(i!==null)return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1};throw new Error(`web_scrape could not retrieve any content from ${e} (HTTP ${l??"error"}).`)}var bTe,wTe,STe,vTe,LK=b(()=>{"use strict";zW();W_();Ia();me();bTe=/(text\/html|application\/xhtml\+xml)/i,wTe=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,STe=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,vTe={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 agent-afk/web_scrape",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}});function ETe(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(TTe,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","x-api-key":e.apiKey,"User-Agent":"agent-afk/web_scrape"},body:JSON.stringify({query:n,type:"auto",numResults:Math.min(Math.max(r,1),xTe),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=le(u);d&&(l=`: ${d.length>200?d.slice(0,200)+"\u2026":d}`)}catch{}let c=i.statusText?` ${i.statusText}`:"";throw new Error(`Exa Search HTTP ${i.status}${c}${l}`)}let s;try{s=await i.json()}catch(l){throw new Error(`Exa Search response was not JSON: ${l instanceof Error?l.message:String(l)}`)}return(s.results??[]).slice(0,r).map(l=>({title:(l.title??"").trim()||"(untitled)",url:l.url??"",description:(l.highlights?.[0]??"").trim()})).filter(l=>l.url.length>0)}}}function FK(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?ETe({apiKey:e.exaApiKey,fetchFn:e.fetchFn}):{error:'web_scrape search mode requires a search backend. Set EXA_API_KEY (free tier at https://exa.ai) to enable it. Use mode: "markdown" to read a known URL, or mode: "raw" for a direct fetch.'}}function NK(e,t){if(t.length===0)return`# Search results for "${e}"
434
434
 
435
435
  (no results)`;let n=[`# Search results for "${e}"`,""];return t.forEach((r,o)=>{n.push(`## ${o+1}. ${r.title}`),r.url&&n.push(r.url),r.description&&n.push(r.description),n.push("")}),n.join(`
436
436
  `).trimEnd()}var TTe,xTe,BK=b(()=>{"use strict";je();TTe="https://api.exa.ai/search",xTe=10});function Tw(e){if(e instanceof Error&&e.name==="TimeoutError")return"timeout";let t=e instanceof Error?e.message:String(e);return/Timeout\s+\d+\s*ms exceeded/i.test(t)?"timeout":void 0}var La=b(()=>{"use strict";bw()});function ITe(e){if(!e||typeof e!="object")return{error:"Invalid input: expected an object"};let t=e,n=t.mode??"markdown";if(n!=="markdown"&&n!=="raw"&&n!=="search")return{error:`Invalid input: mode must be one of "markdown", "raw", "search" (got ${JSON.stringify(n)})`};let r=n,o,i;if(r==="search"){if(typeof t.query!="string"||t.query.length===0)return{error:'Invalid input: search mode requires a non-empty "query" string'};i=t.query}else{if(typeof t.url!="string"||t.url.length===0)return{error:`Invalid input: ${r} mode requires a non-empty "url" string`};let l;try{l=new URL(t.url)}catch{return{error:`Invalid input: "${t.url}" is not a valid absolute URL`}}if(l.protocol!=="http:"&&l.protocol!=="https:")return{error:`Invalid input: protocol "${l.protocol}" not supported (http/https only)`};o=l.toString()}let s=RTe;if(t.timeout_ms!==void 0){if(typeof t.timeout_ms!="number"||!Number.isFinite(t.timeout_ms)||t.timeout_ms<=0)return{error:"Invalid input: timeout_ms must be a positive finite number"};s=Math.min(t.timeout_ms,ATe)}let a=CTe;if(t.max_bytes!==void 0){if(typeof t.max_bytes!="number"||!Number.isFinite(t.max_bytes)||t.max_bytes<=0)return{error:"Invalid input: max_bytes must be a positive finite number"};a=Math.min(t.max_bytes,_Te)}return{mode:r,url:o,query:i,timeoutMs:s,maxBytes:a}}function cP(e,t){return Buffer.byteLength(e,"utf8")<=t?{content:e,truncated:!1}:{content:xr(e,t),truncated:!0}}function MTe(e={}){let t=e.fetchFn??globalThis.fetch,n=e.env??process.env,r=e.lookupFn!==void 0?{lookupFn:e.lookupFn}:{};return async(o,i)=>{if(typeof t!="function")return{content:"web_scrape unavailable: global fetch() is not present in this runtime (agent-afk requires Node 20+).",isError:!0};let s=ITe(o);if("error"in s)return{content:s.error,isError:!0};if(i.aborted){let d=i.reason;return{content:`web_scrape aborted: ${d instanceof Error?d.message:String(d??"aborted")}`,isError:!0}}let a=new AbortController,l=()=>{a.abort(i.reason)},c,u=()=>{let d=a.signal.reason;return d instanceof Error?d.message:String(d??"aborted")};try{if(i.addEventListener("abort",l,{once:!0}),c=setTimeout(()=>{a.abort(new Error(`web_scrape timeout after ${s.timeoutMs}ms`))},s.timeoutMs),s.url!==void 0){let p=await Pa(s.url,r);if(a.signal.aborted)return{content:`web_scrape aborted: ${u()}`,isError:!0};if(!p.allowed)return{content:`web_scrape blocked: ${p.reason}`,isError:!0}}if(s.mode==="raw"){let p;try{let h={method:"GET",headers:{"User-Agent":"agent-afk/web_scrape",Accept:"*/*"},signal:a.signal};p=await Ki(t,s.url,h,r)}catch(h){return a.signal.aborted?{content:`web_scrape aborted: ${u()}`,isError:!0}:h instanceof Vt?{content:`web_scrape blocked: ${h.message}`,isError:!0}:{content:`web_scrape network error: ${h instanceof Error?h.message:String(h)}`,isError:!0}}if(!p.ok)return{content:`web_scrape HTTP ${p.status} ${p.statusText||""}`.trimEnd()+` for ${s.url}`,isError:!0};let f;try{f=await p.text()}catch(h){return{content:`web_scrape read error: ${h instanceof Error?h.message:String(h)}`,isError:!0}}let g=cP(f,s.maxBytes);return{content:g.content,...g.truncated?{truncated:!0}:{}}}if(s.mode==="markdown")try{let p=await DK(s.url,{fetchFn:t,renderFn:e.renderFn,timeoutMs:s.timeoutMs,signal:a.signal,...e.lookupFn!==void 0?{lookupFn:e.lookupFn}:{}});if(p.markdown.trim().length===0)return{content:`web_scrape extracted no readable content from ${s.url}.`,isError:!0};let f=cP(JW(p.markdown,p.advisory),s.maxBytes);return{content:f.content,...f.truncated?{truncated:!0}:{}}}catch(p){if(a.signal.aborted)return{content:`web_scrape aborted: ${u()}`,isError:!0};if(p instanceof Vt)return{content:`web_scrape blocked: ${p.message}`,isError:!0};let f=p instanceof Error?p.message:String(p),g=wn(p)&&!eP(f)?` (the render fallback needs the optional Playwright browser \u2014 run \`${sf()}\`)`:"";return{content:`web_scrape markdown error: ${f}${g}`,isError:!0}}let d=FK({exaApiKey:n.EXA_API_KEY,fetchFn:t});if("error"in d)return{content:d.error,isError:!0};try{let p=await d.search(s.query,{limit:PTe,timeoutMs:s.timeoutMs,signal:a.signal}),f=cP(NK(s.query,p),s.maxBytes);return{content:f.content,...f.truncated?{truncated:!0}:{}}}catch(p){return a.signal.aborted?{content:`web_scrape aborted: ${u()}`,isError:!0}:{content:`web_scrape search error (${d.name}): ${p instanceof Error?p.message:String(p)}`,isError:!0}}}finally{c!==void 0&&clearTimeout(c),i.removeEventListener("abort",l)}}}var RTe,ATe,CTe,_Te,PTe,UK,jK=b(()=>{"use strict";LK();BK();Ia();no();W_();La();RTe=3e4,ATe=12e4,CTe=1e5,_Te=1e6,PTe=10;UK=MTe()});function DTe(e){return OTe.has(e)?"low":e==="DELETE"?"high":"medium"}function LTe(e){return $Te.has(e)}function BTe(e){let t={};return e.forEach((n,r)=>{let o=r.toLowerCase();NTe.has(o)||FTe.some(i=>o.startsWith(i))||(t[r]=n)}),t}function UTe(e,t){if(e==null)return{serialized:void 0,inferredContentType:void 0};let n=Object.keys(t).some(o=>o.toLowerCase()==="content-type");return typeof e=="string"?{serialized:e,inferredContentType:n?void 0:"text/plain"}:{serialized:JSON.stringify(e),inferredContentType:n?void 0:"application/json"}}function jTe(e,t,n){let r=Buffer.byteLength(e,"utf8"),o=e,i=!1;if(r>n&&(o=xr(e,n),i=!0),!i&&/application\/json/i.test(t))try{return{body:JSON.parse(o),truncated:!1}}catch{}return{body:o,truncated:i}}async function KK(e){let{url:t,method:n,signal:r,domainCheck:o,recordEffect:i}=e,s=Math.min(e.maxResponseBytes??uP,dP),a={...e.headers},l=e.fetchFn??globalThis.fetch,c=e.lookupFn!==void 0?{lookupFn:e.lookupFn}:{},u=DTe(n);if(o!==void 0){let R=o(t);if(!R.allowed)throw Object.assign(new Error(`web_request blocked by domain policy: ${R.reason}`),{name:"DomainPolicyError"})}let d=await Pa(t,c);if(!d.allowed)throw new Vt(d.reason);let{serialized:p,inferredContentType:f}=UTe(e.body,a);f!==void 0&&(a["content-type"]=f);let g={method:n,headers:Object.keys(a).length>0?a:void 0,body:p,signal:r},y=LTe(n)?{retries:2,baseDelayMs:300,maxDelayMs:5e3}:{retries:0},w=Date.now(),S;try{S=await Ki(l,t,g,{...c,retry:y})}catch(R){throw R instanceof Vt,R}let v=Date.now()-w,x=S.headers.get("content-type")??"",T;try{let R=S.body?.getReader();if(!R)T="";else{let P=[],I=0,$=s*2;for(;;){let{done:j,value:O}=await R.read();if(j||!O)break;if(P.push(O),I+=O.byteLength,I>=$){await R.cancel();break}}T=new TextDecoder().decode(Buffer.concat(P,I))}}catch{T=""}let{body:E,truncated:C}=jTe(T,x,s),_=BTe(S.headers);return i!==void 0&&Promise.resolve(i({url:t,method:n,status:S.status,risk:u,timing_ms:v})).catch(()=>{}),{status:S.status,headers:_,body:E,truncated:C,timing_ms:v,risk:u}}function GK(e){if(typeof e!="string"||e.trim().length===0)return{error:"method must be a non-empty string (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)"};let t=e.trim().toUpperCase(),n=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"];return n.includes(t)?t:{error:`method "${e}" is not supported \u2014 must be one of: ${n.join(", ")}`}}var HK,WK,uP,dP,OTe,$Te,FTe,NTe,qK=b(()=>{"use strict";Ia();no();HK=3e4,WK=12e4,uP=1e5,dP=1e6,OTe=new Set(["GET","HEAD","OPTIONS"]),$Te=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]);FTe=["set-cookie","x-"],NTe=new Set(["server","via","age","vary","authorization","www-authenticate"])});function HTe(e){if(!e||typeof e!="object")return{error:"Invalid input: expected an object"};let t=e;if(typeof t.url!="string"||t.url.length===0)return{error:'Invalid input: "url" must be a non-empty string'};let n;try{n=new URL(t.url)}catch{return{error:`Invalid input: "${t.url}" is not a valid absolute URL`}}if(n.protocol!=="http:"&&n.protocol!=="https:")return{error:`Invalid input: protocol "${n.protocol}" not supported (http/https only)`};n.username="",n.password="";let r=n.toString(),o=GK(t.method);if(typeof o=="object"&&"error"in o)return{error:`Invalid input: ${o.error}`};let i=o,s;if(t.body!==void 0&&t.body!==null){if(typeof t.body!="string"&&typeof t.body!="object")return{error:'Invalid input: "body" must be a string, object, or array'};s=t.body}let a={};if(t.headers!==void 0){if(typeof t.headers!="object"||t.headers===null||Array.isArray(t.headers))return{error:'Invalid input: "headers" must be a string-keyed object'};let d=t.headers;for(let[p,f]of Object.entries(d)){if(typeof f!="string")return{error:`Invalid input: header value for "${p}" must be a string`};a[p]=f}}let l=HK;if(t.timeout_ms!==void 0){if(typeof t.timeout_ms!="number"||!Number.isFinite(t.timeout_ms)||t.timeout_ms<=0)return{error:'Invalid input: "timeout_ms" must be a positive finite number'};l=Math.min(t.timeout_ms,WK)}let c=uP;if(t.max_response_bytes!==void 0){if(typeof t.max_response_bytes!="number"||!Number.isFinite(t.max_response_bytes)||t.max_response_bytes<=0)return{error:'Invalid input: "max_response_bytes" must be a positive finite number'};c=Math.min(t.max_response_bytes,dP)}let u;if(t.credential!==void 0){if(typeof t.credential!="string"||t.credential.length===0)return{error:'Invalid input: "credential" must be a non-empty string (an env var name)'};u=t.credential}return{url:r,method:i,body:s,headers:a,timeoutMs:l,maxResponseBytes:c,credential:u}}function WTe(e={}){let t=e.fetchFn??globalThis.fetch,n=e.env??process.env;async function r(){if(e.domainCheck!==void 0)return e.domainCheck;try{let{loadBrowserConfig:o,enforceDomainPolicy:i}=await Promise.resolve().then(()=>(Gi(),z_)),s=o();return a=>i(a,s)}catch{return}}return async(o,i)=>{if(typeof t!="function")return{content:"web_request unavailable: global fetch() is not present (agent-afk requires Node 20+).",isError:!0};let s=HTe(o);if("error"in s)return{content:s.error,isError:!0};if(i.aborted){let p=i.reason;return{content:`web_request aborted: ${p instanceof Error?p.message:String(p??"aborted")}`,isError:!0}}let a={...s.headers};if(s.credential!==void 0){let p=n[s.credential];if(p===void 0||p.trim().length===0)return{content:`web_request credential error: environment variable "${s.credential}" is not set. Set it in afk.env or export it in the shell before starting AFK.`,isError:!0};if(Object.keys(a).some(g=>g.toLowerCase()==="authorization"))return{content:'web_request credential error: both "credential" and an explicit Authorization header were provided. Use one or the other.',isError:!0};a.Authorization=`Bearer ${p}`}let l=new AbortController,c=()=>l.abort(i.reason),u,d=()=>{let p=l.signal.reason;return p instanceof Error?p.message:String(p??"aborted")};try{i.addEventListener("abort",c,{once:!0}),u=setTimeout(()=>{l.abort(new Error(`web_request timeout after ${s.timeoutMs}ms`))},s.timeoutMs);let p=await r(),f={url:s.url,method:s.method,body:s.body,headers:a,maxResponseBytes:s.maxResponseBytes,signal:l.signal,fetchFn:t,lookupFn:e.lookupFn,domainCheck:p,recordEffect:e.recordEffect},g;try{g=await KK(f)}catch(S){if(l.signal.aborted)return{content:`web_request aborted: ${d()}`,isError:!0};if(S instanceof Vt)return{content:`web_request blocked: ${S.message}`,isError:!0};let v=S instanceof Error&&S.name==="DomainPolicyError"?"blocked":"network error",x=S instanceof Error?S.message:String(S);return{content:`web_request ${v}: ${x}`,isError:!0}}if(l.signal.aborted)return{content:`web_request aborted: ${d()}`,isError:!0};let h=g.body;if(typeof h=="string")h=dt(h);else if(typeof h=="object"&&h!==null){let S=dt(JSON.stringify(h));try{h=JSON.parse(S)}catch{h=S}}let y={status:g.status,headers:g.headers,body:h,timing_ms:g.timing_ms,...g.truncated?{truncated:!0}:{}};return{content:JSON.stringify(y,null,2),...g.truncated?{truncated:!0}:{}}}finally{u!==void 0&&clearTimeout(u),i.removeEventListener("abort",c)}}}var zK,JK=b(()=>{"use strict";qK();Ia();vr();zK=WTe()});import{existsSync as YK,mkdirSync as KTe,readFileSync as GTe,renameSync as qTe,unlinkSync as zTe,writeFileSync as JTe}from"node:fs";import{dirname as VK,join as VTe}from"node:path";import{randomBytes as YTe}from"node:crypto";function Ln(e){let t=e??by();if(!YK(t))return[];try{let n=GTe(t,"utf-8");return JSON.parse(n)}catch(n){let r=n instanceof Error?n.message:String(n);return console.error(`[schedule-store] failed to parse ${t}: ${r}`),[]}}function qi(e,t){let n=t??by();KTe(VK(n),{recursive:!0});let r=VTe(VK(n),`.schedules.json.${process.pid}.${YTe(4).toString("hex")}.tmp`),o=JSON.stringify(e,null,2);try{JTe(r,o,"utf-8"),qTe(r,n)}catch(i){try{YK(r)&&zTe(r)}catch{}throw i}}function xw(e,t){let n=Ln(t),r=n.map(l=>l.id),o=XTe(e.name),i=QTe(o,r),s=new Date().toISOString(),a={...e,notifyOn:e.notifyOn??"failure",id:i,createdAt:s,updatedAt:s};return n.push(a),qi(n,t),a}function Ew(e,t){let n=Ln(t),r=n.length,o=n.filter(i=>i.id!==e);return o.length===r?!1:(qi(o,t),!0)}function af(e,t){return Ln(t).find(n=>n.id===e)}function XTe(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"")}function QTe(e,t){if(!t.includes(e))return e;let n=2;for(;t.includes(`${e}-${n}`);)n+=1;return`${e}-${n}`}function Rw(e){return{taskId:e.id,command:e.command,trigger:e.trigger??"cron",...e.cron!==void 0?{cronExpression:e.cron}:{},...e.notifyOn!==void 0?{notifyOn:e.notifyOn}:{},...e.notifyChat!==void 0?{notifyChat:e.notifyChat}:{}}}var Aw=b(()=>{"use strict";U()});import{existsSync as ZTe,readFileSync as exe}from"node:fs";import{join as txe}from"node:path";async function rr(e,t,n){let r,o;try{let i=txe(Yp("default"),"port");if(!ZTe(i))return{synced:!1,detail:"daemon-not-detected (no port file)"};let s=exe(i,"utf-8").trim(),a=nxe(s);if(!a)return{synced:!1,detail:"daemon-not-detected (invalid port file)"};({host:r,port:o}=a)}catch{return{synced:!1,detail:"daemon-not-detected (unreadable port file)"}}try{let i=r.includes(":")?`[${r}]`:r,s=await fetch(`http://${i}:${o}${t}`,{method:e,headers:{"Content-Type":"application/json"},body:n!==void 0?JSON.stringify(n):void 0,signal:AbortSignal.timeout(2e3)});return s.ok?{synced:!0,detail:"synced"}:e==="POST"&&s.status===409?{synced:!0,detail:"already-registered"}:e==="DELETE"&&s.status===404?{synced:!0,detail:"not-registered"}:{synced:!1,detail:`daemon-rejected (HTTP ${s.status})`}}catch{return{synced:!1,detail:"daemon-unreachable (stale port file or network error)"}}}function nxe(e){let t=parseInt(e,10);if(String(t)===e&&!Number.isNaN(t))return t<1||t>65535?null:{host:"localhost",port:t};let n=e.lastIndexOf(":");if(n<1)return null;let r=e.slice(0,n),o=e.slice(n+1);if(!/^\d+$/.test(o))return null;let i=parseInt(o,10);return Number.isNaN(i)||i<1||i>65535||/^:+$/.test(r)?null:{host:r.startsWith("[")&&r.endsWith("]")?r.slice(1,-1):r,port:i}}var zi,pP=b(()=>{"use strict";U();zi="Change saved to schedules.json, but a running daemon (if any) did not pick it up \u2014 it will apply on the next daemon (re)start."});import{existsSync as rxe}from"node:fs";import{readFile as oxe}from"node:fs/promises";var XK,QK,ZK,eG,tG=b(()=>{"use strict";Aw();U();pP();XK=async(e,t)=>{if(!e||typeof e!="object")return{content:"Invalid input: expected object",isError:!0};let n=e;if(typeof n.name!="string"||!n.name)return{content:"Invalid input: name required",isError:!0};if(typeof n.command!="string"||!n.command)return{content:"Invalid input: command required",isError:!0};if(typeof n.cron!="string"||!n.cron)return{content:"Invalid input: cron required",isError:!0};let r=n.cron.trim().split(/\s+/);if(r.length!==5&&r.length!==6)return{content:"Invalid input: cron must be a 5 or 6-field expression",isError:!0};let o=n.notifyChat;if(o!==void 0&&typeof o!="number"&&typeof o!="string")return{content:"Invalid input: notifyChat must be a number (chat id) or string (chat id or alias name)",isError:!0};let i=xw({name:n.name,command:n.command,cron:n.cron,trigger:n.trigger??"cron",notifyOn:n.notifyOn,...o!==void 0?{notifyChat:o}:{},enabled:typeof n.enabled=="boolean"?n.enabled:!0}),s=i.enabled?await rr("POST","/tasks",{taskId:i.id,command:i.command,cron:i.cron,trigger:i.trigger,notifyOn:i.notifyOn,...i.notifyChat!==void 0?{notifyChat:i.notifyChat}:{}}):await rr("DELETE",`/tasks/${i.id}`);return{content:JSON.stringify({id:i.id,name:i.name,cron:i.cron,enabled:i.enabled,daemonSynced:s.synced,syncDetail:s.detail,...s.synced?{}:{syncNote:zi}})}},QK=async(e,t)=>{let n=Ln();return{content:JSON.stringify(n.map(r=>({id:r.id,name:r.name,cron:r.cron,trigger:r.trigger,enabled:r.enabled,notifyOn:r.notifyOn})))}},ZK=async(e,t)=>{if(!e||typeof e!="object")return{content:"Invalid input: expected object",isError:!0};let n=e;if(typeof n.taskId!="string"||!n.taskId)return{content:"Invalid input: taskId required",isError:!0};let r=n.taskId,o=typeof n.limit=="number"?Math.min(Math.max(1,n.limit),50):10,i=wr();if(!rxe(i))return{content:JSON.stringify([])};let s;try{let c=await oxe(i);s=(c.length>1048576?c.subarray(c.length-1048576):c).toString("utf-8")}catch{return{content:JSON.stringify([])}}let a=s.split(`
@@ -1868,14 +1868,14 @@ ${f.body}`);if(g.length>0){let y=n.get(p)??[],w=new Set([...y,...g]);n.set(p,Arr
1868
1868
  `+m.dim(` ${e.hiddenLineCount} earlier lines hidden`)),e.tailPreview!==void 0&&e.tailPreview.length>0){let p=e.tailPreview.map(f=>m.dim(" "+Oe(f.length>120?f.slice(0,120)+"\u2026":f))).join(`
1869
1869
  `);return d+`
1870
1870
  `+p}return d}let a=e.content.length>n?e.content.slice(0,n-3)+"\u2026":e.content,l=e.durationMs!==void 0?m.dim(` \xB7 ${(e.durationMs/1e3).toFixed(1)}s`):"";return o(Oe(a))+s+l}function $l(e){return!e||typeof e.batchSize!="number"||typeof e.batchIndex!="number"||e.batchSize<=1?"":m.dim(` \u2225${e.batchIndex}/${e.batchSize}`)}function rD(e,t){return!t||t.toolUseIds.size<=1||!t.toolUseIds.has(e)?"":m.dim(` [\xD7${t.toolUseIds.size}]`)}var nh,bee,wee,yi=b(()=>{"use strict";wg();F();L();cm();KO();Eo();cl();dT();yee();nh=3,bee=2,wee=3});function rh(e,t){if(e.length<=t)return e;let n=e.length-t,r=e.slice(0,n),o=e.slice(n),i=kee(r);return[{kind:"overflow",count:r.length,text:i},...o]}function OUe(e,t){return t<=1||e.endsWith("s")||/(sh|ch|x|z)$/i.test(e)?e:e+"s"}function kee(e){let t=new Map,n=0;for(let i of e)i.kind==="group"?(t.set(i.toolName,(t.get(i.toolName)??0)+i.entries.length),n+=i.entries.length):(t.set(i.toolName,(t.get(i.toolName)??0)+1),n+=1);if(n===0)return"";if(e.length>0&&e.every(i=>pt.has(i.toolName))&&new Set(e.map(i=>i.toolName)).size===1){let i=[],s=!1;for(let a of e){let c=(a.kind==="group"?a.label:a.toolInput).trim();if(!c.startsWith("(")||!c.endsWith(")")){s=!0;break}let u=c.slice(1,-1),d=Oe(u);if(!d){s=!0;break}let p=d.length>vee?d.slice(0,vee-1)+"\u2026":d,f=a.kind==="group"?a.entries.length:1;i.push({display:p,entries:f})}if(!s&&i.length>0){let a=i.slice(0,$Ue),l=a.map(({display:p,entries:f})=>f>1?`${p} \xD7${f}`:p),c=a.reduce((p,f)=>p+f.entries,0),u=n-c,d=l.join(", ")+(u>0?` (+${u})`:"");return`\u2026 +${n} more: ${d}`}}let o=[];for(let[i,s]of t)o.push(`${s} ${OUe(i,s)}`);return`\u2026 +${n} (${o.join(", ")})`}var $Ue,vee,Tee=b(()=>{"use strict";Eo();yi();$Ue=5,vee=60});function fx(e,t=Ur()){return e.map((n,r)=>({sibling:n,connector:r===e.length-1?t.lastConnector:t.midConnector}))}function oD(e,t){return t?[...e,{kind:"resultSummary",summary:t}]:e}function iD(e){if(e.length===0)return[];let t=new Map;for(let o of e){let i=xee(o),s=t.get(i);s||(s=[],t.set(i,s)),s.push(o)}let n=[],r=new Set;for(let o of e){let i=xee(o),s=t.get(i);s.length>=FUe(o.toolName)?r.has(i)||(n.push({kind:"group",toolName:o.toolName,label:pt.has(o.toolName)?o.toolInput:"",entries:s}),r.add(i)):n.push(o)}return n}function LUe(e){let t=e.result?.content??"",n=ui(Oe(t));return n?Z(n,DUe):""}function sD(e){let t=e.entries.length,n=e.entries.filter(u=>u.result),r=n.filter(u=>u.result.isError),o=n.length,i=r.filter(u=>_o(u.result.failureClass)),s=r.filter(u=>!_o(u.result.failureClass)),a,l="";if(r.length>0){let u=o-r.length,d=[];u>0&&d.push(m.dim(`${u} ok`)),s.length>0&&d.push(m.error(`${s.length} error${s.length===1?"":"s"}`)),i.length>0&&d.push(m.warning(`${i.length} blocked`)),a=d.join(m.dim(", "));let p=s.length>0?s:i,f=s.length>0?m.error:m.warning,g=LUe(p[p.length-1]);g&&(l=m.dim(" \xB7 last: ")+f(g))}else o===t?a=`${t} done`:o===0?a=`${t} running`:a=`${o}/${t} done`;let c=di(e.toolName+e.label);return r.length>0?c+m.dim(` \xD7${t} \u2014 `)+a+l:c+m.dim(` \xD7${t} \u2014 ${a}`)}function xee(e){return pt.has(e.toolName)?e.toolName+"::"+e.toolInput:e.toolName}function FUe(e){return pt.has(e)?bee:wee}var DUe,aD=b(()=>{"use strict";L();Eo();de();yi();dT();cl();Vd();Tee();DUe=40});function Eee(e,t,n,r){return e>0||t?Yd([...n,!0],r):Yd(n,r)}function Ree(e,t){return!pt.has(e.toolName)||e.headerEmitted!==!0?!1:(t.get(e.toolUseId)??[]).every(r=>r.kind==="tool"&&Ree(r,t))}function gx(e,t,n,r=mr(),o=[],i=Ur(),s){let a=Yd(o,i),l=oh(a,i),c=e.filter(h=>h.kind==="text"),u=e.filter(h=>h.kind==="tool").filter(h=>!Ree(h,t)),d=iD(u),p=rh(d,nh),f=fx(p,i);for(let{sibling:h,connector:y}of f){let w=m.dim(y),S=y===i.lastConnector;if(h.kind==="overflow")n.push(Ce(l+w+m.dim(h.text),r));else if(h.kind==="group")n.push(Ce(l+w+sD(h),r));else if(h.kind==="resultSummary")n.push(Ce(l+w+h.summary,r));else{let v=h,x=t.get(v.toolUseId);if(pt.has(v.toolName)&&x&&x.length>0){v.headerEmitted?n.push(Ce(l+w,r)):n.push(Ce(l+w+v.prefix,r));let T=s??S;if(gx(x,t,n,r,[...o,T],i,S),v.thinkingTail){let E=oh(Yd([...o,T],i),i);n.push(Ce(E+m.thinking("\u2307 "+Oe(v.thinkingTail)),r))}}else if(!(pt.has(v.toolName)&&v.headerEmitted))if(v.result){if(n.push(Ce(l+w+v.prefix+m.dim(" \u2014 ")+Ol(v.result.isError,v.result.failureClass)+" "+$s(v.result,void 0,60,v.toolName),r)),v.diff&&!v.result.isError){let T=l+(S?i.spineClosed:m.dim(i.spine))+" ";for(let E of hi(v.diff,"overlay",T))n.push(Ce(E,r))}}else{if(n.push(Ce(l+w+v.prefix+m.dim(" \u2026")+kl(v.startedAt),r)),v.previewDiff){let E=l+(S?i.spineClosed:m.dim(i.spine))+" ";for(let C of th(v.previewDiff,E))n.push(Ce(C,r))}let T=l+(S?i.spineClosed:m.dim(i.spine))+" ";v.thinkingTail?n.push(Ce(T+m.thinking("\u2307 "+Oe(v.thinkingTail)),r)):n.push(Ce(T+m.dim(See(v.toolName)),r))}}}let g=Eee(u.length,!1,o,i);for(let h of c)for(let y of cD(h.text,g,i))n.push(Ce(y,r))}function ih(e,t,n,r,o=mr(),i=[],s=Ur(),a){let l=Yd(i,s),c=oh(l,s),u=[],d=e.filter(S=>S.kind==="text"),p=e.filter(S=>S.kind==="tool"),f=iD(p),g=rh(f,nh),h=oD(g,r),y=fx(h,s);for(let{sibling:S,connector:v}of y){let x=m.dim(v),T=v===s.lastConnector;if(S.kind==="overflow")u.push(Ce(c+x+m.dim(S.text),o));else if(S.kind==="resultSummary")u.push(Ce(c+x+S.summary,o));else if(S.kind==="group")u.push(Ce(c+x+sD(S),o));else{let E=S,C=t.get(E.toolUseId);if(pt.has(E.toolName)&&C&&C.length>0){if(E.headerEmitted){let R=E.toolInput?`${E.toolName} ${Oe(E.toolInput)}`:E.toolName;u.push(Ce(c+x+m.dim("\u21B3 "+R),o))}else u.push(Ce(c+x+E.prefix,o));let _=a??T;u.push(...ih(C,t,n,void 0,o,[...i,_],s,T))}else if(E.result){if(u.push(Ce(c+x+E.prefix+m.dim(" \u2014 ")+Ol(E.result.isError,E.result.failureClass)+" "+$s(E.result,n,60,E.toolName),o)),E.diff&&!E.result.isError){let _=c+(T?s.spineClosed:m.dim(s.spine))+" ";for(let R of hi(E.diff,"flush",_))u.push(Ce(R,o))}}else u.push(Ce(c+x+E.prefix,o))}}let w=Eee(p.length,r!=null,i,s);for(let S of d)for(let v of cD(S.text,w,s))u.push(Ce(v,o));return u}var lD=b(()=>{"use strict";L();Eo();pr();yi();Vd();aD()});function Aee(e){return e.agentResultSummary?m.dim(e.agentResultSummary)+$l(e.result):e.agentResultSummary}function sh(e,t,n,r,o=[]){let i=Ur(),s=t.filter(y=>y.kind==="tool"),l=s.filter(y=>y.result).reduce((y,w)=>y+(w.result.lineCount??0),0),c=[];s.length>nh&&(c.push(Ii(s.length)),l>0&&c.push(`${l} lines`));let u=m.dim(i.spine.repeat(o.length)),d=o,p=m.dim(i.turnRoot),f=mr(),g=Ce(c.length>0?u+p+e.prefix+m.dim(" \u2014 "+c.join(" \xB7 ")):u+p+e.prefix,f),h=ih(t,n,r,Aee(e),f,d,i);return[g,...h].join(`
1871
- `)}function uD(e,t=[]){let n=Ur(),r=m.dim(n.spine.repeat(t.length)),o=m.dim(n.turnRoot);return Ce(r+o+e.prefix,mr())}function ah(e,t,n,r,o=[]){let i=Ur(),s=o;return ih(t,n,r,Aee(e),mr(),s,i)}var Cee=b(()=>{"use strict";L();nt();yi();Vd();lD()});function NUe(e,t){let n=e.filter(a=>a.result),r=n.filter(a=>a.result.isError),o=r.filter(a=>_o(a.result.failureClass)),i=r.filter(a=>!_o(a.result.failureClass));if(r.length>0){let a=n.length-r.length,c=n.filter(d=>!d.result.isError).map(d=>d.result.lineCount).filter(d=>d!==void 0).reduce((d,p)=>d+p,0),u=[];return c>0&&u.push(`${c} lines`),a>0&&u.push(`${a} ok`),i.length>0&&u.push(m.error(`${i.length} error${i.length>1?"s":""}`)),o.length>0&&u.push(m.warning(`${o.length} blocked`)),m.dim(" \u2014 ")+u.join(m.dim(", "))}let s=n.map(a=>a.result?.lineCount).filter(a=>a!==void 0);if(s.length===n.length&&s.length>0){if(s.every(c=>c===s[0]))return m.dim(` \u2014 ${s[0]} lines each`);let l=s.reduce((c,u)=>c+u,0);return m.dim(` \u2014 ${l} lines total`)}if(n.length>0){let a=n.map(l=>$s(l.result,t,60,l.toolName));return m.dim(" \u2014 ")+a.join(m.dim(", "))}return""}function _ee(e,t,n,r){let{color:o,glyph:i}=Td(e),s=" "+o(i+" ")+o.bold(e)+m.dim(` \xD7${t.length}`)+" ",a=NUe(t,r),l=t.map(d=>ui(Oe(d.toolInput)).trim()).join(", "),c=Math.max(0,n-G(s)-G(a)),u=Z(m.toolArg(l),c);return Ce(s+u+a,n)}function Xd(e,t,n){let r=[],o=mr();for(let i of t){let s=e.get(i);if(s.length===1){let a=s[0];if(a.result){if(r.push(Ce(" "+a.prefix+m.dim(" \u2014 ")+Ol(a.result.isError,a.result.failureClass)+" "+$s(a.result,n,60,a.toolName)+$l(a.result),o)),a.diff&&!a.result.isError)for(let l of hi(a.diff,"flush"," "))r.push(Ce(l,o))}else r.push(Ce(" "+a.prefix,o))}else{r.push(_ee(i,s,o,n));let a=s.filter(c=>c.diff&&c.result&&!c.result.isError),l=a.length>1;for(let c of a){if(l){let u=Oe(c.toolInput),d=ui(u).trim()||u.trim();r.push(Ce(" "+m.dim(`\u2500\u2500 ${d} \u2500\u2500`),o))}for(let u of hi(c.diff,"flush"," "))r.push(Ce(u,o))}}}return r}var Pee=b(()=>{"use strict";de();L();Eo();yi();Vd()});function Ce(e,t){return Z(e,t)}function mr(){return jt(ne())}function dD(e,t,n,r,o){let i={kind:"tool",toolUseId:e,toolName:t,toolInput:n,prefix:r,startedAt:Date.now()};return o!==void 0&&(i.agentContext=o),i}function Ur(){let e=k.AGENT_AFK_ASCII;return e&&/^(1|true|yes)$/i.test(e)?BUe:pD}function Yd(e,t){let n="";for(let r of e)n+=r?t.spineClosed:t.spine;return n+=t.spine,n}function oh(e,t){let n="";for(let r=0;r<e.length;r+=2){let o=e.slice(r,r+2);n+=o===t.spine?m.dim(o):o}return n}function cD(e,t,n){if(!e||!e.trim())return[];let r=m.dim(n.textPrefix),o=Math.max(1,mr()-t.length-2-2),i=oh(t,n),s=[];for(let a of e.split(`
1871
+ `)}function uD(e,t=[]){let n=Ur(),r=m.dim(n.spine.repeat(t.length)),o=m.dim(n.turnRoot);return Ce(r+o+e.prefix,mr())}function ah(e,t,n,r,o=[]){let i=Ur(),s=o;return ih(t,n,r,Aee(e),mr(),s,i)}var Cee=b(()=>{"use strict";L();nt();yi();Vd();lD()});function NUe(e,t){let n=e.filter(a=>a.result),r=n.filter(a=>a.result.isError),o=r.filter(a=>_o(a.result.failureClass)),i=r.filter(a=>!_o(a.result.failureClass));if(r.length>0){let a=n.length-r.length,c=n.filter(d=>!d.result.isError).map(d=>d.result.lineCount).filter(d=>d!==void 0).reduce((d,p)=>d+p,0),u=[];return c>0&&u.push(`${c} lines`),a>0&&u.push(`${a} ok`),i.length>0&&u.push(m.error(`${i.length} error${i.length>1?"s":""}`)),o.length>0&&u.push(m.warning(`${o.length} blocked`)),m.dim(" \u2014 ")+u.join(m.dim(", "))}let s=n.map(a=>a.result?.lineCount).filter(a=>a!==void 0);if(s.length===n.length&&s.length>0){if(s.every(c=>c===s[0]))return m.dim(` \u2014 ${s[0]} lines each`);let l=s.reduce((c,u)=>c+u,0);return m.dim(` \u2014 ${l} lines total`)}if(n.length>0){let a=n.map(l=>$s(l.result,t,60,l.toolName));return m.dim(" \u2014 ")+a.join(m.dim(", "))}return""}function _ee(e,t,n,r){let{color:o,glyph:i}=Td(e),s=" "+o(i+" ")+o.bold(e)+m.dim(` \xD7${t.length}`)+" ",a=NUe(t,r),l=t.map(d=>ui(Oe(d.toolInput)).trim()).join(", "),c=Math.max(0,n-G(s)-G(a)),u=Z(m.toolArg(l),c);return Ce(s+u+a,n)}function Xd(e,t,n){let r=[],o=mr();for(let i of t){let s=e.get(i);if(s.length===1){let a=s[0];if(a.result){if(r.push(Ce(" "+a.prefix+m.dim(" \u2014 ")+Ol(a.result.isError,a.result.failureClass)+" "+$s(a.result,n,60,a.toolName)+$l(a.result),o)),a.diff&&!a.result.isError)for(let l of hi(a.diff,"flush"," "))r.push(Ce(l,o))}else r.push(Ce(" "+a.prefix,o))}else{r.push(_ee(i,s,o,n));let a=s.filter(c=>c.diff&&c.result&&!c.result.isError),l=a.length>1;for(let c of a){if(l){let u=Oe(c.toolInput),d=ui(u).trim()||u.trim();r.push(Ce(" "+m.dim(`\u2500\u2500 ${d} \u2500\u2500`),o))}for(let u of hi(c.diff,"flush"," "))r.push(Ce(u,o))}}}return r}var Pee=b(()=>{"use strict";de();L();Eo();yi();Vd()});function Ce(e,t){return Z(e,t)}function mr(){return jt(ne())}function dD(e,t,n,r,o){let i={kind:"tool",toolUseId:e,toolName:t,toolInput:n,prefix:r,startedAt:Date.now()};return o!==void 0&&(i.agentContext=o),i}function Ur(){let e=k.AGENT_AFK_ASCII;return e&&/^(1|true|yes)$/i.test(e)?BUe:pD}function Yd(e,t){let n="";for(let r of e)n+=r?t.spineClosed:t.spine;return n+=t.spine,n}function oh(e,t){let n="";for(let r=0;r<e.length;r+=2){let o=e.slice(r,r+2);n+=o===t.spine?m.dim(o):o}return n}function cD(e,t,n){if(!e||!e.trim())return[];let r=m.dim(n.textPrefix),o=Math.max(1,mr()-t.length-2-2),i=oh(t,n),s=[];for(let a of e.split(`
1872
1872
  `)){let l=GO(a),c=pe(l,o);for(let u of c.split(`
1873
- `))s.push(i+r+u)}return s}var pD,BUe,cWt,uWt,Vd=b(()=>{"use strict";F();L();we();tt();de();xs();yi();aD();lD();Cee();Pee();pD=Object.freeze({spine:"\u2502 ",spineClosed:" ",lead:" ",turnRoot:"\u25C9 ",midConnector:"\u251C\u2500 ",lastConnector:"\u2570\u2500 ",textPrefix:"\u2502 "}),BUe=Object.freeze({spine:"| ",spineClosed:" ",lead:" ",turnRoot:"o ",midConnector:"+- ",lastConnector:"\\- ",textPrefix:"| "}),cWt=pD.midConnector,uWt=pD.lastConnector});function Iee(e,t,n,r,o){let i=UUe(t.isError,t.failureClass);return bU({toolName:e,status:i,elapsed:n,batchBadge:r||void 0,collapsed:!0,width:o})}function UUe(e,t){return e?_o(t)?"blocked":"error":"done"}var Mee=b(()=>{"use strict";QA();yi()});var Oee,lh,hx=b(()=>{"use strict";L();Eo();yi();de();pr();Vd();Mee();Oee=6,lh=class{entries=new Map;order=[];agentIdStack=[];lastElapsedSecond=new Map;activeTools=null;addStart(t,n,r){let o=Ie(r),i=di(n+o),s=this.agentIdStack.at(-1)??void 0,a=dD(t,n,o,i,s);this.entries.set(t,a),this.order.push(t),Xi.has(n)&&this.agentIdStack.push(t)}addStartWithAgentContext(t,n,r,o,i){let s=Ie(r),a=this.entries.get(t);if(a?.kind==="tool"){a.toolInput=s,a.prefix=di(n+s,i),o!==void 0&&(a.agentContext=o);return}let l=di(n+s,i),c=dD(t,n,s,l,o);this.entries.set(t,c),this.order.push(t)}mergeAgentLabel(t,n,r){let o=this.entries.get(t);if(o?.kind!=="tool"||!Xi.has(o.toolName)||o.toolName==="Agent")return!1;let s=`(${Ie(n)})`;return o.toolName="Agent",o.toolInput=s,o.prefix=di("Agent"+s,r),!0}setAgentContext(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(n===void 0?delete r.agentContext:r.agentContext=n)}setAgentResultSummary(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.agentResultSummary=n)}setThinkingTail(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(n===void 0?delete r.thinkingTail:r.thinkingTail=n)}addResult(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.result=n,r.previewDiff=void 0,r.finishedAt=Date.now()),this.agentIdStack.at(-1)===t&&this.agentIdStack.pop()}notifyToolActivity(t,n){this.activeTools=t>=2?{activeCount:t,toolUseIds:new Set(n)}:null}addDiff(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.diff=n)}addPreviewDiff(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.previewDiff=n)}upsertTextChild(t,n,r){let o=this.entries.get(t);if(o?.kind==="text"){o.text=r,o.agentContext=n;return}let i={kind:"text",toolUseId:t,text:r,agentContext:n};this.entries.set(t,i),this.order.push(t)}removeTextChildrenUnder(t){let n=[];for(let[r,o]of this.entries)o.kind==="text"&&o.agentContext===t&&n.push(r);for(let r of n)this.entries.delete(r);if(n.length>0){let r=new Set(n);this.order=this.order.filter(o=>!r.has(o))}}checkElapsedDisplayNeedsUpdate(){let t=Date.now(),n=!1;for(let r of this.lastElapsedSecond.keys()){let o=this.entries.get(r);(!o||o.kind!=="tool"||o.result!==void 0)&&this.lastElapsedSecond.delete(r)}for(let r of this.order){let o=this.entries.get(r);if(!o||o.kind!=="tool"||o.result!==void 0)continue;let i=t-o.startedAt;if(i<E$)continue;let s=Math.floor(i/1e3),a=this.lastElapsedSecond.get(r);(a===void 0||s!==a)&&(this.lastElapsedSecond.set(r,s),n=!0)}return n}hasPending(){return this.entries.size>0}hasEntry(t){return this.entries.get(t)?.kind==="tool"}findLastSkillEntryId(){for(let t=this.order.length-1;t>=0;t--){let n=this.order[t],r=this.entries.get(n);if(r?.kind==="tool"&&gf.has(r.toolName))return n}}peekTrailingCompletedRootToolName(){for(let t=this.order.length-1;t>=0;t--){let n=this.order[t],r=this.entries.get(n);if(!(!r||r.kind!=="tool")&&!r.agentContext)return r.result===void 0||pt.has(r.toolName)?void 0:r.toolName}}getOverlay(){let t=this.buildChildMap(),n=[],r=Ur(),o=mr(),i=d=>Z(d,o),s=[];for(let d of this.order){let p=this.entries.get(d);!p||p.kind!=="tool"||p.agentContext||s.push(p)}let a=s,l=0;if(s.length>Oee){let d=s.filter(h=>!h.result),p=s.filter(h=>h.result),f=Math.max(0,Oee-d.length),g=new Set(p.slice(-f));l=p.length-g.size,a=s.filter(h=>!h.result||g.has(h))}let u=a.some(d=>pt.has(d.toolName))?m.dim(r.turnRoot):" ";for(let d of a){let p=t.get(d.toolUseId);if(pt.has(d.toolName)&&p&&p.length>0)d.headerEmitted?n.push(i(m.dim(r.turnRoot))):n.push(i(m.dim(r.turnRoot)+d.prefix)),gx(p,t,n,o,void 0,r),d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))));else if(!(pt.has(d.toolName)&&d.headerEmitted))if(pt.has(d.toolName))d.result?n.push(i(m.dim(r.turnRoot)+d.prefix+m.dim(" \u2014 ")+Ol(d.result.isError,d.result.failureClass)+" "+$s(d.result,void 0,60,d.toolName)+$l(d.result))):n.push(i(m.dim(r.turnRoot)+d.prefix+m.dim(" \u2026")+kl(d.startedAt)+rD(d.toolUseId,this.activeTools))),d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))));else if(d.result){let f=(d.finishedAt??Date.now())-d.startedAt,g=o-G(u);if(n.push(i(u+Iee(d.toolName,d.result,f,$l(d.result),g))),d.diff&&!d.result.isError)for(let h of hi(d.diff,"overlay"," "))n.push(i(h))}else{if(n.push(i(u+d.prefix+m.dim(" \u2026")+kl(d.startedAt)+rD(d.toolUseId,this.activeTools))),d.previewDiff)for(let f of th(d.previewDiff," "))n.push(i(f));d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))))}}return l>0&&n.push(i(" "+m.dim(`\u2026 +${l} done`))),n.join(`
1873
+ `))s.push(i+r+u)}return s}var pD,BUe,cWt,uWt,Vd=b(()=>{"use strict";F();L();we();tt();de();xs();yi();aD();lD();Cee();Pee();pD=Object.freeze({spine:"\u2502 ",spineClosed:" ",lead:" ",turnRoot:"\u25C9 ",midConnector:"\u251C\u2500 ",lastConnector:"\u2570\u2500 ",textPrefix:"\u2502 "}),BUe=Object.freeze({spine:"| ",spineClosed:" ",lead:" ",turnRoot:"o ",midConnector:"+- ",lastConnector:"\\- ",textPrefix:"| "}),cWt=pD.midConnector,uWt=pD.lastConnector});function Iee(e,t,n,r,o){let i=UUe(t.isError,t.failureClass);return bU({toolName:e,status:i,elapsed:n,batchBadge:r||void 0,collapsed:!0,width:o})}function UUe(e,t){return e?_o(t)?"blocked":"error":"done"}var Mee=b(()=>{"use strict";QA();yi()});var Oee,lh,hx=b(()=>{"use strict";L();Eo();yi();de();pr();Vd();Mee();Oee=6,lh=class{entries=new Map;order=[];agentIdStack=[];lastElapsedSecond=new Map;activeTools=null;addStart(t,n,r){let o=Ie(r),i=di(n+o),s=this.agentIdStack.at(-1)??void 0,a=dD(t,n,o,i,s);this.entries.set(t,a),this.order.push(t),Xi.has(n)&&this.agentIdStack.push(t)}addStartWithAgentContext(t,n,r,o,i){let s=Ie(r),a=this.entries.get(t);if(a?.kind==="tool"){a.toolInput=s,a.prefix=di(n+s,i),o!==void 0&&(a.agentContext=o);return}let l=di(n+s,i),c=dD(t,n,s,l,o);this.entries.set(t,c),this.order.push(t)}mergeAgentLabel(t,n,r){let o=this.entries.get(t);if(o?.kind!=="tool"||!Xi.has(o.toolName)||o.toolName==="Agent")return!1;let s=`(${Ie(n)})`;return o.toolName="Agent",o.toolInput=s,o.prefix=di("Agent"+s,r),!0}setAgentContext(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(n===void 0?delete r.agentContext:r.agentContext=n)}setAgentResultSummary(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.agentResultSummary=n)}setThinkingTail(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(n===void 0?delete r.thinkingTail:r.thinkingTail=n)}addResult(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.result=n,r.previewDiff=void 0,r.finishedAt=Date.now()),this.agentIdStack.at(-1)===t&&this.agentIdStack.pop()}notifyToolActivity(t,n){this.activeTools=t>=2?{activeCount:t,toolUseIds:new Set(n)}:null}addDiff(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.diff=n)}addPreviewDiff(t,n){let r=this.entries.get(t);r?.kind==="tool"&&(r.previewDiff=n)}upsertTextChild(t,n,r){let o=this.entries.get(t);if(o?.kind==="text"){o.text=r,o.agentContext=n;return}let i={kind:"text",toolUseId:t,text:r,agentContext:n};this.entries.set(t,i),this.order.push(t)}removeTextChildrenUnder(t){let n=[];for(let[r,o]of this.entries)o.kind==="text"&&o.agentContext===t&&n.push(r);for(let r of n)this.entries.delete(r);if(n.length>0){let r=new Set(n);this.order=this.order.filter(o=>!r.has(o))}}checkElapsedDisplayNeedsUpdate(){let t=Date.now(),n=!1;for(let r of this.lastElapsedSecond.keys()){let o=this.entries.get(r);(!o||o.kind!=="tool"||o.result!==void 0)&&this.lastElapsedSecond.delete(r)}for(let r of this.order){let o=this.entries.get(r);if(!o||o.kind!=="tool"||o.result!==void 0)continue;let i=t-o.startedAt;if(i<E$)continue;let s=Math.floor(i/1e3),a=this.lastElapsedSecond.get(r);(a===void 0||s!==a)&&(this.lastElapsedSecond.set(r,s),n=!0)}return n}hasPending(){return this.entries.size>0}hasEntry(t){return this.entries.get(t)?.kind==="tool"}findLastSkillEntryId(){for(let t=this.order.length-1;t>=0;t--){let n=this.order[t],r=this.entries.get(n);if(r?.kind==="tool"&&gf.has(r.toolName))return n}}peekTrailingCompletedRootToolName(){for(let t=this.order.length-1;t>=0;t--){let n=this.order[t],r=this.entries.get(n);if(!(!r||r.kind!=="tool")&&!r.agentContext)return r.result===void 0||pt.has(r.toolName)?void 0:r.toolName}}getOverlay(){let t=this.buildChildMap(),n=[],r=Ur(),o=mr(),i=d=>Z(d,o),s=[];for(let d of this.order){let p=this.entries.get(d);!p||p.kind!=="tool"||p.agentContext||s.push(p)}let a=s,l=0;if(s.length>Oee){let d=s.filter(h=>!h.result),p=s.filter(h=>h.result),f=Math.max(0,Oee-d.length),g=new Set(p.slice(-f));l=p.length-g.size,a=s.filter(h=>!h.result||g.has(h))}let u=a.some(d=>pt.has(d.toolName))?m.dim(r.turnRoot):" ";for(let d of a){let p=t.get(d.toolUseId);if(pt.has(d.toolName)&&p&&p.length>0)d.headerEmitted?n.push(i(m.dim(r.turnRoot))):n.push(i(m.dim(r.turnRoot)+d.prefix)),gx(p,t,n,o,void 0,r),d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))));else if(!(pt.has(d.toolName)&&d.headerEmitted))if(pt.has(d.toolName))d.result?n.push(i(m.dim(r.turnRoot)+d.prefix+m.dim(" \u2014 ")+Ol(d.result.isError,d.result.failureClass)+" "+$s(d.result,void 0,60,d.toolName)+$l(d.result))):n.push(i(m.dim(r.turnRoot)+d.prefix+m.dim(" \u2026")+kl(d.startedAt)+rD(d.toolUseId,this.activeTools))),d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))));else if(d.result){let f=(d.finishedAt??Date.now())-d.startedAt,g=o-G(u);if(n.push(i(u+Iee(d.toolName,d.result,f,$l(d.result),g))),d.diff&&!d.result.isError)for(let h of hi(d.diff,"overlay"," "))n.push(i(h))}else{if(n.push(i(u+d.prefix+m.dim(" \u2026")+kl(d.startedAt)+rD(d.toolUseId,this.activeTools))),d.previewDiff)for(let f of th(d.previewDiff," "))n.push(i(f));d.thinkingTail&&n.push(i(m.dim(r.spine)+m.thinking("\u2307 "+Oe(d.thinkingTail))))}}return l>0&&n.push(i(" "+m.dim(`\u2026 +${l} done`))),n.join(`
1874
1874
  `)}ancestorDepthOf(t){let n=new Set([t]),r=0,o=t,i=32;for(;o!==void 0&&r<i;){let s=this.entries.get(o);if(!s||s.kind!=="tool")break;let a=s.agentContext;if(a===void 0||n.has(a))break;n.add(a);let l=this.entries.get(a);if(!l||l.kind!=="tool")break;r+=1,o=a}return r}flushSource(t,n){let r=this.entries.get(t);if(!r||r.kind!=="tool")return[];let o=Array.from({length:this.ancestorDepthOf(t)},()=>!1),i=[];{let p=[],f=new Set([t]),g=r.agentContext;for(;g!==void 0&&!f.has(g);){f.add(g);let h=this.entries.get(g);if(!h||h.kind!=="tool")break;p.push({entry:h,depth:this.ancestorDepthOf(h.toolUseId)}),g=h.agentContext}p.reverse();for(let{entry:h,depth:y}of p)h.headerEmitted||(i.push(uD(h,Array.from({length:y},()=>!1))),h.headerEmitted=!0)}let s=new Set([t]),a=[t];for(;a.length>0;){let p=a.shift();for(let[f,g]of this.entries){if(s.has(f))continue;(g.kind==="tool",g.agentContext)===p&&(s.add(f),g.kind==="tool"&&a.push(f))}}let l=new Map;for(let p of this.order){if(!s.has(p))continue;let f=this.entries.get(p);if(!f)continue;let g=(f.kind==="tool",f.agentContext);if(!g)continue;let h=l.get(g);h||(h=[],l.set(g,h)),h.push(f)}let c=l.get(r.toolUseId)??[],u=r.headerEmitted?ah(r,c,l,n,o).join(`
1875
- `):sh(r,c,l,n,o);for(let p of s)this.entries.delete(p);this.order=this.order.filter(p=>!s.has(p));let d=u===""?[]:[u];return[...i,...d]}flushCompletedRoots(t){if(this.entries.size===0)return[];let n=this.buildChildMap(),r=[];for(let c of this.order){let u=this.entries.get(c);!u||u.kind!=="tool"||u.agentContext||u.result!==void 0&&r.push(c)}if(r.length===0)return[];let o=[],i=new Map,s=[];for(let c of r){let u=this.entries.get(c);if(!u||u.kind!=="tool")continue;let d=n.get(u.toolUseId);if(pt.has(u.toolName))if(o.push(...Xd(i,s,t)),i.clear(),s.length=0,u.headerEmitted){let p=ah(u,d??[],n,t,[]);o.push(...p)}else o.push(sh(u,d??[],n,t));else i.has(u.toolName)||(i.set(u.toolName,[]),s.push(u.toolName)),i.get(u.toolName).push(u)}o.push(...Xd(i,s,t));let a=new Set(r),l=[...r];for(;l.length>0;){let c=l.shift();for(let[u,d]of this.entries){if(a.has(u))continue;(d.kind==="tool",d.agentContext)===c&&(a.add(u),d.kind==="tool"&&l.push(u))}}for(let c of a)this.entries.delete(c);return this.order=this.order.filter(c=>!a.has(c)),o}flush(t){if(this.entries.size===0)return[];let n=this.buildChildMap(),r=[];for(let a of this.order){let l=this.entries.get(a);!l||l.kind!=="tool"||l.agentContext||r.push(a)}let o=[],i=new Map,s=[];for(let a of r){let l=this.entries.get(a);if(!l||l.kind!=="tool")continue;let c=n.get(l.toolUseId);if(pt.has(l.toolName))if(o.push(...Xd(i,s,t)),i.clear(),s.length=0,l.headerEmitted){let u=ah(l,c??[],n,t,[]);o.push(...u)}else o.push(sh(l,c??[],n,t));else i.has(l.toolName)||(i.set(l.toolName,[]),s.push(l.toolName)),i.get(l.toolName).push(l)}return o.push(...Xd(i,s,t)),this.entries.clear(),this.order=[],this.agentIdStack=[],o}buildChildMap(){let t=new Map;for(let n of this.order){let r=this.entries.get(n);if(!r)continue;let o=(r.kind==="tool",r.agentContext);if(!o)continue;let i=t.get(o);i||(i=[],t.set(o,i)),i.push(r)}return t}}});function mD(e,t){let n=Math.max(0,e),r=n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`,o=Math.ceil(t/4);return` ${m.thinking("\u25C6 thought for "+r+" \xB7 "+o+" tokens")}`}var Qd,yx=b(()=>{"use strict";L();me();Qd=class{buffer="";startedAt=null;endedAt=null;hasEmitted=!1;committedUpTo=0;push(t){this.hasEmitted||(this.buffer+=t,this.startedAt||(this.startedAt=Date.now()))}markEnded(){this.endedAt===null&&this.startedAt!==null&&(this.endedAt=Date.now())}isActive(){return!this.hasEmitted}hasBufferedContent(){return this.buffer.trim().length>0}peek(){return this.buffer}consume(){return this.hasEmitted=!0,this.buffer}peekPhase(){return this.buffer.slice(this.committedUpTo)}drainPhase(){let t=this.buffer.slice(this.committedUpTo);return this.committedUpTo=this.buffer.length,t}collapse(){if(this.hasEmitted||!this.startedAt)return!this.startedAt&&!this.hasEmitted&&qe()&&console.error("[afk:thinking] collapse() short-circuited: no thinking chunks received this turn. Model may not support extended thinking, or API ignored the thinking parameter."),null;this.hasEmitted=!0;let t=this.endedAt??Date.now();return mD(t-this.startedAt,this.buffer.length)}inlineSummary(){if(!this.startedAt||!this.hasBufferedContent())return null;let t=this.endedAt??Date.now(),n=Math.max(0,t-this.startedAt),r=n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`,o=Math.ceil(this.buffer.length/4);return`thought ${r} \xB7 ${o} tokens`}}});function Dee(e){let t={startedAt:Date.now(),lastEventAt:Date.now(),stats:{tokens:0,toolUses:0},contentBuffer:"",done:!1,errored:!1,stalledTicks:0};return e!==void 0&&(t.agentType=e),t}function ch(e,t){return{type:"tool_result",toolUseId:"synthetic",content:e,isError:t}}function Lee(e){let t=["Done"],n=[];e.stats.toolUses&&n.push(Ii(e.stats.toolUses)),e.stats.tokens&&n.push(`${Ae(e.stats.tokens)} tokens`);let r=e.responseMetadata?.durationMs,o=Date.now()-e.startedAt;typeof r=="number"&&(n.push(he(r)),o>r*1.5&&o-r>=1e3&&n.push(`${he(o)} wall`)),n.length===0&&o>0&&n.push(he(o));let i=e.thinkingLane?.inlineSummary();return i&&n.push(i),n.length>0&&t.push(`(${n.join(" \xB7 ")})`),t.join(" ")}var Dl,Zd=b(()=>{"use strict";nt();Dl="__main__"});function Fee(e,t){let n=[];for(let[r,o]of e)r!==Dl&&(o.done||o.errored||n.push({sourceId:r,source:o,silentMs:Math.max(0,t-o.lastEventAt)}));return n}function Sx(e,t=Date.now()){return e?Fee(e,t).length:0}function HUe(e){if(e.silentMs>=wx)return"no output (waiting)";let t=e.source.lastProgressSummary;if(t)return t;let n=e.source.stats.toolUses;if(n>0)return Ii(n)}function WUe(e){return`${e.label} \xB7 ${e.clause}`}function vx(e,t=Date.now()){if(!e.sources||!e.childActivity)return;let n=e.childActivity.select(e.sources,t);if(!n)return;let r=e.sources.get(n.sourceId);if(r)return{activity:WUe(n),stats:{toolUses:r.stats.toolUses,totalTokens:r.stats.tokens,durationMs:Math.max(0,t-r.startedAt)}}}function kx(e){return{taskId:KUe,description:"Working",totalTokens:e.totalTokens,toolUses:e.toolUses,durationMs:e.durationMs}}var jUe,wx,bx,KUe,uh=b(()=>{"use strict";nt();Zd();jUe=3e3,wx=8e3;bx=class{prev;select(t,n=Date.now()){let r=Fee(t,n);if(r.length===0){this.prev=void 0;return}r.sort((c,u)=>c.silentMs-u.silentMs||c.sourceId.localeCompare(u.sourceId));let o=r[0],i=this.prev?r.find(c=>c.sourceId===this.prev):void 0,a=i!==void 0&&(i.silentMs<jUe||o.sourceId===i.sourceId)?i:o;this.prev=a.sourceId;let l=HUe(a);if(l!==void 0)return{sourceId:a.sourceId,label:a.source.agentType??a.sourceId,clause:l,quiet:a.silentMs>=wx}}reset(){this.prev=void 0}};KUe="__child_activity__"});var Tx,Nee=b(()=>{"use strict";Tx=class{beforeContent=[];afterSubagent=new Map;afterContent=[];schedule(t){let{anchor:n}=t;if(n==="before-content")this.beforeContent.push(t);else if(n==="after-content")this.afterContent.push(t);else{let r=n.slice(15),o=this.afterSubagent.get(r);o||(o=[],this.afterSubagent.set(r,o)),o.push(t)}}drainSubagent(t){for(let r of this.beforeContent.splice(0))for(let o of r.commits)o();let n=this.afterSubagent.get(t);if(n){this.afterSubagent.delete(t);for(let r of n)for(let o of r.commits)o()}}async flushAll(t){for(let n of this.beforeContent.splice(0))for(let r of n.commits)r();if(t)try{await t()}catch{}for(let[n,r]of Array.from(this.afterSubagent)){this.afterSubagent.delete(n);for(let o of r)for(let i of o.commits)i()}for(let n of this.afterContent.splice(0))for(let r of n.commits)r()}}});var xx,Bee=b(()=>{"use strict";xx=class{sink;order;slots=new Map;dirty=!1;constructor(t,n){this.sink=t,this.order=[...n]}register(t){this.slots.set(t.key,t),this.dirty=!0}markDirty(t){this.slots.has(t)&&(this.dirty=!0)}flush(){if(!this.dirty)return;this.dirty=!1;let t=[];for(let n of this.order){let r=this.slots.get(n);if(r===void 0)continue;let o=r.render();o.length>0&&t.push(o)}this.sink.setOverlay(t.join(`
1875
+ `):sh(r,c,l,n,o);for(let p of s)this.entries.delete(p);this.order=this.order.filter(p=>!s.has(p));let d=u===""?[]:[u];return[...i,...d]}flushCompletedRoots(t){if(this.entries.size===0)return[];let n=this.buildChildMap(),r=[];for(let c of this.order){let u=this.entries.get(c);!u||u.kind!=="tool"||u.agentContext||u.result!==void 0&&r.push(c)}if(r.length===0)return[];let o=[],i=new Map,s=[];for(let c of r){let u=this.entries.get(c);if(!u||u.kind!=="tool")continue;let d=n.get(u.toolUseId);if(pt.has(u.toolName))if(o.push(...Xd(i,s,t)),i.clear(),s.length=0,u.headerEmitted){let p=ah(u,d??[],n,t,[]);o.push(...p)}else o.push(sh(u,d??[],n,t));else i.has(u.toolName)||(i.set(u.toolName,[]),s.push(u.toolName)),i.get(u.toolName).push(u)}o.push(...Xd(i,s,t));let a=new Set(r),l=[...r];for(;l.length>0;){let c=l.shift();for(let[u,d]of this.entries){if(a.has(u))continue;(d.kind==="tool",d.agentContext)===c&&(a.add(u),d.kind==="tool"&&l.push(u))}}for(let c of a)this.entries.delete(c);return this.order=this.order.filter(c=>!a.has(c)),o}flush(t){if(this.entries.size===0)return[];let n=this.buildChildMap(),r=[];for(let a of this.order){let l=this.entries.get(a);!l||l.kind!=="tool"||l.agentContext||r.push(a)}let o=[],i=new Map,s=[];for(let a of r){let l=this.entries.get(a);if(!l||l.kind!=="tool")continue;let c=n.get(l.toolUseId);if(pt.has(l.toolName))if(o.push(...Xd(i,s,t)),i.clear(),s.length=0,l.headerEmitted){let u=ah(l,c??[],n,t,[]);o.push(...u)}else o.push(sh(l,c??[],n,t));else i.has(l.toolName)||(i.set(l.toolName,[]),s.push(l.toolName)),i.get(l.toolName).push(l)}return o.push(...Xd(i,s,t)),this.entries.clear(),this.order=[],this.agentIdStack=[],o}buildChildMap(){let t=new Map;for(let n of this.order){let r=this.entries.get(n);if(!r)continue;let o=(r.kind==="tool",r.agentContext);if(!o)continue;let i=t.get(o);i||(i=[],t.set(o,i)),i.push(r)}return t}}});function mD(e,t){let n=Math.max(0,e),r=n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`,o=Math.ceil(t/4);return` ${m.thinking("\u25C6 thought for "+r+" \xB7 "+o+" tokens")}`}var Qd,yx=b(()=>{"use strict";L();me();Qd=class{buffer="";startedAt=null;endedAt=null;hasEmitted=!1;committedUpTo=0;push(t){this.hasEmitted||(this.buffer+=t,this.startedAt||(this.startedAt=Date.now()))}markEnded(){this.endedAt===null&&this.startedAt!==null&&(this.endedAt=Date.now())}isActive(){return!this.hasEmitted}hasBufferedContent(){return this.buffer.trim().length>0}peek(){return this.buffer}consume(){return this.hasEmitted=!0,this.buffer}peekPhase(){return this.buffer.slice(this.committedUpTo)}drainPhase(){let t=this.buffer.slice(this.committedUpTo);return this.committedUpTo=this.buffer.length,t}collapse(){if(this.hasEmitted||!this.startedAt)return!this.startedAt&&!this.hasEmitted&&qe()&&console.error("[afk:thinking] collapse() short-circuited: no thinking chunks received this turn. Model may not support extended thinking, or API ignored the thinking parameter."),null;this.hasEmitted=!0;let t=this.endedAt??Date.now();return mD(t-this.startedAt,this.buffer.length)}inlineSummary(){if(!this.startedAt||!this.hasBufferedContent())return null;let t=this.endedAt??Date.now(),n=Math.max(0,t-this.startedAt),r=n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`,o=Math.ceil(this.buffer.length/4);return`thought ${r} \xB7 ${o} tokens`}}});function Dee(e){let t={startedAt:Date.now(),lastEventAt:Date.now(),stats:{tokens:0,toolUses:0},contentBuffer:"",done:!1,errored:!1,stalledTicks:0};return e!==void 0&&(t.agentType=e),t}function ch(e,t){return{type:"tool_result",toolUseId:"synthetic",content:e,isError:t}}function Lee(e){let t=["Done"],n=[];e.stats.toolUses&&n.push(Ii(e.stats.toolUses)),e.stats.tokens&&n.push(`${Ae(e.stats.tokens)} tokens`);let r=e.responseMetadata?.durationMs,o=Date.now()-e.startedAt;typeof r=="number"&&(n.push(he(r)),o>r*1.5&&o-r>=1e3&&n.push(`${he(o)} wall`)),n.length===0&&o>0&&n.push(he(o));let i=e.thinkingLane?.inlineSummary();return i&&n.push(i),n.length>0&&t.push(`(${n.join(" \xB7 ")})`),t.join(" ")}var Dl,Zd=b(()=>{"use strict";nt();Dl="__main__"});function Fee(e,t){let n=[];for(let[r,o]of e)r!==Dl&&(o.done||o.errored||n.push({sourceId:r,source:o,silentMs:Math.max(0,t-o.lastEventAt)}));return n}function Sx(e,t=Date.now()){return e?Fee(e,t).length:0}function HUe(e){if(e.silentMs>=wx)return"no output (waiting)";let t=e.source.lastProgressSummary;if(t)return t;let n=e.source.stats.toolUses;if(n>0)return Ii(n)}function WUe(e){return`${e.label} \xB7 ${e.clause}`}function vx(e,t=Date.now()){if(!e.sources||!e.childActivity)return;let n=e.childActivity.select(e.sources,t);if(!n)return;let r=e.sources.get(n.sourceId);if(r)return{activity:WUe(n),stats:{toolUses:r.stats.toolUses,totalTokens:r.stats.tokens,durationMs:Math.max(0,t-r.startedAt)}}}function kx(e){return{taskId:KUe,description:"Working",totalTokens:e.totalTokens,toolUses:e.toolUses,durationMs:e.durationMs}}var jUe,wx,bx,KUe,uh=b(()=>{"use strict";nt();Zd();jUe=3e3,wx=8e3;bx=class{prev;select(t,n=Date.now()){let r=Fee(t,n);if(r.length===0){this.prev=void 0;return}r.sort((c,u)=>c.silentMs-u.silentMs||c.sourceId.localeCompare(u.sourceId));let o=r[0],i=this.prev?r.find(c=>c.sourceId===this.prev):void 0,a=i!==void 0&&(i.silentMs<jUe||o.sourceId===i.sourceId)?i:o;this.prev=a.sourceId;let l=HUe(a);if(l!==void 0)return{sourceId:a.sourceId,label:a.source.agentType??a.sourceId,clause:l,quiet:a.silentMs>=wx}}reset(){this.prev=void 0}};KUe="__child_activity__"});var Tx,Nee=b(()=>{"use strict";Tx=class{beforeContent=[];afterSubagent=new Map;afterContent=[];schedule(t){let{anchor:n}=t;if(n==="before-content")this.beforeContent.push(t);else if(n==="after-content")this.afterContent.push(t);else{let r=n.slice(15),o=this.afterSubagent.get(r);o||(o=[],this.afterSubagent.set(r,o)),o.push(t)}}drainSubagent(t){for(let r of this.beforeContent.splice(0))for(let o of r.commits)o();let n=this.afterSubagent.get(t);if(n){this.afterSubagent.delete(t);for(let r of n)for(let o of r.commits)o()}}async flushAll(t){for(let n of this.beforeContent.splice(0))for(let r of n.commits)r();if(t)try{await t()}catch{}for(let[n,r]of Array.from(this.afterSubagent)){this.afterSubagent.delete(n);for(let o of r)for(let i of o.commits)i()}for(let n of this.afterContent.splice(0))for(let r of n.commits)r()}}});var xx,Bee=b(()=>{"use strict";xx=class{sink;order;slots=new Map;dirty=!1;constructor(t,n){this.sink=t,this.order=[...n]}register(t){this.slots.set(t.key,t),this.dirty=!0}markDirty(t){this.slots.has(t)&&(this.dirty=!0)}flush(){if(!this.dirty)return;this.dirty=!1;let t=[];for(let n of this.order){let r=this.slots.get(n);if(r===void 0)continue;let o=r.render();o.length>0&&t.push(o)}this.sink.setOverlay(t.join(`
1876
1876
  `))}invalidate(){this.dirty=!0}}});function Uee(){return{stage:"observing",pendingTools:new Set}}function jee(e,t){let n=e.stage;switch(t.type){case"chunk":{let r=t.chunk;r.type==="tool_use_detail"?(e.pendingTools.add(r.toolUseId),e.stage="acting"):r.type==="tool_result"?(e.pendingTools.delete(r.toolUseId),e.stage=e.pendingTools.size>0?"acting":"updating"):r.type==="thinking"?e.pendingTools.size===0&&(e.stage="modeling"):r.type==="content"&&e.pendingTools.size===0&&(e.stage="choosing");break}case"done":e.pendingTools.clear();break;default:break}return e.stage!==n}function zUe(e,t){return e==="observing"?t.dim("\xB7 idle"):GUe.map(r=>{let o=r===e,i=o?"\u25C6":"\u25C7",s=qUe[r],a=`${i} ${s}`;return o?t.accent(t.bold(a)):t.dim(a)}).join(t.dim(" \xB7 "))}var GUe,qUe,Ex,Rx=b(()=>{"use strict";we();L();F();GUe=["observing","modeling","choosing","acting","updating"],qUe={observing:"observe",modeling:"model",choosing:"choose",acting:"act",updating:"update"};Ex=class{stream;getExtraRows;started=!1;currentStage="observing";resizeUnsub=null;onRowCountChange;constructor(t){this.stream=t.stream??process.stdout,this.getExtraRows=t.getExtraRows}setRowCountChangeHandler(t){this.onRowCountChange=t}start(){this.started||Be()||(this.started=!0,this.onRowCountChange?.(1),this.resizeUnsub=Ge.subscribe(()=>this.repaint(this.currentStage)),this.repaint(this.currentStage))}stop(){this.started&&(this.started=!1,this.resizeUnsub&&(this.resizeUnsub(),this.resizeUnsub=null),this.clearRow(),this.onRowCountChange?.(0))}repaint(t){if(!this.started||!this.stream.isTTY)return;this.currentStage=t;let n=this.stream.rows??24,r=this.getExtraRows(),o=Math.max(1,n-r);this.stream.write("\x1B[s"),this.stream.write(`\x1B[${o};1H`),this.stream.write("\x1B[2K"),this.stream.write(" "+zUe(t,{dim:m.dim,accent:m.brand,bold:m.bold})),this.stream.write("\x1B[u")}redraw(){this.repaint(this.currentStage)}clearRow(){if(!this.stream.isTTY)return;let t=this.stream.rows??24,n=this.getExtraRows(),r=Math.max(1,t-n);this.stream.write("\x1B[s"),this.stream.write(`\x1B[${r};1H`),this.stream.write("\x1B[2K"),this.stream.write("\x1B[u")}}});function Hee(e,t=2){if(t<1||!Number.isInteger(t))throw new RangeError(`makeDedupingLineWriter: maxRepeat must be a positive integer, got ${t}`);let n=null,r=0,o=()=>{if(n!==null&&r>t){let i=r-t;e.line(` \u2026 (line repeated ${i} more time${i===1?"":"s"})`)}};return{line(i){let s=i??"";s===n?(r++,r<=t&&e.line(s)):(o(),n=s,r=1,e.line(s))},raw(i){o(),n=null,r=0,e.raw(i)},success(i){o(),n=null,r=0,e.success(i)},info(i){o(),n=null,r=0,e.info(i)},warn(i){o(),n=null,r=0,e.warn(i)},error(i){o(),n=null,r=0,e.error(i)},flush(){o(),n=null,r=0}}}var Wee=b(()=>{"use strict"});import JUe from"wrap-ansi";function ep(e,t){let n=t.maxLines??YUe,r=Math.max(XUe,jt(t.cols-Ax.length)),o=n*r*QUe,i=e,s=0;if(e.length>o){i=e.slice(-o);let f=i.length-i.replace(/^\s+/,"").length;s=e.length-i.length+f}let a=i.replace(/\s+/g," ").trim();if(!a)return"";let c=JUe(a,r,{hard:!0,trim:!0,wordWrap:!0}).split(`
1877
1877
  `),u=c,d=s;if(c.length>n){let f=c.slice(0,c.length-n);d+=f.reduce((g,h,y)=>g+h.length+(y>0?1:0),0),u=c.slice(-n)}let p=[];p.push(Ax+m.thinking(VUe));for(let f of u)p.push(Ax+m.thinking(f));return d>0&&p.push(Ax+m.dim(`\u22EF +${d} chars earlier`)),p.join(`
1878
- `)}var VUe,Ax,YUe,XUe,QUe,Cx=b(()=>{"use strict";L();xs();VUe="\u25C6 thinking",Ax=" ",YUe=5,XUe=16,QUe=4});function Kee(e,t){if(e.disposed||e.ttfbDone||e.ttfbStartedAt===void 0||!e.isTTY||!e.overlayComposer)return!1;let n=t-e.ttfbStartedAt;if(n<2e3)return!1;let o=`ttfb:${Math.floor(n/1e3)}`;return e.lastTtfbAnnotation===o?!1:(e.lastTtfbAnnotation=o,e.overlayComposer.markDirty("progress-banner"),!0)}function Gee(e,t,n){return e?!1:(t(),n?(n.markDirty("progress-banner"),!0):!1)}var fD=b(()=>{"use strict"});function qee(e,t){e.register({key:"thinking-live",render:()=>t.thinkingMode!=="live"&&t.thinkingMode!=="digest"||!t.thinkingLane.isActive()||!t.thinkingLane.hasBufferedContent()?"":ep(t.thinkingLane.peekPhase(),{cols:ne()})??""}),e.register({key:"subagent-status",render:()=>{let n=t.getActiveSubagents?[...t.getActiveSubagents().values()]:[];return mU(n)}}),e.register({key:"markdown-pending",render:()=>{let n=t.streamingMarkdownRef.current;return n?n.renderPending():""}}),e.register({key:"tool-lane",render:()=>t.toolLane.hasPending()?t.toolLane.getOverlay():""}),e.register({key:"progress-banner",render:()=>{let n=[],r=t.getSoftStopping(),o=mT(t.thinkingLane.peekPhase()),i=o?void 0:vx(t),s=o??i?.activity,a=Sx(t.sources);for(let l of t.lastProgressByTask.values()){let c=i?{...l,...i.stats,lastToolName:void 0}:l;n.push(...ul(c,void 0,s,r,a))}return r&&n.length===0&&n.push(...ul({taskId:"__soft_stop__",description:"Turn",totalTokens:0,toolUses:0,durationMs:0},void 0,void 0,!0,a)),i&&n.length===0&&n.push(...ul(kx(i.stats),void 0,s,r,a)),n.length>0?n.join(`
1878
+ `)}var VUe,Ax,YUe,XUe,QUe,Cx=b(()=>{"use strict";L();xs();VUe="\u25C6 thinking",Ax=" ",YUe=5,XUe=16,QUe=4});function Kee(e,t){if(e.disposed||e.ttfbDone||e.ttfbStartedAt===void 0||!e.isTTY||!e.overlayComposer)return!1;let n=t-e.ttfbStartedAt;if(n<2e3)return!1;let o=`ttfb:${Math.floor(n/1e3)}`;return e.lastTtfbAnnotation===o?!1:(e.lastTtfbAnnotation=o,e.overlayComposer.markDirty("progress-banner"),!0)}function Gee(e,t,n){return e?!1:(t(),n?(n.markDirty("progress-banner"),!0):!1)}var fD=b(()=>{"use strict"});function qee(e,t){e.register({key:"thinking-live",render:()=>t.thinkingMode!=="live"&&t.thinkingMode!=="digest"||!t.thinkingLane.isActive()||!t.thinkingLane.hasBufferedContent()?"":ep(t.thinkingLane.peekPhase(),{cols:ne()})??""}),e.register({key:"subagent-status",render:()=>{let n=t.getActiveSubagents?[...t.getActiveSubagents().values()]:[];return mU(n)}}),e.register({key:"markdown-pending",render:()=>{let n=t.streamingMarkdownRef.current;return n?n.renderPending():""}}),e.register({key:"tool-lane",render:()=>t.toolLane.hasPending()?t.toolLane.getOverlay():""}),e.register({key:"progress-banner",render:()=>{let n=[],r=t.getSoftStopping(),o=mT(t.thinkingLane.peekPhase()),i=o?void 0:vx(t),s=o??i?.activity,a=Sx(t.sources);for(let l of t.lastProgressByTask.values()){let c=i?{...l,...i.stats,lastToolName:void 0}:l;n.push(...ul(c,void 0,s,r,a))}return r&&n.length===0&&n.push(...ul({taskId:"__soft_stop__",description:"Turn",totalTokens:0,toolUses:0,durationMs:0},void 0,void 0,!0,a)),i&&n.length===0&&n.push(...ul(kx(i.stats),void 0,s,r,a)),n.length>0?n.join(`
1879
1879
  `):""}}),e.register({key:"interrupt",render:()=>nje(t.getInterrupting())})}function nje(e){return e?wU({status:"interrupting"}):""}function zee(e,t){return Ge.subscribe(()=>{t||!e||e.invalidate()})}function Jee(e){if(e.disposed)return!1;let t=!1,n=Date.now();for(let[o,i]of e.sources){if(i.done||i.errored||!i.syntheticAgentToolUseId)continue;let s=n-i.lastEventAt;if(s>ZUe)if(i.stalledTicks+=1,i.stalledTicks>=tje*2)qe()&&process.stderr.write(`[stream-renderer] auto_settle_timeout ${JSON.stringify({sourceId:o,elapsedMs:s,syntheticAgentToolUseId:i.syntheticAgentToolUseId})}
1880
1880
  `),e.toolLane.addResult(i.syntheticAgentToolUseId,ch("[no-result \u2014 timed out]",!0)),i.done=!0,t=!0;else{let a=i.agentType??o,l=eje+he(s);i.pauseAnnotation!==l&&(i.pauseAnnotation=l,e.toolLane.addStartWithAgentContext(i.syntheticAgentToolUseId,"Agent",`(${a})${l}`,void 0),t=!0)}}e.toolLane.checkElapsedDisplayNeedsUpdate()&&(t=!0);let r=Kee(e,n);return(t||r)&&e.isTTY&&e.overlayComposer&&(t&&e.overlayComposer.markDirty("tool-lane"),e.overlayComposer.flush()),t}var ZUe,eje,tje,Vee=b(()=>{"use strict";we();nt();Cx();Cg();ZA();we();me();Zd();uh();fD();ht();ZUe=3e4,eje=" \xB7 waiting ",tje=375});function Yee(e){let t=e.overlayComposer;if(e.disposed||!e.isTTY||!t)return!1;let n=Date.now(),r=!1;for(let[o,i]of e.sources){if(o===Dl||i.done||i.errored)continue;let s=Math.max(0,n-i.lastEventAt);if(s<wx){i.quietBannerAnnounced=!1;continue}i.quietBannerAnnounced||(i.quietBannerAnnounced=!0,r=!0,qe()&&process.stderr.write(`[stream-renderer] progress_banner_quiet ${JSON.stringify({sourceId:o,silentMs:s})}
1881
1881
  `))}return r&&(t.markDirty("progress-banner"),t.flush()),r}var Xee=b(()=>{"use strict";me();Zd();uh()});function Qee(e){return{out:e.out,isTTY:e.isTTY,compositor:e.compositor,overlayComposer:e.overlayComposer,toolLane:e.toolLane,thinkingLane:e.thinkingLane,thinkingMode:e.thinkingMode,streamingMarkdown:e.streamingMarkdown,coordinator:e.coordinator,lastProgressByTask:e.lastProgressByTask,...e.sources?{sources:e.sources}:{},...e.childActivity?{childActivity:e.childActivity}:{},...e.isTTY&&e.stageTracker?{stageTracker:e.stageTracker}:{},...e.activeSkillName?{activeSkillName:e.activeSkillName}:{}}}function gD(e){return{isTTY:e.isTTY,compositor:e.compositor,toolLane:e.toolLane,out:e.out,streamingMarkdown:e.streamingMarkdown,thinkingMode:e.thinkingMode,orchestratorCtx:e.orchestratorCtx}}function Zee(e){if(e.parentId===void 0)return;let t=e.sources.get(e.parentId);if(t!==void 0)return t.syntheticAgentToolUseId;if(e.toolLane.hasEntry(e.parentId))return e.parentId;qe()&&process.stderr.write(`[stream-renderer] parentId_fallback_unresolved ${JSON.stringify({parentId:e.parentId,sourceId:e.sourceId})}
@@ -1890,7 +1890,7 @@ ${f.body}`);if(g.length>0){let y=n.get(p)??[],w=new Set([...y,...g]);n.set(p,Arr
1890
1890
 
1891
1891
  `);if(t!==-1&&!dh(e.slice(0,t)))return t+2;let n=/\n {0,3}(?:```|~~~)[ \t]*\n/g,r;for(;(r=n.exec(e))!==null;){let o=r.index+r[0].length;if(!dh(e.slice(0,o)))return o;n.lastIndex=r.index+1}return-1}async function rte(){try{let t=(await import("log-update")).default,n=(r=>{t(r)});return n.clear=()=>t.clear(),n}catch{return null}}function ote(e){return e.overlayComposer?(e.overlayComposer.markDirty("markdown-pending"),e.overlayComposer.flush(),!0):e.compositor?(e.compositor.setOverlay(e.indented),!0):!1}function ite(e,t){return e?e+`
1892
1892
 
1893
- `+t:t}function ste(e,t,n){return n&&clearTimeout(n),setTimeout(e,t)}var ate=b(()=>{"use strict";we();_i();tt();xs()});import{Lexer as ije}from"marked";var Px,lte=b(()=>{"use strict";we();ate();Px=class{out;throttleMs;indent;buffer="";committed="";throttleTimer=null;logUpdate=null;isTTY;flushing=!1;compositor;overlayComposer;resizeUnsub=null;constructor(t){this.out=t?.out??process.stdout,this.throttleMs=t?.throttleMs??33,this.indent=t?.indent??" ",this.isTTY=this.out.isTTY??!1,this.compositor=t?.compositor??null,this.overlayComposer=t?.overlayComposer??null,this.logUpdate=null,this.isTTY&&(this.resizeUnsub=Ge.subscribe(()=>this.scheduleRepaint()))}async initLogUpdate(){!this.isTTY||this.logUpdate!==null||(this.logUpdate=await rte())}commitBlock(t){if(!t.trim())return;let r=/^ {0,3}(`{3,}|~{3,})/.test(t.trimStart())?yD(this.indent.length):bD(this.indent.length),o=nte(t,this.indent,r);this.compositor&&this.compositor.commitAbove(o+`
1893
+ `+t:t}function ste(e,t,n){return n&&clearTimeout(n),setTimeout(e,t)}var ate=b(()=>{"use strict";we();_i();tt();xs()});import{Lexer as ije}from"marked";var Px,lte=b(()=>{"use strict";we();ate();Px=class{out;throttleMs;indent;buffer="";committed="";throttleTimer=null;logUpdate=null;isTTY;flushing=!1;compositor;overlayComposer;resizeUnsub=null;constructor(t){this.out=t?.out??process.stdout,this.throttleMs=t?.throttleMs??33,this.indent=t?.indent??" ",this.isTTY=this.out.isTTY??!1,this.compositor=t?.compositor??null,this.overlayComposer=t?.overlayComposer??null,this.logUpdate=null,this.isTTY&&(this.resizeUnsub=Ge.subscribe(()=>this.scheduleRepaint()))}async initLogUpdate(){!this.isTTY||this.logUpdate!==null||(this.logUpdate=await rte())}commitBlock(t){if(!t.trim())return;let r=/^ {0,3}(`{3,}|~{3,})/.test(t.trimStart())?yD(this.indent.length):bD(this.indent.length),o=nte(t,this.indent,r);this.compositor&&this.compositor.commitAbove(o+`
1894
1894
 
1895
1895
  `),this.committed=ite(this.committed,o)}scheduleRepaint(){!this.isTTY||this.flushing||(this.throttleTimer=ste(()=>{this.throttleTimer=null,this.repaint()},this.throttleMs,this.throttleTimer))}renderPending(){let n=dh(this.buffer)?yD(this.indent.length):bD(this.indent.length),r=tte(this.buffer,n,this.isTTY&&!this.flushing);return wD(r,this.indent)}syncPendingOverlay(){this.overlayComposer?(this.overlayComposer.markDirty("markdown-pending"),this.overlayComposer.flush()):this.compositor&&this.compositor.setOverlay(this.renderPending())}async repaint(){if(this.flushing)return;let t=this.renderPending();t&&(ote({indented:t,overlayComposer:this.overlayComposer,compositor:this.compositor,logUpdate:this.logUpdate})||(this.logUpdate||await this.initLogUpdate(),this.logUpdate&&(this.flushing||this.logUpdate(t))))}push(t){if(this.flushing)return;this.buffer+=t;let n=_x(this.buffer);for(;n!==-1;){for(;n!==-1&&ije.lex(this.buffer.slice(0,n)).filter(s=>s.type!=="space").at(-1)?.type==="table";){let i=_x(this.buffer.slice(n));if(i===-1){n=-1;break}n+=i}if(n===-1)break;let r=this.buffer.slice(0,n);this.buffer=this.buffer.slice(n),this.syncPendingOverlay(),this.commitBlock(r),n=_x(this.buffer)}this.scheduleRepaint()}async flush(){this.throttleTimer&&(clearTimeout(this.throttleTimer),this.throttleTimer=null),this.flushing=!0,this.overlayComposer?(this.overlayComposer.markDirty("markdown-pending"),this.overlayComposer.flush()):this.compositor&&this.compositor.setOverlay(""),this.buffer.trim()&&(this.commitBlock(this.buffer),this.buffer=""),!(this.compositor||this.overlayComposer)&&(this.isTTY&&this.logUpdate?(this.logUpdate.clear(),this.out.write(this.committed+`
1896
1896
  `)):this.committed&&this.out.write(this.committed+`
@@ -1921,7 +1921,7 @@ ${f.body}`);if(g.length>0){let y=n.get(p)??[],w=new Set([...y,...g]);n.set(p,Arr
1921
1921
  ${e.replace(/<\/system-reminder>/gi,"")}
1922
1922
  </system-reminder>
1923
1923
 
1924
- ${t}`}var _te=b(()=>{"use strict"});function Ite(){Pte||(Pte=!0,$D("review",kte),xte())}var Pte,Wx=b(()=>{"use strict";LD();OD();LD();Cte();_te();Pte=!1});function BD(e,t){let n=`/${e.name}`,r=e.argumentHint?`${n} ${e.argumentHint}`:void 0,o=Ps(e.description);return{name:n,summary:e.description,acceptsAttachments:!0,...r!==void 0?{usage:r}:{},...o?{hint:o}:{},...t&&t.length>0?{flags:t}:{},async handler(i,s,a){let l=Mt(e.name)==="review",c=s,u=[],d=null;if(l){let f=WQ(s);u=f.targets,c=f.cleanedArgs;for(let g of f.unknown)i.out.warn(`/review: unknown --post target "${g}" \u2014 expected "github" or "telegram".`);u.length===0&&f.unknown.length===0&&/--post\b/.test(s)&&i.out.warn('/review: --post needs a target \u2014 try "--post github" or "--post telegram".');try{d=MD(c)}catch{d=null}}let p={name:e.name,description:e.description,handler:async()=>{},context:"inline"};try{let f=await Ux(i,{skillName:e.name,skillMeta:p,args:c,attachments:a,preflight:async()=>{let g=e.name.includes(":")?e.name.split(":").pop()??e.name:e.name,h={skillName:g,rawArgs:c,source:e.source??"plugin",capabilities:{compose:!0,subagents:!0}},y=i.session.current.sessionId,w=Fl(y);return(await Ll(h,{cwd:i.stats.cwd??process.cwd(),artifactDir:w},v=>{k.AFK_SKILL_STREAM_VERBOSE==="1"&&i.out.warn(`preflight(${g}) failed: ${v instanceof Error?v.message:String(v)}`)}))?.manifestBlock}});l&&u.length>0&&await TT(i.out,{targets:u,reviewText:f,prRefFromArgs:d})}catch(f){i.out.line(),i.out.error(`${e.name} failed: ${f instanceof Error?f.message:String(f)}`)}return"continue"}}}async function Kx(e){let t;try{t=await e.supportedCommands()}catch(u){return console.error(m.dim(" \u26A0 Plugin-skill discovery failed: ")+(u instanceof Error?u.message:String(u))),null}let{flags:n,categories:r}=Bg(),o=Bg(await Promise.resolve().then(()=>(U(),uB)).then(u=>u.getBundledPluginsDir()));for(let[u,d]of o.flags){let p=n.get(u)??[];n.set(u,Array.from(new Set([...p,...d])).sort())}for(let[u,d]of o.categories)r.has(u)||r.set(u,d);let i=t.map(u=>{let d=Mt(u.name),p=r.get(d);return{name:u.name,description:u.description??"",...u.argumentHint?{argumentHint:u.argumentHint}:{},...u.whenToUse?{whenToUse:u.whenToUse}:{},...u.source?{source:u.source}:{},...p?{category:p}:{}}}),s=k.AFK_INTERNAL==="1",a=new Set(go().filter(u=>cr(Ye(u),s)).map(Mt)),l=[],c=new Set;for(let u of i){let d=`/${u.name}`;if(Pje.has(d))continue;let p=Mt(u.name),f=n.get(p);if(a.has(p)){let g=u.name.includes(":")?u.name:`plugin:${u.name}`,h={...u,name:g};_s(BD(h,f)),l.push({bare:p,altSlash:`/${g}`,...u.source?{source:u.source}:{}}),c.add(p);continue}_s(BD(u,f))}return D9({discovered:i,collisions:l,shadowedBareNames:c}),_s(G9(i)),i.length}function UD(){return Hn.collisions.length===0?[]:Hn.collisions.map(e=>m.dim(` /${e.bare}: vendored or user skill wins; plugin form ${e.altSlash} stays reachable.`))}async function ph(e){let[t,n]=await Promise.all([Kx(e),KT(e)]);return{skillCount:t,agentCount:n}}var Pje,jD=b(()=>{"use strict";Xt();L();GT();Ht();PD();t$();OD();Wx();F();Ug();WT();Nd();Pje=new Set(["/exit","/quit","/clear","/compact","/help"])});function Mte(e){let t={builtin:0,plugin:0,user:0,project:0,imported:0,command:0};for(let r of e)t[r.source]++;return[["builtin","built-in"],["plugin","plugin"],["user","user"],["project","project"],["imported","imported"],["command","command"]].filter(([r])=>t[r]>0).map(([r,o])=>`${t[r]} ${o}`).join(" \xB7 ")}function Ote(e,t){return e.size===0?null:{added:[...t].filter(n=>!e.has(n)).sort(),removed:[...e].filter(n=>!t.has(n)).sort()}}function $te(e){let{added:t,removed:n}=e;if(t.length===0&&n.length===0)return"";let r=[];t.length&&r.push(`+${t.length}`),n.length&&r.push(`\u2212${n.length}`);let o=`${r.join(" ")} since last reload`,i=[];return t.length>0&&t.length<=3&&i.push(`new: ${t.map(s=>`/${s}`).join(", ")}`),n.length>0&&n.length<=3&&i.push(`gone: ${n.map(s=>`/${s}`).join(", ")}`),i.length>0&&(o+=` (${i.join("; ")})`),o}function Dte(e){if(e.length===0)return[];let t=8,n=e.slice(0,t),r=Math.min(24,n.reduce((i,s)=>Math.max(i,s.name.length),0)),o=n.map(i=>m.dim(` ${i.name.padEnd(r)} ${z9(i)}`));return e.length>t&&o.push(m.dim(` \u2026and ${e.length-t} more`)),o}var HD,WD=b(()=>{"use strict";Fr();Mr();J9();L();GT();jD();Nd();HD={name:"/reload-plugins",summary:"Reload plugin skills from disk and refresh the slash registry",async handler(e){e.out.line(),e.out.info("Reloading plugins\u2026");let t=new Set(Hn.discovered.map(a=>a.name));Dr();try{let a=e.session.current.getQuery();typeof a.reloadPlugins=="function"&&await a.reloadPlugins()}catch(a){e.out.warn(`Plugin reload failed: ${a instanceof Error?a.message:String(a)}`)}let[n,r]=await Promise.all([Kx(e.session.current),KT(e.session.current)]);if(n===null&&r===null)return e.out.error("Could not refresh plugin skills or agents."),e.out.line(),"continue";let o=q9(),i=[];n!==null&&i.push(`${n} skill${n===1?"":"s"}`),r!==null&&i.push(`${r} agent${r===1?"":"s"}`);let s=o.length>0?` from ${o.length} plugin${o.length===1?"":"s"}`:"";if(e.out.success(`Reloaded ${i.join(" + ")}${s}.`),n!==null){let a=Mte(qa()),l=Ote(t,new Set(Hn.discovered.map(d=>d.name))),c=l?$te(l):"",u=[a,c].filter(d=>d.length>0);u.length>0&&e.out.line(m.dim(` ${u.join(" \xB7 ")}`))}for(let a of Dte(o))e.out.line(a);return e.out.line(),"continue"}}});function Lte(){ge(S$),ge(HD)}var Gx=b(()=>{"use strict";Ht();WT();WD();Ug();WT();jD();WD()});var mh=b(()=>{"use strict";kr()});function qx(e){if(e!==void 0&&!(e.fiveHourUtilization===void 0&&e.sevenDayUtilization===void 0))return{...e.fiveHourUtilization!==void 0?{fiveHour:{utilization:e.fiveHourUtilization,...e.fiveHourResetsAt!==void 0?{resetsAt:e.fiveHourResetsAt}:{}}}:{},...e.sevenDayUtilization!==void 0?{sevenDay:{utilization:e.sevenDayUtilization,...e.sevenDayResetsAt!==void 0?{resetsAt:e.sevenDayResetsAt}:{}}}:{},observedAt:e.observedAt}}function Fte(e){return e>Mje?"critical":e>Ije?"caution":"calm"}function Dje(e){return e==="critical"?m.error:e==="caution"?m.warning:m.chrome}function KD(e){let t=Math.floor(e/6e4);if(t<1)return"<1m";let n=Math.floor(t/1440),r=Math.floor(t%1440/60),o=t%60;return n>0?`${n}d${r}h`:r>0?`${r}h${o}m`:`${o}m`}function Lje(e){let t=[];return e.fiveHour!==void 0&&t.push({label:"5h",state:e.fiveHour,severity:Fte(e.fiveHour.utilization)}),e.sevenDay!==void 0&&t.push({label:"7d",state:e.sevenDay,severity:Fte(e.sevenDay.utilization)}),t}function Fje(e){return e.reduce((t,n)=>t===void 0||n.state.utilization>t.state.utilization?n:t,void 0)}function Nje(e){return e.some(t=>t.severity==="critical")?"critical":e.some(t=>t.severity==="caution")?"caution":"calm"}function Nte(e,t=new Date){let n=Lje(e);if(n.length===0)return;let r=Nje(n),o=e.observedAt!==void 0&&t.getTime()-e.observedAt.getTime()>Oje,i=r==="calm"?void 0:Fje(n),s=n.map(l=>{let c=Dje(l.severity),u=`${Math.round(l.state.utilization*100)}%`,d=`${m.meta(l.label)} ${c(u)}`;if(l===i&&l.state.resetsAt!==void 0){let p=l.state.resetsAt.getTime()-t.getTime();p>0&&(d+=` ${m.meta(`${$je}${KD(p)}`)}`)}return d});return{text:(o?m.meta("~"):"")+s.join(m.dim(" \xB7 ")),severity:r,stale:o}}var Ije,Mje,Oje,$je,fh=b(()=>{"use strict";L();Ije=.5,Mje=.8,Oje=600*1e3,$je="\u27F3"});import{statSync as Bje}from"node:fs";function zx(e,t,n){e.totalTurns=t.totalTurns,e.totalCostUsd=t.totalCostUsd,e.unpricedTurns=t.unpricedTurns??0,e.totalTokens=t.totalTokens,e.totalDurationMs=t.totalDurationMs,e.turns=[...t.turns],e.sessionId=t.sessionId??n,e.name=t.name,e.model=t.model,e.sessionStartTime=t.startedAt??Date.now()}function Uje(e){try{return Bje(e).isDirectory()}catch{return!1}}function jte(e,t){if(e!==void 0)return e;if(t!==void 0&&Uje(t))return t}function Jx(e,t){let n=e.turns;if(n.length===0)return;let r=n[n.length-1];if(!r)return;let o=Ute(Bte(r.user),80),i=Ute(jje(Bte(r.assistant)),120);o.length>0&&t.fn(m.dim(` Last: ${o}`)),i.length>0&&t.fn(m.dim(` \u21B3 ${i}`)),t.fn(m.dim(" \u21AA /history for full review"))}function Bte(e){return ve(e).replace(/\s+/g," ").trim()}function jje(e){let t=e.match(/^.*?(?<![A-Za-z]\.[A-Za-z])[.!?](?=\s|$)/);return t?t[0]:e}function Ute(e,t){let n=[...e];return n.length<=t?e:n.slice(0,t-1).join("")+"\u2026"}function GD(e,t){if(t?.getRatio()!==void 0)return t.getRatio();let n=e.turnTokens[e.turnTokens.length-1];return n?(n.footprint??n.input+n.output+n.cache)/at(e.model):0}function fr(e,t,n,r){let o=GD(e,t),i=at(e.model),s,a=t?.getDetail();if(a!==void 0)s=a.used;else{let f=e.turnTokens[e.turnTokens.length-1];f&&(s=f.footprint??f.input+f.output+f.cache)}let l;if(e.turnTokens.length>=2){let f=e.turnTokens.map(h=>(h.footprint??h.input+h.output+h.cache)/i),g=xU(f,5);g.length>0&&(l=g)}let c=n?.getBranch(),u=n?.getPr(),d=qx(RS()),p=e.totalTurns>0?e.totalTurns:void 0;return{model:e.model,cost:e.totalCostUsd,tokens:e.totalTokens,contextPct:o,contextLimit:i,contextUsedTokens:s,contextSparkline:l,permissionMode:e.permissionMode,...e.cwd!==void 0?{cwd:e.cwd}:{},...c!==void 0?{branch:c}:{},...u!==void 0?{pr:u}:{},...d!==void 0?{quotaWindows:d}:{},...p!==void 0?{turnCount:p}:{},...p!==void 0&&r&&r>0?{maxTurns:r}:{}}}var gh,Po=b(()=>{"use strict";vf();mh();rC();fh();L();je();gh={stream:process.stdout,hideCursor:!1,discardStdin:!1}});function ip(e){if(e.type==="chunk"){let t=e.chunk;return t.type==="content"?ve(t.content):t.type==="tool_use_detail"?m.dim(` [tool: ${t.toolName}]`):null}if(e.type==="error")return m.dim(` [error: ${e.error.message}]`);if(e.type==="message"){let t=e.message.content,n=typeof t=="string"?t:JSON.stringify(t);return ve(n)}return null}var Kte,Yx=b(()=>{"use strict";L();je();Kte=ip});function Gte(e){zD=e}function qte(e){JD=e}function Xx(e){return zD||(e.out.error("Background subagent jobs are not available in this session."),null)}function Vje(e,t=120){let n=ve(e).replace(/[\r\n]+/g," ").trim();return n.length>t?`${n.slice(0,t)}\u2026`:n}function Yje(e){let t=zte[e.status],n=e.endedAt!==void 0?he(e.endedAt-e.startedAt):he(Date.now()-e.startedAt),r=Z(e.label,60),o=` ${t} ${m.bold(e.jobId)} ${r} ${m.dim(`(${e.provenance} \xB7 ${e.status} \xB7 ${n} \xB7 ${e.model})`)}`;if(!JD||e.status!=="running")return o;let i=JD.getSummary(e.jobId);if(!i)return o;let s=ne(),a=Vje(i.text,Math.max(40,s-10)),l=Math.round((Date.now()-i.refreshedAt)/1e3),c=i.stale?" [stale]":"",u=m.dim(` \u21B3 ${a} (${l}s ago)${c}`);return`${o}
1924
+ ${t}`}var _te=b(()=>{"use strict"});function Ite(){Pte||(Pte=!0,$D("review",kte),xte())}var Pte,Wx=b(()=>{"use strict";LD();OD();LD();Cte();_te();Pte=!1});function BD(e,t){let n=`/${e.name}`,r=e.argumentHint?`${n} ${e.argumentHint}`:void 0,o=Ps(e.description);return{name:n,summary:e.description,acceptsAttachments:!0,...r!==void 0?{usage:r}:{},...o?{hint:o}:{},...t&&t.length>0?{flags:t}:{},async handler(i,s,a){let l=Mt(e.name)==="review",c=s,u=[],d=null;if(l){let f=WQ(s);u=f.targets,c=f.cleanedArgs;for(let g of f.unknown)i.out.warn(`/review: unknown --post target "${g}" \u2014 expected "github" or "telegram".`);u.length===0&&f.unknown.length===0&&/--post\b/.test(s)&&i.out.warn('/review: --post needs a target \u2014 try "--post github" or "--post telegram".');try{d=MD(c)}catch{d=null}}let p={name:e.name,description:e.description,handler:async()=>{},context:"inline"};try{let f=await Ux(i,{skillName:e.name,skillMeta:p,args:c,attachments:a,preflight:async()=>{let g=e.name.includes(":")?e.name.split(":").pop()??e.name:e.name,h={skillName:g,rawArgs:c,source:e.source??"plugin",capabilities:{compose:!0,subagents:!0}},y=i.session.current.sessionId,w=Fl(y);return(await Ll(h,{cwd:i.stats.cwd??process.cwd(),artifactDir:w},v=>{k.AFK_SKILL_STREAM_VERBOSE==="1"&&i.out.warn(`preflight(${g}) failed: ${v instanceof Error?v.message:String(v)}`)}))?.manifestBlock}});l&&u.length>0&&await TT(i.out,{targets:u,reviewText:f,prRefFromArgs:d})}catch(f){i.out.line(),i.out.error(`${e.name} failed: ${f instanceof Error?f.message:String(f)}`)}return"continue"}}}async function Kx(e){let t;try{t=await e.supportedCommands()}catch(u){return console.error(m.dim(" \u26A0 Plugin-skill discovery failed: ")+(u instanceof Error?u.message:String(u))),null}let{flags:n,categories:r}=Bg(),o=Bg(await Promise.resolve().then(()=>(U(),uB)).then(u=>u.getBundledPluginsDir()));for(let[u,d]of o.flags){let p=n.get(u)??[];n.set(u,Array.from(new Set([...p,...d])).sort())}for(let[u,d]of o.categories)r.has(u)||r.set(u,d);let i=t.map(u=>{let d=Mt(u.name),p=r.get(d);return{name:u.name,description:u.description??"",...u.argumentHint?{argumentHint:u.argumentHint}:{},...u.whenToUse?{whenToUse:u.whenToUse}:{},...u.source?{source:u.source}:{},...p?{category:p}:{}}}),s=k.AFK_INTERNAL==="1",a=new Set(go().filter(u=>cr(Ye(u),s)).map(Mt)),l=[],c=new Set;for(let u of i){let d=`/${u.name}`;if(Pje.has(d))continue;let p=Mt(u.name),f=n.get(p);if(a.has(p)){let g=u.name.includes(":")?u.name:`plugin:${u.name}`,h={...u,name:g};_s(BD(h,f)),l.push({bare:p,altSlash:`/${g}`,...u.source?{source:u.source}:{}}),c.add(p);continue}_s(BD(u,f))}return D9({discovered:i,collisions:l,shadowedBareNames:c}),_s(G9(i)),i.length}function UD(){return Hn.collisions.length===0?[]:Hn.collisions.map(e=>m.dim(` /${e.bare}: vendored or user skill wins; plugin form ${e.altSlash} stays reachable.`))}async function ph(e){let[t,n]=await Promise.all([Kx(e),KT(e)]);return{skillCount:t,agentCount:n}}var Pje,jD=b(()=>{"use strict";Xt();L();GT();Ht();PD();t$();OD();Wx();F();Ug();WT();Nd();Pje=new Set(["/exit","/quit","/clear","/compact","/help"])});function Mte(e){let t={builtin:0,plugin:0,user:0,project:0,imported:0,command:0};for(let r of e)t[r.source]++;return[["builtin","built-in"],["plugin","plugin"],["user","user"],["project","project"],["imported","imported"],["command","command"]].filter(([r])=>t[r]>0).map(([r,o])=>`${t[r]} ${o}`).join(" \xB7 ")}function Ote(e,t){return e.size===0?null:{added:[...t].filter(n=>!e.has(n)).sort(),removed:[...e].filter(n=>!t.has(n)).sort()}}function $te(e){let{added:t,removed:n}=e;if(t.length===0&&n.length===0)return"";let r=[];t.length&&r.push(`+${t.length}`),n.length&&r.push(`\u2212${n.length}`);let o=`${r.join(" ")} since last reload`,i=[];return t.length>0&&t.length<=3&&i.push(`new: ${t.map(s=>`/${s}`).join(", ")}`),n.length>0&&n.length<=3&&i.push(`gone: ${n.map(s=>`/${s}`).join(", ")}`),i.length>0&&(o+=` (${i.join("; ")})`),o}function Dte(e){if(e.length===0)return[];let t=8,n=e.slice(0,t),r=Math.min(24,n.reduce((i,s)=>Math.max(i,s.name.length),0)),o=n.map(i=>m.dim(` ${i.name.padEnd(r)} ${z9(i)}`));return e.length>t&&o.push(m.dim(` \u2026and ${e.length-t} more`)),o}var HD,WD=b(()=>{"use strict";Fr();Mr();J9();L();GT();jD();Nd();HD={name:"/reload-plugins",summary:"Reload plugin skills from disk and refresh the slash registry",async handler(e){e.out.line(),e.out.info("Reloading plugins\u2026");let t=new Set(Hn.discovered.map(a=>a.name));Dr();try{let a=e.session.current.getQuery();typeof a.reloadPlugins=="function"&&await a.reloadPlugins()}catch(a){e.out.warn(`Plugin reload failed: ${a instanceof Error?a.message:String(a)}`)}let[n,r]=await Promise.all([Kx(e.session.current),KT(e.session.current)]);if(n===null&&r===null)return e.out.error("Could not refresh plugin skills or agents."),e.out.line(),"continue";let o=q9(),i=[];n!==null&&i.push(`${n} skill${n===1?"":"s"}`),r!==null&&i.push(`${r} agent${r===1?"":"s"}`);let s=o.length>0?` from ${o.length} plugin${o.length===1?"":"s"}`:"";if(e.out.success(`Reloaded ${i.join(" + ")}${s}.`),n!==null){let a=Mte(qa()),l=Ote(t,new Set(Hn.discovered.map(d=>d.name))),c=l?$te(l):"",u=[a,c].filter(d=>d.length>0);u.length>0&&e.out.line(m.dim(` ${u.join(" \xB7 ")}`))}for(let a of Dte(o))e.out.line(a);return e.out.line(),"continue"}}});function Lte(){ge(S$),ge(HD)}var Gx=b(()=>{"use strict";Ht();WT();WD();Ug();WT();jD();WD()});var mh=b(()=>{"use strict";kr()});function qx(e){if(e!==void 0&&!(e.fiveHourUtilization===void 0&&e.sevenDayUtilization===void 0))return{...e.fiveHourUtilization!==void 0?{fiveHour:{utilization:e.fiveHourUtilization,...e.fiveHourResetsAt!==void 0?{resetsAt:e.fiveHourResetsAt}:{}}}:{},...e.sevenDayUtilization!==void 0?{sevenDay:{utilization:e.sevenDayUtilization,...e.sevenDayResetsAt!==void 0?{resetsAt:e.sevenDayResetsAt}:{}}}:{},observedAt:e.observedAt}}function Fte(e){return e>Mje?"critical":e>Ije?"caution":"calm"}function Dje(e){return e==="critical"?m.error:e==="caution"?m.warning:m.chrome}function KD(e){let t=Math.floor(e/6e4);if(t<1)return"<1m";let n=Math.floor(t/1440),r=Math.floor(t%1440/60),o=t%60;return n>0?`${n}d${r}h`:r>0?`${r}h${o}m`:`${o}m`}function Lje(e){let t=[];return e.fiveHour!==void 0&&t.push({label:"5h",state:e.fiveHour,severity:Fte(e.fiveHour.utilization)}),e.sevenDay!==void 0&&t.push({label:"7d",state:e.sevenDay,severity:Fte(e.sevenDay.utilization)}),t}function Fje(e){return e.reduce((t,n)=>t===void 0||n.state.utilization>t.state.utilization?n:t,void 0)}function Nje(e){return e.some(t=>t.severity==="critical")?"critical":e.some(t=>t.severity==="caution")?"caution":"calm"}function Nte(e,t=new Date){let n=Lje(e);if(n.length===0)return;let r=Nje(n),o=e.observedAt!==void 0&&t.getTime()-e.observedAt.getTime()>Oje,i=r==="calm"?void 0:Fje(n),s=n.map(l=>{let c=Dje(l.severity),u=`${Math.round(l.state.utilization*100)}%`,d=`${m.meta(l.label)} ${c(u)}`;if(l===i&&l.state.resetsAt!==void 0){let p=l.state.resetsAt.getTime()-t.getTime();p>0&&(d+=` ${m.meta(`${$je}${KD(p)}`)}`)}return d});return{text:(o?m.meta("~"):"")+s.join(m.dim(" \xB7 ")),severity:r,stale:o}}var Ije,Mje,Oje,$je,fh=b(()=>{"use strict";L();Ije=.5,Mje=.8,Oje=600*1e3,$je="\u27F3"});import{statSync as Bje}from"node:fs";function zx(e,t,n){e.totalTurns=t.totalTurns,e.totalCostUsd=t.totalCostUsd,e.unpricedTurns=t.unpricedTurns??0,e.totalTokens=t.totalTokens,e.totalDurationMs=t.totalDurationMs,e.turns=[...t.turns],e.sessionId=t.sessionId??n,e.name=t.name,e.model=t.model,e.sessionStartTime=t.startedAt??Date.now()}function Uje(e){try{return Bje(e).isDirectory()}catch{return!1}}function jte(e,t){if(e!==void 0)return e;if(t!==void 0&&Uje(t))return t}function Jx(e,t){let n=e.turns;if(n.length===0)return;let r=n[n.length-1];if(!r)return;let o=Ute(Bte(r.user),80),i=Ute(jje(Bte(r.assistant)),120);o.length>0&&t.fn(m.dim(` Last: ${o}`)),i.length>0&&t.fn(m.dim(` \u21B3 ${i}`)),t.fn(m.dim(" \u21AA /history for full review"))}function Bte(e){return ve(e).replace(/\s+/g," ").trim()}function jje(e){let t=e.match(/^.*?(?<![A-Za-z]\.[A-Za-z])[.!?](?=\s|$)/);return t?t[0]:e}function Ute(e,t){let n=[...e];return n.length<=t?e:n.slice(0,t-1).join("")+"\u2026"}function GD(e,t){if(t?.getRatio()!==void 0)return t.getRatio();let n=e.turnTokens[e.turnTokens.length-1];return n?(n.footprint??n.input+n.output+n.cache)/at(e.model):0}function fr(e,t,n,r){let o=GD(e,t),i=at(e.model),s,a=t?.getDetail();if(a!==void 0)s=a.used;else{let f=e.turnTokens[e.turnTokens.length-1];f&&(s=f.footprint??f.input+f.output+f.cache)}let l;if(e.turnTokens.length>=2){let f=e.turnTokens.map(h=>(h.footprint??h.input+h.output+h.cache)/i),g=xU(f,5);g.length>0&&(l=g)}let c=n?.getBranch(),u=n?.getPr(),d=qx(RS()),p=e.totalTurns>0?e.totalTurns:void 0;return{model:e.model,cost:e.totalCostUsd,tokens:e.totalTokens,contextPct:o,contextLimit:i,contextUsedTokens:s,contextSparkline:l,permissionMode:e.permissionMode,...e.cwd!==void 0?{cwd:e.cwd}:{},...c!==void 0?{branch:c}:{},...u!==void 0?{pr:u}:{},...d!==void 0?{quotaWindows:d}:{},...p!==void 0?{turnCount:p}:{},...p!==void 0&&r&&r>0?{maxTurns:r}:{}}}var gh,Po=b(()=>{"use strict";vf();mh();rC();fh();L();je();gh={stream:process.stdout,hideCursor:!1,discardStdin:!1}});function ip(e){if(e.type==="chunk"){let t=e.chunk;return t.type==="content"?ve(t.content):t.type==="tool_use_detail"?m.dim(` [tool: ${t.toolName}]`):null}if(e.type==="error")return m.dim(` [error: ${e.error.message}]`);if(e.type==="message"){let t=e.message.content,n=typeof t=="string"?t:JSON.stringify(t);return ve(n)}return null}var Kte,Yx=b(()=>{"use strict";L();je();Kte=ip});function Gte(e){zD=e}function qte(e){JD=e}function Xx(e){return zD||(e.out.error("Background subagent jobs are not available in this session."),null)}function Vje(e,t=120){let n=ve(e).replace(/[\r\n]+/g," ").trim();return n.length>t?`${n.slice(0,t)}\u2026`:n}function Yje(e){let t=zte[e.status],n=e.endedAt!==void 0?he(e.endedAt-e.startedAt):he(Date.now()-e.startedAt),r=Z(e.label,60),o=` ${t} ${m.bold(e.jobId)} ${r} ${m.dim(`(${e.provenance} \xB7 ${e.status} \xB7 ${n} \xB7 ${e.model})`)}`;if(!JD||e.status!=="running")return o;let i=JD.getSummary(e.jobId);if(!i)return o;let s=ne(),a=Vje(i.text,Math.max(40,s-10)),l=Math.round((Date.now()-i.refreshedAt)/1e3),c=i.stale?" [stale]":"",u=m.dim(` \u21B3 ${a} (${l}s ago)${c}`);return`${o}
1925
1925
  ${u}`}function VD(e,t){let n=zte[t.status];e.out.line(` ${n} ${m.bold(t.jobId)} ${t.label}`);let r=t.endedAt!==void 0?he(t.endedAt-t.startedAt):he(Date.now()-t.startedAt);e.out.line(` Status: ${t.status} \xB7 ${r}`),e.out.line(` Subagent: ${t.subagentId}`),e.out.line(` Model: ${t.model}`),e.out.line(` Owner: ${t.provenance}`);let o=t.result;if(o?.message?.content){e.out.line("");let i=typeof o.message.content=="string"?o.message.content:JSON.stringify(o.message.content),s=Nr(i,o.stopReason),a=s.split(`
1926
1926
  `).slice(0,40);for(let l of a)e.out.line(` ${l}`);s.split(`
1927
1927
  `).length>40&&e.out.line(m.dim(" \u2026 (truncated; full result available via /bgsub:join again)"))}o?.error&&e.out.error(` Error: ${o.error.message}`)}var zD,JD,zte,Xje,Qje,Zje,e1e,Jte,YD=b(()=>{"use strict";L();nt();we();de();Fv();vt();je();Yx();zte={running:"\u25D0",completed:"\u2713",failed:"\u2717",cancelled:"\u2298"};Xje={name:"/bgsub",summary:"List background subagent jobs",usage:"/bgsub [id]",hint:'When you want to check on background subagent jobs spawned with mode="background" during this session.',async handler(e,t){let n=Xx(e);if(!n)return"continue";let r=t.trim();if(r){let i=n.get(r);return i?(VD(e,i),"continue"):(e.out.error(`No background job with ID "${r}".`),"continue")}let o=n.list();if(o.length===0)return e.out.info('No background subagent jobs. Spawn one by calling the agent tool with mode="background".'),"continue";for(let i of o)e.out.line(Yje(i));return"continue"}},Qje={name:"/bgsub:status",summary:"Show one background job",usage:"/bgsub:status <id>",hint:"When you need the full detail view for one specific background job by its ID.",async handler(e,t){let n=Xx(e);if(!n)return"continue";let r=t.trim();if(!r)return e.out.info("Usage: /bgsub:status <id>"),"continue";let o=n.get(r);return o?(VD(e,o),"continue"):(e.out.error(`No background job with ID "${r}".`),"continue")}},Zje={name:"/bgsub:join",summary:"Wait for a background subagent job and print its result",usage:"/bgsub:join <id>",hint:"When a background subagent has finished and you want to surface its result into the conversation.",async handler(e,t){let n=Xx(e);if(!n)return"continue";let r=t.trim();if(!r)return e.out.info("Usage: /bgsub:join <id>"),"continue";if(n.get(r)){try{await n.join(r)}catch(s){let a=s instanceof Error?s.message:String(s);e.out.error(`/bgsub:join failed: ${a}`)}let i=n.get(r);return i&&VD(e,i),"continue"}let o=await vo.readMeta(r);if(o){e.out.info("Job evicted from memory \u2014 replaying from log."),Zt(o.stopReason)&&(e.out.line(` ${Nr("",o.stopReason).trimEnd()}`),e.out.line(""));let i=0;for await(let s of vo.readEvents(r)){let a=Kte(s);a!==null&&(e.out.line(a),i++)}return i===0&&e.out.info(` (no events recorded for job ${r})`),e.out.line(""),e.out.line(` Status: ${o.status}`+(o.endedAt!==void 0?` \xB7 ended ${new Date(o.endedAt).toISOString()}`:"")),"continue"}return e.out.error(`No background job with ID "${r}".`),"continue"}},e1e={name:"/bgsub:cancel",summary:"Cancel a running background subagent job",usage:"/bgsub:cancel <id>",hint:"When you want to abort a background subagent job that is still in progress.",async handler(e,t){let n=Xx(e);if(!n)return"continue";let r=t.trim();if(!r)return e.out.info("Usage: /bgsub:cancel <id>"),"continue";let o=n.get(r);return o?o.status!=="running"?(e.out.info(`Job ${r} is already ${o.status}; nothing to cancel.`),"continue"):(await n.cancelJob(r)?e.out.line(m.dim(` \u2192 cancellation requested for ${r}`)):e.out.info(`Job ${r} could not be cancelled (already terminal).`),"continue"):(e.out.error(`No background job with ID "${r}".`),"continue")}},Jte=[Xje,Qje,Zje,e1e]});function r1e(e){return e==="succeeded"||e==="completed"?"done":e==="failed"?"error":e==="running"?"running":e==="cancelled"?"blocked":"warn"}function XD(e,t,n){let r=[m.bold(`Subagent: ${e.slice(0,20)}`),...n?[m.dim(`type: ${n}`)]:[],`status: ${Pi(r1e(t))}`];return[ae(void 0,80),r.join(" "),ae(void 0,80)].join(`
@@ -2164,13 +2164,13 @@ ${t.partialOutput}`:"";return`Subagent failed \u2014 ${r}${o}`}let n=t.message?.
2164
2164
  `),y();try{for await(let S of s.session.getOutputStream()){if(g.aborted)break;let v=ip(S);v!==null&&(l.write(`\r\x1B[K${u(v)}
2165
2165
  `),y())}}catch{}finally{process.stdin.removeListener("data",w),g.aborted||(l.write(`\r\x1B[K
2166
2166
  `+u(m.dim(" Subagent completed. Press Esc to return."))+`
2167
- `),await K2e());try{process.stdin.setRawMode?.(!1)}catch{}dR=!1,n.resumeInput(),n.repaint()}return!0}function K2e(){return new Promise(e=>{try{process.stdin.setRawMode?.(!0)}catch{}let t=()=>{process.stdin.removeListener("data",n),process.stdin.removeListener("close",t),clearTimeout(r);try{process.stdin.setRawMode?.(!1)}catch{}e()},n=o=>{o.toString()==="\x1B"&&t()},r=setTimeout(t,3e4);process.stdin.on("data",n),process.stdin.on("close",t)})}function nae(e){let t=e.getCompositor?.();return t?()=>{if(dR)return!1;let n=ene();return!n||!n.list().some(o=>o.status==="running"||o.status==="idle")?!1:(W2e({manager:n,compositor:t}),!0)}:null}L();nt();Ac();mh();vf();fh();fh();var G2e=.8,q2e=.95,z2e=1;function rae(e){return e>=z2e?"over":e>=q2e?"near":e>=G2e?"caution":"quiet"}function J2e(e){let t=[];return e.fiveHour!==void 0&&t.push({label:"5h",state:e.fiveHour}),e.sevenDay!==void 0&&t.push({label:"7d",state:e.sevenDay}),t}var V2e=7200*1e3;function Y2e(e,t,n){return n?e.resetsAt!==void 0&&e.resetsAt.getTime()-t.getTime()>V2e?"turns stop at the cap \u2014 the reset is too far out to wait":"AFK pauses and auto-resumes at the cap":"turns stop at the cap \u2014 auto-resume is off"}function X2e(e,t){if(e.resetsAt===void 0)return;let n=e.resetsAt.getTime()-t.getTime();if(!(n<=0))return`resets in ${KD(n)}`}function oae(e,t=new Date,n={}){if(e===void 0)return{tier:"quiet",text:null};let r=J2e(e),o=r.reduce((p,f)=>p===void 0||f.state.utilization>p.state.utilization?f:p,void 0);if(o===void 0)return{tier:"quiet",text:null};let i=rae(o.state.utilization);if(i==="quiet")return{tier:i,text:null};let s=Math.round(o.state.utilization*100),a=X2e(o.state,t),l=r.filter(p=>p!==o&&rae(p.state.utilization)!=="quiet").map(p=>`${p.label} ${Math.round(p.state.utilization*100)}%`),c=l.length>0?` (also ${l.join(", ")})`:"",u=Y2e(o.state,t,n.autoResume??!0);if(i==="over"){let p=` ${o.label} quota exhausted`;return{tier:i,text:`${p}${a===void 0?"":` \u2014 ${a}`} \u2014 ${u}${c}`}}if(i==="near"){let p=` ${o.label} quota ${s}% used`;return{tier:i,text:`${p}${a===void 0?"":` \u2014 ${a}`} \u2014 ${u}${c}`}}let d=` ${o.label} quota ${s}% used`;return{tier:i,text:`${d}${a===void 0?"":` \u2014 ${a}`}${c}`}}Po();Pt();aa();mi();function iae(e,t){let n=Math.round(e*100),r=Ae(t);if(e>=1){let o=Math.round((e-1)*t);return{tier:"over",text:` context OVER ${Math.round(t/1e3)}k tokens by ~${Ae(o)} tokens \u2014 model output may be silently truncated`}}return e>=.95?{tier:"near",text:` context ${n}% used of ${r} \u2014 near limit; output may soon truncate (consider /clear or a fresh session)`}:e>=.8?{tier:"caution",text:` context ${n}% used of ${r} \u2014 approaching limit`}:e>.5?{tier:"normal",text:` context ${n}% used of ${r}`}:{tier:"quiet",text:null}}function kF(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(he(e.durationMs));let o=Number(e.usage?.input_tokens??0),i=Number(e.usage?.output_tokens??0);r.push(...Mi({costUsd:e.totalCostUsd,tokens:o+i,includeZeroCost:e.totalCostUsd!==void 0})),r.length>0&&n(m.dim(" \u25E6 "+r.join(" \xB7 ")));let s=GD(t),a=at(t.model),l=iae(s,a);if(l.text!==null){let u=l.tier==="over"||l.tier==="near"?m.error:l.tier==="caution"?m.warning:m.dim;n(u(l.text))}let c=oae(qx(RS()),new Date,{autoResume:LW()});if(c.text!==null){let u=c.tier==="over"||c.tier==="near"?m.error:c.tier==="caution"?m.warning:m.dim;n(u(c.text))}n("")}function TF(e,t=process.stdout){!_9()||!t.isTTY||e(ae())}qu();Jf();async function sae(e,t,n,r,o){let i=[];return n&&n.trim().length>0&&i.push({type:"text",text:n}),r&&r.length>0&&i.push(...r),e&&i.push({type:"text",text:e}),t.length>0&&o!==void 0?await Hv(i,o,t):gs(i,t),i}ZT();Ui();io();import{readFileSync as Q2e,statSync as Z2e}from"fs";import{extname as eqe,join as xF}from"path";import{homedir as tqe}from"os";var nqe=100*1024,rqe=400*1024,oqe=/(?<=\s|^)@([~\w./-]+)(?=\s|$)/g,iqe=/(^|\/)\.(ssh|aws|gnupg|kube|docker)(\/|$)|(^|\/)[^/]*\.env(\.[^/]+)?$|(^|\/)\.(netrc|npmrc|pypirc)$|(^|\/)id_(rsa|ed25519|ecdsa|dsa)(\.pub)?$|\.(pem|key|p12|pfx)$|(^|\/)credentials$|(^|\/)\.git\/config$|(^|\/)\.git-credentials$|(^|\/)\.(bash|zsh|fish|sh)_history$/i,sqe=[".afk/config",".afk/state",".config/gcloud",".config/gh"];function aqe(e){let t=0,n=e.match(/`+/g);if(n)for(let r of n)r.length>t&&(t=r.length);return"`".repeat(Math.max(3,t+1))}function lqe(e,t,n){if(n.includes(e))return yn(e).denied;if(iqe.test(e))return!0;for(let r of t)if(e===r||e.startsWith(r+"/"))return!0;return!1}var cqe={".ts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"jsx",".mjs":"javascript",".cjs":"javascript",".json":"json",".md":"markdown",".py":"python",".sh":"bash",".bash":"bash",".zsh":"bash",".yaml":"yaml",".yml":"yaml",".toml":"toml",".rs":"rust",".go":"go",".rb":"ruby",".java":"java",".c":"c",".h":"c",".cpp":"cpp",".cc":"cpp",".cs":"csharp",".html":"html",".css":"css",".scss":"scss",".sql":"sql",".xml":"xml",".txt":""};function uqe(e){return cqe[e.toLowerCase()]??""}function dqe(e=process.env){return e.AFK_AT_FILE_INJECT!=="0"}function aae(e,t={}){let n={fileBlocks:[],warnings:[]};if(!dqe(t.env))return n;let r=[];for(let p of e.matchAll(oqe)){let f=p[1];f&&r.push(f)}if(r.length===0)return n;let o=t.rootDir??process.cwd(),i=t.homeDir??tqe(),s=sqe.map(p=>yt(xF(i,p))),a=Ko.map(p=>yt(xF(i,p))),l=[],c=[],u=new Set,d=0;for(let p of r){let{scanDir:f,leafPrefix:g}=El(p,o,i),h=g?xF(f,g):f,y=yt(h);if(u.has(y))continue;if(u.add(y),lqe(y,s,a)){c.push(`@${p}: sensitive path, not injected`);continue}let w;try{w=Z2e(y)}catch{c.push(`@${p}: not found, left as text`);continue}if(w.isDirectory()){c.push(`@${p}: is a directory, skipped`);continue}if(!w.isFile()){c.push(`@${p}: not a regular file, skipped`);continue}if(w.size>nqe){c.push(`@${p}: too large (${Math.round(w.size/1024)} KB > 100 KB), skipped`);continue}if(d+w.size>rqe){c.push(`@${p}: 400 KB total injection budget exceeded, skipped`);continue}let S;try{S=Q2e(y)}catch{c.push(`@${p}: could not read, skipped`);continue}if(S.includes(0)){c.push(`@${p}: binary file, skipped`);continue}d+=w.size;let v=uqe(eqe(y)),x=S.toString("utf8"),T=aqe(x);l.push({type:"text",text:`Contents of ${p}:
2167
+ `),await K2e());try{process.stdin.setRawMode?.(!1)}catch{}dR=!1,n.resumeInput(),n.repaint()}return!0}function K2e(){return new Promise(e=>{try{process.stdin.setRawMode?.(!0)}catch{}let t=()=>{process.stdin.removeListener("data",n),process.stdin.removeListener("close",t),clearTimeout(r);try{process.stdin.setRawMode?.(!1)}catch{}e()},n=o=>{o.toString()==="\x1B"&&t()},r=setTimeout(t,3e4);process.stdin.on("data",n),process.stdin.on("close",t)})}function nae(e){let t=e.getCompositor?.();return t?()=>{if(dR)return!1;let n=ene();return!n||!n.list().some(o=>o.status==="running"||o.status==="idle")?!1:(W2e({manager:n,compositor:t}),!0)}:null}L();nt();Ac();mh();vf();fh();fh();var G2e=.8,q2e=.95,z2e=1;function rae(e){return e>=z2e?"over":e>=q2e?"near":e>=G2e?"caution":"quiet"}function J2e(e){let t=[];return e.fiveHour!==void 0&&t.push({label:"5h",state:e.fiveHour}),e.sevenDay!==void 0&&t.push({label:"7d",state:e.sevenDay}),t}var V2e=7200*1e3;function Y2e(e,t,n){return n?e.resetsAt!==void 0&&e.resetsAt.getTime()-t.getTime()>V2e?"turns stop at the cap \u2014 the reset is too far out to wait":"AFK pauses and auto-resumes at the cap":"turns stop at the cap \u2014 auto-resume is off"}function X2e(e,t){if(e.resetsAt===void 0)return;let n=e.resetsAt.getTime()-t.getTime();if(!(n<=0))return`resets in ${KD(n)}`}function oae(e,t=new Date,n={}){if(e===void 0)return{tier:"quiet",text:null};let r=J2e(e),o=r.reduce((p,f)=>p===void 0||f.state.utilization>p.state.utilization?f:p,void 0);if(o===void 0)return{tier:"quiet",text:null};let i=rae(o.state.utilization);if(i==="quiet")return{tier:i,text:null};let s=Math.round(o.state.utilization*100),a=X2e(o.state,t),l=r.filter(p=>p!==o&&rae(p.state.utilization)!=="quiet").map(p=>`${p.label} ${Math.round(p.state.utilization*100)}%`),c=l.length>0?` (also ${l.join(", ")})`:"",u=Y2e(o.state,t,n.autoResume??!0);if(i==="over"){let p=` ${o.label} quota exhausted`;return{tier:i,text:`${p}${a===void 0?"":` \u2014 ${a}`} \u2014 ${u}${c}`}}if(i==="near"){let p=` ${o.label} quota ${s}% used`;return{tier:i,text:`${p}${a===void 0?"":` \u2014 ${a}`} \u2014 ${u}${c}`}}let d=` ${o.label} quota ${s}% used`;return{tier:i,text:`${d}${a===void 0?"":` \u2014 ${a}`}${c}`}}Po();Pt();aa();mi();function iae(e,t){let n=Math.round(e*100),r=Ae(t);if(e>=1){let o=Math.round((e-1)*t);return{tier:"over",text:` context OVER ${Math.round(t/1e3)}k tokens by ~${Ae(o)} tokens \u2014 model output may be silently truncated`}}return e>=.95?{tier:"near",text:` context ${n}% used of ${r} \u2014 near limit; output may soon truncate (consider /clear or a fresh session)`}:e>=.8?{tier:"caution",text:` context ${n}% used of ${r} \u2014 approaching limit`}:e>.5?{tier:"normal",text:` context ${n}% used of ${r}`}:{tier:"quiet",text:null}}function kF(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(he(e.durationMs));let o=Number(e.usage?.input_tokens??0),i=Number(e.usage?.output_tokens??0);r.push(...Mi({costUsd:e.totalCostUsd,tokens:o+i,includeZeroCost:e.totalCostUsd!==void 0})),r.length>0&&n(m.dim(" \u25E6 "+r.join(" \xB7 ")));let s=GD(t),a=at(t.model),l=iae(s,a);if(l.text!==null){let u=l.tier==="over"||l.tier==="near"?m.error:l.tier==="caution"?m.warning:m.dim;n(u(l.text))}let c=oae(qx(RS()),new Date,{autoResume:LW()});if(c.text!==null){let u=c.tier==="over"||c.tier==="near"?m.error:c.tier==="caution"?m.warning:m.dim;n(u(c.text))}n("")}function TF(e,t=process.stdout){!_9()||!t.isTTY||e(ae())}qu();Jf();async function sae(e,t,n,r,o){let i=[];return n&&n.trim().length>0&&i.push({type:"text",text:n}),r&&r.length>0&&i.push(...r),e&&i.push({type:"text",text:e}),t.length>0&&o!==void 0?await Hv(i,o,t):gs(i,t),i}ZT();Ui();io();import{readFileSync as Q2e,statSync as Z2e}from"fs";import{extname as eqe,join as xF}from"path";import{homedir as tqe}from"os";var nqe=100*1024,rqe=400*1024,oqe=/(?<=\s|^)@([~\w./-]+)(?=\s|$)/g,iqe=/(^|\/)\.(ssh|aws|gnupg|kube|docker)(\/|$)|(^|\/)[^/]*\.env(\.[^/]+)?$|(^|\/)\.(netrc|npmrc|pypirc)$|(^|\/)id_(rsa|ed25519|ecdsa|dsa)(\.pub)?$|\.(pem|key|p12|pfx)$|(^|\/)credentials$|(^|\/)\.git\/config$|(^|\/)\.git-credentials$|(^|\/)\.(bash|zsh|fish|sh)_history$/i,sqe=[".afk/config",".afk/state",".config/gcloud",".config/gh"];function aqe(e){let t=0,n=e.match(/`+/g);if(n)for(let r of n)r.length>t&&(t=r.length);return"`".repeat(Math.max(3,t+1))}function lqe(e,t,n){if(n.includes(e))return yn(e).denied;if(iqe.test(e))return!0;for(let r of t)if(e===r||e.startsWith(r+"/"))return!0;return!1}var cqe={".ts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"jsx",".mjs":"javascript",".cjs":"javascript",".json":"json",".md":"markdown",".py":"python",".sh":"bash",".bash":"bash",".zsh":"bash",".yaml":"yaml",".yml":"yaml",".toml":"toml",".rs":"rust",".go":"go",".rb":"ruby",".java":"java",".c":"c",".h":"c",".cpp":"cpp",".cc":"cpp",".cs":"csharp",".html":"html",".css":"css",".scss":"scss",".sql":"sql",".xml":"xml",".txt":""};function uqe(e){return cqe[e.toLowerCase()]??""}function dqe(e=process.env){return e.AFK_AT_FILE_INJECT!=="0"}function aae(e,t={}){let n={fileBlocks:[],warnings:[]};if(!dqe(t.env))return n;let r=[];for(let p of e.matchAll(oqe)){let f=p[1];f&&r.push(f)}if(r.length===0)return n;let o=t.rootDir??process.cwd(),i=t.homeDir??tqe(),s=sqe.map(p=>yt(xF(i,p))),a=Ko.map(p=>yt(xF(i,p))),l=[],c=[],u=new Set,d=0;for(let p of r){let{scanDir:f,leafPrefix:g}=El(p,o,i),h=g?xF(f,g):f,y=yt(h);if(u.has(y))continue;if(u.add(y),lqe(y,s,a)){c.push(`@${p}: sensitive path, not injected`);continue}let w;try{w=Z2e(y)}catch{c.push(`@${p}: not found, left as text`);continue}if(w.isDirectory()){c.push(`@${p}: is a directory, skipped`);continue}if(!w.isFile()){c.push(`@${p}: not a regular file, skipped`);continue}if(w.size>nqe){c.push(`@${p}: too large (${Math.round(w.size/1024)} KB > 100 KB), skipped`);continue}if(d+w.size>rqe){c.push(`@${p}: 400 KB total injection budget exceeded, skipped`);continue}let S;try{S=Q2e(y)}catch{c.push(`@${p}: could not read, skipped`);continue}if(S.includes(0)){c.push(`@${p}: binary file, skipped`);continue}d+=w.size;let v=uqe(eqe(y)),x=S.toString("utf8"),T=aqe(x);l.push({type:"text",text:`Contents of ${p}:
2168
2168
  ${T}${v}
2169
2169
  ${x}
2170
- ${T}`})}return{fileBlocks:l,warnings:c}}function lae(e){let t=e.replace(/\s+/g," ").trim();return t.length<=60?t:`${t.slice(0,59)}\u2026`}async function cae(e,t,n){let r=t?.peekQueuedText(),o=r!==void 0?{text:r.text,claimed:!1}:void 0;r!==void 0&&t?.reserveQueued?.(r);let i;try{i=await e.promoteActiveForeground(o)}catch(s){throw r!==void 0&&t?.releaseQueued?.(r),s}if(o?.claimed===!0&&t!==null&&r!==void 0){try{await n?.(o.text)}catch{}return t.dropQueued(r),{jobs:i,flushedText:o.text,flushedPreview:r.preview}}return r!==void 0&&t?.releaseQueued?.(r),{jobs:i}}F();L();F();nt();L();cl();function uae(){return{toolStartTimes:new Map,subagentStartTimes:new Map,subagentLabels:new Map}}function dae(e,t){Be()&&(t.pending||e.toolStartTimes.has(t.toolUseId)||e.toolStartTimes.set(t.toolUseId,Date.now()))}function pae(e,t,n,r){if(!Be())return;let o=e.toolStartTimes.get(t.toolUseId),i=o!==void 0?Date.now()-o:void 0;e.toolStartTimes.delete(t.toolUseId);let s=Oe(n??"tool"),a=t.isError?m.error("err"):m.success("ok"),l=i!==void 0?` \xB7 ${he(i)}`:"";r.fn(m.dim(` \u25E6 ${s}${l} \xB7 `)+a)}function mae(e,t,n,r){if(!Be())return;let{subagentId:o,agentType:i}=n,s=Oe(i??o);if(e.subagentStartTimes.has(o)||(e.subagentStartTimes.set(o,Date.now()),e.subagentLabels.set(o,s),r.fn(m.dim(` \u25E6 worker ${s} started`))),t.type==="done"||t.type==="error"){let l=e.subagentStartTimes.get(o),c=l!==void 0?Date.now()-l:void 0;e.subagentStartTimes.delete(o),e.subagentLabels.delete(o);let u=c!==void 0?` \xB7 ${he(c)}`:"",d=t.type==="error"?m.error("failed"):m.success("done");r.fn(m.dim(` \u25E6 worker ${s}${u} \xB7 `)+d)}}var pR=class{state;writer;ttfb;constructor(t,n){this.state=uae(),this.writer=t,this.ttfb=n}onToolStart(t){dae(this.state,t)}onToolResult(t,n){pae(this.state,t,n,this.writer)}onSubagentEvent(t,n){mae(this.state,t,n,this.writer)}onFirstContent(t){this.ttfb.waitingLineEmitted&&(this.ttfb.waitingLineEmitted=!1,t.write("\r\x1B[2K"))}};function fae(e){return{startedAt:e,received:!1,waitingLineEmitted:!1}}function gae(e){return e.received?{}:{turnStartedAt:e.startedAt}}function hae(e,t,n){let r=t.type==="chunk"&&t.chunk.type==="content"&&!n;return r&&(e.received=!0),r}function yae(e,t=process.stdout,n){if(!Be()||!t.isTTY)return;(e?.fn??console.log)(m.dim(" \u25E6 waiting for response\u2026")),n&&(n.waitingLineEmitted=!0,e&&(n.plainHooks=new pR(e,n)))}me();L();var pqe=3e3;async function bae(e,t){if(!e)return t;let n=Date.now();if(n-t<pqe)return t;try{let r=e();r instanceof Promise&&await r}catch(r){qe()&&console.error(" "+m.error("onContextProgress (status refresh) failed:"),r)}return n}L();me();ht();Ls();var mqe="Keep waiting \u2014 auto-resume in progress",wae="Switch model / provider (type /model after)",fqe="Stop waiting";async function Sae(e){let{event:t,session:n,borrowedCompositor:r,pickerRef:o,completionWriter:i,disposeRendererOnce:s,setPausedState:a,onPauseInterrupt:l}=e;if(a?.(!0),await s(),r&&t.autoResume===!0){let c=new AbortController;o.abort=c;let u=t.resetsAt?t.resetsAt.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):null,d=u?`Keep waiting \u2014 auto-resumes at ${u}`:mqe,p=[m.warning(" \u23F3 Usage limit reached.")+(u?m.dim(` Auto-resumes at ${u}.`):""),m.dim(" Tip: run `claude login` in another terminal to switch account \u2014 this turn resumes on it automatically."),""];An(r,{header:p,options:[d,wae,fqe],signal:c.signal,initialIndex:0}).then(f=>{if(o.abort=null,!f)return;let g=f[0];g===void 0||g===d||(l(),g===wae&&(i??{fn:console.log}).fn(m.dim(" Hint: type /model <name> to switch, then send your message again.")),n.interrupt().catch(h=>{qe()&&console.error(" "+m.error("picker pause-interrupt session.interrupt() failed:"),h)}))}).catch(f=>{qe()&&console.error(" "+m.error("picker promise rejected:"),f)})}else(i??{fn:console.log}).fn(zB({reason:t.reason,...t.resetsAt!==void 0?{resetsAt:t.resetsAt}:{},...t.accountId!==void 0?{accountId:t.accountId}:{},...t.autoResume!==void 0?{autoResume:t.autoResume}:{}}))}hx();async function vae(e,t,n,r,o="summary",i,s){let a=TZ(e.text,e.attachments);r.onUserMessage&&await Promise.resolve(r.onUserMessage(a)).catch(()=>{}),r.setInFlight(!0);let l=Date.now(),c=fae(l);yae(i,process.stdout,c),$d(process.stdout,Lg(process.cwd(),!0));let u="",d=0,p=!1,f=!1,g=!1,h=!1,y=!1,w,S=!1,v=!1,x={abort:null},T=0,E=[],C=new Map,_=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,R=()=>{let W=r.subagentControl;W?.hasPromotableForeground()&&cae(W,P,r.onQueuedUserMessage).then(({jobs:q,flushedText:K,flushedPreview:H})=>{let Y=(i??{fn:console.log}).fn;for(let ie of q)Y(m.dim(` \u2192 subagent backgrounded as ${ie.jobId}: ${ie.label}`));K!==void 0&&Y(m.dim(` \u2192 queued message sent to this turn: ${lae(H??K)}`))}).catch(()=>{})},P=r.getCompositor?r.getCompositor():null,I=()=>new op({out:sp(i),thinkingMode:o,..._?{activeSkillName:_}:{},onCancel:()=>{t.interrupt().catch(W=>{qe()&&console.error(" "+m.error("session.interrupt() failed:"),W)})},...r.subagentControl?{onBackground:R}:{},...s?.history?{history:s.history}:{},...s?.autocompleteState?{autocompleteState:s.autocompleteState}:{},...s?.promptText!==void 0?{promptText:s.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},...P?{compositor:P}:{},...r.onStageChange?{onStageChange:r.onStageChange}:{},...gae(c),...r.addPreviewDiffRef?{addPreviewDiffRef:r.addPreviewDiffRef}:{}}),$=I(),j=async()=>{if(!h){h=!0;try{await $.dispose()}catch{}}},O=async()=>{await $.arm();let W=$.getCompositor();if(i&&W){let q=W;i.fn=K=>q.commitAbove(K),i.suppressSubagentCompletion=!0}r.setActiveCompositor?.(W),r.setInterruptNotifier?.(q=>$.setInterrupting(q)),r.rearmStatus?.()};try{P?P.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{S=!0,$.setSoftStopping(!0),t.interrupt().catch(Q=>{qe()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),Q)});let N=r.subagentControl;N?.hasActiveForeground()&&N.cancelActiveForeground().catch(Q=>{qe()&&console.error(" "+m.error("soft-stop cancelActiveForeground() failed:"),Q)})}),r.setPauseInterruptHandler&&r.setPauseInterruptHandler(()=>{v=!0,t.interrupt().catch(N=>{qe()&&console.error(" "+m.error("pause-interrupt session.interrupt() failed:"),N)})}),await O(),r.setBackgroundHandler&&r.subagentControl&&r.setBackgroundHandler(R),r.setTaskViewHandler?.(nae(r));let{fileBlocks:W,warnings:q}=aae(e.text,{rootDir:process.cwd()});for(let N of q)(i??{fn:console.log}).fn(m.dim(` @-file: ${N}`));if(e.attachments.length>0&&(await t.waitForInitialization(),t.sessionId===void 0))throw new Error("CLI session initialized without a session id");let K=W.length>0||e.attachments.length>0?await sae(e.text,e.attachments,void 0,W,t.sessionId):e.text,H=t.sendMessageStream(K);await vu((N,Q)=>{$.process(N,Q),Q&&c.plainHooks?.onSubagentEvent(N,Q)},async()=>{for await(let N of H){if(S||v)break;let Q=hae(c,N,f);if(N.type==="chunk"&&N.chunk.type==="content"?(u=p?eae(u,N.chunk.content):u+N.chunk.content,p=!1,f=!0):N.type==="message"&&!f&&(u=N.message.content),N.type==="stream_retry"&&(u=u.slice(0,d),p=u.length>0),N.type==="chunk"&&N.chunk.type==="tool_use_detail"){let se=N.chunk,ee={toolName:se.toolName,toolUseId:se.toolUseId,input:se.toolInput,...se.toolInputRaw!==void 0&&{inputRaw:se.toolInputRaw}};C.set(se.toolUseId,ee),E.push(ee),c.plainHooks?.onToolStart(se)}else if(N.type==="chunk"&&N.chunk.type==="tool_result"){let se=N.chunk;d=u.length,p=!0;let ee=C.get(se.toolUseId);ee&&(ee.result=se.content,ee.isError=se.isError,C.delete(se.toolUseId)),c.plainHooks?.onToolResult(se,ee?.toolName),T=await bae(r.onContextProgress,T)}if(N.type==="paused"){await Sae({event:N,session:t,borrowedCompositor:P,pickerRef:x,completionWriter:i,disposeRendererOnce:j,setPausedState:r.setPausedState,onPauseInterrupt:()=>{v=!0}});continue}if(N.type==="resumed"){r.setPausedState?.(!1),x.abort?.abort(),x.abort=null;let se=N.hotSwapped&&N.accountId?`\u25B6 Resumed on ${N.accountId}`:"\u25B6 Resumed";u="",d=0,p=!1,f=!1,E.length=0,C.clear(),y=!1,w=void 0,g=!1,$=I(),h=!1,await O(),(i??{fn:console.log}).fn(m.success(se));continue}if(N.type==="error"){await j(),Cc(wc(N.error)),g=!0;continue}$.process(N),Q&&(c.plainHooks?.onFirstContent(process.stdout),$.notifyFirstContent()),N.type==="done"&&(y=!0,w=N.metadata)}});let ie=!1;if(y&&!S&&!v){let N=Qse($.getPendingBuffer());N>=0?$.stripPendingTerminalState(N):Oh(u)!==null&&(ie=!0)}await j();let M=i?i.fn:console.log;if(S){let N=P?P.getPendingCount():0,Q=N>0?` \xB7 ${N} queued`:"";M(m.warning(`\u23F8 Stopped${Q} \u2014 work so far kept.`)+m.dim(" Send a message to continue.")),M("")}if(v&&(M(m.dim("\u25B6 Ending wait \u2014 running your next command\u2026")),M("")),y&&!S&&!v){fl(n,a,u,w,E),await r.onTurnComplete?.(a,u).catch(()=>{}),Od(process.stdout),I9(process.stdout,"afk: turn complete");let N=se=>{i?i.fn(se):console.log(se)},Q=Oh(u);if(Q&&!ie){N(tae(Q,{durationMs:w?.durationMs,totalCostUsd:w?.totalCostUsd,toolCount:E.length})),N("");let se=bL(E),ee=Qne(E);if(r.onTerminalState)try{r.onTerminalState(Q,{doneHasCorroboratingEvidence:ee,doneEvidenceClassification:se})}catch{}if(n.permissionMode==="autonomous"){let $e=Q.kind==="done"&&nf().verifyDone===!0&&!ee;ere(Q,void 0,{unverified:$e})}}if(kF(w,n,N),TF(N,process.stdout),r.onAfterTurn){let se=r.onAfterTurn();se instanceof Promise&&await se.catch(()=>{})}}}catch(W){await j(),g||Cc(wc(W))}finally{await j(),$d(process.stdout,Lg(process.cwd(),!1)),i&&(i.fn=i.idleFn,i.suppressSubagentCompletion=!1),r.setActiveCompositor?.(null),r.setInterruptNotifier?.(null),r.setBackgroundHandler?.(null),r.setTaskViewHandler?.(null),r.setSoftStopHandler?.(null),r.setPausedState?.(!1),r.setPauseInterruptHandler?.(null),x.abort?.abort(),x.abort=null,r.setInFlight(!1),r.rearmStatus?.()}}Rs();am();var gqe=5e3,hqe=3,yqe="[auto-resume] The background task above has finished. Continue the work it was dispatched for.";async function bqe(e,t){if(e.firstTurnHook&&e.stats.totalTurns===0){let n=e.firstTurnHook;e.firstTurnHook=void 0;try{await n(t)}catch(r){e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(r instanceof Error?r.message:String(r)))}}}async function kae(e,t,n,r,o,i,s,a){let{contextPane:l,loopStageBar:c,mascotBar:u,healthRail:d,verdictLedger:p,shellPassthrough:f,bgResultNotifier:g}=s,h=null,y=[];e.session.current.waitForInitialization().then(async I=>{qe()&&(h=hE(I)),await ph(e.session.current),qe()&&(y=UD())}).catch(()=>{});let w=e.initialInput!==void 0?{text:e.initialInput,attachments:[]}:void 0,S,v=!1,x=!1,T,E,C,_,R=(()=>{let I=parseInt(e.options.maxTurns,10);return I>0?I:void 0})(),P=0;g.onInjectable=()=>{P>=hqe||!o.isAwaitingInput()||!o.bufferIsEmpty()||n.pendingSteerRead||(P++,Od(process.stdout),w={text:yqe,attachments:[]},o.abortPendingRead())};try{for(n.steerReadLine=async I=>{let $=()=>o.abortPendingRead({clearBuffer:!0});if(I?.addEventListener("abort",$,{once:!0}),I?.aborted)return"";try{return(await o.readLine({promptFn:()=>"Steer the agent \u2192 ",onEscape:$})).text}finally{I?.removeEventListener("abort",$)}};;){if(P=0,h&&(e.replRenderer.writeLine(h),e.replRenderer.writeLine(""),h=null),y.length>0){for(let M of y)e.replRenderer.writeLine(M);e.replRenderer.writeLine(""),y=[]}let I=f.drainNotifications();for(let{job:M,result:N}of I){let Q=N.errorReason===void 0?"\u2713":"\u2717",se=N.errorReason==="abort"?"killed":N.errorReason==="timeout"?"timed out":N.errorReason==="signal-killed"?"killed by signal":`exit ${N.exitCode??0}`,ee=Math.max(0,Math.round(N.durationMs/100)/10);e.replRenderer.writeLine(m.dim(` ${Q} [${M.id}] ${se} \xB7 ${ee}s \xB7 `)+M.command)}let $=g.drainNotifications();for(let{job:M}of $){let N=M.status==="completed"?"\u2713":M.status==="failed"?"\u2717":"\u2298",Q=M.endedAt!==void 0?Math.max(0,Math.round((M.endedAt-M.startedAt)/100)/10):0,se=Z(M.label,60);e.replRenderer.writeLine(m.dim(` ${N} [${M.jobId}] subagent ${M.status} \xB7 ${Q}s \xB7 `)+se)}let j=l.renderIfChanged(e.stats.sessionId);if(j.length>0){for(let M of j)e.replRenderer.writeLine(M);e.replRenderer.writeLine("")}let O,W,q=n.pendingSteerRead;if(q){let M=await q;n.pendingSteerRead===q&&(n.pendingSteerRead=null),M?.trim()&&(n.pendingSteerText=M)}if(n.pendingSteerText&&(w={text:n.pendingSteerText,attachments:[]},n.pendingSteerText=null),w===void 0){let M=await e.session.current.takePendingPlanExitSeed();M!==void 0&&(e.stats.permissionMode=M.mode,w={text:M.message,attachments:[]})}if(w!==void 0){let M=w;w=void 0;let N=gp(e.stats.permissionMode),Q=wl({buffer:M.text,promptText:N,isTTY:!!process.stdout.isTTY,attachmentSummary:Kd([...M.attachments])});e.replRenderer.writeLine(Q),O=M.text.trim(),W=M.attachments}else{let M=S;S=void 0;let N=await o.readLine({promptFn:()=>gp(e.stats.permissionMode),...M!==void 0?{initialBuffer:M}:{},primePromptSuggestion:!0,onSigint:r,onShiftTab:()=>{iR(e.slashCtx).catch(()=>{}),e.statusLine.rearm()}});O=N.text.trim(),W=N.attachments}if(!O&&W.length===0)continue;if(O.startsWith("!")){let M=/^(0|false|off|no)$/i.test(k.AFK_SHELL_PASSTHROUGH??"");if(e.options.shellPassthrough!==!1&&!M&&(v||(v=!0,e.replRenderer.writeLine(m.dim(" \u2139 ! prefix shells out. Pass --no-shell-passthrough (or set AFK_SHELL_PASSTHROUGH=0) to send ! text to the model instead."))),await f.dispatch(O))){e.statusLine.rearm();continue}}let K=!1;if(O.startsWith("/")){let M=await $9(O,e.slashCtx,W);if(M.handled){if(M.result==="exit"){await e.resolveWorktreeDisposition?.(!0),e.rl.close();return}if((O==="/clear"||O.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),p.reset(),T=void 0),M.result!==null&&typeof M.result=="object"&&"kind"in M.result&&M.result.kind==="submit"){w={text:M.result.message,attachments:W??[]},e.statusLine.rearm();continue}if(M.result!==null&&typeof M.result=="object"&&"kind"in M.result&&M.result.kind==="prefill"){S=M.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}K=!0}a.push(O),await bqe(e,O);let H=O;if(K){let M=u$(O);if(M){let N=M.name.replace(/^\//,"").split(":").pop()??"";if(N&&DD(N)){let Q={skillName:N,rawArgs:M.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},se=e.session.current.sessionId,ee=Fl(se),$e=Date.now();B(`[afk trace] preflight.start commandName=${N}`);let De=!1,Gn=await Ll(Q,{cwd:e.stats.cwd??process.cwd(),artifactDir:ee},Je=>{qe()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${N}) failed: `)+(Je instanceof Error?Je.message:String(Je)))});De=Gn!==null,B(`[afk trace] preflight.end commandName=${N} durationMs=${Date.now()-$e} success=${De}`),H=ND(Gn?.manifestBlock,O)}}}let Y=f.drainInjections();Y.length>0&&(H=Y+H);let ie=g.drainInjections();if(ie.length>0&&(H=ie+H),T!==void 0&&(H=T+`
2170
+ ${T}`})}return{fileBlocks:l,warnings:c}}function lae(e){let t=e.replace(/\s+/g," ").trim();return t.length<=60?t:`${t.slice(0,59)}\u2026`}async function cae(e,t,n){let r=t?.peekQueuedText(),o=r!==void 0?{text:r.text,claimed:!1}:void 0;r!==void 0&&t?.reserveQueued?.(r);let i;try{i=await e.promoteActiveForeground(o)}catch(s){throw r!==void 0&&t?.releaseQueued?.(r),s}if(o?.claimed===!0&&t!==null&&r!==void 0){try{await n?.(o.text)}catch{}return t.dropQueued(r),{jobs:i,flushedText:o.text,flushedPreview:r.preview}}return r!==void 0&&t?.releaseQueued?.(r),{jobs:i}}F();L();F();nt();L();cl();function uae(){return{toolStartTimes:new Map,subagentStartTimes:new Map,subagentLabels:new Map}}function dae(e,t){Be()&&(t.pending||e.toolStartTimes.has(t.toolUseId)||e.toolStartTimes.set(t.toolUseId,Date.now()))}function pae(e,t,n,r){if(!Be())return;let o=e.toolStartTimes.get(t.toolUseId),i=o!==void 0?Date.now()-o:void 0;e.toolStartTimes.delete(t.toolUseId);let s=Oe(n??"tool"),a=t.isError?m.error("err"):m.success("ok"),l=i!==void 0?` \xB7 ${he(i)}`:"";r.fn(m.dim(` \u25E6 ${s}${l} \xB7 `)+a)}function mae(e,t,n,r){if(!Be())return;let{subagentId:o,agentType:i}=n,s=Oe(i??o);if(e.subagentStartTimes.has(o)||(e.subagentStartTimes.set(o,Date.now()),e.subagentLabels.set(o,s),r.fn(m.dim(` \u25E6 worker ${s} started`))),t.type==="done"||t.type==="error"){let l=e.subagentStartTimes.get(o),c=l!==void 0?Date.now()-l:void 0;e.subagentStartTimes.delete(o),e.subagentLabels.delete(o);let u=c!==void 0?` \xB7 ${he(c)}`:"",d=t.type==="error"?m.error("failed"):m.success("done");r.fn(m.dim(` \u25E6 worker ${s}${u} \xB7 `)+d)}}var pR=class{state;writer;ttfb;constructor(t,n){this.state=uae(),this.writer=t,this.ttfb=n}onToolStart(t){dae(this.state,t)}onToolResult(t,n){pae(this.state,t,n,this.writer)}onSubagentEvent(t,n){mae(this.state,t,n,this.writer)}onFirstContent(t){this.ttfb.waitingLineEmitted&&(this.ttfb.waitingLineEmitted=!1,t.write("\r\x1B[2K"))}};function fae(e){return{startedAt:e,received:!1,waitingLineEmitted:!1}}function gae(e){return e.received?{}:{turnStartedAt:e.startedAt}}function hae(e,t,n){let r=t.type==="chunk"&&t.chunk.type==="content"&&!n;return r&&(e.received=!0),r}function yae(e,t=process.stdout,n){if(!Be()||!t.isTTY)return;(e?.fn??console.log)(m.dim(" \u25E6 waiting for response\u2026")),n&&(n.waitingLineEmitted=!0,e&&(n.plainHooks=new pR(e,n)))}me();L();var pqe=3e3;async function bae(e,t){if(!e)return t;let n=Date.now();if(n-t<pqe)return t;try{let r=e();r instanceof Promise&&await r}catch(r){qe()&&console.error(" "+m.error("onContextProgress (status refresh) failed:"),r)}return n}L();me();ht();Ls();var mqe="Keep waiting \u2014 auto-resume in progress",wae="Switch model / provider (type /model after)",fqe="Stop waiting";async function Sae(e){let{event:t,session:n,borrowedCompositor:r,pickerRef:o,completionWriter:i,disposeRendererOnce:s,setPausedState:a,onPauseInterrupt:l}=e;if(a?.(!0),await s(),r&&t.autoResume===!0){let c=new AbortController;o.abort=c;let u=t.resetsAt?t.resetsAt.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):null,d=u?`Keep waiting \u2014 auto-resumes at ${u}`:mqe,p=[m.warning(" \u23F3 Usage limit reached.")+(u?m.dim(` Auto-resumes at ${u}.`):""),m.dim(" Tip: run `claude login` in another terminal to switch account \u2014 this turn resumes on it automatically."),""];An(r,{header:p,options:[d,wae,fqe],signal:c.signal,initialIndex:0}).then(f=>{if(o.abort=null,!f)return;let g=f[0];g===void 0||g===d||(l(),g===wae&&(i??{fn:console.log}).fn(m.dim(" Hint: type /model <name> to switch, then send your message again.")),n.interrupt().catch(h=>{qe()&&console.error(" "+m.error("picker pause-interrupt session.interrupt() failed:"),h)}))}).catch(f=>{qe()&&console.error(" "+m.error("picker promise rejected:"),f)})}else(i??{fn:console.log}).fn(zB({reason:t.reason,...t.resetsAt!==void 0?{resetsAt:t.resetsAt}:{},...t.accountId!==void 0?{accountId:t.accountId}:{},...t.autoResume!==void 0?{autoResume:t.autoResume}:{}}))}hx();async function vae(e,t,n,r,o="summary",i,s){let a=TZ(e.text,e.attachments);r.onUserMessage&&await Promise.resolve(r.onUserMessage(a)).catch(()=>{}),r.setInFlight(!0);let l=Date.now(),c=fae(l);yae(i,process.stdout,c),$d(process.stdout,Lg(process.cwd(),!0));let u="",d=0,p=!1,f=!1,g=!1,h=!1,y=!1,w,S=!1,v=!1,x={abort:null},T=0,E=[],C=new Map,_=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,R=()=>{let W=r.subagentControl;W?.hasPromotableForeground()&&cae(W,P,r.onQueuedUserMessage).then(({jobs:q,flushedText:K,flushedPreview:H})=>{let Y=(i??{fn:console.log}).fn;for(let ie of q)Y(m.dim(` \u2192 subagent backgrounded as ${ie.jobId}: ${ie.label}`));K!==void 0&&Y(m.dim(` \u2192 queued message sent to this turn: ${lae(H??K)}`))}).catch(()=>{})},P=r.getCompositor?r.getCompositor():null,I=()=>new op({out:sp(i),thinkingMode:o,..._?{activeSkillName:_}:{},onCancel:()=>{t.interrupt().catch(W=>{qe()&&console.error(" "+m.error("session.interrupt() failed:"),W)})},...r.subagentControl?{onBackground:R}:{},...s?.history?{history:s.history}:{},...s?.autocompleteState?{autocompleteState:s.autocompleteState}:{},...s?.promptText!==void 0?{promptText:s.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},...P?{compositor:P}:{},...r.onStageChange?{onStageChange:r.onStageChange}:{},...gae(c),...r.addPreviewDiffRef?{addPreviewDiffRef:r.addPreviewDiffRef}:{}}),$=I(),j=async()=>{if(!h){h=!0;try{await $.dispose()}catch{}}},O=async()=>{await $.arm();let W=$.getCompositor();if(i&&W){let q=W;i.fn=K=>q.commitAbove(K),i.suppressSubagentCompletion=!0}r.setActiveCompositor?.(W),r.setInterruptNotifier?.(q=>$.setInterrupting(q)),r.rearmStatus?.()};try{P?P.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{S=!0,$.setSoftStopping(!0),t.interrupt().catch(Q=>{qe()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),Q)});let N=r.subagentControl;N?.hasActiveForeground()&&N.cancelActiveForeground().catch(Q=>{qe()&&console.error(" "+m.error("soft-stop cancelActiveForeground() failed:"),Q)})}),r.setPauseInterruptHandler&&r.setPauseInterruptHandler(()=>{v=!0,t.interrupt().catch(N=>{qe()&&console.error(" "+m.error("pause-interrupt session.interrupt() failed:"),N)})}),await O(),r.setBackgroundHandler&&r.subagentControl&&r.setBackgroundHandler(R),r.setTaskViewHandler?.(nae(r));let{fileBlocks:W,warnings:q}=aae(e.text,{rootDir:process.cwd()});for(let N of q)(i??{fn:console.log}).fn(m.dim(` @-file: ${N}`));if(e.attachments.length>0&&(await t.waitForInitialization(),t.sessionId===void 0))throw new Error("CLI session initialized without a session id");let K=W.length>0||e.attachments.length>0?await sae(e.text,e.attachments,void 0,W,t.sessionId):e.text,H=t.sendMessageStream(K);await vu((N,Q)=>{$.process(N,Q),Q&&c.plainHooks?.onSubagentEvent(N,Q)},async()=>{for await(let N of H){if(S||v)break;let Q=hae(c,N,f);if(N.type==="chunk"&&N.chunk.type==="content"?(u=p?eae(u,N.chunk.content):u+N.chunk.content,p=!1,f=!0):N.type==="message"&&!f&&(u=N.message.content),N.type==="stream_retry"&&(u=u.slice(0,d),p=u.length>0),N.type==="chunk"&&N.chunk.type==="tool_use_detail"){let se=N.chunk,ee={toolName:se.toolName,toolUseId:se.toolUseId,input:se.toolInput,...se.toolInputRaw!==void 0&&{inputRaw:se.toolInputRaw}};C.set(se.toolUseId,ee),E.push(ee),c.plainHooks?.onToolStart(se)}else if(N.type==="chunk"&&N.chunk.type==="tool_result"){let se=N.chunk;d=u.length,p=!0;let ee=C.get(se.toolUseId);ee&&(ee.result=se.content,ee.isError=se.isError,C.delete(se.toolUseId)),c.plainHooks?.onToolResult(se,ee?.toolName),T=await bae(r.onContextProgress,T)}if(N.type==="paused"){await Sae({event:N,session:t,borrowedCompositor:P,pickerRef:x,completionWriter:i,disposeRendererOnce:j,setPausedState:r.setPausedState,onPauseInterrupt:()=>{v=!0}});continue}if(N.type==="resumed"){r.setPausedState?.(!1),x.abort?.abort(),x.abort=null;let se=N.hotSwapped&&N.accountId?`\u25B6 Resumed on ${N.accountId}`:"\u25B6 Resumed";u="",d=0,p=!1,f=!1,E.length=0,C.clear(),y=!1,w=void 0,g=!1,$=I(),h=!1,await O(),(i??{fn:console.log}).fn(m.success(se));continue}if(N.type==="error"){await j(),Cc(wc(N.error)),g=!0;continue}$.process(N),Q&&(c.plainHooks?.onFirstContent(process.stdout),$.notifyFirstContent()),N.type==="done"&&(y=!0,w=N.metadata)}});let ie=!1;if(y&&!S&&!v){let N=Qse($.getPendingBuffer());N>=0?$.stripPendingTerminalState(N):Oh(u)!==null&&(ie=!0)}await j();let M=i?i.fn:console.log;if(S){let N=P?P.getPendingCount():0,Q=N>0?` \xB7 ${N} queued`:"";M(m.warning(`\u23F8 Stopped${Q} \u2014 work so far kept.`)+m.dim(" Send a message to continue.")),M("")}if(v&&(M(m.dim("\u25B6 Ending wait \u2014 running your next command\u2026")),M("")),y&&!S&&!v){fl(n,a,u,w,E),await r.onTurnComplete?.(a,u).catch(()=>{}),Od(process.stdout),I9(process.stdout,"afk: turn complete");let N=se=>{i?i.fn(se):console.log(se)},Q=Oh(u);if(Q&&!ie){N(tae(Q,{durationMs:w?.durationMs,totalCostUsd:w?.totalCostUsd,toolCount:E.length})),N("");let se=bL(E),ee=Qne(E);if(r.onTerminalState)try{r.onTerminalState(Q,{doneHasCorroboratingEvidence:ee,doneEvidenceClassification:se})}catch{}if(n.permissionMode==="autonomous"){let $e=Q.kind==="done"&&nf().verifyDone===!0&&!ee;ere(Q,void 0,{unverified:$e})}}if(kF(w,n,N),TF(N,process.stdout),r.onAfterTurn){let se=r.onAfterTurn();se instanceof Promise&&await se.catch(()=>{})}}}catch(W){await j(),g||Cc(wc(W))}finally{await j(),$d(process.stdout,Lg(process.cwd(),!1)),i&&(i.fn=i.idleFn,i.suppressSubagentCompletion=!1),r.setActiveCompositor?.(null),r.setInterruptNotifier?.(null),r.setBackgroundHandler?.(null),r.setTaskViewHandler?.(null),r.setSoftStopHandler?.(null),r.setPausedState?.(!1),r.setPauseInterruptHandler?.(null),x.abort?.abort(),x.abort=null,r.setInFlight(!1),r.rearmStatus?.()}}Rs();am();var gqe=5e3,hqe=3,yqe="[auto-resume] The background task above has finished. Continue the work it was dispatched for.";async function bqe(e,t){if(e.firstTurnHook&&e.stats.totalTurns===0){let n=e.firstTurnHook;e.firstTurnHook=void 0;try{await n(t)}catch(r){e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(r instanceof Error?r.message:String(r)))}}}async function kae(e,t,n,r,o,i,s,a){let{contextPane:l,loopStageBar:c,mascotBar:u,healthRail:d,verdictLedger:p,shellPassthrough:f,bgResultNotifier:g}=s,h=null,y=[];e.session.current.waitForInitialization().then(async I=>{qe()&&(h=hE(I)),await ph(e.session.current),qe()&&(y=UD())}).catch(()=>{});let w=e.initialInput!==void 0?{text:e.initialInput,attachments:[]}:void 0,S,v=!1,x=!1,T,E,C,_,R=(()=>{let I=parseInt(e.options.maxTurns,10);return I>0?I:void 0})(),P=0;g.onInjectable=()=>{P>=hqe||!o.isAwaitingInput()||!o.bufferIsEmpty()||n.pendingSteerRead||(P++,Od(process.stdout),w={text:yqe,attachments:[]},o.abortPendingRead())};try{for(n.steerReadLine=async I=>{let $=()=>o.abortPendingRead({clearBuffer:!0});if(I?.addEventListener("abort",$,{once:!0}),I?.aborted)return"";try{return(await o.readLine({promptFn:()=>"Steer the agent \u2192 ",onEscape:$})).text}finally{I?.removeEventListener("abort",$)}};;){if(P=0,h&&(e.replRenderer.writeLine(h),e.replRenderer.writeLine(""),h=null),y.length>0){for(let M of y)e.replRenderer.writeLine(M);e.replRenderer.writeLine(""),y=[]}let I=f.drainNotifications();for(let{job:M,result:N}of I){let Q=N.errorReason===void 0?"\u2713":"\u2717",se=N.errorReason==="abort"?"killed":N.errorReason==="timeout"?"timed out":N.errorReason==="signal-killed"?"killed by signal":`exit ${N.exitCode??0}`,ee=Math.max(0,Math.round(N.durationMs/100)/10);e.replRenderer.writeLine(m.dim(` ${Q} [${M.id}] ${se} \xB7 ${ee}s \xB7 `)+M.command)}let $=g.drainNotifications();for(let{job:M}of $){let N=M.status==="completed"?"\u2713":M.status==="failed"?"\u2717":"\u2298",Q=M.endedAt!==void 0?Math.max(0,Math.round((M.endedAt-M.startedAt)/100)/10):0,se=Z(M.label,60);e.replRenderer.writeLine(m.dim(` ${N} [${M.jobId}] subagent ${M.status} \xB7 ${Q}s \xB7 `)+se)}let j=l.renderIfChanged(e.stats.sessionId);if(j.length>0){for(let M of j)e.replRenderer.writeLine(M);e.replRenderer.writeLine("")}let O,W,q=n.pendingSteerRead;if(q){let M=await q;n.pendingSteerRead===q&&(n.pendingSteerRead=null),M?.trim()&&(n.pendingSteerText=M)}if(n.pendingSteerText&&(w={text:n.pendingSteerText,attachments:[]},n.pendingSteerText=null),w===void 0){let M=await e.session.current.takePendingPlanExitSeed();M!==void 0&&(e.stats.permissionMode=M.mode,w={text:M.message,attachments:[]})}if(w!==void 0){let M=w;w=void 0;let N=gp(e.stats.permissionMode),Q=wl({buffer:M.text,promptText:N,isTTY:!!process.stdout.isTTY,attachmentSummary:Kd([...M.attachments])});e.replRenderer.writeLine(Q),O=M.text.trim(),W=M.attachments}else{let M=S;S=void 0;let N=await o.readLine({promptFn:()=>gp(e.stats.permissionMode),...M!==void 0?{initialBuffer:M}:{},primePromptSuggestion:!0,onSigint:r,onShiftTab:()=>{iR(e.slashCtx).catch(()=>{}),e.statusLine.rearm()}});O=N.text.trim(),W=N.attachments}if(!O&&W.length===0)continue;if(O.startsWith("!")){let M=/^(0|false|off|no)$/i.test(k.AFK_SHELL_PASSTHROUGH??"");if(e.options.shellPassthrough!==!1&&!M&&(v||(v=!0,e.replRenderer.writeLine(m.dim(" \u2139 ! prefix shells out. Pass --no-shell-passthrough (or set AFK_SHELL_PASSTHROUGH=0) to send ! text to the model instead."))),await f.dispatch(O))){e.statusLine.rearm();continue}}let K=!1;if(O.startsWith("/")){let M=await $9(O,e.slashCtx,W);if(M.handled){if(M.result==="exit"){await e.resolveWorktreeDisposition?.(!0),e.rl.close();return}if((O==="/clear"||O.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),p.reset(),T=void 0),M.result!==null&&typeof M.result=="object"&&"kind"in M.result&&M.result.kind==="submit"){w={text:M.result.message,attachments:W??[]},e.statusLine.rearm();continue}if(M.result!==null&&typeof M.result=="object"&&"kind"in M.result&&M.result.kind==="prefill"){S=M.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}K=!0}a.push(O),await bqe(e,O);let H=O;if(K){let M=u$(O);if(M){let N=M.name.replace(/^\//,"").split(":").pop()??"";if(N&&DD(N)){let Q={skillName:N,rawArgs:M.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},se=e.session.current.sessionId,ee=Fl(se),$e=Date.now();B(`[afk trace] preflight.start commandName=${N}`);let De=!1,Gn=await Ll(Q,{cwd:e.stats.cwd??process.cwd(),artifactDir:ee},Je=>{qe()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${N}) failed: `)+(Je instanceof Error?Je.message:String(Je)))});De=Gn!==null,B(`[afk trace] preflight.end commandName=${N} durationMs=${Date.now()-$e} success=${De}`),H=ND(Gn?.manifestBlock,O)}}}let Y=f.drainInjections();Y.length>0&&(H=Y+H);let ie=g.drainInjections();if(ie.length>0&&(H=ie+H),T!==void 0&&(H=T+`
2171
2171
 
2172
2172
  `+H,T=void 0),e.hookRegistry)try{let M={event:"UserPromptSubmit",prompt:H,sessionId:e.stats.sessionId},N=await e.hookRegistry.dispatch(M);N.injectContext&&(H=N.injectContext+H)}catch(M){if(M instanceof Re){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+(M.reason?m.dim(`: ${le(M.reason)}`):"")),e.statusLine.rearm();continue}if(M instanceof eo){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+m.dim(`: handler timed out after ${M.timeoutMs}ms`)),e.statusLine.rearm();continue}throw M}if(E=C=_=void 0,eU(),oU(),await vae({text:H,attachments:W},e.session.current,e.stats,{setInFlight(M){n.turnInFlight=M},...e.subagentControl?{subagentControl:e.subagentControl}:{},async onUserMessage(M){await t.appendUser(M)},async onQueuedUserMessage(M){await t.appendQueuedUser(M)},async onTurnComplete(M,N){if(await t.appendTurn(M,N),e.stats.sessionId)try{Es(e.stats)}catch(Q){x||(x=!0,e.replRenderer.writeLine(m.warning("\u26A0 ")+"session autosave failed \u2014 this conversation may not be resumable: "+(Q instanceof Error?Q.message:String(Q))))}},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await e.gitStatusSampler.refresh(),e.statusLine.repaint(fr(e.stats,e.contextSampler,e.gitStatusSampler,R)),e.statusLine.rearm(),c?.repaint("observing"),d?.update(e.stats)},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:(M,N)=>{p?.push(M),E=M.kind,C=N?.doneHasCorroboratingEvidence,_=N?.doneEvidenceClassification},setActiveCompositor:M=>{n.activeCompositor=M,M===null&&n.interruptPickerAbort&&(n.interruptPickerAbort.abort(),n.interruptPickerAbort=null)},setInterruptNotifier:M=>{n.notifyInterrupting=M},scrollRegion:e.statusLine,getCompositor:()=>o.getCompositor(),setBackgroundHandler:M=>o.setBackgroundHandler(M),setTaskViewHandler:M=>o.setTaskViewHandler(M),setSoftStopHandler:i,setPausedState:M=>o.setPausedState(M),setPauseInterruptHandler:M=>o.setPauseInterruptHandler(M),async onContextProgress(){await e.contextSampler.refresh(),e.statusLine.repaint(fr(e.stats,e.contextSampler,e.gitStatusSampler,R)),d?.update(e.stats,e.contextSampler.getRatio())},...c?{onStageChange:(M,N)=>{c.repaint(M),u?.onStage(M,N)}}:{},...e.addPreviewDiffRef?{addPreviewDiffRef:e.addPreviewDiffRef}:{}},e.stats.thinkingUi??e.options.thinkingUi,e.completionWriter,o.toRunTurnRefs(gp(e.stats.permissionMode))),e.hookRegistry)try{let M=await e.hookRegistry.dispatch({event:"Stop",sessionId:e.stats.sessionId,...E!==void 0?{terminalState:E}:{},...C!==void 0?{doneHasCorroboratingEvidence:C}:{},..._!==void 0?{doneEvidenceClassification:_}:{}},void 0,gqe);M.injectContext&&M.injectContext.trim().length>0&&(T=M.injectContext)}catch(M){if(M instanceof $t)throw M;M instanceof eo?(B("[stop hook] handler timed out"),e.completionWriter.fn(m.dim(" [stop hook] timed out"))):M instanceof Re?e.completionWriter.fn(m.dim(` [stop hook] blocked: ${le(M.reason??"no reason given")}`)):B("[stop hook] unexpected error: "+String(M))}}}finally{n.steerReadLine=null,n.pendingSteerRead=null,n.pendingSteerText=null}}function wqe(e,t){if(e!==void 0){let n=e.toLowerCase();return!(n==="0"||n==="false"||n==="off"||n==="no")}return typeof t=="boolean"?t:!0}async function Tae(e,t,n,r){let o=await pse(),i=new oR({rl:e.rl,history:o,statusLine:e.statusLine}),s=wqe(k.AFK_SUGGEST_GHOST,e.suggestGhostConfig),a;try{let{installSoftStop:l}=await $se(e,i,n,t,r,s,{getLoopStageBar:()=>a?.loopStageBar,getMascotBar:()=>a?.mascotBar});a=Xse(e,n);let c=a;e.slashCtx.suspendFooter=()=>{c.bgStatusBar.stop(),c.mascotBar.stop(),c.healthRail.stop(),e.statusLine.stop()},e.slashCtx.resumeFooter=()=>{e.statusLine.start(),c.healthRail.start(),c.mascotBar.start(),c.bgStatusBar.start(),c.bgStatusBar.redraw()},await kae(e,t,n,r,i,l,a,o),await e.resolveWorktreeDisposition?.(!0)}finally{n.tryAbortShellForeground=null,a?.shellPassthrough.drainOnExit(),a?.bgResultNotifier.dispose(),a?.healthRail.stop(),a?.loopStageBar.stop(),a?.mascotBar.stop(),a?.bgStatusBar.stop(),a?.verdictLedger.stop(),a?.contextPane.dispose();let l=c=>console.log(c);e.completionWriter.fn=l,e.completionWriter.idleFn=l,await i.dispose(),e.inputSurfaceRef&&(e.inputSurfaceRef.current=null)}}Jm();lu();import{execFile as Sqe}from"node:child_process";import{dirname as vqe,isAbsolute as kqe,resolve as Tqe}from"node:path";import{promisify as xqe}from"node:util";var xae=xqe(Sqe),Eqe=3e3,Rqe=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function Aqe(){let t=(await xae("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=kqe(t)?t:Tqe(process.cwd(),t);return vqe(n)}async function Eae(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await Aqe()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),Eqe)});try{let o=ir({execFile:xae,repoRoot:t,dryRun:!1,scope:"interactive",bypassSoftLaunch:!0}),i=await Promise.race([o,r]);if(i==="timeout")return{ran:!1,removedCount:0,skippedReason:"timeout"};let s=i;return s.warnings.some(c=>c.toLowerCase().includes("contested"))?{ran:!1,removedCount:0,skippedReason:"lock-contested"}:{ran:!0,removedCount:s.candidates.filter(c=>Rqe.has(c.verdict)&&s.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}tb();Jm();import{promises as Cqe}from"node:fs";import{dirname as _qe,join as Cae}from"node:path";import{randomBytes as Pqe}from"node:crypto";var Iqe=["Generate a 2-4 word kebab-case slug describing this work request.","Rules:","- ASCII lowercase letters and digits only, separated by single hyphens","- 2 to 4 hyphen-separated words","- Maximum 30 characters total","- No prefix, no quotes, no punctuation other than hyphens","- Output ONLY the slug \u2014 no explanation, no preamble","Examples: fix-cleanup-race, add-telegram-allowlist, refactor-prompt-loader, debug-flaky-test"].join(`
2173
- `),Rae=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,EF=30,Mqe=1024,Oqe=8e3,$qe="haiku";async function Dqe(e,t){let n=e.trim();if(n.length===0)return t.onSkip?.("empty-message"),null;if(n.startsWith("/"))return t.onSkip?.("slash-command"),null;let r=Bqe(n,Mqe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??Oqe),s=t.signal?Uqe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Mc({token:t.token,model:t.model??$qe,system:Iqe,user:r,maxTokens:32,signal:s})}catch(d){let p=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(i)}let l=Lqe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=_qe(t.worktreePath);return await Fqe(l,c)}function Lqe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(Rae.test(t)&&t.length<=EF)return t;let n=t.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(n.length===0)return null;let r=n.split("-").filter(i=>i.length>0).slice(0,4);if(r.length<2)return null;let o=r[0];for(let i=1;i<r.length;i++){let s=`${o}-${r[i]}`;if(s.length>EF)break;o=s}return Rae.test(o)?o:null}async function Fqe(e,t){if(!await Nqe(Cae(t,e)))return e;let n=Pqe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,EF-5)}-${n}`}async function Nqe(e){try{return await Cqe.access(e),!0}catch{return!1}}function Bqe(e,t){let n=Buffer.from(e,"utf8");if(n.length<=t)return e;let r=t;for(;r>0&&n[r]!==void 0&&(n[r]&192)===128;)r--;return n.slice(0,r).toString("utf8")}function Uqe(e){let t=AbortSignal.any;if(typeof t=="function")return t.call(AbortSignal,e);let n=new AbortController;for(let r of e){if(r.aborted)return n.abort(r.reason),n.signal;r.addEventListener("abort",()=>n.abort(r.reason),{once:!0})}return n.signal}async function _ae(e){let t,n,r=Cae(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await Dqe(e.message,{token:e.token,...e.model!==void 0?{model:e.model}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},worktreePath:r,...e.signal!==void 0?{signal:e.signal}:{},...e.slugGenerator!==void 0?{slugGenerator:e.slugGenerator}:{},onSkip:(a,l)=>{t=a,n=l}}),i=t??"unknown",s=n;if(o!==null){let l=`${lw(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return Aae(e.session,c.path),{status:"created",path:c.path,branch:c.branch,slug:o}}catch(c){i="create-failed",s=(c instanceof Error?c.message:String(c)).slice(0,200)}}try{let a=await e.deferred.create(!0);return Aae(e.session,a.path),{status:"created-fallback",path:a.path,branch:a.branch,reason:i,...s!==void 0?{detail:s}:{}}}catch(a){return{status:"failed",reason:a instanceof Error?a.message:String(a)}}}function Aae(e,t){e&&e.setCwd(t),jqe(t)}function jqe(e){try{process.chdir(e)}catch{}}kt();Pt();yc();Po();U();import{spawn as Iae}from"child_process";import{existsSync as Mae,mkdirSync as qqe,readFileSync as Oae,unlinkSync as Pae,writeFileSync as $ae}from"fs";import{get as zqe}from"https";import{join as Dae}from"path";import{readFileSync as Hqe}from"fs";import{dirname as Wqe,join as Kqe}from"path";import{fileURLToPath as Gqe}from"url";function Oo(){try{return"5.190.0"}catch{}try{let e=Wqe(Gqe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(Hqe(Kqe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}L();F();var Jqe=64*1024,Vqe=10800*1e3,Yqe=800,Xqe=3600*1e3,Qqe="update-check.json",Zqe="pending-update.json";function RF(){return Dae(ea(),Qqe)}function $h(){return Dae(ea(),Zqe)}function AF(){let e=ea();Mae(e)||qqe(e,{recursive:!0})}function Lae(e,t){let n=a=>a.split(/[-+]/,1)[0]??a,r=a=>a.includes("-"),o=n(e).split(".").map(Number),i=n(t).split(".").map(Number),s=Math.max(o.length,i.length);for(let a=0;a<s;a++){let l=o[a]??0,c=i[a]??0;if(c>l)return!0;if(c<l)return!1}return r(e)&&!r(t)}function Fae(){try{let e=Oae(RF(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function Nae(){try{AF();let e=`
2173
+ `),Rae=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,EF=30,Mqe=1024,Oqe=8e3,$qe="haiku";async function Dqe(e,t){let n=e.trim();if(n.length===0)return t.onSkip?.("empty-message"),null;if(n.startsWith("/"))return t.onSkip?.("slash-command"),null;let r=Bqe(n,Mqe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??Oqe),s=t.signal?Uqe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Mc({token:t.token,model:t.model??$qe,system:Iqe,user:r,maxTokens:32,signal:s})}catch(d){let p=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(i)}let l=Lqe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=_qe(t.worktreePath);return await Fqe(l,c)}function Lqe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(Rae.test(t)&&t.length<=EF)return t;let n=t.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(n.length===0)return null;let r=n.split("-").filter(i=>i.length>0).slice(0,4);if(r.length<2)return null;let o=r[0];for(let i=1;i<r.length;i++){let s=`${o}-${r[i]}`;if(s.length>EF)break;o=s}return Rae.test(o)?o:null}async function Fqe(e,t){if(!await Nqe(Cae(t,e)))return e;let n=Pqe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,EF-5)}-${n}`}async function Nqe(e){try{return await Cqe.access(e),!0}catch{return!1}}function Bqe(e,t){let n=Buffer.from(e,"utf8");if(n.length<=t)return e;let r=t;for(;r>0&&n[r]!==void 0&&(n[r]&192)===128;)r--;return n.slice(0,r).toString("utf8")}function Uqe(e){let t=AbortSignal.any;if(typeof t=="function")return t.call(AbortSignal,e);let n=new AbortController;for(let r of e){if(r.aborted)return n.abort(r.reason),n.signal;r.addEventListener("abort",()=>n.abort(r.reason),{once:!0})}return n.signal}async function _ae(e){let t,n,r=Cae(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await Dqe(e.message,{token:e.token,...e.model!==void 0?{model:e.model}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},worktreePath:r,...e.signal!==void 0?{signal:e.signal}:{},...e.slugGenerator!==void 0?{slugGenerator:e.slugGenerator}:{},onSkip:(a,l)=>{t=a,n=l}}),i=t??"unknown",s=n;if(o!==null){let l=`${lw(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return Aae(e.session,c.path),{status:"created",path:c.path,branch:c.branch,slug:o}}catch(c){i="create-failed",s=(c instanceof Error?c.message:String(c)).slice(0,200)}}try{let a=await e.deferred.create(!0);return Aae(e.session,a.path),{status:"created-fallback",path:a.path,branch:a.branch,reason:i,...s!==void 0?{detail:s}:{}}}catch(a){return{status:"failed",reason:a instanceof Error?a.message:String(a)}}}function Aae(e,t){e&&e.setCwd(t),jqe(t)}function jqe(e){try{process.chdir(e)}catch{}}kt();Pt();yc();Po();U();import{spawn as Iae}from"child_process";import{existsSync as Mae,mkdirSync as qqe,readFileSync as Oae,unlinkSync as Pae,writeFileSync as $ae}from"fs";import{get as zqe}from"https";import{join as Dae}from"path";import{readFileSync as Hqe}from"fs";import{dirname as Wqe,join as Kqe}from"path";import{fileURLToPath as Gqe}from"url";function Oo(){try{return"5.191.0"}catch{}try{let e=Wqe(Gqe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(Hqe(Kqe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}L();F();var Jqe=64*1024,Vqe=10800*1e3,Yqe=800,Xqe=3600*1e3,Qqe="update-check.json",Zqe="pending-update.json";function RF(){return Dae(ea(),Qqe)}function $h(){return Dae(ea(),Zqe)}function AF(){let e=ea();Mae(e)||qqe(e,{recursive:!0})}function Lae(e,t){let n=a=>a.split(/[-+]/,1)[0]??a,r=a=>a.includes("-"),o=n(e).split(".").map(Number),i=n(t).split(".").map(Number),s=Math.max(o.length,i.length);for(let a=0;a<s;a++){let l=o[a]??0,c=i[a]??0;if(c>l)return!0;if(c<l)return!1}return r(e)&&!r(t)}function Fae(){try{let e=Oae(RF(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function Nae(){try{AF();let e=`
2174
2174
  const https = require('https');
2175
2175
  const fs = require('fs');
2176
2176
  const url = 'https://registry.npmjs.org/agent-afk/latest';