agent-afk 5.157.0 → 5.157.1

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
@@ -385,7 +385,7 @@ ${o}`,paths:[t,n]}:o!==null?i={content:o,paths:[n]}:r!==null?i={content:r,paths:
385
385
 
386
386
  ${t}`}var jge,XA=y(()=>{"use strict";jge=new Set(["script","style","noscript","template","svg"])});function Kge(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 Hj(e,t,n){let r=Math.min(t*2**e,n);return Math.round(Math.random()*r)}function Gge(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 Wj(e,t,n={},r={}){let o=r.retries??3,i=r.baseDelayMs??500,s=r.maxDelayMs??1e4,a=r.sleep??Kge,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(!Wge.has(d.status)||u===o)return d;let p=Gge(d,s)??Hj(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=Hj(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 Wge,Kj=y(()=>{"use strict";ue();Wge=new Set([429,502,503,504])});import{BlockList as qge,isIP as ZA}from"node:net";import{lookup as zge}from"node:dns/promises";import{Agent as Vge}from"undici";function qj(){let e=v.AFK_WEB_ALLOW_PRIVATE_HOSTS?.trim().toLowerCase();return e==="1"||e==="true"}function Qge(e){return e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e}function QA(e){let t=ZA(e);return t===0?!1:Xge.check(e,t===4?"ipv4":"ipv6")}async function zj(e){return zge(e,{all:!0,verbatim:!0})}async function eC(e,t={}){if(t.allowPrivateHosts??qj())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=Qge(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(ZA(r)!==0)return QA(r)?{allowed:!1,reason:o(r,r)}:{allowed:!0};let i=t.lookupFn??zj,s;try{s=await i(r)}catch{return{allowed:!0}}for(let a of s)if(QA(a.address))return{allowed:!1,reason:o(a.address,`${r} (resolved)`)};return{allowed:!0}}async function am(e,t={}){let n=await eC(e,t);if(!n.allowed)throw new dr(n.reason)}async function ab(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<=Gj;s++){await am(i,o);let a={...n,redirect:"manual",...e===globalThis.fetch&&!(r.allowPrivateHosts??qj())?{dispatcher:Zge}:{}},l=await Wj(e,i,a,r.retry??{});if(!ehe.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 dr(`too many redirects (>${Gj}) starting from ${t}`)}var Yge,Jge,Xge,dr,Zge,Gj,ehe,tC=y(()=>{"use strict";F();Kj();Yge=[["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]],Jge=[["::",96],["64:ff9b::",96],["fc00::",7],["fe80::",10]],Xge=(()=>{let e=new qge;for(let[t,n]of Yge)e.addSubnet(t,n,"ipv4");for(let[t,n]of Jge)e.addSubnet(t,n,"ipv6");return e})(),dr=class extends Error{constructor(t){super(t),this.name="EgressBlockedError"}};Zge=new Vge({connect:{lookup(e,t,n){zj(e).then(r=>{let o=r.find(s=>QA(s.address));if(o!==void 0){n(new dr(`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,ZA(i.address))},r=>n(r,"",0))}}});Gj=20,ehe=new Set([301,302,303,307,308])});import{readFileSync as the}from"node:fs";import{join as nhe}from"path";function rhe(e){let n=e.replace(/[.+?()[\]{}/\\^$|]/g,"\\$&").replace(/\*/g,"[^.]*");return new RegExp(`^${n}$`,"i")}function Vj(e,t){return rhe(t).test(e)}function she(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(ohe.has(t))return!0;if(ihe.has(t))return!1}return!1}function Yj(e){return e===void 0||e.trim()===""?[]:e.split(",").map(t=>t.trim().toLowerCase()).filter(t=>t.length>0)}function ahe(e){if(e===void 0||e===""||e==="playwright")return"playwright";throw new Error(`AFK_BROWSER_BACKEND: only "playwright" is supported in Phase 1, got: ${e}`)}function Jj(e){let t=e===void 0||e.trim()===""?"default":e.trim();return Il(t),t}function lhe(e){if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function che(e){try{return the(e,"utf8")}catch(t){if(t.code==="ENOENT")return;throw t}}function uhe(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")n.backend="playwright";else if(t.backend!==void 0)throw new Error(`AFK_BROWSER_BACKEND: only "playwright" is supported in Phase 1, got: ${String(t.backend)}`);return typeof t.defaultProfile=="string"&&(n.defaultProfile=Jj(t.defaultProfile)),n}function Xj(e){let t=e?.env??v,n=e?.readFileSync??che,r=e?.surface??t.AGENT_SURFACE,o=she(t.AFK_BROWSER_HEADLESS,r),i=Yj(t.AFK_BROWSER_ALLOWED_DOMAINS),s=Yj(t.AFK_BROWSER_BLOCKED_DOMAINS),a=lhe(t.AFK_BROWSER_DOM_SNAPSHOTS),l=ahe(t.AFK_BROWSER_BACKEND),c=Jj(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():nhe(Dn(),"browser.json"),f=n(p);if(f===void 0)return u;let g;try{g=JSON.parse(f)}catch(b){throw new Error(`Failed to parse browser config at ${p}: ${String(b)}`)}if(typeof g!="object"||g===null||Array.isArray(g))throw new Error(`Browser config at ${p} must be a JSON object`);let h=uhe(u,g);return h.configPath=p,h}function lb(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(Vj(n,r))return{allowed:!1,reason:`blocked by AFK_BROWSER_BLOCKED_DOMAINS: ${r}`};return t.allowedDomains.length>0&&!t.allowedDomains.some(o=>Vj(n,o))?{allowed:!1,reason:"not in AFK_BROWSER_ALLOWED_DOMAINS"}:{allowed:!0}}var ohe,ihe,cb=y(()=>{"use strict";F();H();ohe=new Set(["daemon","subagent","telegram","afk"]),ihe=new Set(["repl","interactive","cli"])});import{existsSync as dhe,readFileSync as phe}from"node:fs";import{createRequire as mhe}from"node:module";import{dirname as fhe,join as ghe}from"node:path";function e1(e){if(typeof e=="string")return e;let t=[],n=e;for(let r=0;r<yhe&&n instanceof Error;r++)t.push(n.message),n=n.cause;return t.length>0?t.join(" | "):String(e)}function mn(e){let t=e1(e);return Zj.some(n=>t.includes(n))}function bhe(){try{let t=mhe(import.meta.url).resolve("playwright/package.json"),n=JSON.parse(phe(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=ghe(fhe(t),o);return dhe(i)?`node ${/\s/.test(i)?`"${i}"`:i} install chromium`:void 0}catch{return}}function lm(){return Qj??=bhe()??hhe,Qj}function nC(e){return e.includes("install chromium")}function Wn(e,t){let n=e1(e),r=t?.latched===!0?` ${She}`:"";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: ${lm()}.${o}${r}`}return`browser tools require the optional \`playwright\` peer dependency. Install via: pnpm add playwright (then ${lm()}). Or pick a different tool.${r}`}function cm(e,t,n=!1){if(!mn(e))return e;let r=e instanceof Error?e.message:String(e);return new Error(`${r}
387
387
 
388
- ${Wn(e,{headless:t,latched:n})}`,{cause:e})}var Zj,hhe,yhe,Qj,She,ub=y(()=>{"use strict";Zj=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],hhe="pnpm exec playwright install chromium",yhe=4;She="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 ra from"node:fs";import db from"node:path";import{randomBytes as whe}from"node:crypto";import{chromium as vhe}from"playwright";function khe(){try{return"5.157.0"}catch{}try{let e=db.resolve(import.meta.dirname,"../../../package.json"),t=ra.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var The,pb,t1=y(()=>{"use strict";ub();H();ue();The=khe(),pb=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=vhe.launch({headless:this.config.headless}).then(t=>(this.browser=t,this.launchPromise=void 0,this.clearLaunchFailure(),t)).catch(t=>{this.launchPromise=void 0;let n=cm(t,this.config.headless,!0);throw this.latchLaunchFailure(n),n}),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/${The}`}}loadStorageState(t){let n=Pl(t);try{if(!ra.existsSync(n))return;let r=JSON.parse(ra.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=Pl(t);if(!ra.existsSync(r))return;let o=await n.storageState(),i=db.join(db.dirname(r),`.${db.basename(r)}.${process.pid}.${whe(4).toString("hex")}.tmp`);ra.writeFileSync(i,JSON.stringify(o),{mode:384}),ra.chmodSync(i,384),ra.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 Ehe}from"crypto";function n1(e){return!!(e.role==="textbox"&&e.kind==="password"||e.label&&Rhe.test(e.label))}function r1(e){return Ehe("sha256").update(e,"utf8").digest("hex").slice(0,8)}function o1(e){let t=e.replace(/\s+/g," ").trim();return t.length<=80?t:t.slice(0,77)+"..."}var Rhe,mb=y(()=>{"use strict";Rhe=/password|secret|token|api[_-]?key|otp|2fa/i});import{createHash as xhe}from"node:crypto";function Ahe(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function Che(e,t,n){return`el_${xhe("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function _he(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function i1(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function a1(e,t){let n=e.role??"",r=e.name??"";s1.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])a1(i,t)}async function Ihe(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},l1).catch(()=>[])}async function Phe(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},l1).catch(()=>[])}function Mhe(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function fb(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=Mhe(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=Ihe(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]),b,S=!1;d!==null?(b=[],a1(d,b)):(o.push("observation skipped accessibility tree (returned null)"),S=!0,b=(await Phe(e)).filter(D=>s1.has(D.role??"")));let w=new Map;for(let M of p){let D=i1(M.name),$=w.get(D);(!$||$.bbox.w===0&&M.bbox.w>0)&&w.set(D,M)}let k=b.map(M=>({ax:M,dom:w.get(i1(M.name??""))})),E=r?k:k.filter(M=>M.dom?M.dom.bbox.w>0||M.dom.bbox.h>0:!0);E.sort((M,D)=>{let $=M.dom?.bbox.y??0,U=D.dom?.bbox.y??0;if($!==U)return $-U;let W=M.dom?.bbox.x??0,G=D.dom?.bbox.x??0;return W-G}),E.length>200&&o.push("page has 200+ interactive elements; consider scoping");let R=E.slice(0,n).map((M,D)=>{let $=M.ax.role??"generic",U=M.ax.name??"",W=Che($,U,D),G=M.dom?.bbox??{x:0,y:0,w:0,h:0},j=M.dom?.type??null,K=null;M.ax.value!==void 0&&M.ax.value!==null&&(K=String(M.ax.value)),M.ax.checked!==void 0&&(K=String(M.ax.checked)),n1({role:$,kind:j})&&(K="[redacted]");let Q={disabled:M.ax.disabled??!1};M.ax.checked!==void 0&&(Q.checked=M.ax.checked===!0||M.ax.checked==="mixed"),M.ax.selected!==void 0&&(Q.selected=M.ax.selected),M.ax.expanded!==void 0&&(Q.expanded=M.ax.expanded);let P;M.dom?.testId?P=`[data-testid="${M.dom.testId}"]`:M.dom?.id&&(P=`#${M.dom.id}`);let N={id:W,role:$,label:Ahe(U),kind:j,value:K,state:Q,bbox:G};return P!==void 0&&(N.selector=P),N}),I="idle";try{let M=await e.evaluate(()=>document.readyState);M==="loading"?I="loading":M==="interactive"?I="navigating":I="idle"}catch{I="navigating"}I!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),S&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let C=_he(f),x=`obs_${t.observationCounter.toString(36)}`,_=new Date().toISOString();return{observationId:x,url:g,title:h,textSummary:C,interactive:R,status:{httpStatus:t.httpStatus??null,loadingState:I,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:_}}var s1,l1,c1=y(()=>{"use strict";mb();s1=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);l1="a[href], button, input, select, textarea, [role], [tabindex], label"});async function u1(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 rC(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>u1(e,i)))).filter(o=>o!==null)}async function Ohe(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 oC(e,t,n){switch(t.kind){case"element_id":return Dhe(e,t,n);case"selector":return $he(e,t);case"semantic":return Fhe(e,t)}}async function Dhe(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 rC(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function $he(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 rC(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function Fhe(e,t){return t.role!==void 0?Lhe(e,t.text,t.role):Nhe(e,t.text,t)}async function Lhe(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 rC(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function Nhe(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 Ohe(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 b=p[h];if(b===void 0)continue;let S=await u1(b.locator,b.index);if(S!==null){let w=`${S.role}:${S.label}:${h}`,k=0;for(let E=0;E<w.length;E++)k=k*31+w.charCodeAt(E)>>>0;f.push({...S,id:`el_${k.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var d1=y(()=>{"use strict"});async function iC(e,t,n,r){let o=e.url();if(o===n)return null;let i=lb(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 p1=y(()=>{"use strict";cb()});import{randomBytes as Bhe}from"crypto";import{mkdir as Uhe,stat as jhe,writeFile as Hhe}from"fs/promises";import{join as sC}from"path";import{gzip as Whe}from"zlib";import{promisify as Khe}from"util";function Ghe(e){return sC(sn(e),"browser")}function qhe(e){return sC(Ghe(e),"screenshots")}function zhe(){return new Date().toISOString().replace(/[:.]/g,"-")}function Vhe(){return Bhe(3).toString("hex")}async function aC(e,t,n){if(t.length>m1)throw new Error(`writeScreenshotSidecar: buffer exceeds ${m1} byte cap (received ${t.length} bytes). Refusing to write oversized screenshot.`);let r=qhe(e);await Uhe(r,{recursive:!0});let o=`${zhe()}-${Vhe()}-${n}.png`,i=sC(r,o);await Hhe(i,t);let{size:s}=await jhe(i);return{path:i,bytes:s}}var _9e,m1,f1=y(()=>{"use strict";H();mb();_9e=Khe(Whe);m1=5*1024*1024});var h1={};Ar(h1,{PlaywrightProvider:()=>lC});function g1(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 lC,y1=y(()=>{"use strict";t1();c1();d1();cb();p1();f1();lC=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new pb(t)}async open(t){let n=lb(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 iC(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 fb(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 fb(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 oC(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${g1(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(b){c=b}else c=h}let d=await iC(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 fb(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 oC(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${g1(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 aC(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 aC(n,o,r);return i}catch{return null}}}});var ia={};Ar(ia,{__resetBrowserRegistryForTests:()=>Zhe,browserProviderActive:()=>Xhe,closeBrowserProvider:()=>cC,getBrowserProvider:()=>Jhe,peekBrowserProvider:()=>Qhe});function b1(){Promise.resolve(cC()).then(()=>{process.exit(130)})}function S1(){Promise.resolve(cC()).then(()=>{process.exit(143)})}function w1(){Kr=null}function Yhe(){gb||(process.on("SIGINT",b1),process.on("SIGTERM",S1),process.on("exit",w1),gb=!0)}function v1(){gb&&(process.removeListener("SIGINT",b1),process.removeListener("SIGTERM",S1),process.removeListener("exit",w1),gb=!1)}async function Jhe(e){return Kr!==null?Kr:(oa!==null||(oa=(async()=>{let{PlaywrightProvider:t}=await Promise.resolve().then(()=>(y1(),h1)),n=Xj(e),r=new t(n);return Yhe(),Kr=r,oa=null,r})()),oa)}async function cC(){if(Kr===null)return;let e=Kr;Kr=null,oa=null,v1(),await e.shutdown()}function Xhe(){return Kr!==null}function Qhe(){return Kr}function Zhe(){Kr=null,oa=null,v1()}var Kr,oa,gb,sa=y(()=>{"use strict";cb();Kr=null,oa=null,gb=!1});async function k1(e,t){try{return await Bj(e,t)}catch(n){return B("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function iye(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(sa(),ia));return(await n()).render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}async function T1(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??iye,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s="",a=e,l=null,c=null;try{let d=await ab(n,e,{headers:oye,signal:t.signal},o);l=d.status,a=d.url||e;let p=d.headers.get("content-type")??"";if(d.ok){if(rye.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(nye.test(p)&&!tye.test(p))return{title:"",markdown:f.trim(),finalUrl:a,usedRender:!1};if(s=f,i=await k1(f,a),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(d){if(t.signal.aborted||d instanceof dr||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=JA({html:s,extractedTextLength:i.textLength});return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1,...d!==void 0?{advisory:d}:{}}}try{await am(e,o);let d=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:f=>am(f,o)});d.finalUrl!==e&&/^https?:\/\//i.test(d.finalUrl)&&await am(d.finalUrl,o);let p=await k1(d.html,d.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||p.textLength>=i.textLength){let f=JA({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 dr)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 tye,nye,rye,oye,E1=y(()=>{"use strict";Uj();XA();tC();ue();tye=/(text\/html|application\/xhtml\+xml)/i,nye=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,rye=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,oye={"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 lye(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(sye,{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),aye),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=ae(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 R1(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?lye({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 x1(e,t){if(t.length===0)return`# Search results for "${e}"
388
+ ${Wn(e,{headless:t,latched:n})}`,{cause:e})}var Zj,hhe,yhe,Qj,She,ub=y(()=>{"use strict";Zj=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],hhe="pnpm exec playwright install chromium",yhe=4;She="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 ra from"node:fs";import db from"node:path";import{randomBytes as whe}from"node:crypto";import{chromium as vhe}from"playwright";function khe(){try{return"5.157.1"}catch{}try{let e=db.resolve(import.meta.dirname,"../../../package.json"),t=ra.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var The,pb,t1=y(()=>{"use strict";ub();H();ue();The=khe(),pb=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=vhe.launch({headless:this.config.headless}).then(t=>(this.browser=t,this.launchPromise=void 0,this.clearLaunchFailure(),t)).catch(t=>{this.launchPromise=void 0;let n=cm(t,this.config.headless,!0);throw this.latchLaunchFailure(n),n}),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/${The}`}}loadStorageState(t){let n=Pl(t);try{if(!ra.existsSync(n))return;let r=JSON.parse(ra.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=Pl(t);if(!ra.existsSync(r))return;let o=await n.storageState(),i=db.join(db.dirname(r),`.${db.basename(r)}.${process.pid}.${whe(4).toString("hex")}.tmp`);ra.writeFileSync(i,JSON.stringify(o),{mode:384}),ra.chmodSync(i,384),ra.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 Ehe}from"crypto";function n1(e){return!!(e.role==="textbox"&&e.kind==="password"||e.label&&Rhe.test(e.label))}function r1(e){return Ehe("sha256").update(e,"utf8").digest("hex").slice(0,8)}function o1(e){let t=e.replace(/\s+/g," ").trim();return t.length<=80?t:t.slice(0,77)+"..."}var Rhe,mb=y(()=>{"use strict";Rhe=/password|secret|token|api[_-]?key|otp|2fa/i});import{createHash as xhe}from"node:crypto";function Ahe(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function Che(e,t,n){return`el_${xhe("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function _he(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function i1(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function a1(e,t){let n=e.role??"",r=e.name??"";s1.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])a1(i,t)}async function Ihe(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},l1).catch(()=>[])}async function Phe(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},l1).catch(()=>[])}function Mhe(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function fb(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=Mhe(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=Ihe(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]),b,S=!1;d!==null?(b=[],a1(d,b)):(o.push("observation skipped accessibility tree (returned null)"),S=!0,b=(await Phe(e)).filter(D=>s1.has(D.role??"")));let w=new Map;for(let M of p){let D=i1(M.name),$=w.get(D);(!$||$.bbox.w===0&&M.bbox.w>0)&&w.set(D,M)}let k=b.map(M=>({ax:M,dom:w.get(i1(M.name??""))})),E=r?k:k.filter(M=>M.dom?M.dom.bbox.w>0||M.dom.bbox.h>0:!0);E.sort((M,D)=>{let $=M.dom?.bbox.y??0,U=D.dom?.bbox.y??0;if($!==U)return $-U;let W=M.dom?.bbox.x??0,G=D.dom?.bbox.x??0;return W-G}),E.length>200&&o.push("page has 200+ interactive elements; consider scoping");let R=E.slice(0,n).map((M,D)=>{let $=M.ax.role??"generic",U=M.ax.name??"",W=Che($,U,D),G=M.dom?.bbox??{x:0,y:0,w:0,h:0},j=M.dom?.type??null,K=null;M.ax.value!==void 0&&M.ax.value!==null&&(K=String(M.ax.value)),M.ax.checked!==void 0&&(K=String(M.ax.checked)),n1({role:$,kind:j})&&(K="[redacted]");let Q={disabled:M.ax.disabled??!1};M.ax.checked!==void 0&&(Q.checked=M.ax.checked===!0||M.ax.checked==="mixed"),M.ax.selected!==void 0&&(Q.selected=M.ax.selected),M.ax.expanded!==void 0&&(Q.expanded=M.ax.expanded);let P;M.dom?.testId?P=`[data-testid="${M.dom.testId}"]`:M.dom?.id&&(P=`#${M.dom.id}`);let N={id:W,role:$,label:Ahe(U),kind:j,value:K,state:Q,bbox:G};return P!==void 0&&(N.selector=P),N}),I="idle";try{let M=await e.evaluate(()=>document.readyState);M==="loading"?I="loading":M==="interactive"?I="navigating":I="idle"}catch{I="navigating"}I!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),S&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let C=_he(f),x=`obs_${t.observationCounter.toString(36)}`,_=new Date().toISOString();return{observationId:x,url:g,title:h,textSummary:C,interactive:R,status:{httpStatus:t.httpStatus??null,loadingState:I,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:_}}var s1,l1,c1=y(()=>{"use strict";mb();s1=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);l1="a[href], button, input, select, textarea, [role], [tabindex], label"});async function u1(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 rC(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>u1(e,i)))).filter(o=>o!==null)}async function Ohe(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 oC(e,t,n){switch(t.kind){case"element_id":return Dhe(e,t,n);case"selector":return $he(e,t);case"semantic":return Fhe(e,t)}}async function Dhe(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 rC(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function $he(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 rC(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function Fhe(e,t){return t.role!==void 0?Lhe(e,t.text,t.role):Nhe(e,t.text,t)}async function Lhe(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 rC(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function Nhe(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 Ohe(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 b=p[h];if(b===void 0)continue;let S=await u1(b.locator,b.index);if(S!==null){let w=`${S.role}:${S.label}:${h}`,k=0;for(let E=0;E<w.length;E++)k=k*31+w.charCodeAt(E)>>>0;f.push({...S,id:`el_${k.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var d1=y(()=>{"use strict"});async function iC(e,t,n,r){let o=e.url();if(o===n)return null;let i=lb(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 p1=y(()=>{"use strict";cb()});import{randomBytes as Bhe}from"crypto";import{mkdir as Uhe,stat as jhe,writeFile as Hhe}from"fs/promises";import{join as sC}from"path";import{gzip as Whe}from"zlib";import{promisify as Khe}from"util";function Ghe(e){return sC(sn(e),"browser")}function qhe(e){return sC(Ghe(e),"screenshots")}function zhe(){return new Date().toISOString().replace(/[:.]/g,"-")}function Vhe(){return Bhe(3).toString("hex")}async function aC(e,t,n){if(t.length>m1)throw new Error(`writeScreenshotSidecar: buffer exceeds ${m1} byte cap (received ${t.length} bytes). Refusing to write oversized screenshot.`);let r=qhe(e);await Uhe(r,{recursive:!0});let o=`${zhe()}-${Vhe()}-${n}.png`,i=sC(r,o);await Hhe(i,t);let{size:s}=await jhe(i);return{path:i,bytes:s}}var _9e,m1,f1=y(()=>{"use strict";H();mb();_9e=Khe(Whe);m1=5*1024*1024});var h1={};Ar(h1,{PlaywrightProvider:()=>lC});function g1(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 lC,y1=y(()=>{"use strict";t1();c1();d1();cb();p1();f1();lC=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new pb(t)}async open(t){let n=lb(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 iC(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 fb(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 fb(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 oC(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${g1(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(b){c=b}else c=h}let d=await iC(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 fb(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 oC(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${g1(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 aC(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 aC(n,o,r);return i}catch{return null}}}});var ia={};Ar(ia,{__resetBrowserRegistryForTests:()=>Zhe,browserProviderActive:()=>Xhe,closeBrowserProvider:()=>cC,getBrowserProvider:()=>Jhe,peekBrowserProvider:()=>Qhe});function b1(){Promise.resolve(cC()).then(()=>{process.exit(130)})}function S1(){Promise.resolve(cC()).then(()=>{process.exit(143)})}function w1(){Kr=null}function Yhe(){gb||(process.on("SIGINT",b1),process.on("SIGTERM",S1),process.on("exit",w1),gb=!0)}function v1(){gb&&(process.removeListener("SIGINT",b1),process.removeListener("SIGTERM",S1),process.removeListener("exit",w1),gb=!1)}async function Jhe(e){return Kr!==null?Kr:(oa!==null||(oa=(async()=>{let{PlaywrightProvider:t}=await Promise.resolve().then(()=>(y1(),h1)),n=Xj(e),r=new t(n);return Yhe(),Kr=r,oa=null,r})()),oa)}async function cC(){if(Kr===null)return;let e=Kr;Kr=null,oa=null,v1(),await e.shutdown()}function Xhe(){return Kr!==null}function Qhe(){return Kr}function Zhe(){Kr=null,oa=null,v1()}var Kr,oa,gb,sa=y(()=>{"use strict";cb();Kr=null,oa=null,gb=!1});async function k1(e,t){try{return await Bj(e,t)}catch(n){return B("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function iye(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(sa(),ia));return(await n()).render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}async function T1(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??iye,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s="",a=e,l=null,c=null;try{let d=await ab(n,e,{headers:oye,signal:t.signal},o);l=d.status,a=d.url||e;let p=d.headers.get("content-type")??"";if(d.ok){if(rye.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(nye.test(p)&&!tye.test(p))return{title:"",markdown:f.trim(),finalUrl:a,usedRender:!1};if(s=f,i=await k1(f,a),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(d){if(t.signal.aborted||d instanceof dr||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=JA({html:s,extractedTextLength:i.textLength});return{title:i.title,markdown:i.markdown,finalUrl:a,usedRender:!1,...d!==void 0?{advisory:d}:{}}}try{await am(e,o);let d=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:f=>am(f,o)});d.finalUrl!==e&&/^https?:\/\//i.test(d.finalUrl)&&await am(d.finalUrl,o);let p=await k1(d.html,d.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||p.textLength>=i.textLength){let f=JA({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 dr)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 tye,nye,rye,oye,E1=y(()=>{"use strict";Uj();XA();tC();ue();tye=/(text\/html|application\/xhtml\+xml)/i,nye=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,rye=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,oye={"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 lye(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(sye,{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),aye),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=ae(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 R1(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?lye({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 x1(e,t){if(t.length===0)return`# Search results for "${e}"
389
389
 
390
390
  (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(`
391
391
  `).trimEnd()}var sye,aye,A1=y(()=>{"use strict";Xe();sye="https://api.exa.ai/search",aye=10});function hb(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 aa=y(()=>{"use strict";ub()});function fye(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=cye;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,uye)}let a=dye;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,pye)}return{mode:r,url:o,query:i,timeoutMs:s,maxBytes:a}}function uC(e,t){return Buffer.byteLength(e,"utf8")<=t?{content:e,truncated:!1}:{content:Ks(e,t),truncated:!0}}function gye(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=fye(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 eC(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 ab(t,s.url,h,r)}catch(h){return a.signal.aborted?{content:`web_scrape aborted: ${u()}`,isError:!0}:h instanceof dr?{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=uC(f,s.maxBytes);return{content:g.content,...g.truncated?{truncated:!0}:{}}}if(s.mode==="markdown")try{let p=await T1(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=uC(jj(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 dr)return{content:`web_scrape blocked: ${p.message}`,isError:!0};let f=p instanceof Error?p.message:String(p),g=mn(p)&&!nC(f)?` (the render fallback needs the optional Playwright browser \u2014 run \`${lm()}\`)`:"";return{content:`web_scrape markdown error: ${f}${g}`,isError:!0}}let d=R1({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:mye,timeoutMs:s.timeoutMs,signal:a.signal}),f=uC(x1(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 cye,uye,dye,pye,mye,C1,_1=y(()=>{"use strict";E1();A1();tC();di();XA();aa();cye=3e4,uye=12e4,dye=1e5,pye=1e6,mye=10;C1=gye()});import{existsSync as P1,mkdirSync as hye,readFileSync as yye,renameSync as bye,unlinkSync as Sye,writeFileSync as wye}from"node:fs";import{dirname as I1,join as vye}from"node:path";import{randomBytes as kye}from"node:crypto";function En(e){let t=e??ph();if(!P1(t))return[];try{let n=yye(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 hi(e,t){let n=t??ph();hye(I1(n),{recursive:!0});let r=vye(I1(n),`.schedules.json.${process.pid}.${kye(4).toString("hex")}.tmp`),o=JSON.stringify(e,null,2);try{wye(r,o,"utf-8"),bye(r,n)}catch(i){try{P1(r)&&Sye(r)}catch{}throw i}}function yb(e,t){let n=En(t),r=n.map(l=>l.id),o=Tye(e.name),i=Eye(o,r),s=new Date().toISOString(),a={...e,notifyOn:e.notifyOn??"failure",id:i,createdAt:s,updatedAt:s};return n.push(a),hi(n,t),a}function bb(e,t){let n=En(t),r=n.length,o=n.filter(i=>i.id!==e);return o.length===r?!1:(hi(o,t),!0)}function um(e,t){return En(t).find(n=>n.id===e)}function Tye(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"")}function Eye(e,t){if(!t.includes(e))return e;let n=2;for(;t.includes(`${e}-${n}`);)n+=1;return`${e}-${n}`}function Sb(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 wb=y(()=>{"use strict";H()});import{existsSync as Rye,readFileSync as xye}from"node:fs";import{join as Aye}from"node:path";async function Kn(e,t,n){let r,o;try{let i=Aye(rp("default"),"port");if(!Rye(i))return{synced:!1,detail:"daemon-not-detected (no port file)"};let s=xye(i,"utf-8").trim(),a=Cye(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 Cye(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 yi,dC=y(()=>{"use strict";H();yi="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 _ye}from"node:fs";import{readFile as Iye}from"node:fs/promises";var M1,O1,D1,$1,F1=y(()=>{"use strict";wb();H();dC();M1=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=yb({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 Kn("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 Kn("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:yi}})}},O1=async(e,t)=>{let n=En();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})))}},D1=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=or();if(!_ye(i))return{content:JSON.stringify([])};let s;try{let c=await Iye(i);s=(c.length>1048576?c.subarray(c.length-1048576):c).toString("utf-8")}catch{return{content:JSON.stringify([])}}let a=s.split(`
@@ -1135,7 +1135,7 @@ ${o}`:o}function _we(e){let t=e.systemPrompt;if(t!==void 0){if(typeof t=="string
1135
1135
  `)});function __(e){return e!=="autonomous"?null:{type:"text",text:$S}}var $S,I_=y(()=>{"use strict";$S=["## AFK mode is active","","The operator is away from keyboard. Your channel to them is Telegram via the `send_telegram` tool \u2014 not this transcript, which no one is watching live. At the end of each turn, push your terminal state (Done / Blocked / Asking) to Telegram so the operator can review asynchronously.","","Posture \u2014 bounded autonomy, not unchecked action:"," - Proceed autonomously on reversible work. Do not stop to confirm actions you are already authorized to take and can undo (edits, reads, tests, local commits, non-force pushes, installs)."," - At a one-way door \u2014 anything irreversible, externally visible, credential- or payment-touching, or where multiple readings lead to materially different work \u2014 do NOT guess. Push a concise Asking summary to Telegram naming the decision and your recommended default, then stop and end the turn in the Asking state."," - A mechanical gate refuses high-risk and irreversible operations at the hook layer regardless of this text. Treat a gate refusal as a signal to surface the decision to the operator, not an obstacle to work around.","","Communication discipline:"," - Batch updates. Send a Telegram message at terminal state (and at a genuinely blocking fork), not a play-by-play \u2014 the operator gets a push notification for every message."," - Keep pushes short and scannable: what happened, what changed, what (if anything) you need. Never paste raw tool output, logs, secrets, or full file contents into a push.","","Exit: the operator returns and runs `/afk off` (or Shift+Tab) to restore default permissions and terminal-channel interaction."].join(`
1136
1136
  `)});function Ai(e,t){if(!t||typeof t!="object")return"";let n=t;if(e==="skill"||e==="Skill"){let s=n.name;return typeof s=="string"&&s.length>0?`(${s.length>60?s.slice(0,59)+"\u2026":s})`:""}let r=n.file_path??n.path??n.filePath;if(typeof r=="string")return" "+r;let o=n.command??n.cmd;if(typeof o=="string"){let s=Nn(o.replace(/\\\r?\n/g," ").replace(/\s+/g," ").trim());return" "+(s.length>$K?s.slice(0,$K-1)+"\u2026":s)}let i=n.query??n.pattern??n.url??n.description;return typeof i=="string"?" "+i:""}var $K,Nm=y(()=>{"use strict";ii();$K=160});function FS(e){if(!e||typeof e!="object")return;let t=e,n={};for(let r of nve){let o=t[r];o!==void 0&&(n[r]=typeof o=="string"&&o.length>FK?o.slice(0,FK):o)}return Object.keys(n).length>0?JSON.stringify(n):void 0}function LS(e){if(!e||typeof e!="object")return;let t=e;if(Object.keys(t).length===0)return;let n={};for(let[r,o]of Object.entries(t))if(typeof o=="string"){let i=o.length>LK?o.slice(0,LK):o;n[r]=Nn(i)}else o!=null&&typeof o!="object"&&(n[r]=o);return Object.keys(n).length>0?JSON.stringify(n):void 0}var nve,FK,LK,P_=y(()=>{"use strict";ii();nve=["file_path","name","id_prefix"],FK=4096,LK=8192});import{createHash as rve}from"crypto";function NS(e){let{toolUseId:t,name:n,input:r,subagentId:o}=e,i=r??{},s=JSON.stringify(i),a=JSON.stringify(ove(n,i));return{phase:"started",toolUseId:t,name:n,inputBytes:Buffer.byteLength(s,"utf8"),argsFingerprint:rve("sha256").update(a).digest("hex"),...o!==void 0?{subagentId:o}:{}}}function ove(e,t){if(typeof t!="object"||t===null)return t;let n=t;switch(e){case"browser_act":return n.action==="fill"&&"value"in n?{...n,value:"[REDACTED]"}:t;case"config_set":return n.target==="env"&&"value"in n?{...n,value:"[REDACTED]"}:t;default:return t}}function BS(e){let{toolUseId:t,name:n,result:r,truncated:o,durationMs:i,subagentId:s}=e;return{phase:"completed",toolUseId:t,name:n,resultBytes:Buffer.byteLength(r.content,"utf8"),isError:r.isError===!0,truncated:o,durationMs:i,...r.incomplete===!0?{incomplete:!0}:{},...r.incompleteReason?{incompleteReason:r.incompleteReason}:{},...r.circuitBreaker===!0?{circuitBreaker:!0}:{},...r.failureClass?{failureClass:r.failureClass}:{},...typeof r.batchIndex=="number"&&typeof r.batchSize=="number"?{batchIndex:r.batchIndex,batchSize:r.batchSize}:{},...s!==void 0?{subagentId:s}:{}}}var US=y(()=>{"use strict"});import{randomUUID as ive}from"node:crypto";async function*NK({state:e,signal:t,vision:n,toolDispatcher:r,traceWriter:o,priorTurns:i,sessionId:s,subagentId:a}){if(!r)return void 0;let l=Cm(e);for(let g of l)g.id.length===0&&(g.id=ive());let{calls:c,parseErrors:u}=cK(l,t),d=new Map;for(let g of c){let h=Date.now();d.set(g.id,h),Os(o,NS({toolUseId:g.id,name:g.name,input:g.input,subagentId:a})),yield{type:"tool.use.start",toolUseId:g.id,toolName:g.name,toolInput:Ai(g.name,g.input),toolInputRaw:FS(g.input),toolInputCapture:v.AFK_CAPTURE_SUBAGENT_OUTPUT==="1"?LS(g.input):void 0,sessionId:s}}let p=[];if(t.aborted){let g=Zt(t);for(let h of c){let b={content:"Tool call aborted",isError:!0,failureClass:g};p.push({call:h,result:b}),yield{type:"tool.output",toolUseId:h.id,toolName:h.name,content:b.content,isError:!0,failureClass:g,sessionId:s}}}else{let g;try{if(r.executeBatch)g=await r.executeBatch(c);else{g=[];for(let h of c){if(t.aborted){g.push({content:"Tool call aborted",isError:!0,failureClass:Zt(t)});continue}try{g.push(await r.execute(h))}catch(b){let S=b instanceof Error?b.message:String(b);g.push({content:`Tool execution threw: ${S}`,isError:!0})}}}}catch(h){let b=h instanceof Error?h.message:String(h);g=c.map(()=>({content:`Tool batch execution failed: ${b}`,isError:!0}))}for(let h=0;h<c.length;h++){let b=c[h],S=g[h],w=u.get(b.id);w!==void 0&&(S={content:`${w}
1137
1137
  --
1138
- ${S.content}`,isError:!0,...S.truncated===!0?{truncated:!0}:{}}),p.push({call:b,result:S});let k=d.get(b.id),E=typeof k=="number"?Date.now()-k:0,T=S.truncated===!0||S.content.includes("[output truncated");Os(o,BS({toolUseId:b.id,name:b.name,result:S,truncated:T,durationMs:E,subagentId:a})),yield{type:"tool.output",toolUseId:b.id,toolName:b.name,content:S.content,...S.isError===!0?{isError:!0}:{},...S.truncated===!0?{truncated:!0}:{},...S.incomplete===!0?{incomplete:!0}:{},...S.incompleteReason?{incompleteReason:S.incompleteReason}:{},...typeof S.batchIndex=="number"&&typeof S.batchSize=="number"?{batchIndex:S.batchIndex,batchSize:S.batchSize}:{},...S.failureClass?{failureClass:S.failureClass}:{},sessionId:s},S.render?.diff&&(yield{type:"tool.diff",toolUseId:b.id,diff:S.render.diff,sessionId:s})}}i.push(uK(e.assistantText,l,e.reasoningText));for(let g of dK(p))i.push(g);for(let{result:g}of p)g.harnessUserMessage?.kind==="queued_user_message"&&i.push({role:"user",content:g.harnessUserMessage.text});let f=pK(p,{vision:n});return f&&i.push(f),p.find(g=>g.result.failureClass===nc)?.result}var BK=y(()=>{"use strict";ui();pe();P_();F();Bp();Nm();US();_m();p_()});function HS(e){return e!==void 0&&e>0?Math.floor(e):0}function WS(e,t){return t>0&&e>=t}function KS(e,t){return t>0?`round ${e}/${t}`:`round ${e}`}var gr,jS,Kc=y(()=>{"use strict";gr="tool_use_loop_capped",jS="You have reached your tool-use budget for this turn. Do not request any more tools \u2014 give your final answer now using only the information already gathered."});function qS(e){if(e===void 0||!Number.isFinite(e)||e<=0||e<=12e4)return 0;let t=e*.15,n=Math.min(3e5,Math.max(3e4,t));return Math.max(0,Math.floor(e-n))}function zS(e,t,n=Date.now()){return t>0&&n-e>=t}var hr,GS,Ci=y(()=>{"use strict";hr="soft_deadline_wind_down",GS="Your time budget for this turn is nearly spent. Do not request any more tools \u2014 give your final answer now using only the information already gathered. If your work is incomplete, say briefly what you established, what remains unresolved, and what you would check next."});function UK(e,t,n,r){try{return Ep($t(e??{}),$m(t,n),ot(t),r),null}catch(o){return o instanceof Error?o:new Error(String(o))}}var jK=y(()=>{"use strict";Ql();sr();Fm()});function HK(e){let t=e.get("retry-after");if(t==null)return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.round(n*1e3);let r=Date.parse(t);if(!Number.isNaN(r)){let o=r-Date.now();if(o>=0)return o}}function WK(e=fetch,t,n,r){return!t&&!n&&!r?e:async(o,i)=>{if(r){let a=sS(i),l=i?.signal instanceof AbortSignal?i.signal:void 0;await r.acquirePermit(a,l)}let s=await e(o,i);if(n)try{n(s.headers)}catch{}if(r&&s.status===429)try{let a=HK(s.headers);r.freeze(a??5e3)}catch{}if(t&&sve.has(s.status))try{let a=HK(s.headers);t({status:s.status,...a!==void 0?{retryAfterMs:a}:{}})}catch{}return s}}var sve,KK=y(()=>{"use strict";bm();sve=new Set([429,503,529])});import ave from"openai";function cve(e){let t={apiKey:e.apiKey};return e.baseURL!==void 0&&(t.baseURL=e.baseURL),e.defaultHeaders!==void 0&&(t.defaultHeaders=e.defaultHeaders),e.fetch!==void 0&&(t.fetch=e.fetch),new ave(t)}function GK(){return lve??cve}function pve(e){if(!e)return!1;let t;try{t=new URL(e).hostname}catch{return!1}return uve.has(t)||t.startsWith("127.")?!0:dve.some(n=>t===n.slice(1)||t.endsWith(n))}function qK(e){if(pve(e))return;let t=n=>{let r=kW(n);r!==void 0&&_c.update(r)};return WK(globalThis.fetch,void 0,t,_c)}var lve,uve,dve,M_=y(()=>{"use strict";bm();YC();KK();lve=null;uve=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","chatgpt.com"]),dve=[".chatgpt.com"]});function xn(e,t){return new Promise(n=>{if(t.aborted){n();return}let r=()=>{clearTimeout(o),n()},o=setTimeout(()=>{t.removeEventListener("abort",r),n()},e);o.unref(),t.addEventListener("abort",r,{once:!0})})}var ga=y(()=>{"use strict"});async function*O_(e,t){let n=0;for(;;){let r=vS(),o=Date.now(),i,s=null;for(let u=0;;u++)try{i=await t.createStream(e.controller.signal);break}catch(d){if(e.controller.signal.aborted)return null;if(MS(d)&&u<OK){let p=x_(d),f=p??R_(u);if(ne(e.traceWriter,{phase:"rate_limit",durationMs:f,resolvedModel:e.currentModel,metadata:{source:"connection",reason:p!==void 0?"retry-after":"backoff",attempt:u}}),await xn(f,e.controller.signal),e.controller.signal.aborted)return null;continue}s=d;break}if(s!==null)return yield{type:"error",error:t.clarifyError(s)},null;let a=null,l=!1;try{for await(let u of Hc(i,e.controller.signal)){if(e.isClosed())return null;for(let d of t.translate(u,r))l||(l=!0,ne(e.traceWriter,{phase:"model_ttfb",durationMs:Date.now()-o,resolvedModel:e.currentModel})),yield d}}catch(u){if(e.controller.signal.aborted)return null;if(OS(u)&&n<DK){n++,yield{type:"stream.retry",sessionId:e.initSessionId};let d=x_(u),p=d??R_(n-1);if(ne(e.traceWriter,{phase:"rate_limit",durationMs:p,resolvedModel:e.currentModel,metadata:{source:"stream",reason:d!==void 0?"retry-after":"backoff",attempt:n}}),await xn(p,e.controller.signal),e.controller.signal.aborted)return null;continue}a=u}if(a!==null)return yield{type:"error",error:t.clarifyError(a)},null;if(e.controller.signal.aborted)return null;let c=aK(r)&&r.toolCallsByIndex.size>0;return r.finishReason===null&&r.assistantText.length===0&&!c?(yield{type:"error",error:new Fn("the model stream ended without a finish_reason and without a dispatchable response (no visible answer text and no complete tool call): the response was empty or cut off before any usable content arrived. The turn is incomplete.")},null):{state:r,events:[],text:r.assistantText,needsToolDispatch:c}}}var zK=y(()=>{"use strict";pe();_S();ga();_m();Le();Wc()});function VK(e){if(e instanceof Lm||MS(e)||OS(e))return!1;let t=xi(e);return t!==void 0&&mve.has(t)}var mve,YK=y(()=>{"use strict";Wc();PS();mve=new Set([400,404,405,415,422,501])});import{randomUUID as gve}from"node:crypto";function JK(e,t,n={}){let r=Yr(e.apiKey,n.authDeps,e.forceChatgptOAuth??!1),o=n.sessionIdOverride??e.resume??`openai-pending-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=typeof e.model=="string"?e.model:"gpt-4o-mini",s=Dt(i)??i,a={auth:r,model:s,synthesizedSessionId:o,promptStream:t,config:e};return n.baseURL!==void 0&&(a.baseURL=n.baseURL),n.defaultHeaders!==void 0&&(a.defaultHeaders=n.defaultHeaders),n.toolDispatcher!==void 0&&(a.toolDispatcher=n.toolDispatcher),n.onPermissionMode!==void 0&&(a.onPermissionMode=n.onPermissionMode),n.onCwdChange!==void 0&&(a.onCwdChange=n.onCwdChange),n.mcpManager!==void 0&&(a.mcpManager=n.mcpManager),n.useResponsesApi!==void 0&&(a.useResponsesApi=n.useResponsesApi),e.traceWriter!==void 0&&(a.traceWriter=e.traceWriter),new VS(a)}var D_,VS,$_=y(()=>{"use strict";pe();Zl();i_();sr();Un();s_();xm();a_();ue();Fc();tK();Us();_m();p_();f_();ES();F();wS();Ql();h_();Le();Dm();TK();PS();Wc();C_();I_();ua();Nm();BK();Kc();Ci();Fm();jK();M_();zK();E_();Wc();M_();Fm();YK();D_="openai-compatible",VS=class{client;opts;initSessionId;toolDispatcher;onPermissionMode;onCwdChange;openAITools;wireMode;useOpenAIPricing;traceWriter;priorTurns=[];currentModel;currentPermissionMode;responsesCompactionUnavailable=!1;abort=new Nc;closed=!1;lastUsage=null;autoCompactThreshold;constructor(t){if(this.opts=t,this.initSessionId=t.synthesizedSessionId,this.currentModel=t.model,this.currentPermissionMode=T_(t.config.permissionMode),this.toolDispatcher=t.toolDispatcher,this.onPermissionMode=t.onPermissionMode,this.onCwdChange=t.onCwdChange,this.traceWriter=t.traceWriter,this.autoCompactThreshold=Rp(t.config.autoCompact,t.model),this.toolDispatcher){let o=this.toolDispatcher;Array.isArray(o.toolDefs)&&o.toolDefs.length>0&&(this.openAITools=lK(o.toolDefs))}let n=(t.useResponsesApi??!1)||fK(v.AFK_OPENAI_USE_RESPONSES),r=gK(t.auth,n);if(this.wireMode=r.mode,this.useOpenAIPricing=r.baseURL===void 0&&t.baseURL===void 0||u_(t.model)&&t.config.forceXaiOAuth!==!0,t.auth.apiKey===null)this.client=null;else{let o=GK(),i={apiKey:t.auth.apiKey},s=r.baseURL??t.baseURL;s!==void 0&&(i.baseURL=s),r.headers!==void 0?i.defaultHeaders=r.headers:t.defaultHeaders!==void 0&&(i.defaultHeaders=t.defaultHeaders);let a=qK(s);a!==void 0&&(i.fetch=a),this.client=o(i)}}activeOpenAITools(){if(!this.openAITools)return;if(this.currentPermissionMode==="plan")return this.openAITools;let t=this.openAITools.filter(n=>n.function.name!==Rn);return t.length>0?t:void 0}async*[Symbol.asyncIterator](){if(yield{type:"session.init",info:{sessionId:this.initSessionId,model:this.currentModel,permissionMode:this.currentPermissionMode,cwd:process.cwd(),tools:this.openAITools?this.openAITools.map(r=>r.function.name):[],slashCommands:[],skills:[],plugins:[],mcpServers:this.opts.mcpManager?.getServerStates().map(r=>({name:r.serverName,status:r.status}))??[],apiKeySource:this.opts.auth.source,version:D_}},this.opts.auth.apiKey===null){yield{type:"error",error:new Error(Am(this.opts.auth))};return}let n=this.opts.promptStream[Symbol.asyncIterator]();try{for(;!this.closed;){let r=await Promise.race([n.next(),this.abort.closedPromise]);if(r===g_)break;let o=r;if(o.done)break;if(yield*this.runTurn(o.value.content),this.autoCompactThreshold!==void 0&&!this.closed){let i=this.lastUsage,s=ho(this.currentModel);if(i!==null&&s>0){let a=$t(i);if(kp(a,s,this.autoCompactThreshold))try{await this.opts.config.hookRegistry?.dispatch({event:"PreCompact",sessionId:this.initSessionId,trigger:"auto"}),(await this.compactHistory("token_threshold")).compacted&&(this.lastUsage=null)}catch(l){if(!(l instanceof xe))throw l}}}}}catch(r){yield{type:"error",error:r instanceof Error?r:new Error(String(r))}}finally{try{await n.return?.()}catch{}}}async*runTurn(t){let n=this.abort.begin();if(n.signal.aborted)return;let r=Date.now(),o=gve(),i=new Dc(n.signal,this.traceWriter,"openai-compatible");try{yield*this._runTurnInner(t,n,r,o)}finally{i.finish(Date.now()-r)}}async*_runTurnInner(t,n,r,o){let i=Vh(this.currentModel),s=UK(this.lastUsage,this.currentModel,this.opts.config.maxOutputTokens,this.opts.config.model??this.currentModel);if(s){this.abort.clear(n),yield{type:"error",error:s};return}this.priorTurns.push({role:"user",content:ZW(t,{vision:i,model:this.currentModel})});let a={stopReason:null,resultSubtype:"success",isError:!1},l="",c="",u=HS(this.opts.config.maxToolUseIterations),d=this.opts.config.softDeadlineMs??0,p=null,f=0,g=0,h=[];for(;;){if(n.signal.aborted){this.abort.clear(n),yield*this.finishTurn(a,r);return}let S=yield*this.runIteration(n,i,p);if(S===null){this.abort.clear(n),(n.signal.aborted||this.closed)&&(yield*this.finishTurn(a,r));return}let w=sK(S.state,this.useOpenAIPricing?this.currentModel:void 0);if(a=Rm(a,w),a.contextWindowTokens=(w.inputTokens??0)+(w.outputTokens??0),this.lastUsage=a,S.text.length>0&&(l=S.text),c=S.state.reasoningText,!S.needsToolDispatch){Vr(S.state.finishReason)&&(h=Cm(S.state).map(R=>R.name));break}if(p!==null)break;let k=yield*this.dispatchAndAppend(S.state,n.signal,i);if(k){this.abort.clear(n),yield{type:"error",error:new $l(k.content)};return}f+=1;{let R=Cm(S.state);g+=R.length;let I=R.at(-1),C=I?.name,x;try{x=I?JSON.parse(I.argumentsRaw||"{}"):void 0}catch{x=void 0}let _=I?`${I.name}${Ai(I.name,x)}`:"unknown";yield{type:"progress",progress:{taskId:o,description:"Working",summary:`${KS(f,u)}: ${_}`,lastToolName:C,totalTokens:a.totalTokens??0,toolUses:g,durationMs:Date.now()-r},sessionId:this.initSessionId}}if(n.signal.aborted){this.abort.clear(n),yield*this.finishTurn(a,r);return}let E=WS(f,u),T=zS(r,d);if(E||T){p=E?gr:hr;continue}}if(this.abort.clear(n),l.length>0){let S={role:"assistant",content:l};c.length>0&&(S.reasoning_content=c),this.priorTurns.push(S)}let b=Vr(a.stopReason)?yS(h,a.stopReason,{canIncreaseOutputLimit:!(this.opts.auth.source==="chatgpt-oauth"&&a.stopReason==="max_output_tokens")}):null;l.length>0?yield{type:"assistant.message",text:b?`${l}
1138
+ ${S.content}`,isError:!0,...S.truncated===!0?{truncated:!0}:{}}),p.push({call:b,result:S});let k=d.get(b.id),E=typeof k=="number"?Date.now()-k:0,T=S.truncated===!0||S.content.includes("[output truncated");Os(o,BS({toolUseId:b.id,name:b.name,result:S,truncated:T,durationMs:E,subagentId:a})),yield{type:"tool.output",toolUseId:b.id,toolName:b.name,content:S.content,...S.isError===!0?{isError:!0}:{},...S.truncated===!0?{truncated:!0}:{},...S.incomplete===!0?{incomplete:!0}:{},...S.incompleteReason?{incompleteReason:S.incompleteReason}:{},...typeof S.batchIndex=="number"&&typeof S.batchSize=="number"?{batchIndex:S.batchIndex,batchSize:S.batchSize}:{},...S.failureClass?{failureClass:S.failureClass}:{},sessionId:s},S.render?.diff&&(yield{type:"tool.diff",toolUseId:b.id,diff:S.render.diff,sessionId:s})}}i.push(uK(e.assistantText,l,e.reasoningText));for(let g of dK(p))i.push(g);for(let{result:g}of p)g.harnessUserMessage?.kind==="queued_user_message"&&i.push({role:"user",content:g.harnessUserMessage.text});let f=pK(p,{vision:n});return f&&i.push(f),p.find(g=>g.result.failureClass===nc)?.result}var BK=y(()=>{"use strict";ui();pe();P_();F();Bp();Nm();US();_m();p_()});function HS(e){return e!==void 0&&e>0?Math.floor(e):0}function WS(e,t){return t>0&&e>=t}function KS(e,t){return t>0?`round ${e}/${t}`:`round ${e}`}var gr,jS,Kc=y(()=>{"use strict";gr="tool_use_loop_capped",jS="You have reached your tool-use budget for this turn. Do not request any more tools \u2014 give your final answer now using only the information already gathered."});function qS(e){if(e===void 0||!Number.isFinite(e)||e<=0||e<=12e4)return 0;let t=e*.15,n=Math.min(3e5,Math.max(3e4,t));return Math.max(0,Math.floor(e-n))}function zS(e,t,n=Date.now()){return t>0&&n-e>=t}var hr,GS,Ci=y(()=>{"use strict";hr="soft_deadline_wind_down",GS="Your time budget for this turn is nearly spent. Do not request any more tools \u2014 give your final answer now using only the information already gathered. If your work is incomplete, say briefly what you established, what remains unresolved, and what you would check next."});function UK(e,t,n,r){try{return Ep($t(e??{}),$m(t,n),ot(t),r),null}catch(o){return o instanceof Error?o:new Error(String(o))}}var jK=y(()=>{"use strict";Ql();sr();Fm()});function HK(e){let t=e.get("retry-after");if(t==null)return;let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.round(n*1e3);let r=Date.parse(t);if(!Number.isNaN(r)){let o=r-Date.now();if(o>=0)return o}}function WK(e=fetch,t,n,r){return!t&&!n&&!r?e:async(o,i)=>{if(r){let a=sS(i),l=i?.signal instanceof AbortSignal?i.signal:void 0;await r.acquirePermit(a,l)}let s=await e(o,i);if(n)try{n(s.headers)}catch{}if(r&&s.status===429)try{let a=HK(s.headers);r.freeze(a??5e3)}catch{}if(t&&sve.has(s.status))try{let a=HK(s.headers);t({status:s.status,...a!==void 0?{retryAfterMs:a}:{}})}catch{}return s}}var sve,KK=y(()=>{"use strict";bm();sve=new Set([429,503,529])});import ave from"openai";function cve(e){let t={apiKey:e.apiKey};return e.baseURL!==void 0&&(t.baseURL=e.baseURL),e.defaultHeaders!==void 0&&(t.defaultHeaders=e.defaultHeaders),e.fetch!==void 0&&(t.fetch=e.fetch),new ave(t)}function GK(){return lve??cve}function pve(e){if(!e)return!1;let t;try{t=new URL(e).hostname}catch{return!1}return uve.has(t)||t.startsWith("127.")?!0:dve.some(n=>t===n.slice(1)||t.endsWith(n))}function qK(e){if(pve(e))return;let t=n=>{let r=kW(n);r!==void 0&&_c.update(r)};return WK(globalThis.fetch,void 0,t,_c)}var lve,uve,dve,M_=y(()=>{"use strict";bm();YC();KK();lve=null;uve=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","chatgpt.com"]),dve=[".chatgpt.com"]});function xn(e,t){return new Promise(n=>{if(t.aborted){n();return}let r=()=>{clearTimeout(o),n()},o=setTimeout(()=>{t.removeEventListener("abort",r),n()},e);o.unref(),t.addEventListener("abort",r,{once:!0})})}var ga=y(()=>{"use strict"});async function*O_(e,t){let n=0;for(;;){let r=vS(),o=Date.now(),i,s=null;for(let u=0;;u++)try{i=await t.createStream(e.controller.signal);break}catch(d){if(e.controller.signal.aborted)return null;if(MS(d)&&u<OK){let p=x_(d),f=p??R_(u);if(ne(e.traceWriter,{phase:"rate_limit",durationMs:f,resolvedModel:e.currentModel,metadata:{source:"connection",reason:p!==void 0?"retry-after":"backoff",attempt:u}}),await xn(f,e.controller.signal),e.controller.signal.aborted)return null;continue}s=d;break}if(s!==null)return yield{type:"error",error:t.clarifyError(s)},null;let a=null,l=!1;try{for await(let u of Hc(i,e.controller.signal)){if(e.isClosed())return null;for(let d of t.translate(u,r))l||(l=!0,ne(e.traceWriter,{phase:"model_ttfb",durationMs:Date.now()-o,resolvedModel:e.currentModel})),yield d}}catch(u){if(e.controller.signal.aborted)return null;if(OS(u)&&n<DK){n++,yield{type:"stream.retry",sessionId:e.initSessionId};let d=x_(u),p=d??R_(n-1);if(ne(e.traceWriter,{phase:"rate_limit",durationMs:p,resolvedModel:e.currentModel,metadata:{source:"stream",reason:d!==void 0?"retry-after":"backoff",attempt:n}}),await xn(p,e.controller.signal),e.controller.signal.aborted)return null;continue}a=u}if(a!==null)return yield{type:"error",error:t.clarifyError(a)},null;if(e.controller.signal.aborted)return null;let c=aK(r)&&r.toolCallsByIndex.size>0;return r.finishReason===null&&r.assistantText.length===0&&!c?(yield{type:"error",error:new Fn("the model stream ended without a finish_reason and without a dispatchable response (no visible answer text and no complete tool call): the response was empty or cut off before any usable content arrived. The turn is incomplete.")},null):{state:r,events:[],text:r.assistantText,needsToolDispatch:c}}}var zK=y(()=>{"use strict";pe();_S();ga();_m();Le();Wc()});function VK(e){if(e instanceof Lm||MS(e)||OS(e))return!1;let t=xi(e);return t!==void 0&&mve.has(t)}var mve,YK=y(()=>{"use strict";Wc();PS();mve=new Set([400,404,405,415,422,501])});import{randomUUID as gve}from"node:crypto";function JK(e,t,n={}){let r=Yr(e.apiKey,n.authDeps,e.forceChatgptOAuth??!1),o=n.sessionIdOverride??e.resume??`openai-pending-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=typeof e.model=="string"?e.model:"gpt-4o-mini",s=Dt(i)??i,a={auth:r,model:s,synthesizedSessionId:o,promptStream:t,config:e};return n.baseURL!==void 0&&(a.baseURL=n.baseURL),n.defaultHeaders!==void 0&&(a.defaultHeaders=n.defaultHeaders),n.toolDispatcher!==void 0&&(a.toolDispatcher=n.toolDispatcher),n.onPermissionMode!==void 0&&(a.onPermissionMode=n.onPermissionMode),n.onCwdChange!==void 0&&(a.onCwdChange=n.onCwdChange),n.mcpManager!==void 0&&(a.mcpManager=n.mcpManager),n.useResponsesApi!==void 0&&(a.useResponsesApi=n.useResponsesApi),e.traceWriter!==void 0&&(a.traceWriter=e.traceWriter),new VS(a)}var D_,VS,$_=y(()=>{"use strict";pe();Zl();i_();sr();Un();s_();xm();a_();ue();Fc();tK();Us();_m();p_();f_();ES();F();wS();Ql();h_();Le();Dm();TK();PS();Wc();C_();I_();ua();Nm();BK();Kc();Ci();Fm();jK();M_();zK();E_();Wc();M_();Fm();YK();D_="openai-compatible",VS=class{client;opts;initSessionId;toolDispatcher;onPermissionMode;onCwdChange;openAITools;wireMode;useOpenAIPricing;traceWriter;priorTurns=[];currentModel;currentPermissionMode;responsesCompactionUnavailable=!1;abort=new Nc;closed=!1;lastUsage=null;autoCompactThreshold;constructor(t){if(this.opts=t,this.initSessionId=t.synthesizedSessionId,this.currentModel=t.model,this.currentPermissionMode=T_(t.config.permissionMode),this.toolDispatcher=t.toolDispatcher,this.onPermissionMode=t.onPermissionMode,this.onCwdChange=t.onCwdChange,this.traceWriter=t.traceWriter,this.autoCompactThreshold=Rp(t.config.autoCompact,t.model),this.toolDispatcher){let i=this.toolDispatcher;Array.isArray(i.toolDefs)&&i.toolDefs.length>0&&(this.openAITools=lK(i.toolDefs))}let n=(t.useResponsesApi??!1)||fK(v.AFK_OPENAI_USE_RESPONSES),r=gK(t.auth,n);this.wireMode=r.mode,this.useOpenAIPricing=r.baseURL===void 0&&t.baseURL===void 0||u_(t.model)&&t.config.forceXaiOAuth!==!0;let o=t.config.resumeHistory?.at(-1);if(o?.inputTokens!==void 0&&o.inputTokens>0&&(this.lastUsage={inputTokens:o.inputTokens,stopReason:null,resultSubtype:"success",isError:!1}),t.auth.apiKey===null)this.client=null;else{let i=GK(),s={apiKey:t.auth.apiKey},a=r.baseURL??t.baseURL;a!==void 0&&(s.baseURL=a),r.headers!==void 0?s.defaultHeaders=r.headers:t.defaultHeaders!==void 0&&(s.defaultHeaders=t.defaultHeaders);let l=qK(a);l!==void 0&&(s.fetch=l),this.client=i(s)}}activeOpenAITools(){if(!this.openAITools)return;if(this.currentPermissionMode==="plan")return this.openAITools;let t=this.openAITools.filter(n=>n.function.name!==Rn);return t.length>0?t:void 0}async*[Symbol.asyncIterator](){if(yield{type:"session.init",info:{sessionId:this.initSessionId,model:this.currentModel,permissionMode:this.currentPermissionMode,cwd:process.cwd(),tools:this.openAITools?this.openAITools.map(r=>r.function.name):[],slashCommands:[],skills:[],plugins:[],mcpServers:this.opts.mcpManager?.getServerStates().map(r=>({name:r.serverName,status:r.status}))??[],apiKeySource:this.opts.auth.source,version:D_}},this.opts.auth.apiKey===null){yield{type:"error",error:new Error(Am(this.opts.auth))};return}let n=this.opts.promptStream[Symbol.asyncIterator]();try{for(;!this.closed;){let r=await Promise.race([n.next(),this.abort.closedPromise]);if(r===g_)break;let o=r;if(o.done)break;if(yield*this.runTurn(o.value.content),this.autoCompactThreshold!==void 0&&!this.closed){let i=this.lastUsage,s=ho(this.currentModel);if(i!==null&&s>0){let a=$t(i);if(kp(a,s,this.autoCompactThreshold))try{await this.opts.config.hookRegistry?.dispatch({event:"PreCompact",sessionId:this.initSessionId,trigger:"auto"}),(await this.compactHistory("token_threshold")).compacted&&(this.lastUsage=null)}catch(l){if(!(l instanceof xe))throw l}}}}}catch(r){yield{type:"error",error:r instanceof Error?r:new Error(String(r))}}finally{try{await n.return?.()}catch{}}}async*runTurn(t){let n=this.abort.begin();if(n.signal.aborted)return;let r=Date.now(),o=gve(),i=new Dc(n.signal,this.traceWriter,"openai-compatible");try{yield*this._runTurnInner(t,n,r,o)}finally{i.finish(Date.now()-r)}}async*_runTurnInner(t,n,r,o){let i=Vh(this.currentModel),s=UK(this.lastUsage,this.currentModel,this.opts.config.maxOutputTokens,this.opts.config.model??this.currentModel);if(s){this.abort.clear(n),yield{type:"error",error:s};return}this.priorTurns.push({role:"user",content:ZW(t,{vision:i,model:this.currentModel})});let a={stopReason:null,resultSubtype:"success",isError:!1},l="",c="",u=HS(this.opts.config.maxToolUseIterations),d=this.opts.config.softDeadlineMs??0,p=null,f=0,g=0,h=[];for(;;){if(n.signal.aborted){this.abort.clear(n),yield*this.finishTurn(a,r);return}let S=yield*this.runIteration(n,i,p);if(S===null){this.abort.clear(n),(n.signal.aborted||this.closed)&&(yield*this.finishTurn(a,r));return}let w=sK(S.state,this.useOpenAIPricing?this.currentModel:void 0);if(a=Rm(a,w),a.contextWindowTokens=(w.inputTokens??0)+(w.outputTokens??0),this.lastUsage=a,S.text.length>0&&(l=S.text),c=S.state.reasoningText,!S.needsToolDispatch){Vr(S.state.finishReason)&&(h=Cm(S.state).map(R=>R.name));break}if(p!==null)break;let k=yield*this.dispatchAndAppend(S.state,n.signal,i);if(k){this.abort.clear(n),yield{type:"error",error:new $l(k.content)};return}f+=1;{let R=Cm(S.state);g+=R.length;let I=R.at(-1),C=I?.name,x;try{x=I?JSON.parse(I.argumentsRaw||"{}"):void 0}catch{x=void 0}let _=I?`${I.name}${Ai(I.name,x)}`:"unknown";yield{type:"progress",progress:{taskId:o,description:"Working",summary:`${KS(f,u)}: ${_}`,lastToolName:C,totalTokens:a.totalTokens??0,toolUses:g,durationMs:Date.now()-r},sessionId:this.initSessionId}}if(n.signal.aborted){this.abort.clear(n),yield*this.finishTurn(a,r);return}let E=WS(f,u),T=zS(r,d);if(E||T){p=E?gr:hr;continue}}if(this.abort.clear(n),l.length>0){let S={role:"assistant",content:l};c.length>0&&(S.reasoning_content=c),this.priorTurns.push(S)}let b=Vr(a.stopReason)?yS(h,a.stopReason,{canIncreaseOutputLimit:!(this.opts.auth.source==="chatgpt-oauth"&&a.stopReason==="max_output_tokens")}):null;l.length>0?yield{type:"assistant.message",text:b?`${l}
1139
1139
 
1140
1140
  ${b}`:l,sessionId:this.initSessionId}:(yield{type:"assistant.message",text:l,sessionId:this.initSessionId},b!==null&&(yield{type:"notice",text:b,kind:"truncation",sessionId:this.initSessionId})),yield*this.finishTurn(p!==null?{...a,stopReason:p}:a,r)}*finishTurn(t,n){this.lastUsage=t,yield{type:"turn.completed",usage:{...t,durationMs:Date.now()-n},sessionId:this.initSessionId}}clarifyResponsesError(t,n){let r=t instanceof Error?t:new Error(String(t));if(!n||(t&&typeof t=="object"&&"status"in t?t.status:void 0)!==400&&!/\b400\b/.test(r.message))return r;let i,s=t?.error;if(s&&typeof s=="object"){let a=s;typeof a.detail=="string"?i=a.detail:typeof a.message=="string"&&(i=a.message)}return new Error(`ChatGPT/Codex backend rejected model "${this.currentModel}" (HTTP 400). A ChatGPT subscription only serves certain OpenAI models on this backend (gpt-5.6 and gpt-5.5 work; gpt-5, gpt-5.1, gpt-5.2 and *-codex do not). `+(i?`Backend said: ${i}`:"No error body was returned."))}async*runIteration(t,n,r=null){let o=eK({config:this.opts.config,...this.opts.config.resumeHistory!==void 0?{resumeHistory:this.opts.config.resumeHistory}:{},priorTurns:this.priorTurns,vision:n});if(o[0]?.role==="system"){let a=this.currentPermissionMode==="plan"?DS:this.currentPermissionMode==="autonomous"?$S:null;a!==null&&(o[0]={...o[0],content:o[0].content+`
1141
1141
 
@@ -1340,12 +1340,12 @@ ${t}`:i,a=new ve({parentAbortSignal:n?.abortSignal,...r?.traceWriter!==void 0?{t
1340
1340
  `,"utf8"),oRe(n,e)}function pRe(e,t){return e.facet_version===sf&&e.source_session_mtime_ms===t}function cf(e,t={}){let n=t.sessionsDir??Ge(),r=t.cacheDir??GR(),o=$z(e,n);if(!Kw(o))return;let i=iRe(o).mtimeMs,s=cRe(e,r);if(!t.force){let c=uRe(s);if(c&&pRe(c,i))return c}let a=Gw(e,n);if(!a)return;let l=lf(a,{sourceSessionPath:o,sourceSessionMtimeMs:i});return dRe(s,l),l}function eP(e={}){let t=e.sessionsDir??Ge();return Kw(t)?rRe(t).filter(n=>n.endsWith(".json")).map(n=>aRe(n,".json")):[]}var tP=y(()=>{"use strict";H();ZI();jw()});function nP(){return e=>{if(e.event!=="SessionEnd")return{};if(e.parentSessionId)return{};let t=e.sessionId;if(!t)return{};try{cf(t)}catch{}return{}}}var rP=y(()=>{"use strict";tP()});var Fz=y(()=>{"use strict";jw();ZI();tP();rP()});import{readFileSync as mRe}from"node:fs";import{join as fRe}from"node:path";function YS(e,t){let n=ma(e,t),r=t?.excludeName,i=(r!==void 0&&r.length>0?n.filter(a=>a.name!==r&&!a.name.endsWith(`:${r}`)):n).filter(a=>a.source!=="command");if(i.length===0)return"";let s=[];for(let a of i){let l=a.argumentHint?`${a.argumentHint}`:"",c=l?`- \`${a.name} ${l}\`: ${a.description}`:`- ${a.name}: ${a.description}`;s.push(c),a.whenToUse&&s.push(` When to use: ${a.whenToUse}`)}return["Available skills (invoke via the `skill` tool):","","Each skill either forks an isolated subagent (delegation \u2014 preserves the main session's context) or loads its instructions directly into your current context for you to execute directly. The mode is fixed per-skill, not per-call. To run a skill N times in parallel with isolation, dispatch N subagents (via `agent` or `compose`) that each call `skill` once. Prefer a skill over inline investigation when the task shape matches.","",...s].join(`
1341
1341
  `)}function Lz(e,t){return[...IG(e,t),...Rz(e,t)]}function ma(e,t){let n=[],r=new Set,o=v.AFK_INTERNAL==="1",i=ur(Tn());Fo(Rl(),"user"),FW("project"),Fo(Jd(t?.cwd),"project");for(let{dir:l,origin:c}of i.skillRoots)Fo(l,c);for(let l of zr()){let c=qe(l);Yn(c,o)&&(n.push({name:l,description:c.description,source:c.origin==="user"?"user":c.origin==="project"?"project":c.origin?.startsWith("imported:")?"imported":"builtin",argumentHint:c.argumentHint,whenToUse:c.whenToUse}),r.add(l),l.includes(":")&&r.add(l.split(":").pop()))}let s=e??qw(t),a=aw();for(let l of s){if(l.type!=="local")continue;let c=Lz(l.path,a);for(let u of c)!u.name||r.has(u.name)||Yn({audience:u.audience},o)&&(n.push({name:u.name,description:u.description??`Skill from plugin at ${l.path}`,source:u.origin==="command"?"command":"plugin",argumentHint:u.argumentHint}),r.add(u.name))}return n}function Ym(e,t){let n=new Map,r=e??qw(t),o=aw();for(let i of r){if(i.type!=="local")continue;let s=Lz(i.path,o);for(let a of s)a.name&&a.body&&a.body.length>0&&!n.has(a.name)&&n.set(a.name,{body:a.body,pluginPath:i.path,...a.allowedTools!==void 0?{allowedTools:a.allowedTools}:{},...a.context!==void 0?{context:a.context}:{},...a.readOnly===!0?{readOnly:!0}:{},...a.model!==void 0?{model:a.model}:{}})}return n}function Nz(e,t=()=>{}){let n=e??qw(),r=[],o=new Set;for(let i of n){if(i.type!=="local")continue;let s=Lo(i.path).name;if(s!==null)for(let a of uw(fRe(i.path,"agents"))){let l=ae(a),c;try{c=mRe(a,"utf8")}catch(p){let f=ae(p instanceof Error?p.message:String(p));t(`[afk] agents: cannot read ${l}: ${f}`);continue}let u=ya(c,p=>t(`[afk] agents: ${l}: ${p}`));if(u===void 0)continue;let d=`${s}:${u.name}`;o.has(d)||(o.add(d),r.push({name:d,definition:u.definition,source:`plugin:${s}`,filePath:a,...u.bashReadOnly===!0?{bashReadOnly:!0}:{},...u.ignoredKeys!==void 0?{ignoredKeys:u.ignoredKeys}:{}}))}}return r}function qw(e){return[...Sr(Xd(e?.cwd)),...Sr(),...Sr(Es()),...ur(Tn()).pluginRoots.flatMap(({dir:t,binary:n})=>Sr(t,{trustAll:!0,sourceEnabled:wj(n)}))]}async function cu(){await Tz(qw(),{pluginApi:{registerSkill:fn,listSkills:zr,getSkill:qe,loadSkillPrompts:et,env:v,SubagentManager:ve,describeFailure:Xt,discoverPluginSkillBodies:Ym,getAgentFrameworkDir:St,getSkillsDir:Rl,getSessionsDir:Ge,getOrDeriveFacet:cf,listSessionIds:eP,deriveSessionFacet:lf,loadStoredSession:Gw}})}var fr=y(()=>{"use strict";XI();Vt();Vn();JI();wr();Ez();Yc();xz();of();qm();sI();Xe();gt();ht();Fz();H();F();To()});function uu(e,t,n){let r=Dp({cwd:t,...n.sessionId!==void 0?{sessionId:n.sessionId}:{},surface:n.surface,...n.depth!==void 0?{depth:n.depth}:{},...n.maxDepth!==void 0?{maxDepth:n.maxDepth}:{},workspace:n.workspace}),o=[e.toolBase];return e.userSystem&&o.push(e.userSystem),o.push(e.memoryPrompt),e.workspacePrompt.length>0&&o.push(e.workspacePrompt),e.hotMemory.length>0&&o.push(e.hotMemory),o.push(r),e.manifest.length>0&&o.push(e.manifest),o.join(`
1342
1342
 
1343
- `)}var zw=y(()=>{"use strict";Gt()});function Bz(e){let{config:t,cwd:n}=e,r=e.hasSkillExecutor?YS(void 0,{cwd:n,...typeof t.skillDispatchName=="string"&&t.skillDispatchName.length>0?{excludeName:t.skillDispatchName}:{}}):"",o=mS(t.isSkillDispatch),i=fS(e.readOnlyMemory),s=gS(e.workspaceEnabled),a={surface:e.surface,sessionId:t.sessionId,depth:t.depth,maxDepth:t.maxDepth,workspace:e.runtimeStateSource.getWorkspace()},l={toolBase:o,memoryPrompt:i,workspacePrompt:s,hotMemory:t.hotMemory??"",manifest:r,userSystem:e.userSystem};return{stableSystemPrefix:l,toolSystemAppend:uu(l,n,a)}}var Uz=y(()=>{"use strict";fr();o_();zw()});import gRe from"@anthropic-ai/sdk";function jz(e){if(e===void 0)return null;if(typeof e=="string")return e.length>0?e:null;if(typeof e=="object"&&e!==null&&"append"in e){let t=e.append;return t&&t.length>0?t:null}return null}function Hz(e,t,n,r){let o=t.config,{localMode:i,token:s}=lW(o);if(!s||s.length===0)throw new Error(`${n} provider requires config.apiKey (resolved from ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN)`);let a=Kh(s),{client:l,throttleQueue:c,systemPrefix:u,tokenRefresher:d}=TW({config:o,token:s,authMode:a,localMode:i,factory:e.providerFactory??tS(),createClient:x=>new gRe(x)}),p=jz(o.systemPrompt),f=typeof o.model=="string"&&o.model.length>0?Dt(o.model)??o.model:r,g=Qh(o,f),h=o.permissionMode??"default";e.setCurrentPermissionMode(h),e.ensureSharedRoots(o.cwd),o.cwd&&e.setCurrentCwd(o.cwd);let b=e.getSharedReadRoots(),S=e.getSharedWriteRoots();o.readRoots&&b&&b.length<=1&&(b.length=0,b.push(...o.readRoots)),o.writeRoots&&S&&S.length<=1&&(S.length=0,S.push(...o.writeRoots));let{queryDispatcher:w,runtimeStateSource:k,toolDefs:E,resolvedSessionId:T}=OW({config:o,model:f,permissionMode:h,surface:e.surface,providerName:n,externalTools:e.externalTools,sharedReadRoots:b,sharedWriteRoots:S,getCwd:()=>e.getCurrentCwd()||o.cwd||process.cwd(),getMcpTools:()=>e.mcpManager?.getMcpTools()??[],getSubagents:()=>e.subagentExecutor?e.subagentExecutor.getSubagentsLite():{active:[],backgroundJobs:[]},getMintedSessionId:()=>e.getMintedSessionId(),setMintedSessionId:x=>{e.setMintedSessionId(x)},getPresenceSessionId:()=>e.getPresenceSessionId(),setPresenceSessionId:x=>{e.setPresenceSessionId(x)},buildDispatcher:(x,_)=>e.buildDispatcher(x,_)}),R=o.cwd||process.cwd(),{stableSystemPrefix:I,toolSystemAppend:C}=Bz({config:o,cwd:R,surface:e.surface,readOnlyMemory:e.readOnlyMemory,workspaceEnabled:e.workspaceStore!==void 0,hasSkillExecutor:!!e.skillExecutor,runtimeStateSource:k,userSystem:p});return DL({prompt:t.prompt,options:{model:f,maxTokens:g,system:C},provenance:{systemPrompt:{source:o.systemPromptSource??"none",shape:typeof o.systemPrompt=="string"?"string":Array.isArray(o.systemPrompt)?"string[]":o.systemPrompt!=null?"preset":"undefined",...typeof o.systemPrompt=="string"?{length:o.systemPrompt.length}:{}},...o.apiKey?{apiKey:{source:"config"}}:{}}}),{client:l,authMode:a,localMode:i,model:f,maxTokens:g,cwd:R,systemPrefix:u,throttleQueue:c,tokenRefresher:d,queryDispatcher:w,runtimeStateSource:k,toolDefs:E,resolvedSessionId:T,stableSystemPrefix:I,toolSystemAppend:C}}var oP=y(()=>{"use strict";Fs();Un();ty();cW();nS();EW();DW();Uz();si()});function Wz(e){return{messages:e.initialMessages?[...e.initialMessages]:[],currentModel:e.model,requestedModel:e.requestedModel??e.model,currentPermissionMode:e.permissionMode,userSystem:e.userSystem,toolDispatcher:e.toolDispatcher,lastUsage:null,closed:!1,autoCompactThreshold:e.autoCompactThreshold}}var Kz=y(()=>{"use strict"});function uf(e){if(typeof e?.baseUrl=="string"&&e.baseUrl.length>0)return!1;let t=v.AFK_DISABLE_PROMPT_CACHE;if(t===void 0||t.length===0)return!0;let n=t.toLowerCase();return!(n==="1"||n==="true"||n==="yes"||n==="on")}function Ra(){let e=v.AFK_PROMPT_CACHE_TTL;return e==="5m"?"5m":e==="1h"?"1h":hRe}function Vw(e){return uf(e)&&Ra()==="1h"}function Gz(e,t){if(e.length===0)return e;let n=e[e.length-1],r=zz(n,t);return r===n?e:[...e.slice(0,-1),r]}function qz(e,t){if(e.length===0)return e;let n=e[e.length-1],r=yRe(n,t);return r===n?e:[...e.slice(0,-1),r]}function yRe(e,t){let n=e.content;if(typeof n=="string")return n.length===0?e:{...e,content:[{type:"text",text:n,cache_control:{type:"ephemeral",ttl:t}}]};if(!Array.isArray(n)||n.length===0)return e;let r=n[n.length-1],o=zz(r,t);return o===r?e:{...e,content:[...n.slice(0,-1),o]}}function zz(e,t){return e.type==="thinking"||e.type==="redacted_thinking"?e:{...e,cache_control:{type:"ephemeral",ttl:t}}}var hRe,du=y(()=>{"use strict";F();hRe="1h"});var iP=y(()=>{"use strict";na()});function TRe(e){let t=n=>n===void 0?void 0:n*sP;return{inputPerMTok:e.inputPerMTok*sP,outputPerMTok:e.outputPerMTok*sP,...t(e.cacheWrite5mPerMTok)!==void 0?{cacheWrite5mPerMTok:t(e.cacheWrite5mPerMTok)}:{},...t(e.cacheWrite1hPerMTok)!==void 0?{cacheWrite1hPerMTok:t(e.cacheWrite1hPerMTok)}:{},...t(e.cacheReadPerMTok)!==void 0?{cacheReadPerMTok:t(e.cacheReadPerMTok)}:{}}}function ERe(e){return e.responseSpeed??e.requestSpeed??"standard"}function RRe(e){return Lc(e,Vz,vRe)}function aP(e,t,n,r,o,i,s={}){let a=RRe(e);if(!a)return;let l=ERe(s)==="fast"&&kRe.test(e)?TRe(a):a,c=1e6,u=nn(t),d=nn(n),p=nn(r),f=nn(o),g=u/c*l.inputPerMTok,h=d/c*l.outputPerMTok,b=l.cacheWrite5mPerMTok??l.inputPerMTok*bRe,S=l.cacheWrite1hPerMTok??l.inputPerMTok*SRe,w=l.cacheReadPerMTok??l.inputPerMTok*wRe,k=i??{ephemeral5m:f,ephemeral1h:0},E=nn(k.ephemeral5m),T=nn(k.ephemeral1h),R=Math.max(0,f-(E+T)),I=E/c*b+T/c*S+R/c*S,C=p/c*w;return g+h+I+C}var bRe,SRe,wRe,Vz,vRe,sP,kRe,lP=y(()=>{"use strict";SS();bRe=1.25,SRe=2,wRe=.1,Vz=new Map([["claude-sonnet-5",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-opus-5",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-8",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-7",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-6",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-sonnet-4-6",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-sonnet-4-5-20250929",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-opus-4-5-20250929",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-haiku-4-5-20250929",{inputPerMTok:1,outputPerMTok:5,cacheWrite5mPerMTok:1.25,cacheWrite1hPerMTok:2,cacheReadPerMTok:.1}],["claude-haiku-4-5-20251001",{inputPerMTok:1,outputPerMTok:5,cacheWrite5mPerMTok:1.25,cacheWrite1hPerMTok:2,cacheReadPerMTok:.1}],["claude-3-7-sonnet-20250219",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-sonnet-20241022",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-sonnet-20240620",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-haiku-20241022",{inputPerMTok:.8,outputPerMTok:4,cacheWrite5mPerMTok:1,cacheWrite1hPerMTok:1.6,cacheReadPerMTok:.08}],["claude-3-opus-20240229",{inputPerMTok:15,outputPerMTok:75,cacheWrite5mPerMTok:18.75,cacheWrite1hPerMTok:30,cacheReadPerMTok:1.5}],["claude-3-sonnet-20240229",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-haiku-20240307",{inputPerMTok:.25,outputPerMTok:1.25,cacheWrite5mPerMTok:.3,cacheWrite1hPerMTok:.5,cacheReadPerMTok:.03}]]),vRe=/-\d{8}$/,sP=2,kRe=/^claude-opus-(?:5|4-8)(?:-|$)/});function xRe(e){let t=e.speed;return t==="fast"||t==="standard"?t:void 0}function ARe(e){let t=o=>Number.isFinite(o)&&o>=0?o:0,n=e.cache_creation;if(n)return{ephemeral5m:t(n.ephemeral_5m_input_tokens??0),ephemeral1h:t(n.ephemeral_1h_input_tokens??0)};let r=t(e.cache_creation_input_tokens??0);return Ra()==="1h"?{ephemeral5m:0,ephemeral1h:r}:{ephemeral5m:r,ephemeral1h:0}}function cP(e,t,n,r){if(!e)return{stopReason:t??null};let o=xRe(e),i={inputTokens:e.input_tokens,outputTokens:e.output_tokens,stopReason:t??null,raw:{...e,...o?{speed:o}:{}}};if(e.cache_read_input_tokens!=null&&(i.cachedInputTokens=e.cache_read_input_tokens),e.cache_creation_input_tokens!=null&&(i.cacheCreationTokens=e.cache_creation_input_tokens),i.totalTokens=(e.input_tokens??0)+(e.output_tokens??0),n){let s=aP(n,e.input_tokens??0,e.output_tokens??0,e.cache_read_input_tokens??0,e.cache_creation_input_tokens??0,ARe(e),{...r?{requestSpeed:r}:{},...o?{responseSpeed:o}:{}});s!==void 0&&(i.totalCostUsd=s)}return i}var Yz=y(()=>{"use strict";du();lP()});var uP=y(()=>{"use strict";lP();Yz();i_()});function df(e){return e>2147483647?2147483647:e}var dP=y(()=>{"use strict"});function Xz(){let e=v.AFK_MODEL_TTFB_TIMEOUT_MS;if(e===void 0||e.trim()==="")return Jz;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?Jz:df(t)}function Qz(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?void 0:(e<IRe?e:PRe)+_Re}function Zz(e,t){if(t<=0)return{signal:e,timedOut:()=>!1,firstByteSeen:()=>{},extend:()=>{},dispose:()=>{}};let n=new AbortController,r=AbortSignal.any([e,n.signal]),o=!1,i=!1,s=Date.now()+t,a,l=d=>{a=setTimeout(()=>{o=!0,n.abort(new Error(CRe))},df(d)),a.unref()};l(t);let c=()=>{i||(i=!0,clearTimeout(a))};return{signal:r,timedOut:()=>o,firstByteSeen:c,extend:d=>{i||o||typeof d!="number"||!Number.isFinite(d)||d<=0||(s+=d,clearTimeout(a),l(Math.max(1,s-Date.now())))},dispose:c}}var Jz,CRe,_Re,IRe,PRe,pP=y(()=>{"use strict";F();dP();Jz=18e4;CRe="model_ttfb_timeout",_Re=3e4,IRe=6e4,PRe=8e3});function tV(){let e=v.AFK_MODEL_STALL_TIMEOUT_MS;if(e===void 0||e.trim()==="")return eV;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?eV:df(t)}function rV(e){return e instanceof Error&&e.message===nV}function mP(e){return new Error(`Model stream stalled: no output for ${Math.round(e/1e3)}s after the response had already started streaming. The round was aborted rather than left hanging (issue #762: two sessions hung 38 and 63 minutes with no terminal event). A round that keeps producing output is never cut off, no matter how long it runs. Raise AFK_MODEL_STALL_TIMEOUT_MS, or set it to 0 to disable this bound.`)}function oV(e,t,n){if(t<=0)return{signal:e,timedOut:()=>!1,progress:()=>{},dispose:()=>{}};let r=new AbortController,o=AbortSignal.any([e,r.signal]),i,s=!1,a=!1,l=d=>{if(!(a||s)){s=!0,i=void 0;try{n?.({stallTimeoutMs:t,elapsedSinceLastProgressMs:Date.now()-d})}catch{}r.signal.aborted||r.abort(new Error(nV))}};return{signal:o,timedOut:()=>s,progress:()=>{if(a||s)return;i!==void 0&&clearTimeout(i);let d=Date.now(),p=setTimeout(()=>l(d),t);p.unref(),i=p},dispose:()=>{a||(a=!0,i!==void 0&&clearTimeout(i),i=void 0)}}}var eV,nV,Yw=y(()=>{"use strict";F();dP();eV=12e5;nV="model_stream_stall_timeout"});function Jw(e,t=Math.random){return e+Math.floor(t()*e*$Re)}function sV(e=Math.random){let t=DRe-iV;return iV+Math.floor(e()*t)}function aV(e){return e.type==="turn.completed"&&e.usage.stopReason===Cn}function lV(e){let t=v.AFK_OVERLOAD_PAUSE_MS;if(t!==void 0&&t.trim()!==""){let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.min(Math.floor(n),ORe)}return e!==void 0&&FRe.has(e)?MRe:0}var fP,MRe,ORe,iV,DRe,$Re,FRe,pf=y(()=>{"use strict";F();Zc();Zc();fP="Anthropic is overloaded (HTTP 529) and did not recover within this turn's retry budget. This is an upstream capacity event, not an afk error. The turn was committed, so the conversation so far is preserved \u2014 resume with `afk --resume <sessionId>` to continue from saved state once capacity frees up.",MRe=600*1e3,ORe=7200*1e3,iV=60*1e3,DRe=120*1e3,$Re=.25;FRe=new Set(["cli","repl","telegram","web"])});function cV(e){if(!Number.isFinite(e)||e<=0)return 0;let t=Math.floor(e*2/3);return Math.max(1,t)}function uV(e){if(!("status"in e))return!1;let t=e.status;return t===529||t===503}function mf(e){if(e===null||typeof e!="object")return!1;let t=e;if(t.status===529||t.status===503)return!0;let n=t.error;if(n===null||typeof n!="object")return!1;let r=n;return((r.error!==null&&typeof r.error=="object"?r.error.type:void 0)??r.type)==="overloaded_error"}var Xw,ff=y(()=>{"use strict";Xw=class{overloadRetries=0;streamIncompleteRetries=0;ttfbRetries=0;canRetryOverload(){return this.overloadRetries<3}canRetryStreamIncomplete(){return this.streamIncompleteRetries<2}canRetryTtfb(){return this.ttfbRetries<2}reset(){this.overloadRetries=0,this.streamIncompleteRetries=0,this.ttfbRetries=0}}});async function*NRe(e,t,n){ne(e.traceWriter,{phase:"ttfb_timeout",durationMs:Date.now()-t,metadata:{reason:"ttfb-timeout",source:"first-byte",resolvedModel:e.model,attempt:n}}),yield{type:"stream.retry",sessionId:e.ctx.sessionId}}async function*hP(e,{input:t,turn:n,retry:r,requestStartedAt:o}){return e==="ttfb"?(r.ttfbRetries+=1,yield*NRe(t,o,r.ttfbRetries),"continue"):e==="overload"?(r.overloadRetries+=1,ne(t.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:r.overloadRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*dV(Jw(5e3*Math.pow(2,r.overloadRetries-1)),t,n),t.signal.aborted?"terminated":"continue"):(r.streamIncompleteRetries+=1,ne(t.traceWriter,{phase:"rate_limit",metadata:{reason:"stream-incomplete",source:"mid-stream",attempt:r.streamIncompleteRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*dV(1e3*Math.pow(2,r.streamIncompleteRetries-1),t,n),t.signal.aborted?"terminated":"continue")}async function*dV(e,t,n){await xn(e,t.signal),t.signal.aborted&&(yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId})}var pV=y(()=>{"use strict";pe();ga();pf();ff()});function fV(e){let t=e.fastModeController?.snapshotTurn({resolvedModelId:e.model,providerFamily:"anthropic-direct",hasCustomEndpoint:e.baseUrl!==void 0,executionPath:"top-level"}),n=t?.effective===!0,r=ai(e.authMode,e.sessionId,e.requestId,e.effort!==void 0,Vw(e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{}),n);return{decision:t,runInput:{client:e.client,messages:e.messages,system:e.system,tools:e.tools,toolDispatcher:e.toolDispatcher,model:e.model,maxTokens:e.maxTokens,headers:r,signal:e.signal,ctx:{sessionId:e.sessionId},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{effort:e.effort}:{},...n?{fastMode:!0}:{},...e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{},...e.maxToolUseIterations!==void 0?{maxToolUseIterations:e.maxToolUseIterations}:{},...e.softDeadlineMs!==void 0?{softDeadlineMs:e.softDeadlineMs}:{},...e.traceWriter?{traceWriter:e.traceWriter}:{},...e.subagentId!==void 0?{subagentId:e.subagentId}:{},...e.throttleQueue?{throttleQueue:e.throttleQueue}:{},...e.onUsageProgress?{onUsageProgress:e.onUsageProgress}:{}}}}function Qw(e,t){let n=e instanceof Error?e:new Error(String(e));if(!t||n.message.startsWith(mV))return n;let r=new Error(`${mV} ${n.message}`,{cause:n});r.name=n.name,n.stack!==void 0&&(r.stack=n.stack);for(let o of Object.getOwnPropertyNames(n)){if(o==="message"||o==="stack")continue;let i=Object.getOwnPropertyDescriptor(n,o);i!==void 0&&Object.defineProperty(r,o,i)}return r}var mV,yP=y(()=>{"use strict";Fs();du();mV="[Fast mode requested; no standard-mode fallback will be attempted]"});async function*gV(e,t,n){let r=t.throttleQueue;if(!r)return await e;r.resetAttempts();let o=Symbol("create-done"),i=!1,s=e.then(a=>(i=!0,a),a=>{throw i=!0,a});for(;;){for(let l of r.takeAll())n?.(l.retryAfterMs),yield{type:"rate_limit",sessionId:t.ctx.sessionId,status:l.status,attempt:l.attempt,...l.retryAfterMs!==void 0?{retryAfterMs:l.retryAfterMs}:{}};if(i)return await s;await Promise.race([s.then(()=>o,()=>o),r.waitForItem().then(()=>{})])}}var hV=y(()=>{"use strict"});function yV(e,t){try{let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o.role!=="assistant"||typeof o.content=="string")continue;let i=o.content;for(let s=0;s<i.length;s++){let a=i[s];if(a.type==="thinking"){let l=a;(!l.thinking||!l.signature)&&n.push({msgIdx:r,blockIdx:s,thinking:l.thinking?`(${l.thinking.length} chars)`:"(empty)",sigLen:l.signature?.length??0})}}}console.error("[afk] thinking-block diagnostic \u2014 API rejected request with:",t.message),console.error(`[afk] messages.length=${e.length}, invalid thinking blocks:`,n.length>0?JSON.stringify(n):"none found (cause may be elsewhere)")}catch{}}var bV=y(()=>{"use strict"});function BRe(e){let{name:t,description:n,input_schema:r}=e;return{name:t,...n!==void 0?{description:n}:{},input_schema:r}}async function URe(e,t,n,r,o){for(let i=0;;i++){if(i>0){let s=Jw(5e3*Math.pow(2,i-1));if(await xn(s,o),o.aborted)throw new Error("aborted")}try{return await Promise.resolve(e.messages.create(t,{headers:n,signal:r}))}catch(s){if(r.aborted)throw s;let a=s instanceof Error?s:new Error(String(s));if(uV(a)){if(i<3)continue;throw new Zw}throw a}}}function jRe(e){return{model:e.model,max_tokens:e.maxTokens,messages:e.messages,stream:!0,...e.system!==null?{system:e.system}:{},...e.tools!==null&&e.tools.length>0?{tools:e.tools.map(BRe)}:{},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{output_config:{effort:e.effort}}:{},...e.fastMode===!0?{speed:"fast"}:{}}}async function*SV({input:e,turn:t,retry:n,ttfbTimeoutMs:r,stallTimeoutMs:o}){let i=uf({baseUrl:e.baseUrl})?qz(e.messages,Ra()):e.messages,s=jRe({...e,messages:i,tools:t.windDownReason!==null?null:e.tools}),a=Date.now(),l=Zz(e.signal,r),c=oV(l.signal,o,u=>{ne(e.traceWriter,{phase:"idle_watchdog_fired",durationMs:u.elapsedSinceLastProgressMs,resolvedModel:e.model,metadata:{source:"model-stream",stallTimeoutMs:u.stallTimeoutMs,elapsedSinceLastProgressMs:u.elapsedSinceLastProgressMs}})});try{return{kind:"opened",events:yield*gV(URe(e.client,s,e.headers,c.signal,e.signal),e,d=>{let p=Qz(d);p!==void 0&&l.extend(p)}),ttfb:l,stall:c,requestStartedAt:a}}catch(u){if(l.timedOut()&&!e.signal.aborted&&n.canRetryTtfb())return l.dispose(),c.dispose(),{kind:"retry-ttfb",requestStartedAt:a};if(l.dispose(),c.dispose(),e.signal.aborted)return yield{type:"turn.completed",usage:t.terminalUsage(),sessionId:e.ctx.sessionId},{kind:"terminated"};if(u instanceof Zw)return{kind:"overload-exhausted"};let d=Qw(u,e.fastMode===!0);return d.message.includes("thinking")&&yV(e.messages,d),yield{type:"error",error:d},{kind:"terminated"}}}var Zw,wV=y(()=>{"use strict";yP();du();pe();ga();pP();Yw();pf();ff();hV();bV();Zw=class extends Error{constructor(){super("Connection-phase overload budget exhausted"),this.name="ConnectionOverloadExhaustedError"}}});function vV(e,t){return e||t!==null}function kV(){return new Fn("the model stream ended without a terminal message (no message_stop and no stop_reason): the turn is incomplete. The cause is not knowable at this layer \u2014 a client-side abort carrying an AbortError reason (including the SDK request timeout) and an upstream peer close are indistinguishable here. Check the trace for a preceding ttfb_timeout, idle_watchdog_fired, or rate_limit phase before suspecting the network.")}var TV=y(()=>{"use strict";Le()});function HRe(e){let t=e.trim();if(t.length===0)return{};try{return JSON.parse(t)}catch{return{}}}function WRe(e,t,n){let r=[],o=[];for(let a of e)a&&(a.kind==="text"?(r.push({type:"text",text:a.text}),o.push(a.text)):a.kind==="thinking"?a.thinking&&a.signature&&r.push({type:"thinking",thinking:a.thinking,signature:a.signature}):a.kind==="redacted_thinking"?r.push({type:"redacted_thinking",data:a.data}):r.push({type:"tool_use",id:a.id,name:a.name,input:HRe(a.partialJson)}));let i=a=>a.type==="tool_use",s=r.filter(i);return{stopReason:t,assistantBlocks:r,toolUseBlocks:s,usage:n,text:o.join("")}}async function*EV(e,t,n){let r=[],o=null,i=null,s=!1,a=!!v.AFK_TELEGRAM_TRACE;try{a&&console.log("[translate] starting SDK event iteration");for await(let l of e){switch(a&&console.log("[translate] SDK evt:",l.type),l.type){case"message_start":{let c=l.message?.usage;c&&(i={...c});break}case"content_block_start":{let c=l.content_block;c.type==="text"?r[l.index]={kind:"text",text:""}:c.type==="thinking"?r[l.index]={kind:"thinking",thinking:"",signature:""}:c.type==="redacted_thinking"?r[l.index]={kind:"redacted_thinking",data:c.data}:c.type==="tool_use"&&(r[l.index]={kind:"tool_use",id:c.id,name:c.name,partialJson:""},yield{kind:"event",event:{type:"tool.use.start",toolUseId:c.id,toolName:c.name,toolInput:" \u2026",pending:!0,sessionId:t.sessionId}});break}case"content_block_delta":{let c=r[l.index],u=l.delta;u.type==="text_delta"?(c&&c.kind==="text"&&(c.text+=u.text),yield{kind:"event",event:{type:"delta.text",text:u.text,sessionId:t.sessionId}}):u.type==="input_json_delta"?(c&&c.kind==="tool_use"&&(c.partialJson+=u.partial_json),n?.()):u.type==="thinking_delta"?(c&&c.kind==="thinking"&&(c.thinking+=u.thinking),yield{kind:"event",event:{type:"delta.reasoning",text:u.thinking,sessionId:t.sessionId}}):(u.type==="signature_delta"&&c&&c.kind==="thinking"&&(c.signature=u.signature),n?.());break}case"content_block_stop":{let c=r[l.index];c&&c.kind==="tool_use"&&(yield{kind:"event",event:{type:"tool.use",summary:c.name,toolUseIds:[c.id],sessionId:t.sessionId}});break}case"message_delta":{l.delta&&l.delta.stop_reason!==void 0&&(o=l.delta.stop_reason);let c=l.usage;c&&(i!==null?(i.output_tokens=c.output_tokens,c.cache_creation_input_tokens!=null&&(i.cache_creation_input_tokens=c.cache_creation_input_tokens),c.cache_read_input_tokens!=null&&(i.cache_read_input_tokens=c.cache_read_input_tokens),c.input_tokens!=null&&(i.input_tokens=c.input_tokens)):i={cache_creation:null,cache_creation_input_tokens:c.cache_creation_input_tokens??null,cache_read_input_tokens:c.cache_read_input_tokens??null,inference_geo:null,input_tokens:c.input_tokens??0,output_tokens:c.output_tokens,server_tool_use:null,service_tier:null});break}case"message_stop":{s=!0;break}default:break}if(s)break}a&&console.log("[translate] SDK iteration ended naturally, stopped=",s)}catch(l){a&&console.log("[translate] SDK iteration threw:",l.message),yield{kind:"event",event:{type:"error",error:l instanceof Error?l:new Error(String(l))}};return}if(!vV(s,o)){yield{kind:"event",event:{type:"error",error:kV()}};return}a&&console.log("[translate] yielding turn-result"),yield{kind:"turn-result",result:WRe(r,o,i)}}var RV=y(()=>{"use strict";F();TV()});async function*xV({events:e,input:t,turn:n,retry:r,ttfb:o,stall:i,stallTimeoutMs:s,requestStartedAt:a}){let l=null,c=!1,u=!1,d=!1,p=!1,f=!1,g=!1;try{v.AFK_TELEGRAM_TRACE&&console.log("[loop] awaiting translateMessageStream events");for await(let h of EV(Hc(e,t.signal),t.ctx,()=>i.progress()))if(!g&&(h.kind==="turn-result"||h.event.type!=="error")&&(g=!0,o.firstByteSeen(),ne(t.traceWriter,{phase:"model_ttfb",durationMs:Date.now()-a,resolvedModel:t.model})),i.progress(),v.AFK_TELEGRAM_TRACE&&console.log("[loop] translate yielded:",h.kind,h.kind==="event"?h.event.type:""),h.kind==="event"){if(h.event.type==="error"){if(o.timedOut()&&!t.signal.aborted&&r.canRetryTtfb()&&!g){u=!0;break}if(i.timedOut()&&!t.signal.aborted){yield{type:"error",error:mP(s)},c=!0;break}if(mf(h.event.error)&&r.canRetryOverload()&&!t.signal.aborted){d=!0;break}if(mf(h.event.error)&&!t.signal.aborted){f=!0;break}if(t.signal.aborted)break;if(h.event.error instanceof Fn&&r.canRetryStreamIncomplete()&&!t.signal.aborted){p=!0;break}yield h.event,c=!0;break}yield h.event}else{l=h.result;break}v.AFK_TELEGRAM_TRACE&&console.log("[loop] translate loop exited, turnResult=",l?"set":"null")}catch(h){if(o.timedOut()&&!t.signal.aborted&&r.canRetryTtfb()&&!g)o.dispose(),i.dispose(),u=!0;else{if(o.dispose(),i.dispose(),t.signal.aborted)return yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId},{kind:"terminated"};let b=h instanceof Error?h:new Error(String(h));if((i.timedOut()||rV(b))&&!t.signal.aborted)return yield{type:"error",error:mP(s)},{kind:"terminated"};if(mf(b)&&r.canRetryOverload()&&!t.signal.aborted)d=!0;else if(mf(b)&&!t.signal.aborted)f=!0;else return yield{type:"error",error:b},{kind:"terminated"}}}return o.dispose(),i.dispose(),u?{kind:"retry",reason:"ttfb"}:d?{kind:"retry",reason:"overload"}:p?{kind:"retry",reason:"stream-incomplete"}:f?{kind:"overload-exhausted"}:c?{kind:"translator-errored"}:{kind:"streamed",turnResult:l}}var AV=y(()=>{"use strict";RV();Le();_S();pe();F();Yw();ff()});async function*CV(e,t,n){let r=[],o=new Map;for(let s of e.toolUseBlocks)r.push({id:s.id,name:s.name,input:s.input,signal:t.signal}),o.set(s.id,Date.now()),Os(t.traceWriter,NS({toolUseId:s.id,name:s.name,input:s.input,subagentId:t.subagentId})),yield{type:"tool.use.start",toolUseId:s.id,toolName:s.name,toolInput:Ai(s.name,s.input),toolInputRaw:FS(s.input),toolInputCapture:v.AFK_CAPTURE_SUBAGENT_OUTPUT==="1"?LS(s.input):void 0,sessionId:t.ctx.sessionId};if(t.signal.aborted){let s=r.map(a=>({type:"tool_result",tool_use_id:a.id,content:"Tool call aborted",is_error:!0}));return t.messages.push({role:"user",content:s}),yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId},{kind:"aborted"}}let i;if(t.toolDispatcher.executeBatch)try{i=await t.toolDispatcher.executeBatch(r)}catch(s){i=r.map(()=>({content:`Tool batch execution failed: ${s instanceof Error?s.message:String(s)}`,isError:!0}))}else{i=[];for(let s of r){if(t.signal.aborted){i.push({content:"Tool call aborted",isError:!0,failureClass:Zt(t.signal)});continue}try{i.push(await t.toolDispatcher.execute(s))}catch(a){let l=a instanceof Error?a.message:String(a);i.push({content:`Tool execution threw: ${l}`,isError:!0})}}}return{kind:"dispatched",calls:r,results:i,startTimes:o}}var _V=y(()=>{"use strict";ui();pe();P_();F();Nm();US()});async function*IV(e,t,n,r){let o=[];for(let l=0;l<e.length;l++){let c=e[l],u=t[l],d=n.get(c.id),p=typeof d=="number"?Date.now()-d:0,f=u.truncated===!0||u.content.includes("[output truncated");Os(r.traceWriter,BS({toolUseId:c.id,name:c.name,result:u,truncated:f,durationMs:p,subagentId:r.subagentId})),yield{type:"tool.output",toolUseId:c.id,toolName:c.name,content:u.content,...u.isError===!0?{isError:!0}:{},...f?{truncated:!0}:{},...u.incomplete===!0?{incomplete:!0}:{},...u.incompleteReason?{incompleteReason:u.incompleteReason}:{},...typeof u.batchIndex=="number"&&typeof u.batchSize=="number"?{batchIndex:u.batchIndex,batchSize:u.batchSize}:{},...u.failureClass?{failureClass:u.failureClass}:{},sessionId:r.ctx.sessionId},u.render?.diff&&(yield{type:"tool.diff",toolUseId:c.id,diff:u.render.diff,sessionId:r.ctx.sessionId});let{content:g,isError:h,image:b}=u,S=b!==void 0?[{type:"image",source:{type:"base64",media_type:b.mediaType,data:b.data}},...g.length>0?[{type:"text",text:g}]:[]]:g;o.push({type:"tool_result",tool_use_id:c.id,content:S,...h===!0?{is_error:!0}:{}})}let i=t.flatMap(l=>l.harnessUserMessage?.kind==="queued_user_message"?[{type:"text",text:l.harnessUserMessage.text}]:[]),s={role:"user",content:[...o,...i]};r.messages.push(s);let a=t.find(l=>l.failureClass===nc);return a?(yield{type:"error",error:new $l(a.content)},"denial-tripped"):"committed"}var PV=y(()=>{"use strict";pe();US();Bp();Le()});async function*MV(e,t,n,r,o){let i=t.messages.length;t.messages.push({role:"assistant",content:e.assistantBlocks});try{n.toolCallCount+=e.toolUseBlocks.length;let u=yield*CV(e,t,n);if(u.kind==="aborted"||(yield*IV(u.calls,u.results,u.startTimes,t))==="denial-tripped")return"terminated"}catch(u){throw t.messages.splice(i),u}n.iterations+=1;let s=e.toolUseBlocks[e.toolUseBlocks.length-1],a=s?`${s.name}${Ai(s.name,s.input)}`:"unknown";if(yield{type:"progress",progress:{taskId:n.taskId,description:"Working",summary:`${KS(n.iterations,r)}: ${a}`,lastToolName:s?.name,totalTokens:n.usage.totalTokens??0,toolUses:n.toolCallCount,durationMs:Date.now()-n.startedAt},sessionId:t.ctx.sessionId},n.windDownReason!==null)return yield{type:"turn.completed",usage:n.withDuration({...n.usage,stopReason:n.windDownReason}),sessionId:t.ctx.sessionId},"terminated";let l=WS(n.iterations,r),c=zS(n.startedAt,o);if(l||c){let u=l?jS:GS,d=t.messages[t.messages.length-1];d!==void 0&&d.role==="user"&&Array.isArray(d.content)&&d.content.push({type:"text",text:u}),n.windDownReason=l?gr:hr}return"continue"}var OV=y(()=>{"use strict";Nm();Ci();Kc();_V();PV()});function*DV(e,t,n){if(e.stopReason==="refusal"){e.text.length>0&&(yield{type:"assistant.message",text:e.text,sessionId:t.ctx.sessionId}),yield{type:"notice",text:`The model stopped with a content-safety refusal (stop_reason: "refusal") and returned no output. This is Anthropic's safety system declining the request \u2014 not an afk error. Because the flagged context stays in the conversation, follow-up messages will likely be refused the same way; rephrase the request or start a fresh session to continue.`,kind:"refusal",sessionId:t.ctx.sessionId},yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId};return}let r=Vr(e.stopReason)?yS(e.toolUseBlocks.map(i=>i.name),e.stopReason):null;e.text.length>0?(yield{type:"assistant.message",text:r?`${e.text}
1343
+ `)}var zw=y(()=>{"use strict";Gt()});function Bz(e){let{config:t,cwd:n}=e,r=e.hasSkillExecutor?YS(void 0,{cwd:n,...typeof t.skillDispatchName=="string"&&t.skillDispatchName.length>0?{excludeName:t.skillDispatchName}:{}}):"",o=mS(t.isSkillDispatch),i=fS(e.readOnlyMemory),s=gS(e.workspaceEnabled),a={surface:e.surface,sessionId:t.sessionId,depth:t.depth,maxDepth:t.maxDepth,workspace:e.runtimeStateSource.getWorkspace()},l={toolBase:o,memoryPrompt:i,workspacePrompt:s,hotMemory:t.hotMemory??"",manifest:r,userSystem:e.userSystem};return{stableSystemPrefix:l,toolSystemAppend:uu(l,n,a)}}var Uz=y(()=>{"use strict";fr();o_();zw()});import gRe from"@anthropic-ai/sdk";function jz(e){if(e===void 0)return null;if(typeof e=="string")return e.length>0?e:null;if(typeof e=="object"&&e!==null&&"append"in e){let t=e.append;return t&&t.length>0?t:null}return null}function Hz(e,t,n,r){let o=t.config,{localMode:i,token:s}=lW(o);if(!s||s.length===0)throw new Error(`${n} provider requires config.apiKey (resolved from ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN)`);let a=Kh(s),{client:l,throttleQueue:c,systemPrefix:u,tokenRefresher:d}=TW({config:o,token:s,authMode:a,localMode:i,factory:e.providerFactory??tS(),createClient:x=>new gRe(x)}),p=jz(o.systemPrompt),f=typeof o.model=="string"&&o.model.length>0?Dt(o.model)??o.model:r,g=Qh(o,f),h=o.permissionMode??"default";e.setCurrentPermissionMode(h),e.ensureSharedRoots(o.cwd),o.cwd&&e.setCurrentCwd(o.cwd);let b=e.getSharedReadRoots(),S=e.getSharedWriteRoots();o.readRoots&&b&&b.length<=1&&(b.length=0,b.push(...o.readRoots)),o.writeRoots&&S&&S.length<=1&&(S.length=0,S.push(...o.writeRoots));let{queryDispatcher:w,runtimeStateSource:k,toolDefs:E,resolvedSessionId:T}=OW({config:o,model:f,permissionMode:h,surface:e.surface,providerName:n,externalTools:e.externalTools,sharedReadRoots:b,sharedWriteRoots:S,getCwd:()=>e.getCurrentCwd()||o.cwd||process.cwd(),getMcpTools:()=>e.mcpManager?.getMcpTools()??[],getSubagents:()=>e.subagentExecutor?e.subagentExecutor.getSubagentsLite():{active:[],backgroundJobs:[]},getMintedSessionId:()=>e.getMintedSessionId(),setMintedSessionId:x=>{e.setMintedSessionId(x)},getPresenceSessionId:()=>e.getPresenceSessionId(),setPresenceSessionId:x=>{e.setPresenceSessionId(x)},buildDispatcher:(x,_)=>e.buildDispatcher(x,_)}),R=o.cwd||process.cwd(),{stableSystemPrefix:I,toolSystemAppend:C}=Bz({config:o,cwd:R,surface:e.surface,readOnlyMemory:e.readOnlyMemory,workspaceEnabled:e.workspaceStore!==void 0,hasSkillExecutor:!!e.skillExecutor,runtimeStateSource:k,userSystem:p});return DL({prompt:t.prompt,options:{model:f,maxTokens:g,system:C},provenance:{systemPrompt:{source:o.systemPromptSource??"none",shape:typeof o.systemPrompt=="string"?"string":Array.isArray(o.systemPrompt)?"string[]":o.systemPrompt!=null?"preset":"undefined",...typeof o.systemPrompt=="string"?{length:o.systemPrompt.length}:{}},...o.apiKey?{apiKey:{source:"config"}}:{}}}),{client:l,authMode:a,localMode:i,model:f,maxTokens:g,cwd:R,systemPrefix:u,throttleQueue:c,tokenRefresher:d,queryDispatcher:w,runtimeStateSource:k,toolDefs:E,resolvedSessionId:T,stableSystemPrefix:I,toolSystemAppend:C}}var oP=y(()=>{"use strict";Fs();Un();ty();cW();nS();EW();DW();Uz();si()});function Wz(e){let t=e.initialUsageInputTokens!==void 0&&e.initialUsageInputTokens>0?{inputTokens:e.initialUsageInputTokens,stopReason:null,resultSubtype:"success",isError:!1}:null;return{messages:e.initialMessages?[...e.initialMessages]:[],currentModel:e.model,requestedModel:e.requestedModel??e.model,currentPermissionMode:e.permissionMode,userSystem:e.userSystem,toolDispatcher:e.toolDispatcher,lastUsage:t,closed:!1,autoCompactThreshold:e.autoCompactThreshold}}var Kz=y(()=>{"use strict"});function uf(e){if(typeof e?.baseUrl=="string"&&e.baseUrl.length>0)return!1;let t=v.AFK_DISABLE_PROMPT_CACHE;if(t===void 0||t.length===0)return!0;let n=t.toLowerCase();return!(n==="1"||n==="true"||n==="yes"||n==="on")}function Ra(){let e=v.AFK_PROMPT_CACHE_TTL;return e==="5m"?"5m":e==="1h"?"1h":hRe}function Vw(e){return uf(e)&&Ra()==="1h"}function Gz(e,t){if(e.length===0)return e;let n=e[e.length-1],r=zz(n,t);return r===n?e:[...e.slice(0,-1),r]}function qz(e,t){if(e.length===0)return e;let n=e[e.length-1],r=yRe(n,t);return r===n?e:[...e.slice(0,-1),r]}function yRe(e,t){let n=e.content;if(typeof n=="string")return n.length===0?e:{...e,content:[{type:"text",text:n,cache_control:{type:"ephemeral",ttl:t}}]};if(!Array.isArray(n)||n.length===0)return e;let r=n[n.length-1],o=zz(r,t);return o===r?e:{...e,content:[...n.slice(0,-1),o]}}function zz(e,t){return e.type==="thinking"||e.type==="redacted_thinking"?e:{...e,cache_control:{type:"ephemeral",ttl:t}}}var hRe,du=y(()=>{"use strict";F();hRe="1h"});var iP=y(()=>{"use strict";na()});function TRe(e){let t=n=>n===void 0?void 0:n*sP;return{inputPerMTok:e.inputPerMTok*sP,outputPerMTok:e.outputPerMTok*sP,...t(e.cacheWrite5mPerMTok)!==void 0?{cacheWrite5mPerMTok:t(e.cacheWrite5mPerMTok)}:{},...t(e.cacheWrite1hPerMTok)!==void 0?{cacheWrite1hPerMTok:t(e.cacheWrite1hPerMTok)}:{},...t(e.cacheReadPerMTok)!==void 0?{cacheReadPerMTok:t(e.cacheReadPerMTok)}:{}}}function ERe(e){return e.responseSpeed??e.requestSpeed??"standard"}function RRe(e){return Lc(e,Vz,vRe)}function aP(e,t,n,r,o,i,s={}){let a=RRe(e);if(!a)return;let l=ERe(s)==="fast"&&kRe.test(e)?TRe(a):a,c=1e6,u=nn(t),d=nn(n),p=nn(r),f=nn(o),g=u/c*l.inputPerMTok,h=d/c*l.outputPerMTok,b=l.cacheWrite5mPerMTok??l.inputPerMTok*bRe,S=l.cacheWrite1hPerMTok??l.inputPerMTok*SRe,w=l.cacheReadPerMTok??l.inputPerMTok*wRe,k=i??{ephemeral5m:f,ephemeral1h:0},E=nn(k.ephemeral5m),T=nn(k.ephemeral1h),R=Math.max(0,f-(E+T)),I=E/c*b+T/c*S+R/c*S,C=p/c*w;return g+h+I+C}var bRe,SRe,wRe,Vz,vRe,sP,kRe,lP=y(()=>{"use strict";SS();bRe=1.25,SRe=2,wRe=.1,Vz=new Map([["claude-sonnet-5",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-opus-5",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-8",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-7",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-opus-4-6",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-sonnet-4-6",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-sonnet-4-5-20250929",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-opus-4-5-20250929",{inputPerMTok:5,outputPerMTok:25,cacheWrite5mPerMTok:6.25,cacheWrite1hPerMTok:10,cacheReadPerMTok:.5}],["claude-haiku-4-5-20250929",{inputPerMTok:1,outputPerMTok:5,cacheWrite5mPerMTok:1.25,cacheWrite1hPerMTok:2,cacheReadPerMTok:.1}],["claude-haiku-4-5-20251001",{inputPerMTok:1,outputPerMTok:5,cacheWrite5mPerMTok:1.25,cacheWrite1hPerMTok:2,cacheReadPerMTok:.1}],["claude-3-7-sonnet-20250219",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-sonnet-20241022",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-sonnet-20240620",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-5-haiku-20241022",{inputPerMTok:.8,outputPerMTok:4,cacheWrite5mPerMTok:1,cacheWrite1hPerMTok:1.6,cacheReadPerMTok:.08}],["claude-3-opus-20240229",{inputPerMTok:15,outputPerMTok:75,cacheWrite5mPerMTok:18.75,cacheWrite1hPerMTok:30,cacheReadPerMTok:1.5}],["claude-3-sonnet-20240229",{inputPerMTok:3,outputPerMTok:15,cacheWrite5mPerMTok:3.75,cacheWrite1hPerMTok:6,cacheReadPerMTok:.3}],["claude-3-haiku-20240307",{inputPerMTok:.25,outputPerMTok:1.25,cacheWrite5mPerMTok:.3,cacheWrite1hPerMTok:.5,cacheReadPerMTok:.03}]]),vRe=/-\d{8}$/,sP=2,kRe=/^claude-opus-(?:5|4-8)(?:-|$)/});function xRe(e){let t=e.speed;return t==="fast"||t==="standard"?t:void 0}function ARe(e){let t=o=>Number.isFinite(o)&&o>=0?o:0,n=e.cache_creation;if(n)return{ephemeral5m:t(n.ephemeral_5m_input_tokens??0),ephemeral1h:t(n.ephemeral_1h_input_tokens??0)};let r=t(e.cache_creation_input_tokens??0);return Ra()==="1h"?{ephemeral5m:0,ephemeral1h:r}:{ephemeral5m:r,ephemeral1h:0}}function cP(e,t,n,r){if(!e)return{stopReason:t??null};let o=xRe(e),i={inputTokens:e.input_tokens,outputTokens:e.output_tokens,stopReason:t??null,raw:{...e,...o?{speed:o}:{}}};if(e.cache_read_input_tokens!=null&&(i.cachedInputTokens=e.cache_read_input_tokens),e.cache_creation_input_tokens!=null&&(i.cacheCreationTokens=e.cache_creation_input_tokens),i.totalTokens=(e.input_tokens??0)+(e.output_tokens??0),n){let s=aP(n,e.input_tokens??0,e.output_tokens??0,e.cache_read_input_tokens??0,e.cache_creation_input_tokens??0,ARe(e),{...r?{requestSpeed:r}:{},...o?{responseSpeed:o}:{}});s!==void 0&&(i.totalCostUsd=s)}return i}var Yz=y(()=>{"use strict";du();lP()});var uP=y(()=>{"use strict";lP();Yz();i_()});function df(e){return e>2147483647?2147483647:e}var dP=y(()=>{"use strict"});function Xz(){let e=v.AFK_MODEL_TTFB_TIMEOUT_MS;if(e===void 0||e.trim()==="")return Jz;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?Jz:df(t)}function Qz(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?void 0:(e<IRe?e:PRe)+_Re}function Zz(e,t){if(t<=0)return{signal:e,timedOut:()=>!1,firstByteSeen:()=>{},extend:()=>{},dispose:()=>{}};let n=new AbortController,r=AbortSignal.any([e,n.signal]),o=!1,i=!1,s=Date.now()+t,a,l=d=>{a=setTimeout(()=>{o=!0,n.abort(new Error(CRe))},df(d)),a.unref()};l(t);let c=()=>{i||(i=!0,clearTimeout(a))};return{signal:r,timedOut:()=>o,firstByteSeen:c,extend:d=>{i||o||typeof d!="number"||!Number.isFinite(d)||d<=0||(s+=d,clearTimeout(a),l(Math.max(1,s-Date.now())))},dispose:c}}var Jz,CRe,_Re,IRe,PRe,pP=y(()=>{"use strict";F();dP();Jz=18e4;CRe="model_ttfb_timeout",_Re=3e4,IRe=6e4,PRe=8e3});function tV(){let e=v.AFK_MODEL_STALL_TIMEOUT_MS;if(e===void 0||e.trim()==="")return eV;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?eV:df(t)}function rV(e){return e instanceof Error&&e.message===nV}function mP(e){return new Error(`Model stream stalled: no output for ${Math.round(e/1e3)}s after the response had already started streaming. The round was aborted rather than left hanging (issue #762: two sessions hung 38 and 63 minutes with no terminal event). A round that keeps producing output is never cut off, no matter how long it runs. Raise AFK_MODEL_STALL_TIMEOUT_MS, or set it to 0 to disable this bound.`)}function oV(e,t,n){if(t<=0)return{signal:e,timedOut:()=>!1,progress:()=>{},dispose:()=>{}};let r=new AbortController,o=AbortSignal.any([e,r.signal]),i,s=!1,a=!1,l=d=>{if(!(a||s)){s=!0,i=void 0;try{n?.({stallTimeoutMs:t,elapsedSinceLastProgressMs:Date.now()-d})}catch{}r.signal.aborted||r.abort(new Error(nV))}};return{signal:o,timedOut:()=>s,progress:()=>{if(a||s)return;i!==void 0&&clearTimeout(i);let d=Date.now(),p=setTimeout(()=>l(d),t);p.unref(),i=p},dispose:()=>{a||(a=!0,i!==void 0&&clearTimeout(i),i=void 0)}}}var eV,nV,Yw=y(()=>{"use strict";F();dP();eV=12e5;nV="model_stream_stall_timeout"});function Jw(e,t=Math.random){return e+Math.floor(t()*e*$Re)}function sV(e=Math.random){let t=DRe-iV;return iV+Math.floor(e()*t)}function aV(e){return e.type==="turn.completed"&&e.usage.stopReason===Cn}function lV(e){let t=v.AFK_OVERLOAD_PAUSE_MS;if(t!==void 0&&t.trim()!==""){let n=Number(t);if(Number.isFinite(n)&&n>=0)return Math.min(Math.floor(n),ORe)}return e!==void 0&&FRe.has(e)?MRe:0}var fP,MRe,ORe,iV,DRe,$Re,FRe,pf=y(()=>{"use strict";F();Zc();Zc();fP="Anthropic is overloaded (HTTP 529) and did not recover within this turn's retry budget. This is an upstream capacity event, not an afk error. The turn was committed, so the conversation so far is preserved \u2014 resume with `afk --resume <sessionId>` to continue from saved state once capacity frees up.",MRe=600*1e3,ORe=7200*1e3,iV=60*1e3,DRe=120*1e3,$Re=.25;FRe=new Set(["cli","repl","telegram","web"])});function cV(e){if(!Number.isFinite(e)||e<=0)return 0;let t=Math.floor(e*2/3);return Math.max(1,t)}function uV(e){if(!("status"in e))return!1;let t=e.status;return t===529||t===503}function mf(e){if(e===null||typeof e!="object")return!1;let t=e;if(t.status===529||t.status===503)return!0;let n=t.error;if(n===null||typeof n!="object")return!1;let r=n;return((r.error!==null&&typeof r.error=="object"?r.error.type:void 0)??r.type)==="overloaded_error"}var Xw,ff=y(()=>{"use strict";Xw=class{overloadRetries=0;streamIncompleteRetries=0;ttfbRetries=0;canRetryOverload(){return this.overloadRetries<3}canRetryStreamIncomplete(){return this.streamIncompleteRetries<2}canRetryTtfb(){return this.ttfbRetries<2}reset(){this.overloadRetries=0,this.streamIncompleteRetries=0,this.ttfbRetries=0}}});async function*NRe(e,t,n){ne(e.traceWriter,{phase:"ttfb_timeout",durationMs:Date.now()-t,metadata:{reason:"ttfb-timeout",source:"first-byte",resolvedModel:e.model,attempt:n}}),yield{type:"stream.retry",sessionId:e.ctx.sessionId}}async function*hP(e,{input:t,turn:n,retry:r,requestStartedAt:o}){return e==="ttfb"?(r.ttfbRetries+=1,yield*NRe(t,o,r.ttfbRetries),"continue"):e==="overload"?(r.overloadRetries+=1,ne(t.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:r.overloadRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*dV(Jw(5e3*Math.pow(2,r.overloadRetries-1)),t,n),t.signal.aborted?"terminated":"continue"):(r.streamIncompleteRetries+=1,ne(t.traceWriter,{phase:"rate_limit",metadata:{reason:"stream-incomplete",source:"mid-stream",attempt:r.streamIncompleteRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*dV(1e3*Math.pow(2,r.streamIncompleteRetries-1),t,n),t.signal.aborted?"terminated":"continue")}async function*dV(e,t,n){await xn(e,t.signal),t.signal.aborted&&(yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId})}var pV=y(()=>{"use strict";pe();ga();pf();ff()});function fV(e){let t=e.fastModeController?.snapshotTurn({resolvedModelId:e.model,providerFamily:"anthropic-direct",hasCustomEndpoint:e.baseUrl!==void 0,executionPath:"top-level"}),n=t?.effective===!0,r=ai(e.authMode,e.sessionId,e.requestId,e.effort!==void 0,Vw(e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{}),n);return{decision:t,runInput:{client:e.client,messages:e.messages,system:e.system,tools:e.tools,toolDispatcher:e.toolDispatcher,model:e.model,maxTokens:e.maxTokens,headers:r,signal:e.signal,ctx:{sessionId:e.sessionId},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{effort:e.effort}:{},...n?{fastMode:!0}:{},...e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{},...e.maxToolUseIterations!==void 0?{maxToolUseIterations:e.maxToolUseIterations}:{},...e.softDeadlineMs!==void 0?{softDeadlineMs:e.softDeadlineMs}:{},...e.traceWriter?{traceWriter:e.traceWriter}:{},...e.subagentId!==void 0?{subagentId:e.subagentId}:{},...e.throttleQueue?{throttleQueue:e.throttleQueue}:{},...e.onUsageProgress?{onUsageProgress:e.onUsageProgress}:{}}}}function Qw(e,t){let n=e instanceof Error?e:new Error(String(e));if(!t||n.message.startsWith(mV))return n;let r=new Error(`${mV} ${n.message}`,{cause:n});r.name=n.name,n.stack!==void 0&&(r.stack=n.stack);for(let o of Object.getOwnPropertyNames(n)){if(o==="message"||o==="stack")continue;let i=Object.getOwnPropertyDescriptor(n,o);i!==void 0&&Object.defineProperty(r,o,i)}return r}var mV,yP=y(()=>{"use strict";Fs();du();mV="[Fast mode requested; no standard-mode fallback will be attempted]"});async function*gV(e,t,n){let r=t.throttleQueue;if(!r)return await e;r.resetAttempts();let o=Symbol("create-done"),i=!1,s=e.then(a=>(i=!0,a),a=>{throw i=!0,a});for(;;){for(let l of r.takeAll())n?.(l.retryAfterMs),yield{type:"rate_limit",sessionId:t.ctx.sessionId,status:l.status,attempt:l.attempt,...l.retryAfterMs!==void 0?{retryAfterMs:l.retryAfterMs}:{}};if(i)return await s;await Promise.race([s.then(()=>o,()=>o),r.waitForItem().then(()=>{})])}}var hV=y(()=>{"use strict"});function yV(e,t){try{let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o.role!=="assistant"||typeof o.content=="string")continue;let i=o.content;for(let s=0;s<i.length;s++){let a=i[s];if(a.type==="thinking"){let l=a;(!l.thinking||!l.signature)&&n.push({msgIdx:r,blockIdx:s,thinking:l.thinking?`(${l.thinking.length} chars)`:"(empty)",sigLen:l.signature?.length??0})}}}console.error("[afk] thinking-block diagnostic \u2014 API rejected request with:",t.message),console.error(`[afk] messages.length=${e.length}, invalid thinking blocks:`,n.length>0?JSON.stringify(n):"none found (cause may be elsewhere)")}catch{}}var bV=y(()=>{"use strict"});function BRe(e){let{name:t,description:n,input_schema:r}=e;return{name:t,...n!==void 0?{description:n}:{},input_schema:r}}async function URe(e,t,n,r,o){for(let i=0;;i++){if(i>0){let s=Jw(5e3*Math.pow(2,i-1));if(await xn(s,o),o.aborted)throw new Error("aborted")}try{return await Promise.resolve(e.messages.create(t,{headers:n,signal:r}))}catch(s){if(r.aborted)throw s;let a=s instanceof Error?s:new Error(String(s));if(uV(a)){if(i<3)continue;throw new Zw}throw a}}}function jRe(e){return{model:e.model,max_tokens:e.maxTokens,messages:e.messages,stream:!0,...e.system!==null?{system:e.system}:{},...e.tools!==null&&e.tools.length>0?{tools:e.tools.map(BRe)}:{},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{output_config:{effort:e.effort}}:{},...e.fastMode===!0?{speed:"fast"}:{}}}async function*SV({input:e,turn:t,retry:n,ttfbTimeoutMs:r,stallTimeoutMs:o}){let i=uf({baseUrl:e.baseUrl})?qz(e.messages,Ra()):e.messages,s=jRe({...e,messages:i,tools:t.windDownReason!==null?null:e.tools}),a=Date.now(),l=Zz(e.signal,r),c=oV(l.signal,o,u=>{ne(e.traceWriter,{phase:"idle_watchdog_fired",durationMs:u.elapsedSinceLastProgressMs,resolvedModel:e.model,metadata:{source:"model-stream",stallTimeoutMs:u.stallTimeoutMs,elapsedSinceLastProgressMs:u.elapsedSinceLastProgressMs}})});try{return{kind:"opened",events:yield*gV(URe(e.client,s,e.headers,c.signal,e.signal),e,d=>{let p=Qz(d);p!==void 0&&l.extend(p)}),ttfb:l,stall:c,requestStartedAt:a}}catch(u){if(l.timedOut()&&!e.signal.aborted&&n.canRetryTtfb())return l.dispose(),c.dispose(),{kind:"retry-ttfb",requestStartedAt:a};if(l.dispose(),c.dispose(),e.signal.aborted)return yield{type:"turn.completed",usage:t.terminalUsage(),sessionId:e.ctx.sessionId},{kind:"terminated"};if(u instanceof Zw)return{kind:"overload-exhausted"};let d=Qw(u,e.fastMode===!0);return d.message.includes("thinking")&&yV(e.messages,d),yield{type:"error",error:d},{kind:"terminated"}}}var Zw,wV=y(()=>{"use strict";yP();du();pe();ga();pP();Yw();pf();ff();hV();bV();Zw=class extends Error{constructor(){super("Connection-phase overload budget exhausted"),this.name="ConnectionOverloadExhaustedError"}}});function vV(e,t){return e||t!==null}function kV(){return new Fn("the model stream ended without a terminal message (no message_stop and no stop_reason): the turn is incomplete. The cause is not knowable at this layer \u2014 a client-side abort carrying an AbortError reason (including the SDK request timeout) and an upstream peer close are indistinguishable here. Check the trace for a preceding ttfb_timeout, idle_watchdog_fired, or rate_limit phase before suspecting the network.")}var TV=y(()=>{"use strict";Le()});function HRe(e){let t=e.trim();if(t.length===0)return{};try{return JSON.parse(t)}catch{return{}}}function WRe(e,t,n){let r=[],o=[];for(let a of e)a&&(a.kind==="text"?(r.push({type:"text",text:a.text}),o.push(a.text)):a.kind==="thinking"?a.thinking&&a.signature&&r.push({type:"thinking",thinking:a.thinking,signature:a.signature}):a.kind==="redacted_thinking"?r.push({type:"redacted_thinking",data:a.data}):r.push({type:"tool_use",id:a.id,name:a.name,input:HRe(a.partialJson)}));let i=a=>a.type==="tool_use",s=r.filter(i);return{stopReason:t,assistantBlocks:r,toolUseBlocks:s,usage:n,text:o.join("")}}async function*EV(e,t,n){let r=[],o=null,i=null,s=!1,a=!!v.AFK_TELEGRAM_TRACE;try{a&&console.log("[translate] starting SDK event iteration");for await(let l of e){switch(a&&console.log("[translate] SDK evt:",l.type),l.type){case"message_start":{let c=l.message?.usage;c&&(i={...c});break}case"content_block_start":{let c=l.content_block;c.type==="text"?r[l.index]={kind:"text",text:""}:c.type==="thinking"?r[l.index]={kind:"thinking",thinking:"",signature:""}:c.type==="redacted_thinking"?r[l.index]={kind:"redacted_thinking",data:c.data}:c.type==="tool_use"&&(r[l.index]={kind:"tool_use",id:c.id,name:c.name,partialJson:""},yield{kind:"event",event:{type:"tool.use.start",toolUseId:c.id,toolName:c.name,toolInput:" \u2026",pending:!0,sessionId:t.sessionId}});break}case"content_block_delta":{let c=r[l.index],u=l.delta;u.type==="text_delta"?(c&&c.kind==="text"&&(c.text+=u.text),yield{kind:"event",event:{type:"delta.text",text:u.text,sessionId:t.sessionId}}):u.type==="input_json_delta"?(c&&c.kind==="tool_use"&&(c.partialJson+=u.partial_json),n?.()):u.type==="thinking_delta"?(c&&c.kind==="thinking"&&(c.thinking+=u.thinking),yield{kind:"event",event:{type:"delta.reasoning",text:u.thinking,sessionId:t.sessionId}}):(u.type==="signature_delta"&&c&&c.kind==="thinking"&&(c.signature=u.signature),n?.());break}case"content_block_stop":{let c=r[l.index];c&&c.kind==="tool_use"&&(yield{kind:"event",event:{type:"tool.use",summary:c.name,toolUseIds:[c.id],sessionId:t.sessionId}});break}case"message_delta":{l.delta&&l.delta.stop_reason!==void 0&&(o=l.delta.stop_reason);let c=l.usage;c&&(i!==null?(i.output_tokens=c.output_tokens,c.cache_creation_input_tokens!=null&&(i.cache_creation_input_tokens=c.cache_creation_input_tokens),c.cache_read_input_tokens!=null&&(i.cache_read_input_tokens=c.cache_read_input_tokens),c.input_tokens!=null&&(i.input_tokens=c.input_tokens)):i={cache_creation:null,cache_creation_input_tokens:c.cache_creation_input_tokens??null,cache_read_input_tokens:c.cache_read_input_tokens??null,inference_geo:null,input_tokens:c.input_tokens??0,output_tokens:c.output_tokens,server_tool_use:null,service_tier:null});break}case"message_stop":{s=!0;break}default:break}if(s)break}a&&console.log("[translate] SDK iteration ended naturally, stopped=",s)}catch(l){a&&console.log("[translate] SDK iteration threw:",l.message),yield{kind:"event",event:{type:"error",error:l instanceof Error?l:new Error(String(l))}};return}if(!vV(s,o)){yield{kind:"event",event:{type:"error",error:kV()}};return}a&&console.log("[translate] yielding turn-result"),yield{kind:"turn-result",result:WRe(r,o,i)}}var RV=y(()=>{"use strict";F();TV()});async function*xV({events:e,input:t,turn:n,retry:r,ttfb:o,stall:i,stallTimeoutMs:s,requestStartedAt:a}){let l=null,c=!1,u=!1,d=!1,p=!1,f=!1,g=!1;try{v.AFK_TELEGRAM_TRACE&&console.log("[loop] awaiting translateMessageStream events");for await(let h of EV(Hc(e,t.signal),t.ctx,()=>i.progress()))if(!g&&(h.kind==="turn-result"||h.event.type!=="error")&&(g=!0,o.firstByteSeen(),ne(t.traceWriter,{phase:"model_ttfb",durationMs:Date.now()-a,resolvedModel:t.model})),i.progress(),v.AFK_TELEGRAM_TRACE&&console.log("[loop] translate yielded:",h.kind,h.kind==="event"?h.event.type:""),h.kind==="event"){if(h.event.type==="error"){if(o.timedOut()&&!t.signal.aborted&&r.canRetryTtfb()&&!g){u=!0;break}if(i.timedOut()&&!t.signal.aborted){yield{type:"error",error:mP(s)},c=!0;break}if(mf(h.event.error)&&r.canRetryOverload()&&!t.signal.aborted){d=!0;break}if(mf(h.event.error)&&!t.signal.aborted){f=!0;break}if(t.signal.aborted)break;if(h.event.error instanceof Fn&&r.canRetryStreamIncomplete()&&!t.signal.aborted){p=!0;break}yield h.event,c=!0;break}yield h.event}else{l=h.result;break}v.AFK_TELEGRAM_TRACE&&console.log("[loop] translate loop exited, turnResult=",l?"set":"null")}catch(h){if(o.timedOut()&&!t.signal.aborted&&r.canRetryTtfb()&&!g)o.dispose(),i.dispose(),u=!0;else{if(o.dispose(),i.dispose(),t.signal.aborted)return yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId},{kind:"terminated"};let b=h instanceof Error?h:new Error(String(h));if((i.timedOut()||rV(b))&&!t.signal.aborted)return yield{type:"error",error:mP(s)},{kind:"terminated"};if(mf(b)&&r.canRetryOverload()&&!t.signal.aborted)d=!0;else if(mf(b)&&!t.signal.aborted)f=!0;else return yield{type:"error",error:b},{kind:"terminated"}}}return o.dispose(),i.dispose(),u?{kind:"retry",reason:"ttfb"}:d?{kind:"retry",reason:"overload"}:p?{kind:"retry",reason:"stream-incomplete"}:f?{kind:"overload-exhausted"}:c?{kind:"translator-errored"}:{kind:"streamed",turnResult:l}}var AV=y(()=>{"use strict";RV();Le();_S();pe();F();Yw();ff()});async function*CV(e,t,n){let r=[],o=new Map;for(let s of e.toolUseBlocks)r.push({id:s.id,name:s.name,input:s.input,signal:t.signal}),o.set(s.id,Date.now()),Os(t.traceWriter,NS({toolUseId:s.id,name:s.name,input:s.input,subagentId:t.subagentId})),yield{type:"tool.use.start",toolUseId:s.id,toolName:s.name,toolInput:Ai(s.name,s.input),toolInputRaw:FS(s.input),toolInputCapture:v.AFK_CAPTURE_SUBAGENT_OUTPUT==="1"?LS(s.input):void 0,sessionId:t.ctx.sessionId};if(t.signal.aborted){let s=r.map(a=>({type:"tool_result",tool_use_id:a.id,content:"Tool call aborted",is_error:!0}));return t.messages.push({role:"user",content:s}),yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId},{kind:"aborted"}}let i;if(t.toolDispatcher.executeBatch)try{i=await t.toolDispatcher.executeBatch(r)}catch(s){i=r.map(()=>({content:`Tool batch execution failed: ${s instanceof Error?s.message:String(s)}`,isError:!0}))}else{i=[];for(let s of r){if(t.signal.aborted){i.push({content:"Tool call aborted",isError:!0,failureClass:Zt(t.signal)});continue}try{i.push(await t.toolDispatcher.execute(s))}catch(a){let l=a instanceof Error?a.message:String(a);i.push({content:`Tool execution threw: ${l}`,isError:!0})}}}return{kind:"dispatched",calls:r,results:i,startTimes:o}}var _V=y(()=>{"use strict";ui();pe();P_();F();Nm();US()});async function*IV(e,t,n,r){let o=[];for(let l=0;l<e.length;l++){let c=e[l],u=t[l],d=n.get(c.id),p=typeof d=="number"?Date.now()-d:0,f=u.truncated===!0||u.content.includes("[output truncated");Os(r.traceWriter,BS({toolUseId:c.id,name:c.name,result:u,truncated:f,durationMs:p,subagentId:r.subagentId})),yield{type:"tool.output",toolUseId:c.id,toolName:c.name,content:u.content,...u.isError===!0?{isError:!0}:{},...f?{truncated:!0}:{},...u.incomplete===!0?{incomplete:!0}:{},...u.incompleteReason?{incompleteReason:u.incompleteReason}:{},...typeof u.batchIndex=="number"&&typeof u.batchSize=="number"?{batchIndex:u.batchIndex,batchSize:u.batchSize}:{},...u.failureClass?{failureClass:u.failureClass}:{},sessionId:r.ctx.sessionId},u.render?.diff&&(yield{type:"tool.diff",toolUseId:c.id,diff:u.render.diff,sessionId:r.ctx.sessionId});let{content:g,isError:h,image:b}=u,S=b!==void 0?[{type:"image",source:{type:"base64",media_type:b.mediaType,data:b.data}},...g.length>0?[{type:"text",text:g}]:[]]:g;o.push({type:"tool_result",tool_use_id:c.id,content:S,...h===!0?{is_error:!0}:{}})}let i=t.flatMap(l=>l.harnessUserMessage?.kind==="queued_user_message"?[{type:"text",text:l.harnessUserMessage.text}]:[]),s={role:"user",content:[...o,...i]};r.messages.push(s);let a=t.find(l=>l.failureClass===nc);return a?(yield{type:"error",error:new $l(a.content)},"denial-tripped"):"committed"}var PV=y(()=>{"use strict";pe();US();Bp();Le()});async function*MV(e,t,n,r,o){let i=t.messages.length;t.messages.push({role:"assistant",content:e.assistantBlocks});try{n.toolCallCount+=e.toolUseBlocks.length;let u=yield*CV(e,t,n);if(u.kind==="aborted"||(yield*IV(u.calls,u.results,u.startTimes,t))==="denial-tripped")return"terminated"}catch(u){throw t.messages.splice(i),u}n.iterations+=1;let s=e.toolUseBlocks[e.toolUseBlocks.length-1],a=s?`${s.name}${Ai(s.name,s.input)}`:"unknown";if(yield{type:"progress",progress:{taskId:n.taskId,description:"Working",summary:`${KS(n.iterations,r)}: ${a}`,lastToolName:s?.name,totalTokens:n.usage.totalTokens??0,toolUses:n.toolCallCount,durationMs:Date.now()-n.startedAt},sessionId:t.ctx.sessionId},n.windDownReason!==null)return yield{type:"turn.completed",usage:n.withDuration({...n.usage,stopReason:n.windDownReason}),sessionId:t.ctx.sessionId},"terminated";let l=WS(n.iterations,r),c=zS(n.startedAt,o);if(l||c){let u=l?jS:GS,d=t.messages[t.messages.length-1];d!==void 0&&d.role==="user"&&Array.isArray(d.content)&&d.content.push({type:"text",text:u}),n.windDownReason=l?gr:hr}return"continue"}var OV=y(()=>{"use strict";Nm();Ci();Kc();_V();PV()});function*DV(e,t,n){if(e.stopReason==="refusal"){e.text.length>0&&(yield{type:"assistant.message",text:e.text,sessionId:t.ctx.sessionId}),yield{type:"notice",text:`The model stopped with a content-safety refusal (stop_reason: "refusal") and returned no output. This is Anthropic's safety system declining the request \u2014 not an afk error. Because the flagged context stays in the conversation, follow-up messages will likely be refused the same way; rephrase the request or start a fresh session to continue.`,kind:"refusal",sessionId:t.ctx.sessionId},yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId};return}let r=Vr(e.stopReason)?yS(e.toolUseBlocks.map(i=>i.name),e.stopReason):null;e.text.length>0?(yield{type:"assistant.message",text:r?`${e.text}
1344
1344
 
1345
1345
  ${r}`:e.text,sessionId:t.ctx.sessionId},e.text.length<=KRe&&(yield{type:"suggestion",suggestion:e.text,sessionId:t.ctx.sessionId})):r!==null&&(yield{type:"notice",text:r,kind:"truncation",sessionId:t.ctx.sessionId});let o=e.assistantBlocks.filter(i=>i.type!=="tool_use");o.length>0&&t.messages.push({role:"assistant",content:o}),yield{type:"turn.completed",usage:n.withDuration(n.windDownReason!==null?{...n.usage,stopReason:n.windDownReason}:n.usage),sessionId:t.ctx.sessionId}}var KRe,$V=y(()=>{"use strict";xm();KRe=200});import{randomUUID as GRe}from"node:crypto";var tv,FV=y(()=>{"use strict";uP();tv=class{usage={stopReason:null};iterations=0;toolCallCount=0;windDownReason=null;taskId=GRe();startedAt=Date.now();elapsedMs(){return Date.now()-this.startedAt}withDuration(t){return{...t,durationMs:this.elapsedMs()}}terminalUsage(){return this.withDuration(this.usage)}addRoundUsage(t){this.usage=Rm(this.usage,t),this.usage.contextWindowTokens=(t.inputTokens??0)+(t.outputTokens??0)+(t.cachedInputTokens??0)+(t.cacheCreationTokens??0)}}});async function*bP(e){let t=HS(e.maxToolUseIterations),n=e.softDeadlineMs??0,r=new tv,o=new Xw,i=c=>({input:e,turn:r,retry:o,requestStartedAt:c}),s=cV(Xz()),a=tV(),l=new Dc(e.signal,e.traceWriter,"anthropic-direct");try{for(;;){if(e.signal.aborted){yield{type:"turn.completed",usage:r.terminalUsage(),sessionId:e.ctx.sessionId};return}let c=yield*SV({input:e,turn:r,retry:o,ttfbTimeoutMs:s,stallTimeoutMs:a});if(c.kind==="terminated")return;if(c.kind==="retry-ttfb"){if((yield*hP("ttfb",i(c.requestStartedAt)))==="terminated")return;continue}if(c.kind==="overload-exhausted"){ne(e.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"connection-phase",attempt:3,exhausted:!0}}),yield{type:"assistant.message",text:fP,sessionId:e.ctx.sessionId},yield{type:"turn.completed",usage:r.withDuration({...r.usage,stopReason:Cn}),sessionId:e.ctx.sessionId};return}let{events:u,ttfb:d,stall:p,requestStartedAt:f}=c,g=yield*xV({events:u,input:e,turn:r,retry:o,ttfb:d,stall:p,stallTimeoutMs:a,requestStartedAt:f});if(g.kind==="terminated")return;if(g.kind==="retry"){if((yield*hP(g.reason,i(f)))==="terminated")return;continue}if(o.reset(),g.kind==="overload-exhausted"){ne(e.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:3,exhausted:!0}}),yield{type:"assistant.message",text:fP,sessionId:e.ctx.sessionId},yield{type:"turn.completed",usage:r.withDuration({...r.usage,stopReason:Cn}),sessionId:e.ctx.sessionId};return}if(g.kind==="translator-errored"){e.signal.aborted&&(yield{type:"turn.completed",usage:r.terminalUsage(),sessionId:e.ctx.sessionId});return}let h=g.turnResult;if(h===null){yield{type:"turn.completed",usage:r.terminalUsage(),sessionId:e.ctx.sessionId};return}if(r.addRoundUsage(cP(h.usage,h.stopReason,e.model,e.fastMode?"fast":void 0)),e.onUsageProgress?.(r.usage),h.stopReason!=="tool_use"){yield*DV(h,e,r);return}if((yield*MV(h,e,r,t,n))==="terminated")return}}finally{l.finish(r.elapsedMs())}}var LV=y(()=>{"use strict";uP();pe();pP();Yw();Kc();pf();ff();pV();wV();AV();OV();$V();FV();a_()});function qRe(e,t){return e.authMode==="oauth"&&e.tokenRefresher!==void 0&&"status"in t&&t.status===401}async function*NV(e,t,n){let r=null;for await(let i of bP(t)){if(n())return;if(i.type==="error"&&qRe(e,i.error)){r=i;break}yield i}if(!r)return;if(!await e.forceClientRefresh()){yield r;return}t.client=e.getClient(),t.headers=e.rotateHeaders(t),yield*bP(t)}var BV=y(()=>{"use strict";LV()});var nv=y(()=>{"use strict"});async function*UV(e,t,n,r,o){let i=vo(xt()??"");if(yield{type:"paused",reason:"usage-limit",accountId:i,autoResume:e.autoResumeOnUsageLimit},ne(t.traceWriter,{phase:"usage_limit_pause",metadata:{reason:"usage-limit",source:"retry-layer",hasResetTimestamp:!1,autoResume:e.autoResumeOnUsageLimit}}),!e.autoResumeOnUsageLimit){e.markCredentialSnapshotStale(),yield o;return}let s=Date.now(),a=!1;for(;;){let l;if(e.getUsageLimitWait())l="aborted";else{let p=pW({signal:t.signal,retryAfterMs:6e4});e.setUsageLimitWait(p);try{l=await p}finally{e.setUsageLimitWait(null)}}if(l==="aborted")return;let u=i;if(l==="hot-swap"){let p=await e.forceClientRefresh();p&&(t.client=e.getClient(),u=p.accountId)}t.headers=e.rotateHeaders(t);let d=null;for await(let p of r(e,t,n)){if(!a&&p.type==="error"){let f=rS(p.error);if(f&&(f.kind==="oauth-limit"||f.kind==="oauth-limit-no-ts")){d=p;break}}a||(yield{type:"resumed",hotSwapped:l==="hot-swap",accountId:u},ne(t.traceWriter,{phase:"usage_limit_resume",durationMs:Date.now()-s,metadata:{source:"retry-layer",hotSwapped:l==="hot-swap"}}),a=!0),yield p}if(!d)return;if(Date.now()-s>72e5){yield d;return}}}async function*jV(e,t,n,r,o,i){if(i.getTime()-Date.now()>72e5){e.markCredentialSnapshotStale(),yield o;return}let s=vo(xt()??""),a=Date.now();if(yield{type:"paused",reason:"usage-limit",resetsAt:i,accountId:s,autoResume:e.autoResumeOnUsageLimit},ne(t.traceWriter,{phase:"usage_limit_pause",metadata:{reason:"usage-limit",source:"retry-layer",hasResetTimestamp:!0,autoResume:e.autoResumeOnUsageLimit,resetsAt:i.toISOString()}}),!e.autoResumeOnUsageLimit){e.markCredentialSnapshotStale(),yield o;return}let l,c=e.getUsageLimitWait();if(c)l=await c;else{let d=dW({resetsAt:i,signal:t.signal});e.setUsageLimitWait(d);try{l=await d}finally{e.setUsageLimitWait(null)}}if(l==="aborted")return;let u=s;if(l==="hot-swap"){let d=await e.forceClientRefresh();d&&(t.client=e.getClient(),u=d.accountId)}t.headers=e.rotateHeaders(t),yield{type:"resumed",hotSwapped:l==="hot-swap",accountId:u},ne(t.traceWriter,{phase:"usage_limit_resume",durationMs:Date.now()-a,metadata:{source:"retry-layer",hotSwapped:l==="hot-swap"}}),yield*r(e,t,n)}var HV=y(()=>{"use strict";oS();iP();pe();nv()});async function*GV(e,t,n,r){let o=null,i=null,s=!1,a=0;for(;;){let l,c=!1;for await(let p of r(e,t,n)){if(p.type==="error"){let f=rS(p.error);if(f&&f.kind==="oauth-limit"){i=f.resetsAt,o=p;break}if(f&&f.kind==="oauth-limit-no-ts"){s=!0,o=p;break}if(f&&f.kind==="rate-limit-transient"&&a<3){c=!0,l=f.retryAfterMs;break}}yield p}if(!c)break;if(a+=1,n()||t.signal.aborted)return;let d=Math.min(l??5e3,12e4)+Math.floor(Math.random()*1e3);if(ne(t.traceWriter,{phase:"rate_limit",metadata:{reason:"retry-after",source:"retry-layer",attempt:a,waitMs:d}}),await xn(d,t.signal),n()||t.signal.aborted)return;t.headers=e.rotateHeaders(t)}if(o){if(s){yield*UV(e,t,n,r,o);return}i&&(yield*jV(e,t,n,r,o,i))}}var qV=y(()=>{"use strict";oS();ga();pe();nv();HV()});async function*zV(e,t,n,r){let o=lV(e.surface),i=null,s=!1;for(;;){let a=null;for await(let c of r(e,t,n)){if(aV(c)){a=c;break}yield c}if(!a){s&&i!==null&&ne(t.traceWriter,{phase:"overload_resume",durationMs:Date.now()-i,metadata:{source:"retry-layer",outcome:"recovered"}});return}if(n()||t.signal.aborted||o===0){yield a;return}i??=Date.now();let l=o-(Date.now()-i);if(l<=0){s&&ne(t.traceWriter,{phase:"overload_resume",durationMs:Date.now()-i,metadata:{source:"retry-layer",outcome:"ceiling-reached"}}),yield a;return}if(s||(ne(t.traceWriter,{phase:"overload_pause",metadata:{reason:"overloaded",source:"retry-layer",hasResetTimestamp:!1,ceilingMs:o,surface:e.surface??"unknown"}}),s=!0),await xn(Math.min(sV(),l),t.signal),n()){yield a;return}if(t.signal.aborted)return;t.headers=e.rotateHeaders(t),yield{type:"stream.retry",sessionId:t.ctx.sessionId}}}var VV=y(()=>{"use strict";pf();ga();pe()});import{randomUUID as JRe}from"node:crypto";var rv,YV=y(()=>{"use strict";Fs();du();iP();BV();qV();VV();nv();rv=class{_client;_authMode;initSessionId;baseUrl;tokenRefresher;autoResumeOnUsageLimit;surface;refreshPromise=null;usageLimitWaitPromise=null;credentialSnapshotStale=!1;constructor(t){this._client=t.client,this._authMode=t.authMode,this.initSessionId=t.initSessionId,this.baseUrl=t.baseUrl,this.tokenRefresher=t.tokenRefresher,this.autoResumeOnUsageLimit=t.autoResumeOnUsageLimit,t.surface!==void 0&&(this.surface=t.surface)}get client(){return this._client}get authMode(){return this._authMode}rotateHeaders(t){return ai(this._authMode,this.initSessionId,JRe(),t.effort!==void 0,Vw({...this.baseUrl!==void 0?{baseUrl:this.baseUrl}:{}}),t.fastMode===!0)}tierContext(){let t=this;return{get authMode(){return t._authMode},get surface(){return t.surface},get autoResumeOnUsageLimit(){return t.autoResumeOnUsageLimit},get tokenRefresher(){return t.tokenRefresher},getClient:()=>t._client,rotateHeaders:n=>t.rotateHeaders(n),forceClientRefresh:()=>t.forceClientRefresh(),getUsageLimitWait:()=>t.usageLimitWaitPromise,setUsageLimitWait:n=>{t.usageLimitWaitPromise=n},markCredentialSnapshotStale:()=>{t.credentialSnapshotStale=!0}}}async forceClientRefresh(){if(!this.tokenRefresher)return null;let t=xt(),n=null;try{if(this.refreshPromise)n=await this.refreshPromise;else{this.refreshPromise=this.tokenRefresher();try{n=await this.refreshPromise??null}finally{this.refreshPromise=null}}}catch{return this.refreshPromise=null,null}if(!n)return null;this._client=n;let r=xt();return{accountId:vo(r??""),swapped:t!==r}}async*turnWithRetries(t,n){this.credentialSnapshotStale&&(await this.forceClientRefresh()&&(t.client=this._client,t.headers=this.rotateHeaders(t)),this.credentialSnapshotStale=!1);let r=this.tierContext();yield*zV(r,t,n,(o,i,s)=>GV(o,i,s,NV))}}});function JV(){return XRe.map(e=>({...e}))}var XRe,XV=y(()=>{"use strict";XRe=[{value:"claude-sonnet-4-6",displayName:"Claude Sonnet 4.6",description:"Balanced Claude \u2014 recommended default (1M context, 128k output)"},{value:"claude-sonnet-5",displayName:"Claude Sonnet 5",description:"Newer balanced Claude \u2014 adaptive thinking, new tokenizer"},{value:"claude-opus-5",displayName:"Claude Opus 5",description:"Highest-capability Claude for agentic coding"},{value:"claude-haiku-4-5-20251001",displayName:"Claude Haiku 4.5",description:"Fastest, cheapest Claude"}]});function ov(e){if(e.length===0)return;let t=e[e.length-1];if(!t||t.role!=="assistant"||typeof t.content=="string")return;let n=t.content,r=[];for(let i of n)i.type==="tool_use"&&typeof i.id=="string"&&r.push(i.id);if(r.length===0)return;let o={role:"user",content:r.map(i=>({type:"tool_result",tool_use_id:i,content:"Tool call interrupted before completing \u2014 no result recorded.",is_error:!0}))};e.push(o)}var wP=y(()=>{"use strict"});var iv=y(()=>{"use strict";Ql()});async function*QV(e){if(e.state.autoCompactThreshold===void 0||e.state.closed)return;let t=e.state.lastUsage,n=ho(e.state.requestedModel);if(t===null||n<=0)return;let r=$t(t);if(kp(r,n,e.state.autoCompactThreshold))try{e.hookRegistry&&await e.hookRegistry.dispatch({event:"PreCompact",sessionId:e.initSessionId,trigger:"auto"}),(await e.compact()).compacted&&(e.state.lastUsage=null)}catch(o){if(!(o instanceof xe))throw o}}var ZV=y(()=>{"use strict";sr();iv();Le()});import{randomUUID as QRe}from"node:crypto";async function*eY(e){yield{type:"session.init",info:{sessionId:e.initSessionId,model:e.state.currentModel,permissionMode:e.state.currentPermissionMode,cwd:process.cwd(),tools:[],slashCommands:[],skills:[],plugins:[],mcpServers:e.mcpManager?.getServerStates().map(r=>({name:r.serverName,status:r.status}))??[],apiKeySource:e.retry.authMode,version:"anthropic-direct-v1"}};let n=e.promptStream[Symbol.asyncIterator]();try{for(;!e.state.closed;){let r=await Promise.race([n.next(),e.abort.closedPromise]);if(r==="__closed__")break;let o=r;if(o.done)break;let i=o.value,s=e.abort.begin();if(s.signal.aborted){e.abort.clear(s);return}ov(e.state.messages);{let d;try{Ep($t(e.state.lastUsage??{}),e.maxTokens,ot(e.state.requestedModel??e.state.currentModel),e.state.requestedModel??e.state.currentModel)}catch(p){d=p instanceof Error?p:new Error(String(p))}if(d!==void 0){e.abort.clear(s),yield{type:"error",error:d};continue}}e.state.messages.push({role:"user",content:i.content});let a=e.composeSystem(),{decision:l,runInput:c}=fV({client:e.retry.client,messages:e.state.messages,system:a,tools:e.state.currentPermissionMode==="plan"?e.tools:e.tools?.filter(d=>d.name!==Rn)??null,toolDispatcher:e.state.toolDispatcher,model:e.state.currentModel,maxTokens:e.maxTokens,signal:s.signal,authMode:e.retry.authMode,sessionId:e.initSessionId,requestId:QRe(),...e.fastModeController?{fastModeController:e.fastModeController}:{},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{effort:e.effort}:{},...e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{},...e.maxToolUseIterations!==void 0?{maxToolUseIterations:e.maxToolUseIterations}:{},...e.softDeadlineMs!==void 0?{softDeadlineMs:e.softDeadlineMs}:{},...e.traceWriter?{traceWriter:e.traceWriter}:{},...e.subagentId!==void 0?{subagentId:e.subagentId}:{},...e.throttleQueue?{throttleQueue:e.throttleQueue}:{},onUsageProgress:d=>{e.state.lastUsage=d}}),u=!1;try{for await(let d of e.retry.turnWithRetries(c,()=>e.state.closed)){if(d.type==="turn.completed"){if(e.state.lastUsage=d.usage,e.abort.clear(s),u=!0,yield d,e.state.closed)return;continue}if(e.state.closed)return;d.type==="error"&&(u=!0),yield d}}catch(d){if(e.state.closed)return;if(s.signal.aborted){e.abort.clear(s),u||(yield e.makeInterruptedTurnEvent());continue}yield{type:"error",error:Qw(d,l?.effective===!0)};return}finally{e.abort.clear(s)}if(e.state.closed)return;if(s.signal.aborted){u||(yield e.makeInterruptedTurnEvent());continue}yield*QV(e)}}catch(r){yield{type:"error",error:r instanceof Error?r:new Error(String(r))}}finally{try{await n.return?.()}catch{}}}var tY=y(()=>{"use strict";ua();sr();wP();iv();yP();ZV()});function nY(e){let t=e.lastUsage,n=ot(e.requestedModel),r;if(t&&n>0){let s=$t(t);r=Math.min(100,Math.max(0,s/n*100))}let{totalTokens:o,apiUsage:i}=vp(t);return{tools:[],agents:[],isAutoCompactEnabled:e.autoCompactThreshold!==void 0,apiUsage:i,totalTokens:o,...r!==void 0?{percentage:r}:{},maxTokens:n}}function rY(e){return e?e.getServerStates().map(t=>({name:t.serverName,status:t.status})):[]}function oY(e){return{subscriptionType:e==="oauth"?"claude-subscription":"api-key"}}var iY=y(()=>{"use strict";sr();iv()});var sY=y(()=>{"use strict";I_()});var aY=y(()=>{"use strict";C_()});function lY(e){let{state:t,systemPrefix:n,baseUrl:r}=e;t.userSystem&&(t.userSystem=bS(t.userSystem));let o=[];n&&n.length>0&&o.push(...n),t.userSystem&&t.userSystem.length>0&&o.push({type:"text",text:t.userSystem});let i=A_(t.currentPermissionMode);i!==null&&o.push(i);let s=__(t.currentPermissionMode);return s!==null&&o.push(s),o.length===0?null:uf({baseUrl:r})?Gz(o,Ra()):o}var cY=y(()=>{"use strict";du();sY();aY();c_()});function uY(e,t){t===void 0||t.length===0||(e.requestedModel=t,e.currentModel=Dt(t)??t)}function dY(e){let{state:t,mode:n,onPermissionMode:r}=e;t.currentPermissionMode=n,t.toolDispatcher.setAllowAll?.(ar(n)),r?.(n)}function pY(e){let{state:t,cwd:n,cwdDependentsFactory:r}=e;if(t.toolDispatcher.setResolveBase?.(n),!r)return;let{userSystem:o,dispatcher:i}=r(n);t.userSystem=o,t.toolDispatcher=i}function mY(e){let{state:t,basePrompt:n,systemPromptRebuildFactory:r}=e;return r?(t.userSystem=r(n),!0):!1}var fY=y(()=>{"use strict";Zl();Un()});function gY(e){return{type:"turn.completed",usage:{stopReason:"interrupted",resultSubtype:"interrupted",isError:!1},sessionId:e}}var hY=y(()=>{"use strict"});function ZRe(e){if(e.role!=="user")return!1;let t=e.content;if(typeof t=="string")return!0;if(!Array.isArray(t))return!1;for(let n of t)if(n.type==="tool_result")return!1;return!0}function exe(e){let n=[(e.role==="user"?"User":"Assistant")+":"];if(typeof e.content=="string")n.push(e.content);else if(Array.isArray(e.content))for(let r of e.content){let o=r.type;if(o==="text"&&"text"in r)n.push(r.text);else if(o==="tool_use"){let i=r.name??"unknown",s=vY(r.input);n.push(`[tool call: ${i} ${s}]`)}else if(o==="tool_result"){let i=r.content;n.push(`[tool result: ${kY(i)}]`)}else o==="image"?n.push("[image]"):o==="document"&&n.push("[document]")}return n.join(`
1346
1346
  `)}function txe(e){let t=0;if(typeof e.content=="string")t+=e.content.length;else if(Array.isArray(e.content))for(let n of e.content){let r=n.type;r==="text"&&"text"in n?t+=n.text.length:r==="tool_use"?t+=vY(n.input).length:r==="tool_result"&&(t+=kY(n.content).length)}return t}function nxe(e){if(typeof e=="string")return fa(e);if(Array.isArray(e)){let t=0;for(let n of e)n.type==="text"&&"text"in n&&(t+=fa(n.text));return t}return 0}function rxe(e){if(typeof e=="string")return Uc(e);if(Array.isArray(e)){for(let t of e)if(t.type==="text"&&"text"in t)return Uc(t.text)}return!1}function vP(e,t){return xS(e,oxe,t??{})}function yY(e,t,n,r){return b_(e,t,sv,n,r)}function bY(e,t,n){let r=S_(e,sv);return{model:t,max_tokens:n,system:Im,messages:[{role:"user",content:Om(r)}],stream:!0}}function SY(e,t,n){return w_(e,t,n,sv)}function wY(e,t,n){return v_(e,t,n,sv)}function vY(e){try{let t=JSON.stringify(e);return t.length>240?t.slice(0,237)+"...":t}catch{return"{}"}}function kY(e){if(typeof e=="string")return e.length>320?e.slice(0,317)+"...":e;if(Array.isArray(e)){let t=[];for(let r of e)r.type==="text"&&"text"in r&&t.push(r.text);let n=t.join(" ");return n.length>320?n.slice(0,317)+"...":n}return""}var sv,oxe,TY=y(()=>{"use strict";Dm();sv={isFreshUserTurn:ZRe,renderMessage:exe,buildPreamble(e){return[{role:"user",content:Pm+`
1347
1347
 
1348
- `+e},{role:"assistant",content:Mm}]},countChars:txe};oxe={listToolResults(e){let t=[];for(let n of e){if(n.role!=="user"||!Array.isArray(n.content))continue;let r=n.content;for(let o of r){if(o.type!=="tool_result")continue;let i=o;t.push({byteLength:nxe(i.content),isPlaceholder:rxe(i.content),clear(s){i.content=s}})}}return t}}});import{randomUUID as ixe}from"node:crypto";async function RY(e){let{state:t,abort:n,retry:r,initSessionId:o,traceWriter:i}=e,s=t.messages.length;if(t.closed)return{compacted:!1,reason:"session-closed",messagesBefore:s,messagesAfter:s};if(!n.isIdle())return{compacted:!1,reason:"turn-in-flight",messagesBefore:s,messagesAfter:s};let a=cxe(),l=Tp($t(t.lastUsage??{}),ho(t.requestedModel)),c=yY(t.messages,a,l,uxe());if(c<0)return EY(t,s,"history-too-short");if(c===0)return EY(t,s,"nothing-to-summarize");let u=t.messages.slice(0,c),d=dxe(),p=bY(u,d,lxe),f=n.begin(),g;try{if(f.signal.aborted)return{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s};let w=ai(r.authMode,o,ixe()),k=r.client,E=await Promise.resolve(k.messages.create(p,{headers:w,signal:f.signal}));g=await pxe(E)}catch(w){return f.signal.aborted?{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s}:{compacted:!1,reason:"summarization-failed: "+(w instanceof Error?w.message:String(w)),messagesBefore:s,messagesAfter:s}}finally{n.clear(f)}if(g.trim().length===0)return{compacted:!1,reason:"empty-summary",messagesBefore:s,messagesAfter:s};let h=wY(t.messages,c,g),b=SY(t.messages,c,g);t.messages.splice(0,t.messages.length,...b);let S=t.messages.length;return Wh(i,{trigger:"manual",preCompactionMessages:u,summary:g,keptTailCount:s-c,keepLastNConfig:a,messagesBefore:s,messagesAfter:S,tokensSavedEstimate:h}),vP(t.messages,xY()),{compacted:!0,messagesBefore:s,messagesAfter:S,tokensSavedEstimate:h}}function cxe(){let e=v.AFK_COMPACT_KEEP_LAST_TURNS;if(e!==void 0&&e.length>0){let t=Number.parseInt(e,10);if(Number.isFinite(t)&&t>0)return t}return sxe}function uxe(){let e=v.AFK_COMPACT_SHRINK_FRACTION;if(e!==void 0&&e.length>0){let t=Number.parseFloat(e);if(Number.isFinite(t)&&t>0&&t<1)return t}return Bc}function EY(e,t,n){let r=xY(),{blocksCleared:o,bytesReclaimed:i}=vP(e.messages,r);return o>0?{compacted:!1,reason:"microcompacted",messagesBefore:t,messagesAfter:e.messages.length,microcompaction:{blocksCleared:o,bytesReclaimed:i}}:{compacted:!1,reason:n,messagesBefore:t,messagesAfter:t}}function xY(){return jc(v.AFK_MICROCOMPACT_TOOL_RESULT_BYTES,v.AFK_MICROCOMPACT_KEEP_LAST)}function dxe(){let e=v.AFK_COMPACT_MODEL;return e!==void 0&&e.length>0?Dt(e)??e:axe}async function pxe(e){let t="";for await(let n of e)if(n.type==="content_block_delta"){let r=n.delta;r.type==="text_delta"&&typeof r.text=="string"&&(t+=r.text)}return t}var sxe,axe,lxe,AY=y(()=>{"use strict";Fs();TY();Dm();Ql();sr();pe();Un();F();sxe=2,axe="claude-haiku-4-5-20251001",lxe=1024});function kP(e){if(typeof e=="string")return e;let t=[];for(let n of e)n.type==="text"&&typeof n.text=="string"&&t.push(n.text);return t.join(" ")}function _Y(e){return e.role!=="user"?!1:kP(e.content).trim().length>0}function mxe(e){let t=e.replace(/\s+/g," ").trim();return t.length<=CY?t:t.slice(0,CY-1)+"\u2026"}function IY(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];r&&_Y(r)&&t.push({turnIndex:n,preview:mxe(kP(r.content))})}return t.reverse()}function PY(e,t){let{state:n,abort:r}=e,o=n.messages.length;if(n.closed)return{rewound:!1,reason:"session-closed",messagesBefore:o,messagesAfter:o};if(!r.isIdle())return{rewound:!1,reason:"turn-in-flight",messagesBefore:o,messagesAfter:o};if(!Number.isInteger(t)||t<0||t>=o)return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let i=n.messages[t];if(!i||!_Y(i))return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let s=kP(i.content);return n.messages.splice(t),ov(n.messages),{rewound:!0,reloadText:s,messagesBefore:o,messagesAfter:n.messages.length}}var CY,MY=y(()=>{"use strict";wP();CY=72});function OY(e){return RY(e)}function DY(e){return IY(e.messages)}function $Y(e,t,n){return PY({state:e,abort:t},n)}var FY=y(()=>{"use strict";AY();MY()});import{randomUUID as fxe}from"node:crypto";var gf,TP=y(()=>{"use strict";s_();Kz();h_();YV();XV();tY();iY();cY();fY();hY();FY();gf=class{initSessionId;promptStream;maxTokens;tools;systemPrefix;thinking;effort;baseUrl;maxToolUseIterations;softDeadlineMs;traceWriter;subagentId;state;abort;retry;cwdDependentsFactory;systemPromptRebuildFactory;onPermissionMode;mcpManager;hookRegistry;throttleQueue;fastModeController;constructor(t){this.initSessionId=t.sessionId??fxe(),this.promptStream=t.promptStream,this.maxTokens=t.maxTokens,this.tools=t.tools,this.systemPrefix=t.systemPrefix,this.thinking=t.thinking,t.effort!==void 0&&(this.effort=t.effort),t.baseUrl!==void 0&&(this.baseUrl=t.baseUrl),t.maxToolUseIterations!==void 0&&(this.maxToolUseIterations=t.maxToolUseIterations),t.softDeadlineMs!==void 0&&(this.softDeadlineMs=t.softDeadlineMs),this.traceWriter=t.traceWriter,t.subagentId!==void 0&&(this.subagentId=t.subagentId),this.cwdDependentsFactory=t.cwdDependentsFactory,this.systemPromptRebuildFactory=t.systemPromptRebuildFactory,this.onPermissionMode=t.onPermissionMode,this.mcpManager=t.mcpManager,t.hookRegistry!==void 0&&(this.hookRegistry=t.hookRegistry),t.throttleQueue!==void 0&&(this.throttleQueue=t.throttleQueue),t.fastModeController!==void 0&&(this.fastModeController=t.fastModeController),this.retry=new rv({client:t.client,authMode:t.authMode,initSessionId:this.initSessionId,...t.baseUrl!==void 0?{baseUrl:t.baseUrl}:{},...t.tokenRefresher?{tokenRefresher:t.tokenRefresher}:{},autoResumeOnUsageLimit:t.autoResumeOnUsageLimit??!0,...t.surface!==void 0?{surface:t.surface}:{}}),this.state=Wz({model:t.model,...t.requestedModel!==void 0?{requestedModel:t.requestedModel}:{},permissionMode:t.permissionMode??"default",userSystem:t.userSystem,toolDispatcher:t.toolDispatcher,...t.initialMessages?{initialMessages:t.initialMessages}:{},...t.autoCompactThreshold!==void 0?{autoCompactThreshold:t.autoCompactThreshold}:{}}),this.abort=new Nc}turnDriverContext(){let t=this;return{get initSessionId(){return t.initSessionId},get promptStream(){return t.promptStream},get state(){return t.state},get abort(){return t.abort},get retry(){return t.retry},get maxTokens(){return t.maxTokens},get tools(){return t.tools},get thinking(){return t.thinking},get effort(){return t.effort},get baseUrl(){return t.baseUrl},get maxToolUseIterations(){return t.maxToolUseIterations},get softDeadlineMs(){return t.softDeadlineMs},get traceWriter(){return t.traceWriter},get subagentId(){return t.subagentId},get mcpManager(){return t.mcpManager},get hookRegistry(){return t.hookRegistry},get throttleQueue(){return t.throttleQueue},get fastModeController(){return t.fastModeController},composeSystem:()=>t.composeSystem(),makeInterruptedTurnEvent:()=>t.makeInterruptedTurnEvent(),compact:()=>t.compact()}}async*[Symbol.asyncIterator](){yield*eY(this.turnDriverContext())}composeSystem(){return lY({state:this.state,systemPrefix:this.systemPrefix,...this.baseUrl!==void 0?{baseUrl:this.baseUrl}:{}})}async interrupt(t="interrupted"){this.abort.requestAbort(t)}makeInterruptedTurnEvent(){return gY(this.initSessionId)}async setModel(t){uY(this.state,t)}async setPermissionMode(t){dY({state:this.state,mode:t,...this.onPermissionMode?{onPermissionMode:this.onPermissionMode}:{}})}setCwd(t){pY({state:this.state,cwd:t,...this.cwdDependentsFactory?{cwdDependentsFactory:this.cwdDependentsFactory}:{}})}setSystemPrompt(t){return mY({state:this.state,basePrompt:t,...this.systemPromptRebuildFactory?{systemPromptRebuildFactory:this.systemPromptRebuildFactory}:{}})}async supportedCommands(){return hS()}async supportedModels(){return JV()}async supportedAgents(){return[]}async getContextUsage(){return nY(this.state)}async mcpServerStatus(){return rY(this.mcpManager)}async accountInfo(){return oY(this.retry.authMode)}async reauth(){return this.retry.forceClientRefresh()}async rewindFiles(t,n){return{canRewind:!1,error:"anthropic-direct provider does not support file checkpoint rewind"}}async compact(){let t=await OY({state:this.state,abort:this.abort,retry:this.retry,initSessionId:this.initSessionId,...this.traceWriter?{traceWriter:this.traceWriter}:{}});return t.compacted&&(this.state.lastUsage=null),t}listRewindTargets(){return DY(this.state)}async rewindConversation(t){return $Y(this.state,this.abort,t)}close(){this.state.closed=!0,this.abort.requestAbort("closed"),this.abort.markClosed()}}});function LY(e){return t=>{let n=e.getCurrentCwd();if(e.sharedReadRoots&&n!==void 0&&n!==t){let i=e.sharedReadRoots.indexOf(n);i!==-1?e.sharedReadRoots[i]=t:e.sharedReadRoots.includes(t)||e.sharedReadRoots.push(t)}if(e.sharedWriteRoots&&n!==void 0&&n!==t){let i=e.sharedWriteRoots.indexOf(n);i!==-1?e.sharedWriteRoots[i]=t:e.sharedWriteRoots.includes(t)||e.sharedWriteRoots.push(t)}e.setCurrentCwd(t),e.subagentExecutor?.setCwd(t),e.skillExecutor?.setCwd(t),e.composeExecutor?.setCwd(t);let r=uu(e.stableSystemPrefix,t,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()}),o=e.buildDispatcher(e.getCurrentPermissionMode(),{cwd:t,readRoots:e.sharedReadRoots,writeRoots:e.sharedWriteRoots,...e.config.env!==void 0?{env:e.config.env}:{},sessionId:e.config.sessionId,parentSessionId:e.config.parentSessionId,traceWriter:e.config.traceWriter,runtimeStateSource:e.runtimeStateSource,hookRegistry:e.config.hookRegistry,planExitControls:e.config.planExitControls});return{userSystem:r,dispatcher:o}}}var NY=y(()=>{"use strict";zw()});function BY(e){return t=>{e.stableSystemPrefix.userSystem=t!==void 0&&t.length>0?t:null;let n=e.getCurrentCwd()??e.fallbackCwd;return uu(e.stableSystemPrefix,n,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()})}}var UY=y(()=>{"use strict";zw()});function jY(e,t,n){let r=t.config,{client:o,authMode:i,localMode:s,model:a,maxTokens:l,cwd:c,systemPrefix:u,throttleQueue:d,tokenRefresher:p,queryDispatcher:f,runtimeStateSource:g,toolDefs:h,resolvedSessionId:b,stableSystemPrefix:S,toolSystemAppend:w}=n,k=b,E=lN(r.resumeHistory),T=e.externalTools?void 0:LY({stableSystemPrefix:S,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),setCurrentCwd:x=>{e.setCurrentCwd(x)},getCurrentPermissionMode:()=>e.getCurrentPermissionMode(),sharedReadRoots:e.getSharedReadRoots(),sharedWriteRoots:e.getSharedWriteRoots(),subagentExecutor:e.subagentExecutor,skillExecutor:e.skillExecutor,composeExecutor:e.composeExecutor,buildDispatcher:(x,_)=>e.buildDispatcher(x,_)}),R=e.externalTools?void 0:BY({stableSystemPrefix:S,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),fallbackCwd:c}),I=ey(r.effort,a),C=Rp(r.autoCompact,typeof r.model=="string"&&r.model.length>0?r.model:a);return new gf({client:o,authMode:s?"api-key":i,promptStream:t.prompt,toolDispatcher:f,...k!==void 0?{sessionId:k}:{},...E!==void 0?{initialMessages:E}:{},model:a,requestedModel:typeof r.model=="string"&&r.model.length>0?r.model:a,...r.permissionMode!==void 0?{permissionMode:r.permissionMode}:{},maxTokens:l,tools:h,userSystem:w,systemPrefix:u,tokenRefresher:p,...r.thinking!==void 0?{thinking:Zh(r.thinking,l,a)}:{},...I!==void 0?{effort:I}:{},...s?{baseUrl:r.baseUrl}:{},...r.traceWriter?{traceWriter:r.traceWriter}:{},...r.subagentId!==void 0?{subagentId:r.subagentId}:{},...r.autoResumeOnUsageLimit!==void 0?{autoResumeOnUsageLimit:r.autoResumeOnUsageLimit}:{},surface:e.declaredSurface,...r.maxToolUseIterations!==void 0?{maxToolUseIterations:r.maxToolUseIterations}:{},...r.softDeadlineMs!==void 0?{softDeadlineMs:r.softDeadlineMs}:{},...T!==void 0?{cwdDependentsFactory:T}:{},...R!==void 0?{systemPromptRebuildFactory:R}:{},onPermissionMode:x=>{e.setCurrentPermissionMode(x)},...e.mcpManager!==void 0?{mcpManager:e.mcpManager}:{},...C!==void 0?{autoCompactThreshold:C}:{},...r.hookRegistry!==void 0?{hookRegistry:r.hookRegistry}:{},...d!==void 0?{throttleQueue:d}:{},...e.fastModeController!==void 0?{fastModeController:e.fastModeController}:{}})}var HY=y(()=>{"use strict";TP();ty();NY();UY()});var EP,WY,st,KY,GY=y(()=>{"use strict";zh();ty();cN();iW();nS();nS();tn();F();aW();oP();HY();Ot();oP();EP="anthropic-direct",WY=yp,st=class{name=EP;externalTools;memoryStore;workspaceStore;providerFactory;skillExecutor;schemas;hookRegistry;permissions;canUseTool;subagentExecutor;composeExecutor;surface;declaredSurface;readOnlyMemory;readOnlyBash;mcpManager;customTools;fastModeController;grants=new ry;_mcpToolsCache=null;_mcpHandlersCache=null;_presenceSessionId=null;_mintedSessionId=null;constructor(t={}){if(this.memoryStore=t.memoryStore??new Ft,this.workspaceStore=t.workspaceStore,this.externalTools=t.tools,this.skillExecutor=t.skillExecutor,this.schemas=sW(t),this.hookRegistry=t.hookRegistry,this.permissions=t.permissions,this.canUseTool=t.canUseTool,this.subagentExecutor=t.subagentExecutor,this.composeExecutor=t.composeExecutor,this.surface=t.surface??"cli",this.declaredSurface=t.surface,this.readOnlyMemory=t.readOnlyMemory===!0,this.readOnlyBash=t.readOnlyBash===!0,this.customTools=t.customTools??[],this.fastModeController=t.fastModeController,this.mcpManager=t.mcpManager,t.mcpManager){let n=t.mcpManager.onToolsRefreshed;t.mcpManager.onToolsRefreshed=r=>{this._mcpToolsCache=null,this._mcpHandlersCache=null,n?.(r)}}t.clientFactory&&(this.providerFactory=t.clientFactory)}buildDispatcher(t,n){return oW({memoryStore:this.memoryStore,workspaceStore:this.workspaceStore,surface:this.surface,readOnlyMemory:this.readOnlyMemory,readOnlyBash:this.readOnlyBash,customTools:this.customTools,mcpManager:this.mcpManager,schemas:this.schemas,hookRegistry:this.hookRegistry,permissions:this.permissions,canUseTool:this.canUseTool,subagentExecutor:this.subagentExecutor,skillExecutor:this.skillExecutor,composeExecutor:this.composeExecutor,sessionGrantManager:this,getMcpToolsCache:()=>this._mcpToolsCache,setMcpToolsCache:r=>{this._mcpToolsCache=r},getMcpHandlersCache:()=>this._mcpHandlersCache,setMcpHandlersCache:r=>{this._mcpHandlersCache=r}},t,n)}close(){this.memoryStore.close(),this.workspaceStore?.close()}async complete(t){let n=t.apiKey&&t.apiKey.length>0?t.apiKey:v.ANTHROPIC_API_KEY||v.CLAUDE_CODE_OAUTH_TOKEN||"";if(!n)throw new Error(`${EP} complete() requires an API key or OAuth token (config apiKey, ANTHROPIC_API_KEY, or CLAUDE_CODE_OAUTH_TOKEN)`);let r={token:n,model:t.model??WY,system:t.system,user:t.user,maxTokens:t.maxTokens??64};t.signal&&(r.signal=t.signal);let o=this.providerFactory??tS();return o&&(r.clientFactory=o),Jl(r)}addReadRoot(t,n="slash",r){this.grants.manager.addReadRoot(t,n,r)}addWriteRoot(t,n="slash",r){this.grants.manager.addWriteRoot(t,n,r)}revokeRoot(t,n="slash",r){this.grants.manager.revokeRoot(t,n,r)}getGrants(){return this.grants.manager.getGrants()}queryContext(){let t=this;return{get externalTools(){return t.externalTools},get providerFactory(){return t.providerFactory},get skillExecutor(){return t.skillExecutor},get subagentExecutor(){return t.subagentExecutor},get composeExecutor(){return t.composeExecutor},get canUseTool(){return t.canUseTool},get surface(){return t.surface},get declaredSurface(){return t.declaredSurface},get readOnlyMemory(){return t.readOnlyMemory},get workspaceStore(){return t.workspaceStore},get mcpManager(){return t.mcpManager},get fastModeController(){return t.fastModeController},getSharedReadRoots:()=>t.grants.readRoots,getSharedWriteRoots:()=>t.grants.writeRoots,getCurrentCwd:()=>t.grants.currentCwd,setCurrentCwd:n=>{t.grants.currentCwd=n},getCurrentPermissionMode:()=>t.grants.permissionMode,setCurrentPermissionMode:n=>{t.grants.permissionMode=n},getMintedSessionId:()=>t._mintedSessionId,setMintedSessionId:n=>{t._mintedSessionId=n},getPresenceSessionId:()=>t._presenceSessionId,setPresenceSessionId:n=>{t._presenceSessionId=n},ensureSharedRoots:n=>{t.grants.ensureInitialized(n)},buildDispatcher:(n,r)=>t.buildDispatcher(n,r)}}query(t){let n=this.queryContext(),r=Hz(n,t,EP,WY);return jY(n,t,r)}},KY=new st});var Ea=y(()=>{"use strict";GY();TP()});import{chmodSync as hxe,existsSync as yxe,mkdirSync as bxe,readFileSync as Sxe,unlinkSync as wxe,writeFileSync as vxe}from"node:fs";import{dirname as kxe,join as Txe}from"node:path";function pu(){return Txe(fe(),"xai","auth.json")}function Exe(e){try{return Sxe(e,"utf-8")}catch{return null}}function Rxe(e,t,n){vxe(e,t,{encoding:"utf-8",mode:n})}function xxe(e,t){hxe(e,t)}function Axe(e){bxe(e,{recursive:!0})}function Cxe(e){try{wxe(e)}catch{}}function _xe(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let n=t,r=n.access_token,o=n.refresh_token,i=n.expires_at;if(typeof r!="string"||r.length===0||typeof o!="string"||o.length===0||typeof i!="number"||!Number.isFinite(i))return null;let s={access_token:r,refresh_token:o,expires_at:i};return typeof n.token_type=="string"&&(s.token_type=n.token_type),typeof n.scope=="string"&&(s.scope=n.scope),s}function mu(e={}){let t=(e.authPath??pu)(),r=(e.readFile??Exe)(t);return r===null?null:_xe(r)}function fu(e,t={}){let n=(t.authPath??pu)(),r=t.mkdir??Axe,o=t.writeFile??Rxe,i=t.chmod??xxe;r(kxe(n));let s={access_token:e.access_token,refresh_token:e.refresh_token,expires_at:e.expires_at};e.token_type!==void 0&&(s.token_type=e.token_type),e.scope!==void 0&&(s.scope=e.scope),o(n,`${JSON.stringify(s,null,2)}
1348
+ `+e},{role:"assistant",content:Mm}]},countChars:txe};oxe={listToolResults(e){let t=[];for(let n of e){if(n.role!=="user"||!Array.isArray(n.content))continue;let r=n.content;for(let o of r){if(o.type!=="tool_result")continue;let i=o;t.push({byteLength:nxe(i.content),isPlaceholder:rxe(i.content),clear(s){i.content=s}})}}return t}}});import{randomUUID as ixe}from"node:crypto";async function RY(e){let{state:t,abort:n,retry:r,initSessionId:o,traceWriter:i}=e,s=t.messages.length;if(t.closed)return{compacted:!1,reason:"session-closed",messagesBefore:s,messagesAfter:s};if(!n.isIdle())return{compacted:!1,reason:"turn-in-flight",messagesBefore:s,messagesAfter:s};let a=cxe(),l=Tp($t(t.lastUsage??{}),ho(t.requestedModel)),c=yY(t.messages,a,l,uxe());if(c<0)return EY(t,s,"history-too-short");if(c===0)return EY(t,s,"nothing-to-summarize");let u=t.messages.slice(0,c),d=dxe(),p=bY(u,d,lxe),f=n.begin(),g;try{if(f.signal.aborted)return{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s};let w=ai(r.authMode,o,ixe()),k=r.client,E=await Promise.resolve(k.messages.create(p,{headers:w,signal:f.signal}));g=await pxe(E)}catch(w){return f.signal.aborted?{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s}:{compacted:!1,reason:"summarization-failed: "+(w instanceof Error?w.message:String(w)),messagesBefore:s,messagesAfter:s}}finally{n.clear(f)}if(g.trim().length===0)return{compacted:!1,reason:"empty-summary",messagesBefore:s,messagesAfter:s};let h=wY(t.messages,c,g),b=SY(t.messages,c,g);t.messages.splice(0,t.messages.length,...b);let S=t.messages.length;return Wh(i,{trigger:"manual",preCompactionMessages:u,summary:g,keptTailCount:s-c,keepLastNConfig:a,messagesBefore:s,messagesAfter:S,tokensSavedEstimate:h}),vP(t.messages,xY()),{compacted:!0,messagesBefore:s,messagesAfter:S,tokensSavedEstimate:h}}function cxe(){let e=v.AFK_COMPACT_KEEP_LAST_TURNS;if(e!==void 0&&e.length>0){let t=Number.parseInt(e,10);if(Number.isFinite(t)&&t>0)return t}return sxe}function uxe(){let e=v.AFK_COMPACT_SHRINK_FRACTION;if(e!==void 0&&e.length>0){let t=Number.parseFloat(e);if(Number.isFinite(t)&&t>0&&t<1)return t}return Bc}function EY(e,t,n){let r=xY(),{blocksCleared:o,bytesReclaimed:i}=vP(e.messages,r);return o>0?{compacted:!1,reason:"microcompacted",messagesBefore:t,messagesAfter:e.messages.length,microcompaction:{blocksCleared:o,bytesReclaimed:i}}:{compacted:!1,reason:n,messagesBefore:t,messagesAfter:t}}function xY(){return jc(v.AFK_MICROCOMPACT_TOOL_RESULT_BYTES,v.AFK_MICROCOMPACT_KEEP_LAST)}function dxe(){let e=v.AFK_COMPACT_MODEL;return e!==void 0&&e.length>0?Dt(e)??e:axe}async function pxe(e){let t="";for await(let n of e)if(n.type==="content_block_delta"){let r=n.delta;r.type==="text_delta"&&typeof r.text=="string"&&(t+=r.text)}return t}var sxe,axe,lxe,AY=y(()=>{"use strict";Fs();TY();Dm();Ql();sr();pe();Un();F();sxe=2,axe="claude-haiku-4-5-20251001",lxe=1024});function kP(e){if(typeof e=="string")return e;let t=[];for(let n of e)n.type==="text"&&typeof n.text=="string"&&t.push(n.text);return t.join(" ")}function _Y(e){return e.role!=="user"?!1:kP(e.content).trim().length>0}function mxe(e){let t=e.replace(/\s+/g," ").trim();return t.length<=CY?t:t.slice(0,CY-1)+"\u2026"}function IY(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];r&&_Y(r)&&t.push({turnIndex:n,preview:mxe(kP(r.content))})}return t.reverse()}function PY(e,t){let{state:n,abort:r}=e,o=n.messages.length;if(n.closed)return{rewound:!1,reason:"session-closed",messagesBefore:o,messagesAfter:o};if(!r.isIdle())return{rewound:!1,reason:"turn-in-flight",messagesBefore:o,messagesAfter:o};if(!Number.isInteger(t)||t<0||t>=o)return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let i=n.messages[t];if(!i||!_Y(i))return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let s=kP(i.content);return n.messages.splice(t),ov(n.messages),{rewound:!0,reloadText:s,messagesBefore:o,messagesAfter:n.messages.length}}var CY,MY=y(()=>{"use strict";wP();CY=72});function OY(e){return RY(e)}function DY(e){return IY(e.messages)}function $Y(e,t,n){return PY({state:e,abort:t},n)}var FY=y(()=>{"use strict";AY();MY()});import{randomUUID as fxe}from"node:crypto";var gf,TP=y(()=>{"use strict";s_();Kz();h_();YV();XV();tY();iY();cY();fY();hY();FY();gf=class{initSessionId;promptStream;maxTokens;tools;systemPrefix;thinking;effort;baseUrl;maxToolUseIterations;softDeadlineMs;traceWriter;subagentId;state;abort;retry;cwdDependentsFactory;systemPromptRebuildFactory;onPermissionMode;mcpManager;hookRegistry;throttleQueue;fastModeController;constructor(t){this.initSessionId=t.sessionId??fxe(),this.promptStream=t.promptStream,this.maxTokens=t.maxTokens,this.tools=t.tools,this.systemPrefix=t.systemPrefix,this.thinking=t.thinking,t.effort!==void 0&&(this.effort=t.effort),t.baseUrl!==void 0&&(this.baseUrl=t.baseUrl),t.maxToolUseIterations!==void 0&&(this.maxToolUseIterations=t.maxToolUseIterations),t.softDeadlineMs!==void 0&&(this.softDeadlineMs=t.softDeadlineMs),this.traceWriter=t.traceWriter,t.subagentId!==void 0&&(this.subagentId=t.subagentId),this.cwdDependentsFactory=t.cwdDependentsFactory,this.systemPromptRebuildFactory=t.systemPromptRebuildFactory,this.onPermissionMode=t.onPermissionMode,this.mcpManager=t.mcpManager,t.hookRegistry!==void 0&&(this.hookRegistry=t.hookRegistry),t.throttleQueue!==void 0&&(this.throttleQueue=t.throttleQueue),t.fastModeController!==void 0&&(this.fastModeController=t.fastModeController),this.retry=new rv({client:t.client,authMode:t.authMode,initSessionId:this.initSessionId,...t.baseUrl!==void 0?{baseUrl:t.baseUrl}:{},...t.tokenRefresher?{tokenRefresher:t.tokenRefresher}:{},autoResumeOnUsageLimit:t.autoResumeOnUsageLimit??!0,...t.surface!==void 0?{surface:t.surface}:{}}),this.state=Wz({model:t.model,...t.requestedModel!==void 0?{requestedModel:t.requestedModel}:{},permissionMode:t.permissionMode??"default",userSystem:t.userSystem,toolDispatcher:t.toolDispatcher,...t.initialMessages?{initialMessages:t.initialMessages}:{},...t.autoCompactThreshold!==void 0?{autoCompactThreshold:t.autoCompactThreshold}:{},...t.initialUsageInputTokens!==void 0?{initialUsageInputTokens:t.initialUsageInputTokens}:{}}),this.abort=new Nc}turnDriverContext(){let t=this;return{get initSessionId(){return t.initSessionId},get promptStream(){return t.promptStream},get state(){return t.state},get abort(){return t.abort},get retry(){return t.retry},get maxTokens(){return t.maxTokens},get tools(){return t.tools},get thinking(){return t.thinking},get effort(){return t.effort},get baseUrl(){return t.baseUrl},get maxToolUseIterations(){return t.maxToolUseIterations},get softDeadlineMs(){return t.softDeadlineMs},get traceWriter(){return t.traceWriter},get subagentId(){return t.subagentId},get mcpManager(){return t.mcpManager},get hookRegistry(){return t.hookRegistry},get throttleQueue(){return t.throttleQueue},get fastModeController(){return t.fastModeController},composeSystem:()=>t.composeSystem(),makeInterruptedTurnEvent:()=>t.makeInterruptedTurnEvent(),compact:()=>t.compact()}}async*[Symbol.asyncIterator](){yield*eY(this.turnDriverContext())}composeSystem(){return lY({state:this.state,systemPrefix:this.systemPrefix,...this.baseUrl!==void 0?{baseUrl:this.baseUrl}:{}})}async interrupt(t="interrupted"){this.abort.requestAbort(t)}makeInterruptedTurnEvent(){return gY(this.initSessionId)}async setModel(t){uY(this.state,t)}async setPermissionMode(t){dY({state:this.state,mode:t,...this.onPermissionMode?{onPermissionMode:this.onPermissionMode}:{}})}setCwd(t){pY({state:this.state,cwd:t,...this.cwdDependentsFactory?{cwdDependentsFactory:this.cwdDependentsFactory}:{}})}setSystemPrompt(t){return mY({state:this.state,basePrompt:t,...this.systemPromptRebuildFactory?{systemPromptRebuildFactory:this.systemPromptRebuildFactory}:{}})}async supportedCommands(){return hS()}async supportedModels(){return JV()}async supportedAgents(){return[]}async getContextUsage(){return nY(this.state)}async mcpServerStatus(){return rY(this.mcpManager)}async accountInfo(){return oY(this.retry.authMode)}async reauth(){return this.retry.forceClientRefresh()}async rewindFiles(t,n){return{canRewind:!1,error:"anthropic-direct provider does not support file checkpoint rewind"}}async compact(){let t=await OY({state:this.state,abort:this.abort,retry:this.retry,initSessionId:this.initSessionId,...this.traceWriter?{traceWriter:this.traceWriter}:{}});return t.compacted&&(this.state.lastUsage=null),t}listRewindTargets(){return DY(this.state)}async rewindConversation(t){return $Y(this.state,this.abort,t)}close(){this.state.closed=!0,this.abort.requestAbort("closed"),this.abort.markClosed()}}});function LY(e){return t=>{let n=e.getCurrentCwd();if(e.sharedReadRoots&&n!==void 0&&n!==t){let i=e.sharedReadRoots.indexOf(n);i!==-1?e.sharedReadRoots[i]=t:e.sharedReadRoots.includes(t)||e.sharedReadRoots.push(t)}if(e.sharedWriteRoots&&n!==void 0&&n!==t){let i=e.sharedWriteRoots.indexOf(n);i!==-1?e.sharedWriteRoots[i]=t:e.sharedWriteRoots.includes(t)||e.sharedWriteRoots.push(t)}e.setCurrentCwd(t),e.subagentExecutor?.setCwd(t),e.skillExecutor?.setCwd(t),e.composeExecutor?.setCwd(t);let r=uu(e.stableSystemPrefix,t,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()}),o=e.buildDispatcher(e.getCurrentPermissionMode(),{cwd:t,readRoots:e.sharedReadRoots,writeRoots:e.sharedWriteRoots,...e.config.env!==void 0?{env:e.config.env}:{},sessionId:e.config.sessionId,parentSessionId:e.config.parentSessionId,traceWriter:e.config.traceWriter,runtimeStateSource:e.runtimeStateSource,hookRegistry:e.config.hookRegistry,planExitControls:e.config.planExitControls});return{userSystem:r,dispatcher:o}}}var NY=y(()=>{"use strict";zw()});function BY(e){return t=>{e.stableSystemPrefix.userSystem=t!==void 0&&t.length>0?t:null;let n=e.getCurrentCwd()??e.fallbackCwd;return uu(e.stableSystemPrefix,n,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()})}}var UY=y(()=>{"use strict";zw()});function jY(e,t,n){let r=t.config,{client:o,authMode:i,localMode:s,model:a,maxTokens:l,cwd:c,systemPrefix:u,throttleQueue:d,tokenRefresher:p,queryDispatcher:f,runtimeStateSource:g,toolDefs:h,resolvedSessionId:b,stableSystemPrefix:S,toolSystemAppend:w}=n,k=b,E=lN(r.resumeHistory),R=r.resumeHistory?.at(-1)?.inputTokens,I=e.externalTools?void 0:LY({stableSystemPrefix:S,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),setCurrentCwd:M=>{e.setCurrentCwd(M)},getCurrentPermissionMode:()=>e.getCurrentPermissionMode(),sharedReadRoots:e.getSharedReadRoots(),sharedWriteRoots:e.getSharedWriteRoots(),subagentExecutor:e.subagentExecutor,skillExecutor:e.skillExecutor,composeExecutor:e.composeExecutor,buildDispatcher:(M,D)=>e.buildDispatcher(M,D)}),C=e.externalTools?void 0:BY({stableSystemPrefix:S,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),fallbackCwd:c}),x=ey(r.effort,a),_=Rp(r.autoCompact,typeof r.model=="string"&&r.model.length>0?r.model:a);return new gf({client:o,authMode:s?"api-key":i,promptStream:t.prompt,toolDispatcher:f,...k!==void 0?{sessionId:k}:{},...E!==void 0?{initialMessages:E}:{},...R!==void 0?{initialUsageInputTokens:R}:{},model:a,requestedModel:typeof r.model=="string"&&r.model.length>0?r.model:a,...r.permissionMode!==void 0?{permissionMode:r.permissionMode}:{},maxTokens:l,tools:h,userSystem:w,systemPrefix:u,tokenRefresher:p,...r.thinking!==void 0?{thinking:Zh(r.thinking,l,a)}:{},...x!==void 0?{effort:x}:{},...s?{baseUrl:r.baseUrl}:{},...r.traceWriter?{traceWriter:r.traceWriter}:{},...r.subagentId!==void 0?{subagentId:r.subagentId}:{},...r.autoResumeOnUsageLimit!==void 0?{autoResumeOnUsageLimit:r.autoResumeOnUsageLimit}:{},surface:e.declaredSurface,...r.maxToolUseIterations!==void 0?{maxToolUseIterations:r.maxToolUseIterations}:{},...r.softDeadlineMs!==void 0?{softDeadlineMs:r.softDeadlineMs}:{},...I!==void 0?{cwdDependentsFactory:I}:{},...C!==void 0?{systemPromptRebuildFactory:C}:{},onPermissionMode:M=>{e.setCurrentPermissionMode(M)},...e.mcpManager!==void 0?{mcpManager:e.mcpManager}:{},..._!==void 0?{autoCompactThreshold:_}:{},...r.hookRegistry!==void 0?{hookRegistry:r.hookRegistry}:{},...d!==void 0?{throttleQueue:d}:{},...e.fastModeController!==void 0?{fastModeController:e.fastModeController}:{}})}var HY=y(()=>{"use strict";TP();ty();NY();UY()});var EP,WY,st,KY,GY=y(()=>{"use strict";zh();ty();cN();iW();nS();nS();tn();F();aW();oP();HY();Ot();oP();EP="anthropic-direct",WY=yp,st=class{name=EP;externalTools;memoryStore;workspaceStore;providerFactory;skillExecutor;schemas;hookRegistry;permissions;canUseTool;subagentExecutor;composeExecutor;surface;declaredSurface;readOnlyMemory;readOnlyBash;mcpManager;customTools;fastModeController;grants=new ry;_mcpToolsCache=null;_mcpHandlersCache=null;_presenceSessionId=null;_mintedSessionId=null;constructor(t={}){if(this.memoryStore=t.memoryStore??new Ft,this.workspaceStore=t.workspaceStore,this.externalTools=t.tools,this.skillExecutor=t.skillExecutor,this.schemas=sW(t),this.hookRegistry=t.hookRegistry,this.permissions=t.permissions,this.canUseTool=t.canUseTool,this.subagentExecutor=t.subagentExecutor,this.composeExecutor=t.composeExecutor,this.surface=t.surface??"cli",this.declaredSurface=t.surface,this.readOnlyMemory=t.readOnlyMemory===!0,this.readOnlyBash=t.readOnlyBash===!0,this.customTools=t.customTools??[],this.fastModeController=t.fastModeController,this.mcpManager=t.mcpManager,t.mcpManager){let n=t.mcpManager.onToolsRefreshed;t.mcpManager.onToolsRefreshed=r=>{this._mcpToolsCache=null,this._mcpHandlersCache=null,n?.(r)}}t.clientFactory&&(this.providerFactory=t.clientFactory)}buildDispatcher(t,n){return oW({memoryStore:this.memoryStore,workspaceStore:this.workspaceStore,surface:this.surface,readOnlyMemory:this.readOnlyMemory,readOnlyBash:this.readOnlyBash,customTools:this.customTools,mcpManager:this.mcpManager,schemas:this.schemas,hookRegistry:this.hookRegistry,permissions:this.permissions,canUseTool:this.canUseTool,subagentExecutor:this.subagentExecutor,skillExecutor:this.skillExecutor,composeExecutor:this.composeExecutor,sessionGrantManager:this,getMcpToolsCache:()=>this._mcpToolsCache,setMcpToolsCache:r=>{this._mcpToolsCache=r},getMcpHandlersCache:()=>this._mcpHandlersCache,setMcpHandlersCache:r=>{this._mcpHandlersCache=r}},t,n)}close(){this.memoryStore.close(),this.workspaceStore?.close()}async complete(t){let n=t.apiKey&&t.apiKey.length>0?t.apiKey:v.ANTHROPIC_API_KEY||v.CLAUDE_CODE_OAUTH_TOKEN||"";if(!n)throw new Error(`${EP} complete() requires an API key or OAuth token (config apiKey, ANTHROPIC_API_KEY, or CLAUDE_CODE_OAUTH_TOKEN)`);let r={token:n,model:t.model??WY,system:t.system,user:t.user,maxTokens:t.maxTokens??64};t.signal&&(r.signal=t.signal);let o=this.providerFactory??tS();return o&&(r.clientFactory=o),Jl(r)}addReadRoot(t,n="slash",r){this.grants.manager.addReadRoot(t,n,r)}addWriteRoot(t,n="slash",r){this.grants.manager.addWriteRoot(t,n,r)}revokeRoot(t,n="slash",r){this.grants.manager.revokeRoot(t,n,r)}getGrants(){return this.grants.manager.getGrants()}queryContext(){let t=this;return{get externalTools(){return t.externalTools},get providerFactory(){return t.providerFactory},get skillExecutor(){return t.skillExecutor},get subagentExecutor(){return t.subagentExecutor},get composeExecutor(){return t.composeExecutor},get canUseTool(){return t.canUseTool},get surface(){return t.surface},get declaredSurface(){return t.declaredSurface},get readOnlyMemory(){return t.readOnlyMemory},get workspaceStore(){return t.workspaceStore},get mcpManager(){return t.mcpManager},get fastModeController(){return t.fastModeController},getSharedReadRoots:()=>t.grants.readRoots,getSharedWriteRoots:()=>t.grants.writeRoots,getCurrentCwd:()=>t.grants.currentCwd,setCurrentCwd:n=>{t.grants.currentCwd=n},getCurrentPermissionMode:()=>t.grants.permissionMode,setCurrentPermissionMode:n=>{t.grants.permissionMode=n},getMintedSessionId:()=>t._mintedSessionId,setMintedSessionId:n=>{t._mintedSessionId=n},getPresenceSessionId:()=>t._presenceSessionId,setPresenceSessionId:n=>{t._presenceSessionId=n},ensureSharedRoots:n=>{t.grants.ensureInitialized(n)},buildDispatcher:(n,r)=>t.buildDispatcher(n,r)}}query(t){let n=this.queryContext(),r=Hz(n,t,EP,WY);return jY(n,t,r)}},KY=new st});var Ea=y(()=>{"use strict";GY();TP()});import{chmodSync as hxe,existsSync as yxe,mkdirSync as bxe,readFileSync as Sxe,unlinkSync as wxe,writeFileSync as vxe}from"node:fs";import{dirname as kxe,join as Txe}from"node:path";function pu(){return Txe(fe(),"xai","auth.json")}function Exe(e){try{return Sxe(e,"utf-8")}catch{return null}}function Rxe(e,t,n){vxe(e,t,{encoding:"utf-8",mode:n})}function xxe(e,t){hxe(e,t)}function Axe(e){bxe(e,{recursive:!0})}function Cxe(e){try{wxe(e)}catch{}}function _xe(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let n=t,r=n.access_token,o=n.refresh_token,i=n.expires_at;if(typeof r!="string"||r.length===0||typeof o!="string"||o.length===0||typeof i!="number"||!Number.isFinite(i))return null;let s={access_token:r,refresh_token:o,expires_at:i};return typeof n.token_type=="string"&&(s.token_type=n.token_type),typeof n.scope=="string"&&(s.scope=n.scope),s}function mu(e={}){let t=(e.authPath??pu)(),r=(e.readFile??Exe)(t);return r===null?null:_xe(r)}function fu(e,t={}){let n=(t.authPath??pu)(),r=t.mkdir??Axe,o=t.writeFile??Rxe,i=t.chmod??xxe;r(kxe(n));let s={access_token:e.access_token,refresh_token:e.refresh_token,expires_at:e.expires_at};e.token_type!==void 0&&(s.token_type=e.token_type),e.scope!==void 0&&(s.scope=e.scope),o(n,`${JSON.stringify(s,null,2)}
1349
1349
  `,384),i(n,384)}function hf(e={}){let t=(e.authPath??pu)(),n=e.exists??(o=>yxe(o)),r=e.unlink??Cxe;n(t)&&r(t)}function av(e){return e.length<=4?e:e.slice(-4)}var yf=y(()=>{"use strict";H()});import{readFileSync as Ixe}from"node:fs";import{homedir as Pxe}from"node:os";import{join as Mxe}from"node:path";function xP(e){let t=e?.trim();return t&&Dxe.test(t)?t:void 0}function $xe(e,t){if(!e)return;let n=c=>c.split(".").map(Number),[r=0,o=0,i=0]=n(e),[s=0,a=0,l=0]=n(t);return r!==s?r>s?e:void 0:o!==a?o>a?e:void 0:i>=l?e:void 0}function Fxe(e={}){let t=e.readFile??(r=>Ixe(r,"utf-8")),n=e.homeDir??Pxe;try{let r=t(Mxe(n(),".grok","version.json")),o=JSON.parse(r);if(typeof o!="object"||o===null)return;let i=o.version;return typeof i!="string"?void 0:xP(i)}catch{return}}function Lxe(e,t){let n=t.readEnv??(r=>v[r]);return xP(n(Oxe))??xP(e)??$xe(Fxe(t),qY)??qY}function AP(e){try{let t=new URL(e).hostname.toLowerCase();return t===RP||t.endsWith(`.${RP}`)}catch{return e.toLowerCase().includes(RP)}}function CP(e={},t={}){let n=Lxe(e.clientVersion,t),r=e.clientIdentifier?.trim()||"grok-shell";return{"X-XAI-Token-Auth":"xai-grok-cli","x-grok-client-version":n,"x-grok-client-identifier":r,"User-Agent":`agent-afk (grok-cli-compat/${n})`}}var RP,qY,Oxe,Dxe,zY=y(()=>{"use strict";F();RP="cli-chat-proxy.grok.com",qY="1.0.5",Oxe="AFK_XAI_GROK_CLIENT_VERSION",Dxe=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/});function Nxe(e){if(e==="AFK_XAI_BASE_URL")return v.AFK_XAI_BASE_URL;if(e==="AFK_XAI_OAUTH_BASE_URL")return v.AFK_XAI_OAUTH_BASE_URL}function hu(e,t={}){let n=t.readEnv??Nxe,r=t.baseUrlOverride?.trim();if(r){let l=_P(r),c=AP(l);return{baseURL:l,defaultHeaders:c?CP({clientVersion:t.clientVersion},t.headerDeps):{},mode:e,proxyHeadersApplied:c}}if(e==="apikey"){let l=n("AFK_XAI_BASE_URL"),c=l&&l.trim()||bf;return{baseURL:_P(c),defaultHeaders:{},mode:e,proxyHeadersApplied:!1}}let o=n("AFK_XAI_OAUTH_BASE_URL"),i=_P(o&&o.trim()||gu),s=AP(i),a=s?CP({clientVersion:t.clientVersion},t.headerDeps):{};return{baseURL:i,defaultHeaders:a,mode:e,proxyHeadersApplied:s}}function _P(e){return e.endsWith("/")?e.slice(0,-1):e}var bf,gu,Sf=y(()=>{"use strict";F();zY();bf="https://api.x.ai/v1",gu="https://cli-chat-proxy.grok.com/v1"});var VY={};Ar(VY,{formatXaiAuthDiagnostic:()=>No,formatXaiHttpAuthError:()=>lv,resolveXaiAuth:()=>_n});function Bxe(e){if(e==="XAI_API_KEY")return v.XAI_API_KEY}function Uxe(e,t){if(e&&e.length>0)return{key:e,source:"config"};let n=t("XAI_API_KEY");return n&&n.length>0?{key:n,source:"env"}:null}function jxe(e){let t=mu(e.store??{});return t?{bundle:t,last4:av(t.access_token)}:null}function _n(e,t=void 0,n={}){let r=n.readEnv??Bxe,o=Uxe(e,r),i=jxe(n);return t==="oauth"?i?{apiKey:i.bundle.access_token,source:"xai-oauth",mode:"oauth",last4:i.last4,expiresAt:i.bundle.expires_at}:{apiKey:null,source:"no-usable-auth-forced-xai-oauth",mode:"oauth"}:t==="apikey"?o?{apiKey:o.key,source:o.source,mode:"apikey",last4:av(o.key),...o.source==="env"?{envVar:"XAI_API_KEY"}:{}}:{apiKey:null,source:"no-usable-auth-forced-xai-apikey",mode:"apikey"}:o&&i?{apiKey:null,source:"ambiguous-auth"}:o?{apiKey:o.key,source:o.source,mode:"apikey",last4:av(o.key),...o.source==="env"?{envVar:"XAI_API_KEY"}:{}}:i?{apiKey:i.bundle.access_token,source:"xai-oauth",mode:"oauth",last4:i.last4,expiresAt:i.bundle.expires_at}:{apiKey:null,source:"no-usable-auth"}}function Hxe(e,t){if(typeof e!="number")return"";let n=(t??(()=>Math.floor(Date.now()/1e3)))(),r=e-n;if(r<=0)return", EXPIRED \u2014 re-run `afk provider auth xai login`";let o=Math.floor(r/3600),i=Math.floor(r%3600/60);return`, expires in ${o>0?`${o}h `:""}${i}m`}function No(e,t={}){switch(e.source){case"config":return`using explicit AFK config xAI API key (\u2026${e.last4??"????"})`;case"env":return`using XAI_API_KEY env var (\u2026${e.last4??"????"})`;case"xai-oauth":{let n=Hxe(e.expiresAt,t.nowSeconds);return`using SuperGrok / SuperGrok Heavy / X Premium+ OAuth (\u2026${e.last4??"????"}${n})`}case"no-usable-auth-forced-xai-oauth":return"This model's slot/provider is `xai-oauth` but no SuperGrok OAuth tokens were found. Run `afk provider auth xai login` (device-code by default), or switch to `xai` with XAI_API_KEY.";case"no-usable-auth-forced-xai-apikey":return"This model's slot/provider is `xai` (API-key mode) but no XAI_API_KEY / config key was found. Set XAI_API_KEY, or use `xai-oauth` after `afk provider auth xai login`.";case"ambiguous-auth":return"Both XAI_API_KEY and SuperGrok OAuth tokens are present. Choose explicitly: `--provider xai` (API key \u2192 "+bf+") or `--provider xai-oauth` (subscription OAuth \u2192 "+gu+").";default:return"No xAI auth found. Set XAI_API_KEY for metered API access, or run `afk provider auth xai login` for SuperGrok / SuperGrok Heavy / X Premium+."}}function lv(e,t){let n=t.baseURL??(t.mode==="oauth"?gu:bf),r=(t.bodySnippet??"").slice(0,180);return e===402?`xAI returned HTTP 402 on ${n}`+(r?` (${r})`:"")+". This is usually a subscription/spend gate (e.g. personal-team-blocked), not a missing login. Check SuperGrok / SuperGrok Heavy / X Premium+ status, try the other endpoint via AFK_XAI_OAUTH_BASE_URL or AFK_XAI_BASE_URL, or use a metered XAI_API_KEY with `--provider xai`.":e===403?`xAI returned HTTP 403 on ${n}`+(r?` (${r})`:"")+`. After SuperGrok OAuth login this often means the account lacks OAuth API entitlement, the model requires SuperGrok Heavy, or traffic hit api.x.ai instead of the CLI chat proxy. Try AFK_XAI_OAUTH_BASE_URL=${gu} (default for xai-oauth), or fall back to XAI_API_KEY with \`--provider xai\`.`:`xAI returned HTTP ${e} on ${n}`+(r?`: ${r}`:"")}var ji=y(()=>{"use strict";F();yf();Sf()});function cv(e,t,n){if(t===!0)return"oauth";if(n===!0)return"apikey";if(e==="apikey"||e==="oauth")return e}function IP(e,t){return t!==void 0?t:cv(e,void 0,void 0)}function uv(e,t){if(e==="xai-oauth")return"oauth";if(t)return"apikey"}var wf=y(()=>{"use strict"});var dv,Hi,YY,hbt,pv,Wxe,vf,JY,XY,mv,yu=y(()=>{"use strict";dv="https://auth.x.ai",Hi="b1a00492-073a-47ea-816f-4c329264a828",YY="openid profile email offline_access grok-cli:access api:access",hbt=`${YY} conversations:read conversations:write`,pv=YY,Wxe=56121,vf=`http://127.0.0.1:${Wxe}/callback`,JY="generic",XY="https://grok.com",mv=180});function pt(e){return typeof e=="string"&&e.length>0?e:void 0}async function QY(e){try{return(await e.text()).slice(0,200)}catch{return""}}async function xa(e={}){let t=e.fetchFn??fetch,n=(e.issuer??dv).replace(/\/$/,""),r=`${n}/.well-known/openid-configuration`,o=await t(r,{method:"GET"});if(!o.ok)throw new Error(`xAI OIDC discovery failed: HTTP ${o.status} from ${r}`);let i=await o.json(),s=pt(i.authorization_endpoint),a=pt(i.token_endpoint);if(!s||!a)throw new Error("xAI OIDC discovery missing authorization_endpoint or token_endpoint");let l=new URL(n).origin,c=pt(i.issuer);if(c){let g;try{g=new URL(c).origin}catch{throw new Error("xAI OIDC discovery: body issuer origin does not match configured issuer")}if(g!==l)throw new Error("xAI OIDC discovery: body issuer origin does not match configured issuer")}let u=c??n;if(new URL(s).origin!==l)throw new Error("xAI OIDC discovery: authorization_endpoint origin does not match issuer");if(new URL(a).origin!==l)throw new Error("xAI OIDC discovery: token_endpoint origin does not match issuer");let d={issuer:u,authorization_endpoint:s,token_endpoint:a},p=pt(i.device_authorization_endpoint);if(p){if(new URL(p).origin!==l)throw new Error("xAI OIDC discovery: device_authorization_endpoint origin does not match issuer");d.device_authorization_endpoint=p}let f=pt(i.userinfo_endpoint);if(f){if(new URL(f).origin!==l)throw new Error("xAI OIDC discovery: userinfo_endpoint origin does not match issuer");d.userinfo_endpoint=f}return d}async function gv(e={}){let n=(e.nowMs??(()=>Date.now()))();if(fv&&fv.expiresAt>n)return fv.result;let r=await xa(e);return fv={result:r,expiresAt:n+Kxe},r}function Aa(e,t,n){let r=pt(e.access_token);if(!r)return null;let o=pt(e.refresh_token)??n;if(!o)return null;let i=(t??(()=>Math.floor(Date.now()/1e3)))(),s=typeof e.expires_in=="number"?e.expires_in:3600,a=Math.min(Math.max(s,mv+60),86400),l={access_token:r,refresh_token:o,expires_at:i+a};return typeof e.token_type=="string"&&(l.token_type=e.token_type),typeof e.scope=="string"&&(l.scope=e.scope),l}var Kxe,fv,bu=y(()=>{"use strict";yu();Kxe=1440*60*1e3,fv=null});function Su(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?n:t}async function hv(e={}){let t=await xa(e),n=t.device_authorization_endpoint??`${(e.issuer??dv).replace(/\/$/,"")}/oauth2/device/auth`,r=e.fetchFn??fetch,o=e.clientId??Hi,i=e.scopes??pv,s=new URLSearchParams({client_id:o,scope:i}),a=await r(n,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:s.toString()});if(!a.ok){let b=await QY(a);throw new Error(`xAI device-code start failed: HTTP ${a.status}${b?` \u2014 ${b}`:""}`)}let l=await a.json(),c=pt(l.device_code),u=pt(l.user_code),d=pt(l.verification_uri);if(!c||!u||!d)throw new Error("xAI device-code response missing device_code, user_code, or verification_uri");let p=Su(l.expires_in,600),f=Su(l.interval,5),g={device_code:c,user_code:u,verification_uri:d,expires_in:p,interval:f},h=pt(l.verification_uri_complete);return h&&(g.verification_uri_complete=h),{discovery:t,device:g}}async function yv(e,t,n={}){let r=n.fetchFn??fetch,o=n.clientId??Hi,i=new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:t,client_id:o}),s=await r(e.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:i.toString()}),a=await s.json().catch(()=>({}));if(s.ok){let u=Aa(a,n.nowSeconds);return u?{status:"success",tokens:u}:{status:"error",message:"token response missing access_token or refresh_token"}}let l=pt(a.error)??`http_${s.status}`;if(l==="authorization_pending")return{status:"pending"};if(l==="slow_down")return{status:"slow_down",interval:Su(a.interval,5)};if(l==="expired_token")return{status:"expired"};if(l==="access_denied")return{status:"denied"};let c=pt(a.error_description);return{status:"error",message:c?`${l}: ${c}`:l}}var PP=y(()=>{"use strict";yu();bu()});import{createHash as Gxe,randomBytes as ZY}from"node:crypto";function bv(){return MP(ZY(32))}function eJ(e){return MP(Gxe("sha256").update(e).digest())}function Sv(){return MP(ZY(16))}function wv(e,t){let n=t.redirectUri??vf,r=t.clientId??Hi,o=t.scopes??pv,i=eJ(t.codeVerifier),s=new URL(e.authorization_endpoint);return s.searchParams.set("response_type","code"),s.searchParams.set("client_id",r),s.searchParams.set("redirect_uri",n),s.searchParams.set("scope",o),s.searchParams.set("state",t.state),s.searchParams.set("code_challenge",i),s.searchParams.set("code_challenge_method","S256"),s.searchParams.set("plan",JY),s.searchParams.set("referrer",XY),{authorizationUrl:s.toString(),codeVerifier:t.codeVerifier,state:t.state,redirectUri:n}}async function vv(e,t,n={}){let r=n.fetchFn??fetch,o=n.clientId??Hi,i=t.redirectUri??vf,s=new URLSearchParams({grant_type:"authorization_code",code:t.code,redirect_uri:i,client_id:o,code_verifier:t.codeVerifier}),a=await r(e.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:s.toString()}),l=await a.json().catch(()=>({}));if(!a.ok){let u=pt(l.error)??`http_${a.status}`,d=pt(l.error_description);throw new Error(`xAI authorization_code exchange failed: ${d?`${u}: ${d}`:u}`)}let c=Aa(l,n.nowSeconds);if(!c)throw new Error("xAI authorization_code response missing access_token or refresh_token");return c}function MP(e){return e.toString("base64url")}var OP=y(()=>{"use strict";yu();bu()});function zxe(e){return e?.authPath?e.authPath():pu()}async function tJ(e,t={}){let n=await gv(t),r=t.fetchFn??fetch,o=t.clientId??Hi,i=new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:o}),s=await r(n.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:i.toString()}),a=await s.json().catch(()=>({}));if(!s.ok){let c=pt(a.error)??`http_${s.status}`,u=pt(a.error_description);throw new Error(`xAI token refresh failed: ${u?`${c}: ${u}`:c}`)}let l=Aa(a,t.nowSeconds,e);if(!l)throw new Error("xAI refresh response missing access_token");return t.persist!==!1&&fu(l,t.store??{}),l}async function kf(e={}){let t=e.store??{},n=mu(t);if(!n)return null;let r=(e.nowSeconds??(()=>Math.floor(Date.now()/1e3)))(),o=e.skewSeconds??mv;if(n.expires_at-o>r)return n;let i=zxe(t),s=DP.get(i);if(s)try{return await s}catch{return mu(t)}let a=(async()=>{try{return await tJ(n.refresh_token,{...e,store:t,persist:!0})}catch(l){throw n.expires_at<=r&&hf(t),l}finally{DP.delete(i)}})();DP.set(i,a);try{return await a}catch{return n.expires_at>r?n:null}}var DP,kv=y(()=>{"use strict";yu();yf();bu();bu();PP();OP();DP=new Map});function Tv(e){return typeof e!="number"?!1:e<=Math.floor(Date.now()/1e3)}function $P(e,t){let n=xi(e);if(n!==402&&n!==403)return e instanceof Error?e:new Error(String(e));let r=e instanceof Error?e.message:typeof e=="string"?e:void 0,o=hu(t);return new Error(lv(n,{mode:t,baseURL:o.baseURL,...r!==void 0?{bodySnippet:r}:{}}))}function nJ(e){return{async*[Symbol.asyncIterator](){yield{type:"error",error:new Error(e)}},async interrupt(){},async setModel(){},async setPermissionMode(){},async supportedCommands(){return[]},async supportedModels(){return[]},async supportedAgents(){return[]},async getContextUsage(){return{}},async mcpServerStatus(){return[]},async accountInfo(){return{}},async rewindFiles(){return{canRewind:!1,error:e}},async close(){}}}var FP=y(()=>{"use strict";ji();Sf();Wc()});function rJ(e,t){return e==="oauth"||e==="apikey"?e:t()}function oJ(e){let{args:t,forceMode:n,authDeps:r,getLastMode:o,delegate:i}=e,s,a,l,c,u,d=async()=>{if(a)throw a;return s||l||(l=(async()=>{try{n!=="apikey"&&await kf({store:r.store});let p=_n(t.config.apiKey,n,r);if(p.apiKey===null||!p.mode)throw new Error(No(p));if(p.mode==="oauth"&&Tv(p.expiresAt))throw new Error("SuperGrok OAuth access token expired and refresh failed. Re-run `afk provider auth xai login`.");return s=i(t,p.apiKey,p.mode),c!==void 0&&s.setCwd?.(c),u!==void 0&&s.setSystemPrompt?.(u===null?void 0:u),s}catch(p){throw a=p instanceof Error?p:new Error(String(p)),a}finally{l=void 0}})(),l)};return{async*[Symbol.asyncIterator](){try{let p=await d();for await(let f of p)f.type==="error"?yield{type:"error",error:$P(f.error,rJ(n,o))}:yield f}catch(p){let f=p instanceof Error?p:new Error(String(p));yield{type:"error",error:$P(f,rJ(n,o))}}},async interrupt(p){await(s??await d().catch(()=>{}))?.interrupt(p)},async setModel(p){await(s??await d().catch(()=>{}))?.setModel(p)},async setPermissionMode(p){await(s??await d().catch(()=>{}))?.setPermissionMode(p)},setCwd(p){c=p,s?.setCwd?.(p)},setSystemPrompt(p){return u=p===void 0?null:p,s?.setSystemPrompt?.(p)??!1},async reauth(){return await(s??await d().catch(()=>{}))?.reauth?.()??null},async supportedCommands(){return await(s??await d().catch(()=>{}))?.supportedCommands()??[]},async supportedModels(){return await(s??await d().catch(()=>{}))?.supportedModels()??[]},async supportedAgents(){return await(s??await d().catch(()=>{}))?.supportedAgents()??[]},async getContextUsage(){return await(s??await d().catch(()=>{}))?.getContextUsage()??{}},async mcpServerStatus(){return await(s??await d().catch(()=>{}))?.mcpServerStatus()??[]},async accountInfo(){return await(s??await d().catch(()=>{}))?.accountInfo()??{}},async rewindFiles(p,f){let g=s??await d().catch(()=>{});return g?g.rewindFiles(p,f):{canRewind:!1,error:"xAI provider not initialized"}},async compact(){let p=s??await d().catch(()=>{});return p?.compact?p.compact():{compacted:!1,reason:"provider does not support compaction",messagesBefore:0,messagesAfter:0}},listRewindTargets(){return s?.listRewindTargets?.()??[]},async rewindConversation(p){let f=s??await d().catch(()=>{});return f?.rewindConversation?f.rewindConversation(p):{rewound:!1,reason:"not-supported",messagesBefore:0,messagesAfter:0}},async close(){await s?.close()}}}var iJ=y(()=>{"use strict";ji();kv();FP()});var Vxe,Ca,Ev=y(()=>{"use strict";Gc();ji();wf();Sf();kv();iJ();FP();wf();ji();Sf();yf();kv();wS();Vxe="xai",Ca=class{name=Vxe;inner;authMode;authDeps;lastMode="apikey";lastResolvedMode;lastXaiBaseUrl;constructor(t={}){let{authMode:n,authDeps:r,...o}=t;this.authMode=n,this.authDeps=r??{},this.inner=new Yt(o)}query(t){let n=cv(this.authMode,t.config.forceXaiOAuth,t.config.forceXaiApiKey);return n==="oauth"||n===void 0?oJ({args:t,forceMode:n,authDeps:this.authDeps,getLastMode:()=>this.lastMode,delegate:(r,o,i)=>this.delegateToInner(r,o,i)}):this.querySync(t,n)}querySync(t,n){let r=_n(t.config.apiKey,n,this.authDeps);return r.apiKey===null||!r.mode?nJ(No(r)):this.delegateToInner(t,r.apiKey,r.mode)}delegateToInner(t,n,r){this.rememberResolved(r,t.config.xaiBaseUrl);let o=hu(r,{readEnv:this.authDeps.readEnv?s=>this.authDeps.readEnv(s):void 0,...t.config.xaiBaseUrl!==void 0?{baseUrlOverride:t.config.xaiBaseUrl}:{}});this.inner.setEndpointDefaults({baseURL:o.baseURL,defaultHeaders:o.defaultHeaders});let i={...t.config,apiKey:n,openaiBaseUrl:o.baseURL,forceChatgptOAuth:!1,forceXaiOAuth:r==="oauth",forceXaiApiKey:r==="apikey"};return this.inner.query({...t,config:i})}rememberResolved(t,n){this.lastMode=t,this.lastResolvedMode=t,this.lastXaiBaseUrl=n}addReadRoot(t,n="slash",r){this.inner.addReadRoot(t,n,r)}addWriteRoot(t,n="slash",r){this.inner.addWriteRoot(t,n,r)}revokeRoot(t,n="slash",r){this.inner.revokeRoot(t,n,r)}getGrants(){return this.inner.getGrants()}close(){this.inner.close()}async complete(t){let n=IP(this.authMode,this.lastResolvedMode);(n==="oauth"||n===void 0)&&await kf({store:this.authDeps.store});let r=_n(t.apiKey,n,this.authDeps);if(r.apiKey===null||!r.mode)throw new Error(No(r));if(r.mode==="oauth"&&Tv(r.expiresAt))throw new Error("SuperGrok OAuth access token expired and refresh failed. Re-run `afk provider auth xai login`.");this.rememberResolved(r.mode,this.lastXaiBaseUrl);let o=hu(r.mode,{readEnv:this.authDeps.readEnv,...this.lastXaiBaseUrl!==void 0?{baseUrlOverride:this.lastXaiBaseUrl}:{}});return this.inner.setEndpointDefaults({baseURL:o.baseURL,defaultHeaders:o.defaultHeaders}),this.inner.complete({...t,apiKey:r.apiKey,baseUrl:o.baseURL})}}});function Jxe(e){if(!e)return;let t=e.trim().toLowerCase();if(t){if(t==="anthropic"||t==="anthropic-direct")return"anthropic-direct";if(t==="openai"||t==="openai-compatible"||t==="openai-codex")return"openai-compatible";if(t==="xai")return"xai";if(t==="xai-oauth"||t==="xai_oauth")return"xai-oauth"}}function oe(e,t){let n=t?.explicit??v.AFK_PROVIDER,r=t?.openaiBaseUrl??v.AFK_OPENAI_BASE_URL,o=Jxe(n);if(o)return o;let i=Ns(e,t?.slots);if(i.provider==="anthropic")return"anthropic-direct";if(i.provider==="openai"||i.provider==="chatgpt-oauth")return"openai-compatible";if(i.provider==="xai")return"xai";if(i.provider==="xai-oauth")return"xai-oauth";let s=i.id.trim().toLowerCase();return s&&(Yxe.has(s)||s.startsWith("claude-")||s.startsWith("claude_")||s.startsWith("local-")||s.startsWith("local_"))?"anthropic-direct":s&&(s.startsWith("grok-")||s.startsWith("grok_")||s==="grok")?"xai":s&&(s.startsWith("gpt-")||s.startsWith("gpt_")||Bs(s)||s.startsWith("codex-")||s.startsWith("codex_")||s==="codex"||s.startsWith("deepseek-")||s.startsWith("deepseek_")||s.startsWith("mistral-")||s.startsWith("mistral_")||s.startsWith("mixtral-")||s.startsWith("mixtral_")||s.startsWith("llama-")||s.startsWith("llama_")||s.startsWith("qwen-")||s.startsWith("qwen_")||s.includes("/"))||i.baseUrl&&i.baseUrl.trim()||r&&r.trim()?"openai-compatible":"anthropic-direct"}function Rv(e,t,n){let r=oe(e,t),o=n?.customTools,i=n?.canUseTool,s={...o!==void 0&&o.length>0?{customTools:o}:{},...i!==void 0?{canUseTool:i}:{}};switch(r){case"openai-compatible":case"openai-codex":return new Yt(s);case"xai":case"xai-oauth":{let a=(t?.explicit??v.AFK_PROVIDER)?.trim().toLowerCase()??"",u=uv(r==="xai-oauth"||a==="xai-oauth"||a==="xai_oauth"?"xai-oauth":"xai",a==="xai"||a==="xai-oauth"||a==="xai_oauth"||r==="xai-oauth");return new Ca({...s,...u!==void 0?{authMode:u}:{}})}default:return new st(s)}}var Yxe,We=y(()=>{"use strict";Ea();Gc();Ev();wf();Un();Ot();Us();F();Ea();Gc();Ev();Yxe=new Set([...Object.keys(Ix),"auto"])});var wu,LP=y(()=>{"use strict";wu=class{pendingResolve=null;bufferedMessages=[];getSessionId;constructor(t){this.getSessionId=t}pushUserMessage(t){if(this.pendingResolve){let n=this.pendingResolve;this.pendingResolve=null;let r=this.getSessionId();n({content:t,...r!==void 0?{sessionId:r}:{}});return}this.bufferedMessages.push(t)}createIterable(){let t=this;return{[Symbol.asyncIterator](){return{next(){if(t.bufferedMessages.length>0){let n=t.bufferedMessages.shift(),r=t.getSessionId();return Promise.resolve({value:{content:n,...r!==void 0?{sessionId:r}:{}},done:!1})}return new Promise(n=>{t.pendingResolve=r=>n({value:r,done:!1})})},return(){return Promise.resolve({value:void 0,done:!0})}}}}}}});function xv(e,t){let n=t??zl(),r=Vl(e.model,n);if(!r){e.forceChatgptOAuth=!1,e.forceXaiOAuth=!1,e.forceXaiApiKey=!1,e.xaiBaseUrl=void 0;return}let o=n[r],i=o.provider==="anthropic"?"anthropic-direct":o.provider==="openai"||o.provider==="chatgpt-oauth"?"openai-compatible":o.provider==="xai"||o.provider==="xai-oauth"?"xai":oe(e.model,t?{slots:t}:void 0);e.forceChatgptOAuth=o.provider==="chatgpt-oauth",e.forceXaiOAuth=o.provider==="xai-oauth",e.forceXaiApiKey=o.provider==="xai",o.apiKey!==void 0?e.apiKey=o.apiKey:(i==="openai-compatible"||i==="xai"||o.baseUrl!==void 0)&&(e.apiKey=void 0),o.baseUrl!==void 0?i==="xai"?e.xaiBaseUrl=o.baseUrl:i==="openai-compatible"?e.openaiBaseUrl=o.baseUrl:e.baseUrl=o.baseUrl:i==="xai"&&(e.xaiBaseUrl=void 0)}var NP=y(()=>{"use strict";We();Ot()});function Xxe(e){return typeof e=="string"?e:e.map(t=>{let n=t;return n.type==="text"&&typeof n.text=="string"?n.text:""}).filter(t=>t.length>0).join(`
1350
1350
  `)}function Qxe(e,t,n,r){let o=n&&n!==r?` (provider ${n} \u2192 ${r})`:"";return`[System context \u2014 not from the user. Your model was switched at the start of this turn: ${e} \u2192 ${t}${o}. Earlier turns in this conversation were produced by ${e}; the history carried across the switch is plain text only, so any prior tool calls and extended reasoning are now prose \u2014 treat their structure as lost, not authoritative.]`}function Zxe(e,t){return typeof e=="string"?e.length>0?`${t}
1351
1351
 
@@ -1486,6 +1486,7 @@ The transcript is not a user channel. AFK users see bridge messages, files, comm
1486
1486
  - **Do not skip Observe or Update to save tokens.** Stale-state errors cost more than the tokens saved.
1487
1487
  - **Parallelize independent calls; sequence dependent ones.**
1488
1488
  - **Re-check shared mutable state after divergence, delay, or failure.**
1489
+ - **Do not use emdashes.**
1489
1490
 
1490
1491
  ## Delegation
1491
1492
 
@@ -1849,7 +1850,7 @@ ${o}`}}}return{...e,systemPrompt:o}}Ot();tt();yt();kn();tn();Gt();ua();ci();func
1849
1850
  `),this.sealRecordPersisted=!0}catch{}let t=this.fh;this.fh=null,t&&t.close().catch(()=>{})}async appendLine(t){if(!this.fh)throw new Error("NdjsonTraceWriter: file handle missing");await this.fh.appendFile(`${JSON.stringify(t)}
1850
1851
  `)}async materializePersistedEvent(t){let n=new Date().toISOString(),r=this.seq++;if(t.kind==="compaction"){let o=await this.persistCompactionSidecar(t.payload,r,n);return{ts:n,seq:r,kind:"compaction",payload:o}}return{ts:n,seq:r,kind:t.kind,payload:t.payload}}async persistCompactionSidecar(t,n,r){let o=r.replace(/[:.]/g,"-"),i=FX(this.traceDir,`${String(n).padStart(6,"0")}-${o}-pre-compaction.json`),s=JSON.stringify(t.preCompactionMessages),a=Buffer.byteLength(s,"utf8"),l=aIe("sha256").update(s).digest("hex");await dIe(i,s,{encoding:"utf8",flag:"w"});let c={path:i,sizeBytes:a,sha256:l};return{trigger:t.trigger,preCompactionMessagesRef:c,summary:t.summary,keptTailCount:t.keptTailCount,keepLastNConfig:t.keepLastNConfig,messagesBefore:t.messagesBefore,messagesAfter:t.messagesAfter,...t.tokensSavedEstimate!==void 0?{tokensSavedEstimate:t.tokensSavedEstimate}:{},...t.summarizationTokens!==void 0?{summarizationTokens:t.summarizationTokens}:{}}}};function hIe(e){if(!gIe(e))return;let n=fIe(e,"utf8").split(`
1851
1852
  `).filter(r=>r.trim().length>0);if(n.length!==0)try{let r=n[n.length-1]??"",i=JSON.parse(r).seq;return typeof i=="number"?i:void 0}catch{return}}function ro(e={}){if(v.AFK_TRACE_DISABLED==="1")return null;let t=e.sessionLabel??mIe(),n=sn(t),r=`${n}/trace.jsonl`,o=hIe(r),i=new Qv({traceDir:n,...o!==void 0?{startSeq:o+1}:{}});return{writer:i,tracePath:i.getTracePath(),sessionLabel:t}}nM();Xp();Ji();function EIe(e){let t=new Map,n=[];for(let r of e)r.toolUseId===void 0?n.push(r):t.set(r.toolUseId,r);return[...t.values(),...n]}function qX(e){return!e||e.length===0?"":`
1852
- [Tools used: ${EIe(e).map(r=>{let o=r.isError?"\u2717":"\u2713",i=r.input||r.inputRaw||"",s=i.length>80?i.slice(0,77)+"\u2026":i;return`${r.toolName}(${s})${o}`}).join(", ")}]`}function Fu(e){if(e.resume&&e.continue)throw new Error("Use either --resume <id> or --continue, not both.");if(e.resume){let t=Da(e.resume);return t?{id:t.id,resumeId:t.data.sessionId??t.id,stored:t.data}:{id:e.resume,resumeId:e.resume}}if(e.continue){let t=$f()[0];if(!t)throw new Error("No saved sessions found for --continue. Run a session first \u2014 sessions autosave automatically.");let n=Du(t.path);if(!n)throw new Error(`Could not load latest saved session: ${t.id}`);return{id:t.id,resumeId:n.sessionId??t.id,stored:n}}}function $a(e){return e?{resume:e.resumeId,sessionId:e.resumeId,...e.stored?{resumeHistory:e.stored.turns.map(t=>({user:t.user,assistant:(t.assistant??"")+qX(t.toolEvents)}))}:{}}:{}}Ji();Lu();xM();import{Client as d6}from"@modelcontextprotocol/sdk/client/index.js";import{CallToolResultSchema as JIe}from"@modelcontextprotocol/sdk/types.js";import{StreamableHTTPError as f6}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{UnauthorizedError as PM}from"@modelcontextprotocol/sdk/client/auth.js";import{StdioClientTransport as jIe}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as HIe}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{SSEClientTransport as WIe}from"@modelcontextprotocol/sdk/client/sse.js";var UIe=/\$(\$)?\{([A-Z_][A-Z0-9_]*)\}/gi;function ik(e,t=process.env){let n=[];return{value:e.replace(UIe,(o,i,s)=>{if(i==="$")return`\${${s}}`;let a=t[s];return a===void 0||a===""?(n.push(s),""):a}),missing:n}}function AM(e,t=process.env){if(e===void 0)return{value:{},missing:[]};let n={},r=new Set;for(let[o,i]of Object.entries(e)){let{value:s,missing:a}=ik(i,t);n[o]=s;for(let l of a)r.add(l)}return{value:n,missing:[...r]}}function KIe(e){return e==="localhost"||e==="127.0.0.1"||e==="[::1]"||e==="::1"||e==="0.0.0.0"}function GIe(){let e=["PATH","HOME","USER","USERNAME","LOGNAME","SHELL","TERM","TMPDIR","TEMP","TMP","LANG","LC_ALL","SYSTEMROOT","APPDATA","LOCALAPPDATA","PROGRAMDATA","PROGRAMFILES","NODE_PATH"],t={};for(let n of e){let r=process.env[n];typeof r=="string"&&(t[n]=r)}return t}function n6(e,t=process.env){if(e===void 0)return{headers:{},missing:[]};let n={},r=new Set;for(let[o,i]of Object.entries(e)){let{value:s,missing:a}=ik(i,t);if(a.length>0)for(let l of a)r.add(l);else n[o]=s}return{headers:n,missing:[...r]}}function sk(e,t,n){let r=t.type??(t.command?"stdio":"streamable-http");if(r==="stdio"){if(typeof t.command!="string"||t.command.length===0)throw new Error(`McpTransport(${e}): stdio requires \`command\``);let{value:o,missing:i}=AM(t.env);i.length>0&&console.warn(`[mcp:${e}] missing env vars (passing as empty): ${i.join(", ")}`);let s={command:t.command,...t.args?{args:t.args}:{},env:{...GIe(),...o}};return{transport:new jIe(s),isSSE:!1}}if(r==="streamable-http"||r==="sse"){if(typeof t.url!="string"||t.url.length===0)throw new Error(`McpTransport(${e}): ${r} requires \`url\``);let o=new URL(t.url);if(o.protocol!=="https:"&&!KIe(o.hostname))throw new Error(`McpTransport(${e}): refusing ${r} URL ${o.protocol}//${o.hostname} \u2014 credentials and tool I/O would transit in plaintext. Use https:, or point the URL at localhost / 127.0.0.1.`);let{headers:i,missing:s}=n6(t.headers);return s.length>0&&console.warn(`[mcp:${e}] missing header vars (passing as omitted): ${s.join(", ")}`),r==="sse"?(process.stderr.write(`[mcp:${e}] WARNING: SSE transport is deprecated. Upgrade your MCP server to use streamable-HTTP.
1853
+ [Tools used: ${EIe(e).map(r=>{let o=r.isError?"\u2717":"\u2713",i=r.input||r.inputRaw||"",s=i.length>80?i.slice(0,77)+"\u2026":i;return`${r.toolName}(${s})${o}`}).join(", ")}]`}function Fu(e){if(e.resume&&e.continue)throw new Error("Use either --resume <id> or --continue, not both.");if(e.resume){let t=Da(e.resume);return t?{id:t.id,resumeId:t.data.sessionId??t.id,stored:t.data}:{id:e.resume,resumeId:e.resume}}if(e.continue){let t=$f()[0];if(!t)throw new Error("No saved sessions found for --continue. Run a session first \u2014 sessions autosave automatically.");let n=Du(t.path);if(!n)throw new Error(`Could not load latest saved session: ${t.id}`);return{id:t.id,resumeId:n.sessionId??t.id,stored:n}}}function $a(e){return e?{resume:e.resumeId,sessionId:e.resumeId,...e.stored?{resumeHistory:e.stored.turns.map((t,n,r)=>{let o={user:t.user,assistant:(t.assistant??"")+qX(t.toolEvents)};return n===r.length-1&&t.inputTokens!==void 0&&(o.inputTokens=t.inputTokens),o})}:{}}:{}}Ji();Lu();xM();import{Client as d6}from"@modelcontextprotocol/sdk/client/index.js";import{CallToolResultSchema as JIe}from"@modelcontextprotocol/sdk/types.js";import{StreamableHTTPError as f6}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{UnauthorizedError as PM}from"@modelcontextprotocol/sdk/client/auth.js";import{StdioClientTransport as jIe}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as HIe}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{SSEClientTransport as WIe}from"@modelcontextprotocol/sdk/client/sse.js";var UIe=/\$(\$)?\{([A-Z_][A-Z0-9_]*)\}/gi;function ik(e,t=process.env){let n=[];return{value:e.replace(UIe,(o,i,s)=>{if(i==="$")return`\${${s}}`;let a=t[s];return a===void 0||a===""?(n.push(s),""):a}),missing:n}}function AM(e,t=process.env){if(e===void 0)return{value:{},missing:[]};let n={},r=new Set;for(let[o,i]of Object.entries(e)){let{value:s,missing:a}=ik(i,t);n[o]=s;for(let l of a)r.add(l)}return{value:n,missing:[...r]}}function KIe(e){return e==="localhost"||e==="127.0.0.1"||e==="[::1]"||e==="::1"||e==="0.0.0.0"}function GIe(){let e=["PATH","HOME","USER","USERNAME","LOGNAME","SHELL","TERM","TMPDIR","TEMP","TMP","LANG","LC_ALL","SYSTEMROOT","APPDATA","LOCALAPPDATA","PROGRAMDATA","PROGRAMFILES","NODE_PATH"],t={};for(let n of e){let r=process.env[n];typeof r=="string"&&(t[n]=r)}return t}function n6(e,t=process.env){if(e===void 0)return{headers:{},missing:[]};let n={},r=new Set;for(let[o,i]of Object.entries(e)){let{value:s,missing:a}=ik(i,t);if(a.length>0)for(let l of a)r.add(l);else n[o]=s}return{headers:n,missing:[...r]}}function sk(e,t,n){let r=t.type??(t.command?"stdio":"streamable-http");if(r==="stdio"){if(typeof t.command!="string"||t.command.length===0)throw new Error(`McpTransport(${e}): stdio requires \`command\``);let{value:o,missing:i}=AM(t.env);i.length>0&&console.warn(`[mcp:${e}] missing env vars (passing as empty): ${i.join(", ")}`);let s={command:t.command,...t.args?{args:t.args}:{},env:{...GIe(),...o}};return{transport:new jIe(s),isSSE:!1}}if(r==="streamable-http"||r==="sse"){if(typeof t.url!="string"||t.url.length===0)throw new Error(`McpTransport(${e}): ${r} requires \`url\``);let o=new URL(t.url);if(o.protocol!=="https:"&&!KIe(o.hostname))throw new Error(`McpTransport(${e}): refusing ${r} URL ${o.protocol}//${o.hostname} \u2014 credentials and tool I/O would transit in plaintext. Use https:, or point the URL at localhost / 127.0.0.1.`);let{headers:i,missing:s}=n6(t.headers);return s.length>0&&console.warn(`[mcp:${e}] missing header vars (passing as omitted): ${s.join(", ")}`),r==="sse"?(process.stderr.write(`[mcp:${e}] WARNING: SSE transport is deprecated. Upgrade your MCP server to use streamable-HTTP.
1853
1854
  `),{transport:new WIe(o,{...Object.keys(i).length>0?{requestInit:{headers:i}}:{},...n?{authProvider:n}:{}}),isSSE:!0}):{transport:new HIe(o,{...Object.keys(i).length>0?{requestInit:{headers:i}}:{},...n?{authProvider:n}:{}}),isSSE:!1}}throw new Error(`McpTransport(${e}): unknown transport type "${String(r)}"`)}ck();var p6={name:"agent-afk",version:"2.x"},m6={},IM=3e4,Bu=class{serverName;config;client;connected=!1;pendingAuthTransport;onTransportError;onToolListChanged;constructor(t,n){this.serverName=t,this.config=n}async connect(){if(this.connected)throw new Error(`McpClient(${this.serverName}): already connected`);let t=this.config.oauth===!0?new Nu(this.serverName):void 0,{primary:n,fallback:r}=QIe(this.serverName,this.config,t),o=new d6(p6,{capabilities:m6});n.transport.onerror=u=>{this.onTransportError?.(u)};try{let{ToolListChangedNotificationSchema:u}=await import("@modelcontextprotocol/sdk/types.js");o.setNotificationHandler(u,()=>{this.onToolListChanged?.()})}catch{}let i=this.config.timeout??IM,s=n.isSSE,a=o;try{await uk(o.connect(n.transport),i,()=>new Error(`MCP server "${this.serverName}" connect timed out after ${i}ms`),()=>n.transport.close().catch(()=>{}))}catch(u){if(ZIe(u)&&r!==null){console.warn(`[mcp:${this.serverName}] streamable-HTTP got ${ePe(u)}; falling back to SSE transport`);let d=r();d.transport.onerror=f=>{this.onTransportError?.(f)};let p=new d6(p6,{capabilities:m6});try{let{ToolListChangedNotificationSchema:f}=await import("@modelcontextprotocol/sdk/types.js");p.setNotificationHandler(f,()=>{this.onToolListChanged?.()})}catch{}await uk(p.connect(d.transport),i,()=>new Error(`MCP server "${this.serverName}" (SSE fallback) connect timed out after ${i}ms`),()=>d.transport.close().catch(()=>{})),a=p,s=!0}else throw u instanceof PM&&(this.pendingAuthTransport=n.transport),u}s&&!n.isSSE&&process.stderr.write(`[mcp:${this.serverName}] WARNING: connected via deprecated SSE transport. Upgrade your MCP server to streamable-HTTP.
1854
1855
  `),this.client=a,this.connected=!0,this.pendingAuthTransport=void 0;let l=await uk(this.client.listTools(),i,()=>new Error(`MCP server "${this.serverName}" listTools timed out after ${i}ms`),()=>a.close().catch(()=>{})),c=this.client.getServerVersion();return{tools:l.tools,serverInfo:c?{name:c.name,version:c.version}:void 0}}async listTools(){if(!this.client)throw new Error(`McpClient(${this.serverName}): not connected`);let t=this.config.timeout??IM;return(await uk(this.client.listTools(),t,()=>new Error(`MCP server "${this.serverName}" listTools timed out after ${t}ms`))).tools}async refreshTools(){return this.listTools()}async callTool(t,n,r){if(!this.client)return{content:`MCP server "${this.serverName}" is not connected`,isError:!0};if(r.aborted)return{content:"Tool call aborted",isError:!0};let o=this.config.timeout??IM,i;try{i=await this.client.callTool({name:t,arguments:n??{}},JIe,{signal:r,timeout:o})}catch(s){let a=s instanceof Error?s.message:String(s);return{content:`MCP tool "${this.serverName}.${t}" failed: ${a}`,isError:!0}}return XIe(i)}async finishAuth(t){if(!this.pendingAuthTransport)throw new Error(`McpClient(${this.serverName}): no pending OAuth transport \u2014 server is not in oauth_pending state`);await this.pendingAuthTransport.finishAuth(t)}async disconnect(){if(this.pendingAuthTransport=void 0,!this.client)return;let t=this.client;this.client=void 0,this.connected=!1;try{await t.close()}catch{}}};function XIe(e){let t=[];for(let r of e.content??[])if(r.type==="text")t.push(r.text);else if(r.type==="image")t.push(`[image block: mimeType=${r.mimeType}, ${r.data.length} bytes base64]`);else if(r.type==="resource"){let o="resource"in r&&typeof r.resource=="object"?r.resource.uri??"(unknown)":"(unknown)";t.push(`[resource block: ${o}]`)}else t.push(`[unknown block: ${JSON.stringify(r)}]`);let n=t.join(`
1855
1856
  `);return{content:n.length===0?"(empty tool result)":n,...e.isError?{isError:!0}:{}}}function QIe(e,t,n){let r=t.type??(t.command?"stdio":"streamable-http");return{primary:sk(e,t,n),fallback:r==="streamable-http"?()=>sk(e,{...t,type:"sse"},n):null}}function ZIe(e){return e instanceof f6&&(e.code===404||e.code===405)}function ePe(e){return e instanceof f6?e.code:void 0}function uk(e,t,n,r){let o=null,i=new Promise((s,a)=>{o=setTimeout(()=>{if(r!==void 0)try{let l=r();l&&typeof l.then=="function"&&l.catch(()=>{})}catch{}a(n())},t)});return Promise.race([e,i]).finally(()=>{o!==null&&clearTimeout(o)})}import{createHash as tPe}from"node:crypto";var g6="mcp__",h6="__",MM=64,nPe=6;function Lf(e){if(e.length===0)return"_";let n=e.replace(/[^a-zA-Z0-9_-]/g,"_").replace(/_{2,}/g,"_");return n.length===0?"_":n}function rPe(e){return tPe("sha256").update(e).digest("hex").slice(0,nPe)}function y6(e,t){let n=Lf(e),r=Lf(t),o=`${g6}${n}${h6}${r}`;if(o.length<=MM)return o;let s=`${`${g6}${rPe(e)}${h6}`}${r}`;return s.length<=MM?s:s.slice(0,MM)}function Nf(e){let t=new Map,n=new Map;for(let{serverName:o,toolNames:i}of e)for(let s of i){let a=y6(o,s),l={serverName:o,originalToolName:s},c=t.get(a);if(c===void 0){t.set(a,l);continue}if(c.serverName===o&&c.originalToolName===s)continue;let u=n.get(a)??[c];u.push(l),n.set(a,u)}let r=[];for(let[o,i]of n)r.push({wireName:o,pairs:i});return{tools:t,conflicts:r}}pe();var Wo=class e{records;nameRegistry;onToolsRefreshed;constructor(t){this.records=t;let n=[];for(let[o,i]of t)i.state.status==="connected"&&n.push({serverName:o,toolNames:i.tools.map(s=>s.name)});let r=Nf(n);if(r.conflicts.length>0){let o=r.conflicts.map(i=>{let s=i.pairs.map(a=>`${a.serverName}.${a.originalToolName}`).join(", ");return` ${i.wireName} \u2190 ${s}`});throw new Error(`MCP tool name conflicts (rename one of the servers in mcp.json):
@@ -1982,7 +1983,7 @@ ${E}
1982
1983
  ${T}`})}return{fileBlocks:l,warnings:c}}function Ute(e){let t=e.replace(/\s+/g," ").trim();return t.length<=60?t:`${t.slice(0,59)}\u2026`}async function jte(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();tt();L();Pa();function Hte(){return{toolStartTimes:new Map,subagentStartTimes:new Map,subagentLabels:new Map}}function Wte(e,t){Fe()&&(t.pending||e.toolStartTimes.has(t.toolUseId)||e.toolStartTimes.set(t.toolUseId,Date.now()))}function Kte(e,t,n,r){if(!Fe())return;let o=e.toolStartTimes.get(t.toolUseId),i=o!==void 0?Date.now()-o:void 0;e.toolStartTimes.delete(t.toolUseId);let s=Me(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 Gte(e,t,n,r){if(!Fe())return;let{subagentId:o,agentType:i}=n,s=Me(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 NE=class{state;writer;ttfb;constructor(t,n){this.state=Hte(),this.writer=t,this.ttfb=n}onToolStart(t){Wte(this.state,t)}onToolResult(t,n){Kte(this.state,t,n,this.writer)}onSubagentEvent(t,n){Gte(this.state,t,n,this.writer)}onFirstContent(t){this.ttfb.waitingLineEmitted&&(this.ttfb.waitingLineEmitted=!1,t.write("\r\x1B[2K"))}};function qte(e){return{startedAt:e,received:!1,waitingLineEmitted:!1}}function zte(e){return e.received?{}:{turnStartedAt:e.startedAt}}function Vte(e,t,n){let r=t.type==="chunk"&&t.chunk.type==="content"&&!n;return r&&(e.received=!0),r}function Yte(e,t=process.stdout,n){if(!Fe()||!t.isTTY)return;(e?.fn??console.log)(m.dim(" \u25E6 waiting for response\u2026")),n&&(n.waitingLineEmitted=!0,e&&(n.plainHooks=new NE(e,n)))}ue();L();var QBe=3e3;async function Jte(e,t){if(!e)return t;let n=Date.now();if(n-t<QBe)return t;try{let r=e();r instanceof Promise&&await r}catch(r){Ue()&&console.error(" "+m.error("onContextProgress (status refresh) failed:"),r)}return n}L();ue();vt();cs();var ZBe="Keep waiting \u2014 auto-resume in progress",Xte="Switch model / provider (type /model after)",eUe="Stop waiting";async function Qte(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}`:ZBe,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."),""];bn(r,{header:p,options:[d,Xte,eUe],signal:c.signal,initialIndex:0}).then(f=>{if(o.abort=null,!f)return;let g=f[0];g===void 0||g===d||(l(),g===Xte&&(i??{fn:console.log}).fn(m.dim(" Hint: type /model <name> to switch, then send your message again.")),n.interrupt().catch(h=>{Ue()&&console.error(" "+m.error("picker pause-interrupt session.interrupt() failed:"),h)}))}).catch(f=>{Ue()&&console.error(" "+m.error("picker promise rejected:"),f)})}else(i??{fn:console.log}).fn(cL({reason:t.reason,...t.resetsAt!==void 0?{resetsAt:t.resetsAt}:{},...t.accountId!==void 0?{accountId:t.accountId}:{},...t.autoResume!==void 0?{autoResume:t.autoResume}:{}}))}Xk();async function Zte(e,t,n,r,o="summary",i,s){let a=E8(e.text,e.attachments);r.onUserMessage&&await Promise.resolve(r.onUserMessage(a)).catch(()=>{}),r.setInFlight(!0);let l=Date.now(),c=qte(l);Yte(i,process.stdout,c),Wu(process.stdout,Uf(process.cwd(),!0));let u="",d=0,p=!1,f=!1,g=!1,h=!1,b=!1,S,w=!1,k=!1,E={abort:null},T=0,R=[],I=new Map,C=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,x=()=>{let W=r.subagentControl;W?.hasPromotableForeground()&&jte(W,_,r.onQueuedUserMessage).then(({jobs:G,flushedText:j,flushedPreview:K})=>{let Q=(i??{fn:console.log}).fn;for(let P of G)Q(m.dim(` \u2192 subagent backgrounded as ${P.jobId}: ${P.label}`));j!==void 0&&Q(m.dim(` \u2192 queued message sent to this turn: ${Ute(K??j)}`))}).catch(()=>{})},_=r.getCompositor?r.getCompositor():null,M=()=>new gd({out:hd(i),thinkingMode:o,...C?{activeSkillName:C}:{},onCancel:()=>{t.interrupt().catch(W=>{Ue()&&console.error(" "+m.error("session.interrupt() failed:"),W)})},...r.subagentControl?{onBackground:x}:{},...s?.history?{history:s.history}:{},...s?.autocompleteState?{autocompleteState:s.autocompleteState}:{},...s?.promptText!==void 0?{promptText:s.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},..._?{compositor:_}:{},...r.onStageChange?{onStageChange:r.onStageChange}:{},...zte(c)}),D=M(),$=async()=>{if(!h){h=!0;try{await D.dispose()}catch{}}},U=async()=>{await D.arm();let W=D.getCompositor();if(i&&W){let G=W;i.fn=j=>G.commitAbove(j),i.suppressSubagentCompletion=!0}r.setActiveCompositor?.(W),r.setInterruptNotifier?.(G=>D.setInterrupting(G)),r.rearmStatus?.()};try{_?_.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{w=!0,D.setSoftStopping(!0),t.interrupt().catch(N=>{Ue()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),N)});let P=r.subagentControl;P?.hasActiveForeground()&&P.cancelActiveForeground().catch(N=>{Ue()&&console.error(" "+m.error("soft-stop cancelActiveForeground() failed:"),N)})}),r.setPauseInterruptHandler&&r.setPauseInterruptHandler(()=>{k=!0,t.interrupt().catch(P=>{Ue()&&console.error(" "+m.error("pause-interrupt session.interrupt() failed:"),P)})}),await U(),r.setBackgroundHandler&&r.subagentControl&&r.setBackgroundHandler(x);let{fileBlocks:W,warnings:G}=Bte(e.text,{rootDir:process.cwd()});for(let P of G)(i??{fn:console.log}).fn(m.dim(` @-file: ${P}`));if(e.attachments.length>0&&(await t.waitForInitialization(),t.sessionId===void 0))throw new Error("CLI session initialized without a session id");let j=W.length>0||e.attachments.length>0?await Nte(e.text,e.attachments,void 0,W,t.sessionId):e.text,K=t.sendMessageStream(j);if(await Mc((P,N)=>{D.process(P,N),N&&c.plainHooks?.onSubagentEvent(P,N)},async()=>{for await(let P of K){if(w||k)break;let N=Vte(c,P,f);if(P.type==="chunk"&&P.chunk.type==="content"?(u=p?Ote(u,P.chunk.content):u+P.chunk.content,p=!1,f=!0):P.type==="message"&&!f&&(u=P.message.content),P.type==="stream_retry"&&(u=u.slice(0,d),p=u.length>0),P.type==="chunk"&&P.chunk.type==="tool_use_detail"){let V=P.chunk,ee={toolName:V.toolName,toolUseId:V.toolUseId,input:V.toolInput,...V.toolInputRaw!==void 0&&{inputRaw:V.toolInputRaw}};I.set(V.toolUseId,ee),R.push(ee),c.plainHooks?.onToolStart(V)}else if(P.type==="chunk"&&P.chunk.type==="tool_result"){let V=P.chunk;d=u.length,p=!0;let ee=I.get(V.toolUseId);ee&&(ee.result=V.content,ee.isError=V.isError,I.delete(V.toolUseId)),c.plainHooks?.onToolResult(V,ee?.toolName),T=await Jte(r.onContextProgress,T)}if(P.type==="paused"){await Qte({event:P,session:t,borrowedCompositor:_,pickerRef:E,completionWriter:i,disposeRendererOnce:$,setPausedState:r.setPausedState,onPauseInterrupt:()=>{k=!0}});continue}if(P.type==="resumed"){r.setPausedState?.(!1),E.abort?.abort(),E.abort=null;let V=P.hotSwapped&&P.accountId?`\u25B6 Resumed on ${P.accountId}`:"\u25B6 Resumed";u="",d=0,p=!1,f=!1,R.length=0,I.clear(),b=!1,S=void 0,g=!1,D=M(),h=!1,await U(),(i??{fn:console.log}).fn(m.success(V));continue}if(P.type==="error"){await $(),Kl(Fl(P.error)),g=!0;continue}D.process(P),N&&(c.plainHooks?.onFirstContent(process.stdout),D.notifyFirstContent()),P.type==="done"&&(b=!0,S=P.metadata)}}),await $(),w){let P=i?i.fn:console.log,N=_?_.getPendingCount():0,V=N>0?` \xB7 ${N} queued`:"";P(m.warning(`\u23F8 Stopped${V} \u2014 work so far kept.`)+m.dim(" Send a message to continue.")),P("")}if(k){let P=i?i.fn:console.log;P(m.dim("\u25B6 Ending wait \u2014 running your next command\u2026")),P("")}if(b&&!w&&!k){Fa(n,a,u,S,R),r.onTurnComplete&&await r.onTurnComplete(a,u).catch(()=>{}),Hu(process.stdout),M6(process.stdout,"afk: turn complete");let P=V=>{i?i.fn(V):console.log(V)},N=LE(u);if(N){P(Dte(N,{durationMs:S?.durationMs,totalCostUsd:S?.totalCostUsd,toolCount:R.length})),P("");let V=VQ(R);if(r.onTerminalState)try{r.onTerminalState(N,{doneHasCorroboratingEvidence:V})}catch{}if(n.permissionMode==="autonomous"){let ee=N.kind==="done"&&im().verifyDone===!0&&!V;JQ(N,void 0,{unverified:ee})}}if(JD(S,n,P),r.onAfterTurn){let V=r.onAfterTurn();V instanceof Promise&&await V.catch(()=>{})}}}catch(W){await $(),g||Kl(Fl(W))}finally{await $(),Wu(process.stdout,Uf(process.cwd(),!1)),i&&(i.fn=i.idleFn,i.suppressSubagentCompletion=!1),r.setActiveCompositor?.(null),r.setInterruptNotifier?.(null),r.setBackgroundHandler?.(null),r.setSoftStopHandler?.(null),r.setPausedState?.(!1),r.setPauseInterruptHandler?.(null),E.abort?.abort(),E.abort=null,r.setInFlight(!1),r.rearmStatus?.()}}Ji();mp();var tUe=5e3,nUe=3,rUe="[auto-resume] The background task above has finished. Continue the work it was dispatched for.";async function oUe(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 ene(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,b=[];e.session.current.waitForInitialization().then(async _=>{Ue()&&(h=qT(_)),await gg(e.session.current),Ue()&&(b=cO())}).catch(()=>{});let S=e.initialInput!==void 0?{text:e.initialInput,attachments:[]}:void 0,w,k=!1,E=!1,T,R,I,C=(()=>{let _=parseInt(e.options.maxTurns,10);return _>0?_:void 0})(),x=0;g.onInjectable=()=>{x>=nUe||!o.isAwaitingInput()||!o.bufferIsEmpty()||n.pendingSteerRead||(x++,Hu(process.stdout),S={text:rUe,attachments:[]},o.abortPendingRead())};try{for(n.steerReadLine=async _=>{let M=()=>o.abortPendingRead({clearBuffer:!0});if(_?.addEventListener("abort",M,{once:!0}),_?.aborted)return"";try{return(await o.readLine({promptFn:()=>"Steer the agent \u2192 ",onEscape:M})).text}finally{_?.removeEventListener("abort",M)}};;){if(h&&(e.replRenderer.writeLine(h),e.replRenderer.writeLine(""),h=null),b.length>0){for(let P of b)e.replRenderer.writeLine(P);e.replRenderer.writeLine(""),b=[]}let _=f.drainNotifications();for(let{job:P,result:N}of _){let V=N.errorReason===void 0?"\u2713":"\u2717",ee=N.errorReason==="abort"?"killed":N.errorReason==="timeout"?"timed out":N.errorReason==="signal-killed"?"killed by signal":`exit ${N.exitCode??0}`,Pe=Math.max(0,Math.round(N.durationMs/100)/10);e.replRenderer.writeLine(m.dim(` ${V} [${P.id}] ${ee} \xB7 ${Pe}s \xB7 `)+P.command)}let M=g.drainNotifications();for(let{job:P}of M){let N=P.status==="completed"?"\u2713":P.status==="failed"?"\u2717":"\u2298",V=P.endedAt!==void 0?Math.max(0,Math.round((P.endedAt-P.startedAt)/100)/10):0,ee=re(P.label,60);e.replRenderer.writeLine(m.dim(` ${N} [${P.jobId}] subagent ${P.status} \xB7 ${V}s \xB7 `)+ee)}let D=l.renderIfChanged(e.stats.sessionId);if(D.length>0){for(let P of D)e.replRenderer.writeLine(P);e.replRenderer.writeLine("")}let $,U,W=n.pendingSteerRead;if(W){let P=await W;n.pendingSteerRead===W&&(n.pendingSteerRead=null),P?.trim()&&(n.pendingSteerText=P)}if(n.pendingSteerText&&(S={text:n.pendingSteerText,attachments:[]},n.pendingSteerText=null),S===void 0){let P=await e.session.current.takePendingPlanExitSeed();P!==void 0&&(e.stats.permissionMode=P.mode,S={text:P.message,attachments:[]})}if(S!==void 0){let P=S;S=void 0;let N=xd(e.stats.permissionMode),V=ja({buffer:P.text,promptText:N,isTTY:!!process.stdout.isTTY,attachmentSummary:td([...P.attachments])});e.replRenderer.writeLine(V),$=P.text.trim(),U=P.attachments}else{let P=w;w=void 0;let N=await o.readLine({promptFn:()=>xd(e.stats.permissionMode),...P!==void 0?{initialBuffer:P}:{},primePromptSuggestion:!0,onSigint:r,onShiftTab:()=>{PE(e.slashCtx).catch(()=>{}),e.statusLine.rearm()}});$=N.text.trim(),U=N.attachments}if(!$&&U.length===0)continue;if($.startsWith("!")){let P=/^(0|false|off|no)$/i.test(v.AFK_SHELL_PASSTHROUGH??"");if(e.options.shellPassthrough!==!1&&!P&&(k||(k=!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($))){e.statusLine.rearm();continue}}let G=!1;if($.startsWith("/")){let P=await $6($,e.slashCtx,U);if(P.handled){if(P.result==="exit"){await e.resolveWorktreeDisposition?.(!0),e.rl.close();return}if(($==="/clear"||$.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),p.reset(),T=void 0),P.result!==null&&typeof P.result=="object"&&"kind"in P.result&&P.result.kind==="submit"){S={text:P.result.message,attachments:U??[]},e.statusLine.rearm();continue}if(P.result!==null&&typeof P.result=="object"&&"kind"in P.result&&P.result.kind==="prefill"){w=P.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}G=!0}a.push($),await oUe(e,$);let j=$;if(G){let P=$M($);if(P){let N=P.name.replace(/^\//,"").split(":").pop()??"";if(N&&oO(N)){let V={skillName:N,rawArgs:P.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},ee=e.session.current.sessionId,Pe=tl(ee),ie=Date.now();B(`[afk trace] preflight.start commandName=${N}`);let Te=!1,Ke=await el(V,{cwd:e.stats.cwd??process.cwd(),artifactDir:Pe},On=>{Ue()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${N}) failed: `)+(On instanceof Error?On.message:String(On)))});Te=Ke!==null,B(`[afk trace] preflight.end commandName=${N} durationMs=${Date.now()-ie} success=${Te}`),j=aO(Ke?.manifestBlock,$)}}}let K=f.drainInjections();K.length>0&&(j=K+j);let Q=g.drainInjections();if(Q.length>0&&(j=Q+j),T!==void 0&&(j=T+`
1983
1984
 
1984
1985
  `+j,T=void 0),e.hookRegistry)try{let P={event:"UserPromptSubmit",prompt:j,sessionId:e.stats.sessionId},N=await e.hookRegistry.dispatch(P);N.injectContext&&(j=N.injectContext+j)}catch(P){if(P instanceof xe){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+(P.reason?m.dim(`: ${ae(P.reason)}`):"")),e.statusLine.rearm();continue}if(P instanceof Fr){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+m.dim(`: handler timed out after ${P.timeoutMs}ms`)),e.statusLine.rearm();continue}throw P}if(R=void 0,I=void 0,hL(),wL(),await Zte({text:j,attachments:U},e.session.current,e.stats,{setInFlight(P){n.turnInFlight=P},...e.subagentControl?{subagentControl:e.subagentControl}:{},async onUserMessage(P){await t.appendUser(P)},async onQueuedUserMessage(P){await t.appendQueuedUser(P)},async onTurnComplete(P,N){if(await t.appendTurn(P,N),e.stats.sessionId)try{Yi(e.stats)}catch(V){E||(E=!0,e.replRenderer.writeLine(m.warning("\u26A0 ")+"session autosave failed \u2014 this conversation may not be resumable: "+(V instanceof Error?V.message:String(V))))}},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await e.gitStatusSampler.refresh(),e.statusLine.repaint(Zn(e.stats,e.contextSampler,e.gitStatusSampler,C)),e.statusLine.rearm(),c?.repaint("observing"),d?.update(e.stats)},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:(P,N)=>{p?.push(P),R=P.kind,I=N?.doneHasCorroboratingEvidence},setActiveCompositor:P=>{n.activeCompositor=P,P===null&&n.interruptPickerAbort&&(n.interruptPickerAbort.abort(),n.interruptPickerAbort=null)},setInterruptNotifier:P=>{n.notifyInterrupting=P},scrollRegion:e.statusLine,getCompositor:()=>o.getCompositor(),setBackgroundHandler:P=>o.setBackgroundHandler(P),setSoftStopHandler:i,setPausedState:P=>o.setPausedState(P),setPauseInterruptHandler:P=>o.setPauseInterruptHandler(P),async onContextProgress(){await e.contextSampler.refresh(),e.statusLine.repaint(Zn(e.stats,e.contextSampler,e.gitStatusSampler,C)),d?.update(e.stats,e.contextSampler.getRatio())},...c?{onStageChange:(P,N)=>{c.repaint(P),u?.onStage(P,N)}}:{}},e.stats.thinkingUi??e.options.thinkingUi,e.completionWriter,o.toRunTurnRefs(xd(e.stats.permissionMode))),e.hookRegistry)try{let P=await e.hookRegistry.dispatch({event:"Stop",sessionId:e.stats.sessionId,...R!==void 0?{terminalState:R}:{},...I!==void 0?{doneHasCorroboratingEvidence:I}:{}},void 0,tUe);P.injectContext&&P.injectContext.trim().length>0&&(T=P.injectContext)}catch(P){if(P instanceof Mt)throw P;P instanceof Fr?(B("[stop hook] handler timed out"),e.completionWriter.fn(m.dim(" [stop hook] timed out"))):P instanceof xe?e.completionWriter.fn(m.dim(` [stop hook] blocked: ${ae(P.reason??"no reason given")}`)):B("[stop hook] unexpected error: "+String(P))}}}finally{n.steerReadLine=null,n.pendingSteerRead=null,n.pendingSteerText=null}}function iUe(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 tne(e,t,n,r){let o=await zee(),i=new IE({rl:e.rl,history:o,statusLine:e.statusLine}),s=iUe(v.AFK_SUGGEST_GHOST,e.suggestGhostConfig),a;try{let{installSoftStop:l}=await gte(e,i,n,t,r,s,{getLoopStageBar:()=>a?.loopStageBar,getMascotBar:()=>a?.mascotBar});a=Mte(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 ene(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)}}Xp();vc();import{execFile as sUe}from"node:child_process";import{dirname as aUe,isAbsolute as lUe,resolve as cUe}from"node:path";import{promisify as uUe}from"node:util";var nne=uUe(sUe),dUe=3e3,pUe=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function mUe(){let t=(await nne("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=lUe(t)?t:cUe(process.cwd(),t);return aUe(n)}async function rne(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await mUe()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),dUe)});try{let o=qn({execFile:nne,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=>pUe.has(c.verdict)&&s.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}zh();Xp();import{promises as fUe}from"node:fs";import{dirname as gUe,join as sne}from"node:path";import{randomBytes as hUe}from"node:crypto";var yUe=["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(`
1985
- `),one=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,QD=30,bUe=1024,SUe=8e3,wUe="haiku";async function vUe(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=RUe(n,bUe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??SUe),s=t.signal?xUe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Jl({token:t.token,model:t.model??wUe,system:yUe,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=kUe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=gUe(t.worktreePath);return await TUe(l,c)}function kUe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(one.test(t)&&t.length<=QD)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>QD)break;o=s}return one.test(o)?o:null}async function TUe(e,t){if(!await EUe(sne(t,e)))return e;let n=hUe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,QD-5)}-${n}`}async function EUe(e){try{return await fUe.access(e),!0}catch{return!1}}function RUe(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 xUe(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 ane(e){let t,n,r=sne(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await vUe(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=`${Zy(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return ine(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 ine(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 ine(e,t){e&&e.setCwd(t),AUe(t)}function AUe(e){try{process.chdir(e)}catch{}}yt();At();Dl();so();H();import{spawn as cne}from"child_process";import{existsSync as une,mkdirSync as MUe,readFileSync as dne,unlinkSync as lne,writeFileSync as pne}from"fs";import{get as OUe}from"https";import{join as mne}from"path";import{readFileSync as CUe}from"fs";import{dirname as _Ue,join as IUe}from"path";import{fileURLToPath as PUe}from"url";function co(){try{return"5.157.0"}catch{}try{let e=_Ue(PUe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(CUe(IUe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}L();F();var DUe=64*1024,$Ue=10800*1e3,FUe=800,LUe=3600*1e3,NUe="update-check.json",BUe="pending-update.json";function ZD(){return mne(Rs(),NUe)}function $g(){return mne(Rs(),BUe)}function e$(){let e=Rs();une(e)||MUe(e,{recursive:!0})}function fne(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 gne(){try{let e=dne(ZD(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function hne(){try{e$();let e=`
1986
+ `),one=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,QD=30,bUe=1024,SUe=8e3,wUe="haiku";async function vUe(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=RUe(n,bUe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??SUe),s=t.signal?xUe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Jl({token:t.token,model:t.model??wUe,system:yUe,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=kUe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=gUe(t.worktreePath);return await TUe(l,c)}function kUe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(one.test(t)&&t.length<=QD)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>QD)break;o=s}return one.test(o)?o:null}async function TUe(e,t){if(!await EUe(sne(t,e)))return e;let n=hUe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,QD-5)}-${n}`}async function EUe(e){try{return await fUe.access(e),!0}catch{return!1}}function RUe(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 xUe(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 ane(e){let t,n,r=sne(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await vUe(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=`${Zy(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return ine(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 ine(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 ine(e,t){e&&e.setCwd(t),AUe(t)}function AUe(e){try{process.chdir(e)}catch{}}yt();At();Dl();so();H();import{spawn as cne}from"child_process";import{existsSync as une,mkdirSync as MUe,readFileSync as dne,unlinkSync as lne,writeFileSync as pne}from"fs";import{get as OUe}from"https";import{join as mne}from"path";import{readFileSync as CUe}from"fs";import{dirname as _Ue,join as IUe}from"path";import{fileURLToPath as PUe}from"url";function co(){try{return"5.157.1"}catch{}try{let e=_Ue(PUe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(CUe(IUe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}L();F();var DUe=64*1024,$Ue=10800*1e3,FUe=800,LUe=3600*1e3,NUe="update-check.json",BUe="pending-update.json";function ZD(){return mne(Rs(),NUe)}function $g(){return mne(Rs(),BUe)}function e$(){let e=Rs();une(e)||MUe(e,{recursive:!0})}function fne(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 gne(){try{let e=dne(ZD(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function hne(){try{e$();let e=`
1986
1987
  const https = require('https');
1987
1988
  const fs = require('fs');
1988
1989
  const url = 'https://registry.npmjs.org/agent-afk/latest';