agent-afk 5.105.0 → 5.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -24,7 +24,7 @@ ${r}
24
24
  ### end \xB7 ${t.reason??"unknown"} \xB7 ${n}
25
25
  `}function KP(e){if(!w9(e))return null;let t=VI(e.sessionId),n=y9(t,`${S9(e.subagentId)}.md`),r=[],o=0,i=!1,s=!1,a=!1,l=Promise.resolve(),c=d=>{if(i)return;o>=HP&&(i=!0,d=`
26
26
  <!-- CAP REACHED at ${HP} bytes \u2014 capture stopped -->
27
- `),o+=Buffer.byteLength(d,"utf8");let p=s?d:`${v9(e)}${d}`;s=!0,l=l.then(async()=>{await h9(t,{recursive:!0,mode:448}),await g9(n,p,{encoding:"utf8",mode:384})}).catch(f=>{lt("subagent-output-capture",e.sessionId??"unknown","write",f)})},u=()=>{if(r.length===0)return;let d=r.join("").trim();r=[],d.length>0&&(c(Qm("say",{text:d})),a=!0)};return{observe(d){try{if(d.type==="chunk"){let p=d.chunk;if(p.type==="content"){r.push(p.content);return}if(p.type==="tool_use_detail"){if(p.pending)return;u(),c(Qm("tool",{toolName:p.toolName,toolInput:p.toolInputRaw??p.toolInput}))}return}if(d.type==="message"){if(!a&&r.length===0){let p=d.message.content.trim();p.length>0&&(c(Qm("say",{text:p})),a=!0)}return}(d.type==="done"||d.type==="error")&&(u(),a=!1)}catch(p){lt("subagent-output-capture",e.sessionId??"unknown","observe",p)}},end(d){try{u(),c(Qm("end",{reason:d}))}catch(p){lt("subagent-output-capture",e.sessionId??"unknown","end",p)}}}}var jP,HP,b9,GP=v(()=>{"use strict";W();G();Vm();Co();ek();jP=4*1024,HP=512*1024,b9="<!-- Best-effort secret redaction only. Connection strings, PEM blocks, and PII are NOT caught. -->"});async function Di(e,t){if(e)try{await e.write({kind:"tool_call",payload:t})}catch(n){lt("trace.emit",e,"tool_call",n)}}async function mn(e,t){if(e)try{await e.write({kind:"hook_decision",payload:t})}catch(n){lt("trace.emit",e,"hook_decision",n)}}async function Fi(e,t){if(e)try{await e.write({kind:"subagent_lifecycle",payload:t})}catch(n){lt("trace.emit",e,"subagent_lifecycle",n)}}async function Li(e,t){if(e)try{await e.write({kind:"background_agent",payload:t})}catch(n){lt("trace.emit",e,"background_agent",n)}}async function qP(e,t){if(e)try{await e.write({kind:"budget",payload:t})}catch(n){lt("trace.emit",e,"budget",n)}}async function zP(e,t){if(e)try{await e.write({kind:"abort",payload:t})}catch(n){lt("trace.emit",e,"abort",n)}}async function Zm(e,t){if(e)try{await e.write({kind:"compaction",payload:t})}catch(n){lt("trace.emit",e,"compaction",n)}}async function JP(e,t){if(e)try{await e.write({kind:"closure",payload:t})}catch(n){lt("trace.emit",e,"closure",n)}}async function ct(e,t){if(e)try{await e.write({kind:"browser_event",payload:t})}catch(n){lt("trace.emit",e,"browser_event",n)}}async function VP(e,t){if(e)try{await e.write({kind:"queued_user_message",payload:t})}catch(n){lt("trace.emit",e,"queued_user_message",n)}}async function re(e,t){if(e)try{await e.write({kind:"session_phase",payload:t})}catch(n){lt("trace.emit",e,"session_phase",n)}}var de=v(()=>{"use strict";Vm()});function YP(e){let t=[...e.oauthEntries??[],...e.effort?[e.effortEntry]:[],...e.extendedCacheTtl?[e.extendedCacheEntry]:[],...e.fast?[k9]:[]].filter(Boolean);return[...new Set(t)].join(",")||void 0}var k9,XP=v(()=>{"use strict";k9="fast-mode-2026-02-01"});function ef(e){return e.startsWith("sk-ant-oat01-")?"oauth":"api-key"}function mu(e,t,n,r){let o=t==="oauth"?{authToken:e}:{apiKey:e},i=typeof n=="string"&&n.length>0?{...o,baseURL:n}:o;return r?{...i,fetch:r}:i}function _o(e,t,n,r,o,i){let s=YP({oauthEntries:e==="oauth"?T9.split(","):[],effort:e==="oauth"&&r===!0,extendedCacheTtl:o,fast:i,effortEntry:E9,extendedCacheEntry:QP});return e!=="oauth"?s?{"anthropic-beta":s}:{}:{"anthropic-beta":s,"x-app":"cli","User-Agent":R9,"X-Claude-Code-Session-Id":t,"x-client-request-id":n}}function ZP(e){return e!=="oauth"?null:[{type:"text",text:x9}]}var QP,T9,E9,R9,x9,Ni=v(()=>{"use strict";XP();QP="extended-cache-ttl-2025-04-11",T9=`claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,${QP}`,E9="effort-2025-11-24",R9="claude-cli/1.0.0 (external, cli)",x9="x-anthropic-billing-header: cc_version=1.0.0.test; cc_entrypoint=cli; cch=00000;"});function nf(e){ok=e}function tk(e){if(e===void 0)return;let t=e.trim();return t.length>0?t:void 0}function tf(e,t,n){let r={},o=tk(e);o&&(r.id=o);let i=tk(t);i&&(r.baseUrl=i);let s=tk(n);return s&&(r.apiKey=s),r}function A9(){return{local:tf(T.AFK_MODEL_LOCAL,T.AFK_MODEL_LOCAL_BASE_URL,T.AFK_MODEL_LOCAL_API_KEY),small:tf(T.AFK_MODEL_SMALL,T.AFK_MODEL_SMALL_BASE_URL,T.AFK_MODEL_SMALL_API_KEY),medium:tf(T.AFK_MODEL_MEDIUM,T.AFK_MODEL_MEDIUM_BASE_URL,T.AFK_MODEL_MEDIUM_API_KEY),large:tf(T.AFK_MODEL_LARGE,T.AFK_MODEL_LARGE_BASE_URL,T.AFK_MODEL_LARGE_API_KEY)}}function ak(e){let t=A9(),n={};for(let r of fu){let o=Bi[r],i=e?.[r],s=t[r],a={id:s.id??i?.id??o.id},l=i?.name;l&&(a.name=l);let c=i?.provider;c&&(a.provider=c);let u=s.baseUrl??i?.baseUrl;u&&(a.baseUrl=u);let d=s.apiKey??i?.apiKey;d&&(a.apiKey=d),n[r]=a}return n}function _a(e){return e||ok||ak()}function Ia(e,t=_a()){let n=e.trim().toLowerCase();if(!(!n||n===nM)){for(let r of fu){let o=t[r].name;if(o&&o.trim().toLowerCase()===n)return r}if(n==="local"||n==="small"||n==="medium"||n==="large")return n}}function Ui(e,t=_a()){if(e===void 0)return{id:""};let n=Ia(e,t);if(n)return t[n];let r=sk[e.trim().toLowerCase()];return r?{id:r}:{id:e}}function cr(e,t=_a()){if(e!==void 0)return Ui(e,t).id}function Pa(e,t=_a()){if(e===void 0)return;let n=Ia(e,t);if(n&&t[n].id.trim()===""){let r=n.toUpperCase();return`The "${n}" model tier is not configured (no model id). Set AFK_MODEL_${r}=<id> (optionally AFK_MODEL_${r}_BASE_URL / AFK_MODEL_${r}_API_KEY) or "models.${n}" in afk.config.json, then retry.`}}function rM(e){let t={};if(!e||typeof e!="object")return t;let n=e;for(let r of fu){let o=_9(n[r]);o&&(t[r]=o)}return t}function oM(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="anthropic"||t==="anthropic-direct")return"anthropic";if(t==="openai"||t==="openai-compatible")return"openai";if(t==="chatgpt-oauth"||t==="chatgpt")return"chatgpt-oauth"}function Ca(e){return typeof e=="string"?e.trim():""}function eM(e){return/[\x00-\x1f\x7f]/.test(e)}function _9(e){if(typeof e=="string"){let t=e.trim();return t?{id:t}:void 0}if(e&&typeof e=="object"){let t=e,n=Ca(t.id);if(!n)return;let r={id:n},o=Ca(t.name);o&&(r.name=o);let i=oM(t.provider);i&&(r.provider=i);let s=Ca(t.baseUrl);s&&(r.baseUrl=s);let a=Ca(t.apiKey);return a&&(r.apiKey=a),r}}function iM(e){if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,error:'model binding must be an object with at least an "id"'};let t=e;if("apiKey"in t||"api_key"in t)return{ok:!1,error:"per-slot API keys are credentials; set AFK_MODEL_<TIER>_API_KEY via `afk config env set` instead of afk.config.json"};if("baseUrl"in t||"base_url"in t)return{ok:!1,error:"per-slot baseUrl is an endpoint-redirect credential vector; set AFK_MODEL_<TIER>_BASE_URL via `afk config env set` instead of afk.config.json"};let n=Ca(t.id);if(!n)return{ok:!1,error:'model binding requires a non-empty "id"'};if(eM(n))return{ok:!1,error:'model binding "id" must not contain control characters'};let r={id:n},o=Ca(t.name);if(o){if(eM(o))return{ok:!1,error:'model binding "name" must not contain control characters'};if(C9.has(o.trim().toLowerCase()))return{ok:!1,error:`model binding "name" must not shadow a built-in alias ("${o}")`};r.name=o}if(t.provider!==void 0&&t.provider!==""){let i=oM(t.provider);if(!i)return{ok:!1,error:'model binding "provider" must be one of: anthropic, openai (aliases: anthropic-direct, openai-compatible)'};r.provider=i}return{ok:!0,value:r}}var fu,tM,nk,rk,ik,Bi,nM,sk,gu,ok,C9,Pt=v(()=>{"use strict";W();fu=["local","small","medium","large"],tM="claude-haiku-4-5-20251001",nk="claude-sonnet-5",rk="claude-opus-5",ik="claude-fable-5",Bi={local:{id:""},small:{id:tM},medium:{id:nk},large:{id:rk}},nM="auto",sk={opus:rk,opus_1m:rk,sonnet:nk,sonnet_1m:nk,haiku:tM,fable:ik},gu=[...fu,...Object.keys(sk)];C9=new Set([...fu,nM,...Object.keys(sk)])});function hu(e){return e in lk}function ht(e){return cr(e)}var lk,fn=v(()=>{"use strict";Pt();lk={opus:Bi.large.id,opus_1m:Bi.large.id,sonnet:Bi.medium.id,sonnet_1m:Bi.medium.id,haiku:Bi.small.id,fable:ik}});import I9 from"@anthropic-ai/sdk";import{randomUUID as sM}from"node:crypto";async function Ma(e){let{token:t,model:n,system:r,user:o,maxTokens:i=64,signal:s,clientFactory:a}=e;if(!t)throw new Error("oneShotCompletion: token required");let l=ef(t),c=mu(t,l),u=a?a(c):new I9(c),d=sM(),p=sM(),f=_o(l,d,p),g=ht(n)??n,h={};Object.keys(f).length>0&&(h.headers=f),s&&(h.signal=s);let y=await u.messages.create({model:g,max_tokens:i,system:r,messages:[{role:"user",content:o}]},Object.keys(h).length>0?h:void 0),b=[];for(let k of y.content)k.type==="text"&&b.push(k.text);let w=b.join("").trim();return w.length===0&&console.warn("oneShotCompletion: response contained no text blocks \u2014 returning empty string"),w}var rf=v(()=>{"use strict";Ni();fn()});function O9(){let e=T.AFK_VISION_MODELS,t=[],n=[];if(e)for(let r of e.split(",")){let o=r.trim().toLowerCase();if(o)if(o.startsWith("!")){let i=o.slice(1).trim();i&&n.push(i)}else t.push(o)}return{enable:t,disable:n}}function aM(e,t){return e===t||e.includes(t)}function of(e){if(!e)return!1;let t=(cr(e)??e).trim();if(!t)return!1;let n=t.toLowerCase(),{enable:r,disable:o}=O9();return o.some(i=>aM(n,i))?!1:r.some(i=>aM(n,i))||P9.has(n)?!0:M9.some(i=>i.test(t))}function lM(e){let t=e.trim().toLowerCase();return t.includes("/")?t.slice(t.lastIndexOf("/")+1):t}function ji(e){return e?/^o[0-9]/.test(lM(e)):!1}function yu(e){if(!e)return!1;if(ji(e))return!0;let t=lM(e);return $9.some(n=>n.test(t))}var P9,M9,$9,Hi=v(()=>{"use strict";W();Pt();P9=new Set(["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4-turbo","o1","o3","o4-mini"]),M9=[/^claude-/i,/^gpt-4o/i,/^gpt-4\.1/i,/^gpt-4-turbo/i,/^gpt-4-vision/i,/^gpt-5/i,/(?:^|[/_-])(?:vl|vlm)(?:[/_.-]|$)/i,/(?:^|[/_-])(?:llava|pixtral|internvl|cogvlm|idefics|moondream|janus)/i,/(?:vision|minicpm-?[vo]|qwen[\d.]*-?vl|llama-?3\.2-\d+b-vision|gemma-3|phi-3\.5-vision|phi-4-multimodal)/i];$9=[/^gpt-5/]});function ck(e){let t=String(e).trim().toLowerCase(),n=sf[t];if(t.endsWith("_1m")&&n!==void 0)return n;let r=cr(e)??String(e);return sf[r]??sf[r.toLowerCase()]}function bu(e){return ck(e)??D9}function N9(e){if(!e)return!1;let t=e.trim().toLowerCase();return t?!!(t.includes("/")||t.startsWith("gpt-")||t.startsWith("gpt_")||ji(t)||t.startsWith("codex-")||t.startsWith("codex_")||t==="codex"):!1}function Yt(e){let t=String(e).trim().toLowerCase(),n=Oa[t];if(t.endsWith("_1m")&&n!==void 0)return n;let r=cr(e)??String(e),o=Oa[r]??Oa[r.toLowerCase()];return o!==void 0?o:N9(r)?L9:F9}function Wi(e){let t=Yt(e);if(String(e).trim().toLowerCase().endsWith("_1m"))return t;let r=cr(e)??String(e),o=cM[r]??cM[r.toLowerCase()];return o!==void 0?Math.min(t,o):t}var sf,D9,Oa,F9,L9,cM,Io=v(()=>{"use strict";Pt();Hi();sf={opus:128e3,opus_1m:128e3,sonnet:128e3,sonnet_1m:128e3,haiku:64e3,fable:128e3,"claude-opus-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-sonnet-4-6":64e3,"claude-haiku-4-5-20251001":64e3,"claude-fable-5":128e3,"gpt-5.5":128e3,"gpt-5.6":128e3,"gpt-5.6-sol":128e3,"gpt-5.6-terra":128e3,"gpt-5.6-luna":128e3},D9=64e3;Oa={opus:1e6,opus_1m:1e6,sonnet:1e6,sonnet_1m:1e6,haiku:2e5,fable:1e6,"claude-fable-5":1e6,"claude-sonnet-5":1e6,"claude-opus-5":1e6,"claude-sonnet-4-6":2e5,"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4.1":1e6,"gpt-4.1-mini":1e6,"gpt-5.5":1e6,"gpt-5.6":1e6,"gpt-5.6-sol":1e6,"gpt-5.6-terra":1e6,"gpt-5.6-luna":1e6,o1:2e5,"o1-mini":128e3,o3:2e5,"o3-mini":2e5,"o4-mini":2e5,"mlx-community/qwen3-30b-a3b-4bit":128e3,"mlx-community/qwen3-32b-4bit":128e3,"mlx-community/qwen2.5-coder-32b-instruct-4bit":131072},F9=2e5,L9=262144;cM={"claude-sonnet-5":2e5,"claude-opus-5":2e5}});function uM(e){return(e.inputTokens??0)+(e.outputTokens??0)}function Xt(e){return e.contextWindowTokens??uM(e)}function wu(e){return e?{totalTokens:Xt(e),apiUsage:{input_tokens:e.inputTokens??0,output_tokens:e.outputTokens??0,cache_read_input_tokens:e.cachedInputTokens??0,cache_creation_input_tokens:e.cacheCreationTokens??0,context_window_tokens:Xt(e)}}:{totalTokens:0,apiUsage:null}}function Su(e,t,n){return t<=0||e<=0||n<=0||n>=1?!1:e/t>=n}function vu(e,t){return t<=0||e<=0?0:e/t}function $a(e){if(e===void 0||e===!1)return;if(e===!0)return B9;let t=e.threshold;if(!(typeof t!="number"||!Number.isFinite(t)||t<=0||t>=1))return t}var B9,ku=v(()=>{"use strict";B9=.9});function lf(e,t){let n=bu(t),r=e.maxOutputTokens;if(typeof r=="number"&&Number.isFinite(r)&&r>0){let o=Math.floor(r);if(o>n){let i=`max:${t}:${o}`;return af.has(i)||(af.add(i),console.warn(`[afk] maxOutputTokens ${o} exceeds the ${t} output ceiling (${n}); clamping to ${n}.`)),n}return o}return n}function dM(e){if(!e||e.length===0)return;let t=[];for(let n of e)n.user.length>0&&t.push({role:"user",content:n.user}),n.assistant.length>0&&t.push({role:"assistant",content:n.assistant});return t.length>0?t:void 0}function cf(e,t,n){switch(e.type){case"adaptive":return{type:"adaptive",display:"summarized"};case"disabled":return{type:"disabled"};case"enabled":{if(typeof n=="string"&&j9(n))return{type:"adaptive",display:"summarized"};if(t<=1024)throw new Error(`[afk] Extended thinking requires max_tokens > 1024 (the API constraint is 1024 <= budget_tokens < max_tokens), but the resolved output cap is ${t}. Raise --max-output-tokens / AFK_MAX_OUTPUT_TOKENS above 1024, or disable thinking with --thinking disabled.`);let r=Math.floor(t*H9),o=Math.max(1024,t-1-r),i=e.budgetTokens!==void 0&&Number.isFinite(e.budgetTokens)?Math.floor(e.budgetTokens):void 0,s=Math.min(Math.max(i??o,1024),o);if(i!==void 0&&i>o){let a=`think:${n??"default"}:${i}:${t}`;af.has(a)||(af.add(a),console.warn(`[afk] thinking budgetTokens ${i} leaves too little of max_tokens ${t} for the reply; clamping to ${o}.`))}return{type:"enabled",budget_tokens:s,display:"summarized"}}}}function uf(e,t){if(e!==void 0)return e;let n=t.toLowerCase();if(/(claude-)?(opus|sonnet)-(4-[678]|5)/.test(n))return"max"}var U9,j9,af,H9,df=v(()=>{"use strict";Io();ku();U9=e=>/opus-4-(7|[89])/.test(e),j9=e=>U9(e)||/(claude-)?(opus|sonnet)-5/.test(e),af=new Set,H9=.25});import uk from"path";import{dirname as W9}from"path";import{appendFileSync as K9,mkdirSync as G9}from"fs";var Po,pf=v(()=>{"use strict";G();Po=class{hooks;constructor(t){this.hooks=t}addReadRoot(t,n="slash",r){this.hooks.ensureInitialized?.();let o=this.hooks.getReadRoots();if(!o)return;let i=uk.resolve(t);o.includes(i)||(o.push(i),this.appendAuditLog({action:"grant-read",path:i,source:n,sessionId:r}))}addWriteRoot(t,n="slash",r){this.hooks.ensureInitialized?.();let o=this.hooks.getReadRoots(),i=this.hooks.getWriteRoots();if(!o||!i)return;let s=uk.resolve(t);o.includes(s)||o.push(s),i.includes(s)||(i.push(s),this.appendAuditLog({action:"grant-write",path:s,source:n,sessionId:r}))}revokeRoot(t,n="slash",r){let o=this.hooks.getReadRoots();if(!o)return;let i=uk.resolve(t),s=this.hooks.getProtectedRoot();if(s!==void 0&&i===s)return;let a=o.indexOf(i);a!==-1&&o.splice(a,1);let l=this.hooks.getWriteRoots();if(l){let c=l.indexOf(i);c!==-1&&l.splice(c,1)}this.appendAuditLog({action:"revoke",path:i,source:n,sessionId:r})}getGrants(){return{resolveBase:this.hooks.getProtectedRoot(),readRoots:this.hooks.getReadRoots()?.slice()??[],writeRoots:this.hooks.getWriteRoots()?.slice()??[],allowAll:this.hooks.getAllowAll()}}appendAuditLog(t){try{let n=_m();G9(W9(n),{recursive:!0});let r=JSON.stringify({timestamp:new Date().toISOString(),sessionId:t.sessionId??this.hooks.getDefaultSessionId?.()??null,action:t.action,path:t.path,source:t.source});K9(n,r+`
27
+ `),o+=Buffer.byteLength(d,"utf8");let p=s?d:`${v9(e)}${d}`;s=!0,l=l.then(async()=>{await h9(t,{recursive:!0,mode:448}),await g9(n,p,{encoding:"utf8",mode:384})}).catch(f=>{lt("subagent-output-capture",e.sessionId??"unknown","write",f)})},u=()=>{if(r.length===0)return;let d=r.join("").trim();r=[],d.length>0&&(c(Qm("say",{text:d})),a=!0)};return{observe(d){try{if(d.type==="chunk"){let p=d.chunk;if(p.type==="content"){r.push(p.content);return}if(p.type==="tool_use_detail"){if(p.pending)return;u(),c(Qm("tool",{toolName:p.toolName,toolInput:p.toolInputRaw??p.toolInput}))}return}if(d.type==="message"){if(!a&&r.length===0){let p=d.message.content.trim();p.length>0&&(c(Qm("say",{text:p})),a=!0)}return}(d.type==="done"||d.type==="error")&&(u(),a=!1)}catch(p){lt("subagent-output-capture",e.sessionId??"unknown","observe",p)}},end(d){try{u(),c(Qm("end",{reason:d}))}catch(p){lt("subagent-output-capture",e.sessionId??"unknown","end",p)}}}}var jP,HP,b9,GP=v(()=>{"use strict";W();G();Vm();Co();ek();jP=4*1024,HP=512*1024,b9="<!-- Best-effort secret redaction only. Connection strings, PEM blocks, and PII are NOT caught. -->"});async function Di(e,t){if(e)try{await e.write({kind:"tool_call",payload:t})}catch(n){lt("trace.emit",e,"tool_call",n)}}async function mn(e,t){if(e)try{await e.write({kind:"hook_decision",payload:t})}catch(n){lt("trace.emit",e,"hook_decision",n)}}async function Fi(e,t){if(e)try{await e.write({kind:"subagent_lifecycle",payload:t})}catch(n){lt("trace.emit",e,"subagent_lifecycle",n)}}async function Li(e,t){if(e)try{await e.write({kind:"background_agent",payload:t})}catch(n){lt("trace.emit",e,"background_agent",n)}}async function qP(e,t){if(e)try{await e.write({kind:"budget",payload:t})}catch(n){lt("trace.emit",e,"budget",n)}}async function zP(e,t){if(e)try{await e.write({kind:"abort",payload:t})}catch(n){lt("trace.emit",e,"abort",n)}}async function Zm(e,t){if(e)try{await e.write({kind:"compaction",payload:t})}catch(n){lt("trace.emit",e,"compaction",n)}}async function JP(e,t){if(e)try{await e.write({kind:"closure",payload:t})}catch(n){lt("trace.emit",e,"closure",n)}}async function ct(e,t){if(e)try{await e.write({kind:"browser_event",payload:t})}catch(n){lt("trace.emit",e,"browser_event",n)}}async function VP(e,t){if(e)try{await e.write({kind:"queued_user_message",payload:t})}catch(n){lt("trace.emit",e,"queued_user_message",n)}}async function re(e,t){if(e)try{await e.write({kind:"session_phase",payload:t})}catch(n){lt("trace.emit",e,"session_phase",n)}}var de=v(()=>{"use strict";Vm()});function YP(e){let t=[...e.oauthEntries??[],...e.effort?[e.effortEntry]:[],...e.extendedCacheTtl?[e.extendedCacheEntry]:[],...e.fast?[k9]:[]].filter(Boolean);return[...new Set(t)].join(",")||void 0}var k9,XP=v(()=>{"use strict";k9="fast-mode-2026-02-01"});function ef(e){return e.startsWith("sk-ant-oat01-")?"oauth":"api-key"}function mu(e,t,n,r){let o=t==="oauth"?{authToken:e}:{apiKey:e},i=typeof n=="string"&&n.length>0?{...o,baseURL:n}:o;return r?{...i,fetch:r}:i}function _o(e,t,n,r,o,i){let s=YP({oauthEntries:e==="oauth"?T9.split(","):[],effort:e==="oauth"&&r===!0,extendedCacheTtl:o,fast:i,effortEntry:E9,extendedCacheEntry:QP});return e!=="oauth"?s?{"anthropic-beta":s}:{}:{"anthropic-beta":s,"x-app":"cli","User-Agent":R9,"X-Claude-Code-Session-Id":t,"x-client-request-id":n}}function ZP(e){return e!=="oauth"?null:[{type:"text",text:x9}]}var QP,T9,E9,R9,x9,Ni=v(()=>{"use strict";XP();QP="extended-cache-ttl-2025-04-11",T9=`claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,${QP}`,E9="effort-2025-11-24",R9="claude-cli/1.0.0 (external, cli)",x9="x-anthropic-billing-header: cc_version=1.0.0.test; cc_entrypoint=cli; cch=00000;"});function nf(e){ok=e}function tk(e){if(e===void 0)return;let t=e.trim();return t.length>0?t:void 0}function tf(e,t,n){let r={},o=tk(e);o&&(r.id=o);let i=tk(t);i&&(r.baseUrl=i);let s=tk(n);return s&&(r.apiKey=s),r}function A9(){return{local:tf(T.AFK_MODEL_LOCAL,T.AFK_MODEL_LOCAL_BASE_URL,T.AFK_MODEL_LOCAL_API_KEY),small:tf(T.AFK_MODEL_SMALL,T.AFK_MODEL_SMALL_BASE_URL,T.AFK_MODEL_SMALL_API_KEY),medium:tf(T.AFK_MODEL_MEDIUM,T.AFK_MODEL_MEDIUM_BASE_URL,T.AFK_MODEL_MEDIUM_API_KEY),large:tf(T.AFK_MODEL_LARGE,T.AFK_MODEL_LARGE_BASE_URL,T.AFK_MODEL_LARGE_API_KEY)}}function ak(e){let t=A9(),n={};for(let r of fu){let o=Bi[r],i=e?.[r],s=t[r],a={id:s.id??i?.id??o.id},l=i?.name;l&&(a.name=l);let c=i?.provider;c&&(a.provider=c);let u=s.baseUrl??i?.baseUrl;u&&(a.baseUrl=u);let d=s.apiKey??i?.apiKey;d&&(a.apiKey=d),n[r]=a}return n}function _a(e){return e||ok||ak()}function Ia(e,t=_a()){let n=e.trim().toLowerCase();if(!(!n||n===nM)){for(let r of fu){let o=t[r].name;if(o&&o.trim().toLowerCase()===n)return r}if(n==="local"||n==="small"||n==="medium"||n==="large")return n}}function Ui(e,t=_a()){if(e===void 0)return{id:""};let n=Ia(e,t);if(n)return t[n];let r=sk[e.trim().toLowerCase()];return r?{id:r}:{id:e}}function cr(e,t=_a()){if(e!==void 0)return Ui(e,t).id}function Pa(e,t=_a()){if(e===void 0)return;let n=Ia(e,t);if(n&&t[n].id.trim()===""){let r=n.toUpperCase();return`The "${n}" model tier is not configured (no model id). Set AFK_MODEL_${r}=<id> (optionally AFK_MODEL_${r}_BASE_URL / AFK_MODEL_${r}_API_KEY) or "models.${n}" in afk.config.json, then retry.`}}function rM(e){let t={};if(!e||typeof e!="object")return t;let n=e;for(let r of fu){let o=_9(n[r]);o&&(t[r]=o)}return t}function oM(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="anthropic"||t==="anthropic-direct")return"anthropic";if(t==="openai"||t==="openai-compatible")return"openai";if(t==="chatgpt-oauth"||t==="chatgpt")return"chatgpt-oauth"}function Ca(e){return typeof e=="string"?e.trim():""}function eM(e){return/[\x00-\x1f\x7f]/.test(e)}function _9(e){if(typeof e=="string"){let t=e.trim();return t?{id:t}:void 0}if(e&&typeof e=="object"){let t=e,n=Ca(t.id);if(!n)return;let r={id:n},o=Ca(t.name);o&&(r.name=o);let i=oM(t.provider);i&&(r.provider=i);let s=Ca(t.baseUrl);s&&(r.baseUrl=s);let a=Ca(t.apiKey);return a&&(r.apiKey=a),r}}function iM(e){if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,error:'model binding must be an object with at least an "id"'};let t=e;if("apiKey"in t||"api_key"in t)return{ok:!1,error:"per-slot API keys are credentials; set AFK_MODEL_<TIER>_API_KEY via `afk config env set` instead of afk.config.json"};if("baseUrl"in t||"base_url"in t)return{ok:!1,error:"per-slot baseUrl is an endpoint-redirect credential vector; set AFK_MODEL_<TIER>_BASE_URL via `afk config env set` instead of afk.config.json"};let n=Ca(t.id);if(!n)return{ok:!1,error:'model binding requires a non-empty "id"'};if(eM(n))return{ok:!1,error:'model binding "id" must not contain control characters'};let r={id:n},o=Ca(t.name);if(o){if(eM(o))return{ok:!1,error:'model binding "name" must not contain control characters'};if(C9.has(o.trim().toLowerCase()))return{ok:!1,error:`model binding "name" must not shadow a built-in alias ("${o}")`};r.name=o}if(t.provider!==void 0&&t.provider!==""){let i=oM(t.provider);if(!i)return{ok:!1,error:'model binding "provider" must be one of: anthropic, openai (aliases: anthropic-direct, openai-compatible)'};r.provider=i}return{ok:!0,value:r}}var fu,tM,nk,rk,ik,Bi,nM,sk,gu,ok,C9,Pt=v(()=>{"use strict";W();fu=["local","small","medium","large"],tM="claude-haiku-4-5-20251001",nk="claude-sonnet-4-6",rk="claude-opus-5",ik="claude-fable-5",Bi={local:{id:""},small:{id:tM},medium:{id:nk},large:{id:rk}},nM="auto",sk={opus:rk,opus_1m:rk,sonnet:nk,sonnet_1m:nk,haiku:tM,fable:ik},gu=[...fu,...Object.keys(sk)];C9=new Set([...fu,nM,...Object.keys(sk)])});function hu(e){return e in lk}function ht(e){return cr(e)}var lk,fn=v(()=>{"use strict";Pt();lk={opus:Bi.large.id,opus_1m:Bi.large.id,sonnet:Bi.medium.id,sonnet_1m:Bi.medium.id,haiku:Bi.small.id,fable:ik}});import I9 from"@anthropic-ai/sdk";import{randomUUID as sM}from"node:crypto";async function Ma(e){let{token:t,model:n,system:r,user:o,maxTokens:i=64,signal:s,clientFactory:a}=e;if(!t)throw new Error("oneShotCompletion: token required");let l=ef(t),c=mu(t,l),u=a?a(c):new I9(c),d=sM(),p=sM(),f=_o(l,d,p),g=ht(n)??n,h={};Object.keys(f).length>0&&(h.headers=f),s&&(h.signal=s);let y=await u.messages.create({model:g,max_tokens:i,system:r,messages:[{role:"user",content:o}]},Object.keys(h).length>0?h:void 0),b=[];for(let k of y.content)k.type==="text"&&b.push(k.text);let w=b.join("").trim();return w.length===0&&console.warn("oneShotCompletion: response contained no text blocks \u2014 returning empty string"),w}var rf=v(()=>{"use strict";Ni();fn()});function O9(){let e=T.AFK_VISION_MODELS,t=[],n=[];if(e)for(let r of e.split(",")){let o=r.trim().toLowerCase();if(o)if(o.startsWith("!")){let i=o.slice(1).trim();i&&n.push(i)}else t.push(o)}return{enable:t,disable:n}}function aM(e,t){return e===t||e.includes(t)}function of(e){if(!e)return!1;let t=(cr(e)??e).trim();if(!t)return!1;let n=t.toLowerCase(),{enable:r,disable:o}=O9();return o.some(i=>aM(n,i))?!1:r.some(i=>aM(n,i))||P9.has(n)?!0:M9.some(i=>i.test(t))}function lM(e){let t=e.trim().toLowerCase();return t.includes("/")?t.slice(t.lastIndexOf("/")+1):t}function ji(e){return e?/^o[0-9]/.test(lM(e)):!1}function yu(e){if(!e)return!1;if(ji(e))return!0;let t=lM(e);return $9.some(n=>n.test(t))}var P9,M9,$9,Hi=v(()=>{"use strict";W();Pt();P9=new Set(["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4-turbo","o1","o3","o4-mini"]),M9=[/^claude-/i,/^gpt-4o/i,/^gpt-4\.1/i,/^gpt-4-turbo/i,/^gpt-4-vision/i,/^gpt-5/i,/(?:^|[/_-])(?:vl|vlm)(?:[/_.-]|$)/i,/(?:^|[/_-])(?:llava|pixtral|internvl|cogvlm|idefics|moondream|janus)/i,/(?:vision|minicpm-?[vo]|qwen[\d.]*-?vl|llama-?3\.2-\d+b-vision|gemma-3|phi-3\.5-vision|phi-4-multimodal)/i];$9=[/^gpt-5/]});function ck(e){let t=String(e).trim().toLowerCase(),n=sf[t];if(t.endsWith("_1m")&&n!==void 0)return n;let r=cr(e)??String(e);return sf[r]??sf[r.toLowerCase()]}function bu(e){return ck(e)??D9}function N9(e){if(!e)return!1;let t=e.trim().toLowerCase();return t?!!(t.includes("/")||t.startsWith("gpt-")||t.startsWith("gpt_")||ji(t)||t.startsWith("codex-")||t.startsWith("codex_")||t==="codex"):!1}function Yt(e){let t=String(e).trim().toLowerCase(),n=Oa[t];if(t.endsWith("_1m")&&n!==void 0)return n;let r=cr(e)??String(e),o=Oa[r]??Oa[r.toLowerCase()];return o!==void 0?o:N9(r)?L9:F9}function Wi(e){let t=Yt(e);if(String(e).trim().toLowerCase().endsWith("_1m"))return t;let r=cr(e)??String(e),o=cM[r]??cM[r.toLowerCase()];return o!==void 0?Math.min(t,o):t}var sf,D9,Oa,F9,L9,cM,Io=v(()=>{"use strict";Pt();Hi();sf={opus:128e3,opus_1m:128e3,sonnet:128e3,sonnet_1m:128e3,haiku:64e3,fable:128e3,"claude-opus-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-sonnet-4-6":128e3,"claude-haiku-4-5-20251001":64e3,"claude-fable-5":128e3,"gpt-5.5":128e3,"gpt-5.6":128e3,"gpt-5.6-sol":128e3,"gpt-5.6-terra":128e3,"gpt-5.6-luna":128e3},D9=64e3;Oa={opus:1e6,opus_1m:1e6,sonnet:1e6,sonnet_1m:1e6,haiku:2e5,fable:1e6,"claude-fable-5":1e6,"claude-sonnet-5":1e6,"claude-opus-5":1e6,"claude-sonnet-4-6":1e6,"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4.1":1e6,"gpt-4.1-mini":1e6,"gpt-5.5":1e6,"gpt-5.6":1e6,"gpt-5.6-sol":1e6,"gpt-5.6-terra":1e6,"gpt-5.6-luna":1e6,o1:2e5,"o1-mini":128e3,o3:2e5,"o3-mini":2e5,"o4-mini":2e5,"mlx-community/qwen3-30b-a3b-4bit":128e3,"mlx-community/qwen3-32b-4bit":128e3,"mlx-community/qwen2.5-coder-32b-instruct-4bit":131072},F9=2e5,L9=262144;cM={"claude-sonnet-5":2e5,"claude-opus-5":2e5,"claude-sonnet-4-6":2e5}});function uM(e){return(e.inputTokens??0)+(e.outputTokens??0)}function Xt(e){return e.contextWindowTokens??uM(e)}function wu(e){return e?{totalTokens:Xt(e),apiUsage:{input_tokens:e.inputTokens??0,output_tokens:e.outputTokens??0,cache_read_input_tokens:e.cachedInputTokens??0,cache_creation_input_tokens:e.cacheCreationTokens??0,context_window_tokens:Xt(e)}}:{totalTokens:0,apiUsage:null}}function Su(e,t,n){return t<=0||e<=0||n<=0||n>=1?!1:e/t>=n}function vu(e,t){return t<=0||e<=0?0:e/t}function $a(e){if(e===void 0||e===!1)return;if(e===!0)return B9;let t=e.threshold;if(!(typeof t!="number"||!Number.isFinite(t)||t<=0||t>=1))return t}var B9,ku=v(()=>{"use strict";B9=.9});function lf(e,t){let n=bu(t),r=e.maxOutputTokens;if(typeof r=="number"&&Number.isFinite(r)&&r>0){let o=Math.floor(r);if(o>n){let i=`max:${t}:${o}`;return af.has(i)||(af.add(i),console.warn(`[afk] maxOutputTokens ${o} exceeds the ${t} output ceiling (${n}); clamping to ${n}.`)),n}return o}return n}function dM(e){if(!e||e.length===0)return;let t=[];for(let n of e)n.user.length>0&&t.push({role:"user",content:n.user}),n.assistant.length>0&&t.push({role:"assistant",content:n.assistant});return t.length>0?t:void 0}function cf(e,t,n){switch(e.type){case"adaptive":return{type:"adaptive",display:"summarized"};case"disabled":return{type:"disabled"};case"enabled":{if(typeof n=="string"&&j9(n))return{type:"adaptive",display:"summarized"};if(t<=1024)throw new Error(`[afk] Extended thinking requires max_tokens > 1024 (the API constraint is 1024 <= budget_tokens < max_tokens), but the resolved output cap is ${t}. Raise --max-output-tokens / AFK_MAX_OUTPUT_TOKENS above 1024, or disable thinking with --thinking disabled.`);let r=Math.floor(t*H9),o=Math.max(1024,t-1-r),i=e.budgetTokens!==void 0&&Number.isFinite(e.budgetTokens)?Math.floor(e.budgetTokens):void 0,s=Math.min(Math.max(i??o,1024),o);if(i!==void 0&&i>o){let a=`think:${n??"default"}:${i}:${t}`;af.has(a)||(af.add(a),console.warn(`[afk] thinking budgetTokens ${i} leaves too little of max_tokens ${t} for the reply; clamping to ${o}.`))}return{type:"enabled",budget_tokens:s,display:"summarized"}}}}function uf(e,t){if(e!==void 0)return e;let n=t.toLowerCase();if(/(claude-)?(opus|sonnet)-(4-[678]|5)/.test(n))return"max"}var U9,j9,af,H9,df=v(()=>{"use strict";Io();ku();U9=e=>/opus-4-(7|[89])/.test(e),j9=e=>U9(e)||/(claude-)?(opus|sonnet)-5/.test(e),af=new Set,H9=.25});import uk from"path";import{dirname as W9}from"path";import{appendFileSync as K9,mkdirSync as G9}from"fs";var Po,pf=v(()=>{"use strict";G();Po=class{hooks;constructor(t){this.hooks=t}addReadRoot(t,n="slash",r){this.hooks.ensureInitialized?.();let o=this.hooks.getReadRoots();if(!o)return;let i=uk.resolve(t);o.includes(i)||(o.push(i),this.appendAuditLog({action:"grant-read",path:i,source:n,sessionId:r}))}addWriteRoot(t,n="slash",r){this.hooks.ensureInitialized?.();let o=this.hooks.getReadRoots(),i=this.hooks.getWriteRoots();if(!o||!i)return;let s=uk.resolve(t);o.includes(s)||o.push(s),i.includes(s)||(i.push(s),this.appendAuditLog({action:"grant-write",path:s,source:n,sessionId:r}))}revokeRoot(t,n="slash",r){let o=this.hooks.getReadRoots();if(!o)return;let i=uk.resolve(t),s=this.hooks.getProtectedRoot();if(s!==void 0&&i===s)return;let a=o.indexOf(i);a!==-1&&o.splice(a,1);let l=this.hooks.getWriteRoots();if(l){let c=l.indexOf(i);c!==-1&&l.splice(c,1)}this.appendAuditLog({action:"revoke",path:i,source:n,sessionId:r})}getGrants(){return{resolveBase:this.hooks.getProtectedRoot(),readRoots:this.hooks.getReadRoots()?.slice()??[],writeRoots:this.hooks.getWriteRoots()?.slice()??[],allowAll:this.hooks.getAllowAll()}}appendAuditLog(t){try{let n=_m();G9(W9(n),{recursive:!0});let r=JSON.stringify({timestamp:new Date().toISOString(),sessionId:t.sessionId??this.hooks.getDefaultSessionId?.()??null,action:t.action,path:t.path,source:t.source});K9(n,r+`
28
28
  `)}catch{}}}});function Dn(e){return e==="bypassPermissions"||e==="autonomous"}var Da=v(()=>{"use strict"});var mf,pM=v(()=>{"use strict";pf();Da();mf=class{_readRoots;_writeRoots;_initialResolveBase;_currentCwd;_permissionMode="default";manager=new Po({getReadRoots:()=>this._readRoots,getWriteRoots:()=>this._writeRoots,ensureInitialized:()=>this.ensureInitialized(),getProtectedRoot:()=>this._initialResolveBase,getAllowAll:()=>Dn(this._permissionMode)});get readRoots(){return this._readRoots}get writeRoots(){return this._writeRoots}get currentCwd(){return this._currentCwd}set currentCwd(t){this._currentCwd=t}get permissionMode(){return this._permissionMode}set permissionMode(t){this._permissionMode=t}ensureInitialized(t){if(!this._readRoots){let n=t?[t]:[];this._readRoots=n.slice(),this._writeRoots=n.slice(),t&&!this._initialResolveBase&&(this._initialResolveBase=t),t&&!this._currentCwd&&(this._currentCwd=t)}}}});function Y9(e){return T[e]}function yM(e,t=!0){let n=Y9(e.key);if(n===void 0)return{...e,rawValue:n,effectiveValue:e.defaultValue,source:"default",valid:!0};let r=n.trim(),o=Number(r);return/^\d+$/.test(r)&&Number.isInteger(o)&&o>0&&o<=e.maxValue?{...e,rawValue:n,effectiveValue:o,source:"environment",valid:!0}:(t&&!mM.has(e.key)&&(mM.add(e.key),process.stderr.write(`[afk] Invalid ${e.key}=${JSON.stringify(n)}; using default ${e.defaultValue}. Expected an integer in [1, ${e.maxValue}].
29
29
  `)),{...e,rawValue:n,effectiveValue:e.defaultValue,source:"fallback",valid:!1})}function bM(e=!0){return hM.map(t=>yM(t,e))}function dk(e){let t=hM.find(n=>n.key===e);if(!t)throw new Error(`Unknown concurrency setting: ${e}`);return yM(t).effectiveValue}function wM(){return dk("AFK_MAX_CONCURRENT_SAFE_TOOL_CALLS")}function Tu(){return dk("AFK_MAX_CONCURRENT_SUBAGENT_CALLS")}function SM(){return dk("AFK_MAX_CONCURRENT_BACKGROUND_JOBS")}var fM,gM,q9,z9,J9,V9,hM,mM,Eu=v(()=>{"use strict";W();fM=8,gM=8,q9=10,z9=32,J9=32,V9=64,hM=[{key:"AFK_MAX_CONCURRENT_SAFE_TOOL_CALLS",defaultValue:fM,maxValue:z9},{key:"AFK_MAX_CONCURRENT_SUBAGENT_CALLS",defaultValue:gM,maxValue:J9},{key:"AFK_MAX_CONCURRENT_BACKGROUND_JOBS",defaultValue:q9,maxValue:V9}],mM=new Set});function pk(e){if(e instanceof st)return"timeout";if(e instanceof ar)return"budget";if(typeof e=="string"){if(e==="budget"||e.startsWith("Budget "))return"budget";if(e==="timeout"||e.includes("timed out"))return"timeout";if(e==="closed")return"closed"}return"interrupted"}function $t(e){let t=pk(e.reason);return t==="timeout"||t==="budget"?t:"abort"}var Ki=v(()=>{"use strict";Le()});async function Fa(e,t,n){let r=new Array(e.length),o=Math.min(Math.max(1,Math.floor(t)),e.length),i=0,s=[];for(let a=0;a<o;a++)s.push((async()=>{for(;i<e.length;){let l=i++;try{r[l]={status:"fulfilled",value:await n(e[l])}}catch(c){r[l]={status:"rejected",reason:c}}}})());return await Promise.all(s),r}var ff=v(()=>{"use strict";Eu()});function X9(e,t,n){return new Promise((r,o)=>{let i=!1,s=setTimeout(()=>{i||(i=!0,o(new ur(n,t)))},t);s.unref(),Promise.resolve(e).then(a=>{i||(i=!0,clearTimeout(s),r(a))},a=>{i||(i=!0,clearTimeout(s),o(a))})})}function Q9(e){return e.continue===!1||e.decision==="block"}function mk(e,t){if(e?.aborted){let n=e.reason,r=`aborted during ${t}${n?`: ${String(n)}`:""}`;throw new gt(r)}}function vM(){return new fk}var Gi,ur,fk,Ru=v(()=>{"use strict";Le();Gi=3e4;ur=class extends Error{constructor(n,r){super(`hook handler timed out after ${r}ms during ${n}`);this.hookEvent=n;this.timeoutMs=r;this.name="HookHandlerTimeoutError"}hookEvent;timeoutMs;code="HOOK_HANDLER_TIMEOUT"},fk=class{handlers=new Map;register(t,n,r={}){let o=this.handlers.get(t);o||(o=[],this.handlers.set(t,o));let i={handler:n,options:r};return o.push(i),()=>{let s=this.handlers.get(t);if(!s)return;let a=s.indexOf(i);a>=0&&s.splice(a,1)}}count(t){return this.handlers.get(t)?.length??0}async dispatch(t,n,r=Gi){mk(n,t.event);let o=this.handlers.get(t.event);if(!o||o.length===0)return{};let i=o.slice(),s={};for(let a of i){mk(n,t.event);let l;try{let u=a.handler(t,n);l=!a.options.longRunning&&r>0&&Number.isFinite(r)?await X9(u,r,t.event):await u}catch(u){throw u instanceof ur?u:new Re(`hook handler threw during ${t.event}`,t.event,u instanceof Error?u.message:String(u),{cause:u})}if(mk(n,t.event),Q9(l))throw new Re(`hook handler blocked ${t.event}${l.reason?`: ${l.reason}`:""}`,t.event,l.reason);let c=[s.injectContext,l.injectContext].filter(u=>typeof u=="string"&&u.length>0).join(`
30
30
  `);s={...s,...l,...c.length>0?{injectContext:c}:{}}}return s}}});async function dr(e,t,n,r){if(!e)return;if(r.kind==="blocked"){await mn(e,{hookEvent:t,decision:"block",...r.err.reason!==void 0?{reason:r.err.reason}:{},...t==="PreToolUse"&&n.toolName!==void 0?{blockedTool:n.toolName}:{}});return}let o=r.decision;await mn(e,{hookEvent:t,decision:o.decision,...o.reason!==void 0?{reason:o.reason}:{},...o.injectContext!==void 0?{injectedContextBytes:Buffer.byteLength(o.injectContext,"utf8")}:{}})}async function kM(e,t,n={}){if(e)try{let r=await e.dispatch(t,n.signal);await dr(n.traceWriter,"SubagentStart",{},{kind:"decision",decision:r})}catch(r){throw r instanceof Re&&await dr(n.traceWriter,"SubagentStart",{},{kind:"blocked",err:r}),r}}function Z9(e,t,n){return new Promise((r,o)=>{let i=!1,s=setTimeout(()=>{i||(i=!0,o(new ur(n,t)))},t);s.unref(),e.then(a=>{i||(i=!0,clearTimeout(s),r(a))},a=>{i||(i=!0,clearTimeout(s),o(a))})})}async function TM(e,t,n={}){if(!e)return{};try{let r=await Z9(e.dispatch(t,n.signal,Gi),Gi,"SubagentStop");return await dr(n.traceWriter,"SubagentStop",{},{kind:"decision",decision:r}),r}catch(r){return r instanceof ur?(console.warn(`[afk] SubagentStop hook timed out after ${Gi}ms (subagentId=${t.subagentId}): ${r.message}`),n.onError?.(r),{}):(r instanceof Re&&await dr(n.traceWriter,"SubagentStop",{},{kind:"blocked",err:r}),r instanceof Re||r instanceof gt?(U(`SubagentStop hook swallowed ${r.name}: ${r.message}`),n.onError?.(r),{}):(U(`SubagentStop hook unexpected error: ${String(r)}`),n.onError?.(r instanceof Error?r:new Error(String(r))),{}))}}async function EM(e,t,n={}){if(e)try{let r=await e.dispatch(t,n.signal);await dr(n.traceWriter,"PreToolUse",{toolName:t.toolName},{kind:"decision",decision:r})}catch(r){throw r instanceof Re&&await dr(n.traceWriter,"PreToolUse",{toolName:t.toolName},{kind:"blocked",err:r}),r}}async function RM(e,t,n={}){if(e)try{let r=await e.dispatch(t,n.signal);await dr(n.traceWriter,"PostToolUse",{toolName:t.toolName},{kind:"decision",decision:r})}catch(r){if(r instanceof Re&&await dr(n.traceWriter,"PostToolUse",{toolName:t.toolName},{kind:"blocked",err:r}),r instanceof Re||r instanceof gt){U(`PostToolUse hook swallowed ${r.name}: ${r.message}`),n.onError?.(r);return}U(`PostToolUse hook unexpected error: ${String(r)}`),n.onError?.(r instanceof Error?r:new Error(String(r)))}}async function xM(e,t,n={}){if(e)try{let r=await e.dispatch(t,n.signal);await dr(n.traceWriter,"PostToolUseFailure",{toolName:t.toolName},{kind:"decision",decision:r})}catch(r){if(r instanceof Re&&await dr(n.traceWriter,"PostToolUseFailure",{toolName:t.toolName},{kind:"blocked",err:r}),r instanceof Re||r instanceof gt){U(`PostToolUseFailure hook swallowed ${r.name}: ${r.message}`),n.onError?.(r);return}U(`PostToolUseFailure hook unexpected error: ${String(r)}`),n.onError?.(r instanceof Error?r:new Error(String(r)))}}var gf=v(()=>{"use strict";me();Le();Ru();de()});function AM(e,t){return t?.allowedTools?t.allowedTools.includes(e)?{allowed:!0}:{allowed:!1,reason:`Tool "${e}" is not in the configured allowlist`}:{allowed:!0}}function hf(e,t){return CM(e,t)}function yf(e,t){return CM(e,t)}function CM(e,t){if(!e?.allowedTools||t.length===0)return e;let n=new Set(e.allowedTools),r=!1;for(let o of t)n.has(o)||(n.add(o),r=!0);return r?{...e,allowedTools:[...n]}:e}var bf=v(()=>{"use strict"});function _Q(e){return e.replace(/'[^']*'/g," ").replace(/"(?:[^"\\]|\\.)*"/g,t=>/\$\(|`/.test(t)?t:" ")}function gk(e){return(e.split("/").pop()??e).replace(/^\\+/,"")}function IM(e){let t=[],n=[],r=[],o="",i=!1,s=()=>{i&&(r.push(o),o="",i=!1)},a=()=>{s(),r.length>0&&(t.push(r),r=[])},l=d=>{let p=d,f=1,g="";for(;p<e.length&&f>0;){let h=e[p];if(h==="(")f++;else if(h===")"&&(f--,f===0)){p++;break}g+=h,p++}return n.push(g),p},c=0,u=e.length;for(;c<u;){let d=e[c];if(d==="'"){for(i=!0,c++;c<u&&e[c]!=="'";)o+=e[c],c++;c++;continue}if(d==='"'){for(i=!0,c++;c<u&&e[c]!=='"';)if(e[c]==="$"&&e[c+1]==="(")c=l(c+2);else if(e[c]==="`"){c++;let p="";for(;c<u&&e[c]!=="`";)p+=e[c],c++;c++,n.push(p)}else o+=e[c],c++;c++;continue}if(d==="`"){s(),c++;let p="";for(;c<u&&e[c]!=="`";)p+=e[c],c++;c++,n.push(p);continue}if(d==="$"&&e[c+1]==="("){s(),c=l(c+2);continue}if(d===";"||d===`
@@ -267,7 +267,7 @@ ${o}`,paths:[t,n]}:o!==null?i={content:o,paths:[n]}:r!==null?i={content:r,paths:
267
267
 
268
268
  `).trim()}function gne(e){return(e?.textContent??"").replace(/\s+/g," ").trim().length}async function i$(e,t){let{JSDOM:n,Readability:r,turndown:o}=await fne(),s=new n(e,{url:t}).window.document,a=(s.title??"").trim(),l=(()=>{try{let p=s.cloneNode(!0);return new r(p).parse()}catch{return null}})();if(l&&typeof l.content=="string"&&l.content.trim().length>0){let p=o$(o.turndown(l.content)),f=(l.title??"").trim()||a,g=typeof l.length=="number"&&l.length>0?l.length:(l.textContent??"").replace(/\s+/g," ").trim().length;return{title:f,markdown:p,textLength:g,usedFallback:!1}}let c=s.body,u=c?.innerHTML??"",d=o$(o.turndown(u));return{title:a,markdown:d,textLength:gne(c),usedFallback:!0}}var TT,s$=v(()=>{"use strict";TT=null});function yne(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 a$(e,t,n){let r=Math.min(t*2**e,n);return Math.round(Math.random()*r)}function bne(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 l$(e,t,n={},r={}){let o=r.retries??3,i=r.baseDelayMs??500,s=r.maxDelayMs??1e4,a=r.sleep??yne,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(!hne.has(d.status)||u===o)return d;let p=bne(d,s)??a$(u,i,s);U("[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=a$(u,i,s);U("[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 hne,c$=v(()=>{"use strict";me();hne=new Set([429,502,503,504])});import{BlockList as wne,isIP as RT}from"node:net";import{lookup as Sne}from"node:dns/promises";import{Agent as vne}from"undici";function d$(){let e=T.AFK_WEB_ALLOW_PRIVATE_HOSTS?.trim().toLowerCase();return e==="1"||e==="true"}function Rne(e){return e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e}function ET(e){let t=RT(e);return t===0?!1:Ene.check(e,t===4?"ipv4":"ipv6")}async function p$(e){return Sne(e,{all:!0,verbatim:!0})}async function xT(e,t={}){if(t.allowPrivateHosts??d$())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=Rne(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(RT(r)!==0)return ET(r)?{allowed:!1,reason:o(r,r)}:{allowed:!0};let i=t.lookupFn??p$,s;try{s=await i(r)}catch{return{allowed:!0}}for(let a of s)if(ET(a.address))return{allowed:!1,reason:o(a.address,`${r} (resolved)`)};return{allowed:!0}}async function Zu(e,t={}){let n=await xT(e,t);if(!n.allowed)throw new Bn(n.reason)}async function ug(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<=u$;s++){await Zu(i,o);let a={...n,redirect:"manual",...e===globalThis.fetch&&!(r.allowPrivateHosts??d$())?{dispatcher:xne}:{}},l=await l$(e,i,a,r.retry??{});if(!Ane.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 Bn(`too many redirects (>${u$}) starting from ${t}`)}var kne,Tne,Ene,Bn,xne,u$,Ane,AT=v(()=>{"use strict";W();c$();kne=[["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]],Tne=[["::",96],["64:ff9b::",96],["fc00::",7],["fe80::",10]],Ene=(()=>{let e=new wne;for(let[t,n]of kne)e.addSubnet(t,n,"ipv4");for(let[t,n]of Tne)e.addSubnet(t,n,"ipv6");return e})(),Bn=class extends Error{constructor(t){super(t),this.name="EgressBlockedError"}};xne=new vne({connect:{lookup(e,t,n){p$(e).then(r=>{let o=r.find(s=>ET(s.address));if(o!==void 0){n(new Bn(`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,RT(i.address))},r=>n(r,"",0))}}});u$=20,Ane=new Set([301,302,303,307,308])});import{readFileSync as Cne}from"node:fs";import{join as _ne}from"path";function Ine(e){let n=e.replace(/[.+?()[\]{}/\\^$|]/g,"\\$&").replace(/\*/g,"[^.]*");return new RegExp(`^${n}$`,"i")}function m$(e,t){return Ine(t).test(e)}function One(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(Pne.has(t))return!0;if(Mne.has(t))return!1}return!1}function f$(e){return e===void 0||e.trim()===""?[]:e.split(",").map(t=>t.trim().toLowerCase()).filter(t=>t.length>0)}function $ne(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 g$(e){let t=e===void 0||e.trim()===""?"default":e.trim();return au(t),t}function Dne(e){if(e===void 0)return!1;let t=e.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function Fne(e){try{return Cne(e,"utf8")}catch(t){if(t.code==="ENOENT")return;throw t}}function Lne(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=g$(t.defaultProfile)),n}function h$(e){let t=e?.env??T,n=e?.readFileSync??Fne,r=e?.surface??t.AGENT_SURFACE,o=One(t.AFK_BROWSER_HEADLESS,r),i=f$(t.AFK_BROWSER_ALLOWED_DOMAINS),s=f$(t.AFK_BROWSER_BLOCKED_DOMAINS),a=Dne(t.AFK_BROWSER_DOM_SNAPSHOTS),l=$ne(t.AFK_BROWSER_BACKEND),c=g$(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():_ne($n(),"browser.json"),f=n(p);if(f===void 0)return u;let g;try{g=JSON.parse(f)}catch(y){throw new Error(`Failed to parse browser config at ${p}: ${String(y)}`)}if(typeof g!="object"||g===null||Array.isArray(g))throw new Error(`Browser config at ${p} must be a JSON object`);let h=Lne(u,g);return h.configPath=p,h}function dg(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(m$(n,r))return{allowed:!1,reason:`blocked by AFK_BROWSER_BLOCKED_DOMAINS: ${r}`};return t.allowedDomains.length>0&&!t.allowedDomains.some(o=>m$(n,o))?{allowed:!1,reason:"not in AFK_BROWSER_ALLOWED_DOMAINS"}:{allowed:!0}}var Pne,Mne,pg=v(()=>{"use strict";W();G();Pne=new Set(["daemon","subagent","telegram","afk"]),Mne=new Set(["repl","interactive","cli"])});import{existsSync as Nne,readFileSync as Bne}from"node:fs";import{createRequire as Une}from"node:module";import{dirname as jne,join as Hne}from"node:path";function w$(e){if(typeof e=="string")return e;let t=[],n=e;for(let r=0;r<Kne&&n instanceof Error;r++)t.push(n.message),n=n.cause;return t.length>0?t.join(" | "):String(e)}function Ut(e){let t=w$(e);return b$.some(n=>t.includes(n))}function Gne(){try{let t=Une(import.meta.url).resolve("playwright/package.json"),n=JSON.parse(Bne(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=Hne(jne(t),o);return Nne(i)?`node ${/\s/.test(i)?`"${i}"`:i} install chromium`:void 0}catch{return}}function ed(){return y$??=Gne()??Wne,y$}function CT(e){return e.includes("install chromium")}function bn(e,t){let n=w$(e),r=t?.latched===!0?` ${qne}`:"";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: ${ed()}.${o}${r}`}return`browser tools require the optional \`playwright\` peer dependency. Install via: pnpm add playwright (then ${ed()}). Or pick a different tool.${r}`}function td(e,t,n=!1){if(!Ut(e))return e;let r=e instanceof Error?e.message:String(e);return new Error(`${r}
269
269
 
270
- ${bn(e,{headless:t,latched:n})}`,{cause:e})}var b$,Wne,Kne,y$,qne,mg=v(()=>{"use strict";b$=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],Wne="pnpm exec playwright install chromium",Kne=4;qne="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 os from"node:fs";import fg from"node:path";import{randomBytes as zne}from"node:crypto";import{chromium as Jne}from"playwright";function Vne(){try{return"5.105.0"}catch{}try{let e=fg.resolve(import.meta.dirname,"../../../package.json"),t=os.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var Yne,gg,S$=v(()=>{"use strict";mg();G();me();Yne=Vne(),gg=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=Jne.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=td(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/${Yne}`}}loadStorageState(t){let n=lu(t);try{if(!os.existsSync(n))return;let r=JSON.parse(os.readFileSync(n,"utf8"));return U("[browser/vault] restored session",{profile:t,file:n}),r}catch(r){U("[browser/vault] ignoring unreadable vault",{profile:t,file:n,err:r});return}}async saveStorageState(t,n){try{let r=lu(t);if(!os.existsSync(r))return;let o=await n.storageState(),i=fg.join(fg.dirname(r),`.${fg.basename(r)}.${process.pid}.${zne(4).toString("hex")}.tmp`);os.writeFileSync(i,JSON.stringify(o),{mode:384}),os.chmodSync(i,384),os.renameSync(i,r),U("[browser/vault] saved session",{profile:t,file:r})}catch(r){U("[browser/vault] save failed",{profile:t,err:r})}}}});import{createHash as Xne}from"crypto";function v$(e){return!!(e.role==="textbox"&&e.kind==="password"||e.label&&Qne.test(e.label))}function k$(e){return Xne("sha256").update(e,"utf8").digest("hex").slice(0,8)}function T$(e){let t=e.replace(/\s+/g," ").trim();return t.length<=80?t:t.slice(0,77)+"..."}var Qne,hg=v(()=>{"use strict";Qne=/password|secret|token|api[_-]?key|otp|2fa/i});import{createHash as Zne}from"node:crypto";function ere(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function tre(e,t,n){return`el_${Zne("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function nre(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function E$(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function x$(e,t){let n=e.role??"",r=e.name??"";R$.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])x$(i,t)}async function rre(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},A$).catch(()=>[])}async function ore(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},A$).catch(()=>[])}function ire(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function yg(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=ire(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=rre(e),l=e.evaluate(()=>document.body?.innerText??"").catch(()=>""),c=Promise.resolve(e.url()),u=e.title().catch(()=>""),[d,p,f,g,h]=await Promise.all([s,a,l,c,u]),y,b=!1;d!==null?(y=[],x$(d,y)):(o.push("observation skipped accessibility tree (returned null)"),b=!0,y=(await ore(e)).filter(N=>R$.has(N.role??"")));let w=new Map;for(let P of p){let N=E$(P.name),q=w.get(N);(!q||q.bbox.w===0&&P.bbox.w>0)&&w.set(N,P)}let k=y.map(P=>({ax:P,dom:w.get(E$(P.name??""))})),S=r?k:k.filter(P=>P.dom?P.dom.bbox.w>0||P.dom.bbox.h>0:!0);S.sort((P,N)=>{let q=P.dom?.bbox.y??0,O=N.dom?.bbox.y??0;if(q!==O)return q-O;let H=P.dom?.bbox.x??0,K=N.dom?.bbox.x??0;return H-K}),S.length>200&&o.push("page has 200+ interactive elements; consider scoping");let x=S.slice(0,n).map((P,N)=>{let q=P.ax.role??"generic",O=P.ax.name??"",H=tre(q,O,N),K=P.dom?.bbox??{x:0,y:0,w:0,h:0},_=P.dom?.type??null,F=null;P.ax.value!==void 0&&P.ax.value!==null&&(F=String(P.ax.value)),P.ax.checked!==void 0&&(F=String(P.ax.checked)),v$({role:q,kind:_})&&(F="[redacted]");let M={disabled:P.ax.disabled??!1};P.ax.checked!==void 0&&(M.checked=P.ax.checked===!0||P.ax.checked==="mixed"),P.ax.selected!==void 0&&(M.selected=P.ax.selected),P.ax.expanded!==void 0&&(M.expanded=P.ax.expanded);let $;P.dom?.testId?$=`[data-testid="${P.dom.testId}"]`:P.dom?.id&&($=`#${P.dom.id}`);let B={id:H,role:q,label:ere(O),kind:_,value:F,state:M,bbox:K};return $!==void 0&&(B.selector=$),B}),D="idle";try{let P=await e.evaluate(()=>document.readyState);P==="loading"?D="loading":P==="interactive"?D="navigating":D="idle"}catch{D="navigating"}D!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),b&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let I=nre(f),A=`obs_${t.observationCounter.toString(36)}`,C=new Date().toISOString();return{observationId:A,url:g,title:h,textSummary:I,interactive:x,status:{httpStatus:t.httpStatus??null,loadingState:D,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:C}}var R$,A$,C$=v(()=>{"use strict";hg();R$=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);A$="a[href], button, input, select, textarea, [role], [tabindex], label"});async function _$(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 _T(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>_$(e,i)))).filter(o=>o!==null)}async function sre(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 IT(e,t,n){switch(t.kind){case"element_id":return are(e,t,n);case"selector":return lre(e,t);case"semantic":return cre(e,t)}}async function are(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 _T(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function lre(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 _T(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function cre(e,t){return t.role!==void 0?ure(e,t.text,t.role):dre(e,t.text,t)}async function ure(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 _T(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function dre(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 sre(u);if(d.length===0)return{outcome:"not_found",query:n};if(d.length===1){let h=d[0];return h===void 0?{outcome:"not_found",query:n}:{outcome:"resolved",locator:h.locator.nth(h.index)}}let p=d.slice(0,5),f=[];for(let h=0;h<p.length;h++){let y=p[h];if(y===void 0)continue;let b=await _$(y.locator,y.index);if(b!==null){let w=`${b.role}:${b.label}:${h}`,k=0;for(let S=0;S<w.length;S++)k=k*31+w.charCodeAt(S)>>>0;f.push({...b,id:`el_${k.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var I$=v(()=>{"use strict"});async function PT(e,t,n,r){let o=e.url();if(o===n)return null;let i=dg(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 P$=v(()=>{"use strict";pg()});import{randomBytes as pre}from"crypto";import{mkdir as mre,stat as fre,writeFile as gre}from"fs/promises";import{join as MT}from"path";import{gzip as hre}from"zlib";import{promisify as yre}from"util";function bre(e){return MT(nr(e),"browser")}function wre(e){return MT(bre(e),"screenshots")}function Sre(){return new Date().toISOString().replace(/[:.]/g,"-")}function vre(){return pre(3).toString("hex")}async function OT(e,t,n){if(t.length>M$)throw new Error(`writeScreenshotSidecar: buffer exceeds ${M$} byte cap (received ${t.length} bytes). Refusing to write oversized screenshot.`);let r=wre(e);await mre(r,{recursive:!0});let o=`${Sre()}-${vre()}-${n}.png`,i=MT(r,o);await gre(i,t);let{size:s}=await fre(i);return{path:i,bytes:s}}var _je,M$,O$=v(()=>{"use strict";G();hg();_je=yre(hre);M$=5*1024*1024});var D$={};fa(D$,{PlaywrightProvider:()=>$T});function $$(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 $T,F$=v(()=>{"use strict";S$();C$();I$();pg();P$();O$();$T=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new gg(t)}async open(t){let n=dg(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 PT(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 yg(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 yg(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 IT(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${$$(t.target)}`);if(a.outcome==="ambiguous_target")return a;let{locator:l}=a,c=null,u=async()=>{switch(t.action){case"click":await l.click({timeout:s});break;case"fill":await l.fill(t.value??"");break;case"press":await l.press(t.value??"");break;case"select":await l.selectOption(t.value??"");break;case"hover":await l.hover({timeout:s});break;case"scroll_to":await l.scrollIntoViewIfNeeded({timeout:s});break;case"wait_for":await l.waitFor({timeout:s,state:"visible"});break}};try{await u()}catch(h){if(h instanceof Error&&/navigation|net::ERR/i.test(h.message))try{await u()}catch(y){c=y}else c=h}let d=await PT(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 yg(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 IT(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${$$(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 OT(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 OT(n,o,r);return i}catch{return null}}}});var ss={};fa(ss,{__resetBrowserRegistryForTests:()=>xre,browserProviderActive:()=>Ere,closeBrowserProvider:()=>DT,getBrowserProvider:()=>Tre,peekBrowserProvider:()=>Rre});function L$(){Promise.resolve(DT()).then(()=>{process.exit(130)})}function N$(){Promise.resolve(DT()).then(()=>{process.exit(143)})}function B$(){yr=null}function kre(){bg||(process.on("SIGINT",L$),process.on("SIGTERM",N$),process.on("exit",B$),bg=!0)}function U$(){bg&&(process.removeListener("SIGINT",L$),process.removeListener("SIGTERM",N$),process.removeListener("exit",B$),bg=!1)}async function Tre(e){return yr!==null?yr:(is!==null||(is=(async()=>{let{PlaywrightProvider:t}=await Promise.resolve().then(()=>(F$(),D$)),n=h$(e),r=new t(n);return kre(),yr=r,is=null,r})()),is)}async function DT(){if(yr===null)return;let e=yr;yr=null,is=null,U$(),await e.shutdown()}function Ere(){return yr!==null}function Rre(){return yr}function xre(){yr=null,is=null,U$()}var yr,is,bg,as=v(()=>{"use strict";pg();yr=null,is=null,bg=!1});async function j$(e,t){try{return await i$(e,t)}catch(n){return U("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function Mre(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(as(),ss));return(await n()).render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}async function H$(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??Mre,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s=e,a=null,l=null;try{let u=await ug(n,e,{headers:Pre,signal:t.signal},o);a=u.status,s=u.url||e;let d=u.headers.get("content-type")??"";if(u.ok){if(Ire.test(d))throw new Error(`web_scrape markdown mode received binary content (${d.split(";")[0]}). Use mode: "raw" to fetch the bytes, or a different tool.`);let p=await u.text();if(_re.test(d)&&!Cre.test(d))return{title:"",markdown:p.trim(),finalUrl:s,usedRender:!1};if(i=await j$(p,s),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(u){if(t.signal.aborted||u instanceof Bn||u instanceof Error&&u.message.startsWith("web_scrape markdown mode received binary"))throw u;l=u}if(!(i===null||i.textLength<200)&&i!==null)return{title:i.title,markdown:i.markdown,finalUrl:s,usedRender:!1};try{await Zu(e,o);let u=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:p=>Zu(p,o)});u.finalUrl!==e&&/^https?:\/\//i.test(u.finalUrl)&&await Zu(u.finalUrl,o);let d=await j$(u.html,u.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||d.textLength>=i.textLength)return{title:d.title,markdown:d.markdown,finalUrl:u.finalUrl,usedRender:!0}}catch(u){if(t.signal.aborted||u instanceof Bn)throw u;if(i===null){let d=u instanceof Error?u.message:String(u),p=l instanceof Error?l.message:`HTTP ${a??"error"}`,f=new Error(`web_scrape could not retrieve ${e}: fetch failed (${p}) and render failed (${d}).`);throw f.cause=u,f}}if(i!==null)return{title:i.title,markdown:i.markdown,finalUrl:s,usedRender:!1};throw new Error(`web_scrape could not retrieve any content from ${e} (HTTP ${a??"error"}).`)}var Cre,_re,Ire,Pre,W$=v(()=>{"use strict";s$();AT();me();Cre=/(text\/html|application\/xhtml\+xml)/i,_re=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,Ire=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,Pre={"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 Dre(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(Ore,{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),$re),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=bt(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 K$(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?Dre({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 G$(e,t){if(t.length===0)return`# Search results for "${e}"
270
+ ${bn(e,{headless:t,latched:n})}`,{cause:e})}var b$,Wne,Kne,y$,qne,mg=v(()=>{"use strict";b$=["Cannot find package","ERR_MODULE_NOT_FOUND","Executable doesn't exist"],Wne="pnpm exec playwright install chromium",Kne=4;qne="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 os from"node:fs";import fg from"node:path";import{randomBytes as zne}from"node:crypto";import{chromium as Jne}from"playwright";function Vne(){try{return"5.106.0"}catch{}try{let e=fg.resolve(import.meta.dirname,"../../../package.json"),t=os.readFileSync(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:"unknown"}catch{return"unknown"}}var Yne,gg,S$=v(()=>{"use strict";mg();G();me();Yne=Vne(),gg=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=Jne.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=td(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/${Yne}`}}loadStorageState(t){let n=lu(t);try{if(!os.existsSync(n))return;let r=JSON.parse(os.readFileSync(n,"utf8"));return U("[browser/vault] restored session",{profile:t,file:n}),r}catch(r){U("[browser/vault] ignoring unreadable vault",{profile:t,file:n,err:r});return}}async saveStorageState(t,n){try{let r=lu(t);if(!os.existsSync(r))return;let o=await n.storageState(),i=fg.join(fg.dirname(r),`.${fg.basename(r)}.${process.pid}.${zne(4).toString("hex")}.tmp`);os.writeFileSync(i,JSON.stringify(o),{mode:384}),os.chmodSync(i,384),os.renameSync(i,r),U("[browser/vault] saved session",{profile:t,file:r})}catch(r){U("[browser/vault] save failed",{profile:t,err:r})}}}});import{createHash as Xne}from"crypto";function v$(e){return!!(e.role==="textbox"&&e.kind==="password"||e.label&&Qne.test(e.label))}function k$(e){return Xne("sha256").update(e,"utf8").digest("hex").slice(0,8)}function T$(e){let t=e.replace(/\s+/g," ").trim();return t.length<=80?t:t.slice(0,77)+"..."}var Qne,hg=v(()=>{"use strict";Qne=/password|secret|token|api[_-]?key|otp|2fa/i});import{createHash as Zne}from"node:crypto";function ere(e){return e?e.replace(/\s+/g," ").trim().slice(0,200):""}function tre(e,t,n){return`el_${Zne("sha256").update(`${e}:${t}:${n}`).digest("hex").slice(0,6)}`}function nre(e){let t=e.replace(/\s+/g," ").trim(),n=4e3;return t.length<=n?t:t.slice(0,n)+"\u2026[truncated]"}function E$(e){return e.replace(/\s+/g," ").trim().toLowerCase().slice(0,100)}function x$(e,t){let n=e.role??"",r=e.name??"";R$.has(n)&&(n!=="searchbox"&&n!=="spinbutton"||r!=="")&&t.push(e);for(let i of e.children??[])x$(i,t)}async function rre(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},A$).catch(()=>[])}async function ore(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},A$).catch(()=>[])}function ire(e){let n=e.accessibility;return n!==null&&typeof n=="object"?n:null}async function yg(e,t){let n=t.maxElements??80,r=t.includeHidden??!1,o=[],i=ire(e),s=i?i.snapshot({interestingOnly:!1}).catch(()=>null):Promise.resolve(null),a=rre(e),l=e.evaluate(()=>document.body?.innerText??"").catch(()=>""),c=Promise.resolve(e.url()),u=e.title().catch(()=>""),[d,p,f,g,h]=await Promise.all([s,a,l,c,u]),y,b=!1;d!==null?(y=[],x$(d,y)):(o.push("observation skipped accessibility tree (returned null)"),b=!0,y=(await ore(e)).filter(N=>R$.has(N.role??"")));let w=new Map;for(let P of p){let N=E$(P.name),q=w.get(N);(!q||q.bbox.w===0&&P.bbox.w>0)&&w.set(N,P)}let k=y.map(P=>({ax:P,dom:w.get(E$(P.name??""))})),S=r?k:k.filter(P=>P.dom?P.dom.bbox.w>0||P.dom.bbox.h>0:!0);S.sort((P,N)=>{let q=P.dom?.bbox.y??0,O=N.dom?.bbox.y??0;if(q!==O)return q-O;let H=P.dom?.bbox.x??0,K=N.dom?.bbox.x??0;return H-K}),S.length>200&&o.push("page has 200+ interactive elements; consider scoping");let x=S.slice(0,n).map((P,N)=>{let q=P.ax.role??"generic",O=P.ax.name??"",H=tre(q,O,N),K=P.dom?.bbox??{x:0,y:0,w:0,h:0},_=P.dom?.type??null,F=null;P.ax.value!==void 0&&P.ax.value!==null&&(F=String(P.ax.value)),P.ax.checked!==void 0&&(F=String(P.ax.checked)),v$({role:q,kind:_})&&(F="[redacted]");let M={disabled:P.ax.disabled??!1};P.ax.checked!==void 0&&(M.checked=P.ax.checked===!0||P.ax.checked==="mixed"),P.ax.selected!==void 0&&(M.selected=P.ax.selected),P.ax.expanded!==void 0&&(M.expanded=P.ax.expanded);let $;P.dom?.testId?$=`[data-testid="${P.dom.testId}"]`:P.dom?.id&&($=`#${P.dom.id}`);let B={id:H,role:q,label:ere(O),kind:_,value:F,state:M,bbox:K};return $!==void 0&&(B.selector=$),B}),D="idle";try{let P=await e.evaluate(()=>document.readyState);P==="loading"?D="loading":P==="interactive"?D="navigating":D="idle"}catch{D="navigating"}D!=="idle"&&o.push("page is still loading \u2014 observation may be incomplete"),b&&!o.includes("observation skipped accessibility tree (returned null)")&&o.push("observation skipped accessibility tree (returned null)");let I=nre(f),A=`obs_${t.observationCounter.toString(36)}`,C=new Date().toISOString();return{observationId:A,url:g,title:h,textSummary:I,interactive:x,status:{httpStatus:t.httpStatus??null,loadingState:D,hasDialog:t.hasDialog??!1,consoleErrors:t.consoleErrors??0},warnings:o,screenshotPath:t.screenshotPath??null,capturedAt:C}}var R$,A$,C$=v(()=>{"use strict";hg();R$=new Set(["button","link","textbox","combobox","checkbox","radio","tab","menuitem","menuitemcheckbox","menuitemradio","switch","option","searchbox","spinbutton"]);A$="a[href], button, input, select, textarea, [role], [tabindex], label"});async function _$(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 _T(e,t){let n=Math.min(t,5);return(await Promise.all(Array.from({length:n},(o,i)=>_$(e,i)))).filter(o=>o!==null)}async function sre(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 IT(e,t,n){switch(t.kind){case"element_id":return are(e,t,n);case"selector":return lre(e,t);case"semantic":return cre(e,t)}}async function are(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 _T(o,i);return{outcome:"ambiguous_target",query:{text:r.label,role:r.role},candidates:s}}async function lre(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 _T(n,r);return{outcome:"ambiguous_target",query:{text:`[selector: ${t.selector}]`},candidates:o}}async function cre(e,t){return t.role!==void 0?ure(e,t.text,t.role):dre(e,t.text,t)}async function ure(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 _T(r,o);return{outcome:"ambiguous_target",query:{text:t,role:n},candidates:i}}async function dre(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 sre(u);if(d.length===0)return{outcome:"not_found",query:n};if(d.length===1){let h=d[0];return h===void 0?{outcome:"not_found",query:n}:{outcome:"resolved",locator:h.locator.nth(h.index)}}let p=d.slice(0,5),f=[];for(let h=0;h<p.length;h++){let y=p[h];if(y===void 0)continue;let b=await _$(y.locator,y.index);if(b!==null){let w=`${b.role}:${b.label}:${h}`,k=0;for(let S=0;S<w.length;S++)k=k*31+w.charCodeAt(S)>>>0;f.push({...b,id:`el_${k.toString(16).padStart(6,"0").slice(0,6)}`})}}return{outcome:"ambiguous_target",query:{text:t},candidates:f}}var I$=v(()=>{"use strict"});async function PT(e,t,n,r){let o=e.url();if(o===n)return null;let i=dg(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 P$=v(()=>{"use strict";pg()});import{randomBytes as pre}from"crypto";import{mkdir as mre,stat as fre,writeFile as gre}from"fs/promises";import{join as MT}from"path";import{gzip as hre}from"zlib";import{promisify as yre}from"util";function bre(e){return MT(nr(e),"browser")}function wre(e){return MT(bre(e),"screenshots")}function Sre(){return new Date().toISOString().replace(/[:.]/g,"-")}function vre(){return pre(3).toString("hex")}async function OT(e,t,n){if(t.length>M$)throw new Error(`writeScreenshotSidecar: buffer exceeds ${M$} byte cap (received ${t.length} bytes). Refusing to write oversized screenshot.`);let r=wre(e);await mre(r,{recursive:!0});let o=`${Sre()}-${vre()}-${n}.png`,i=MT(r,o);await gre(i,t);let{size:s}=await fre(i);return{path:i,bytes:s}}var _je,M$,O$=v(()=>{"use strict";G();hg();_je=yre(hre);M$=5*1024*1024});var D$={};fa(D$,{PlaywrightProvider:()=>$T});function $$(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 $T,F$=v(()=>{"use strict";S$();C$();I$();pg();P$();O$();$T=class{name="playwright";config;launcher;sessions=new Map;constructor(t){this.config=t,this.launcher=new gg(t)}async open(t){let n=dg(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 PT(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 yg(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 yg(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 IT(r,t.target,o.knownElements);if(a.outcome==="not_found")throw new Error(`browser_act: target not found: ${$$(t.target)}`);if(a.outcome==="ambiguous_target")return a;let{locator:l}=a,c=null,u=async()=>{switch(t.action){case"click":await l.click({timeout:s});break;case"fill":await l.fill(t.value??"");break;case"press":await l.press(t.value??"");break;case"select":await l.selectOption(t.value??"");break;case"hover":await l.hover({timeout:s});break;case"scroll_to":await l.scrollIntoViewIfNeeded({timeout:s});break;case"wait_for":await l.waitFor({timeout:s,state:"visible"});break}};try{await u()}catch(h){if(h instanceof Error&&/navigation|net::ERR/i.test(h.message))try{await u()}catch(y){c=y}else c=h}let d=await PT(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 yg(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 IT(r,t.target,o.knownElements);if(u.outcome==="not_found")throw new Error(`browser_screenshot: target not found: ${$$(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 OT(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 OT(n,o,r);return i}catch{return null}}}});var ss={};fa(ss,{__resetBrowserRegistryForTests:()=>xre,browserProviderActive:()=>Ere,closeBrowserProvider:()=>DT,getBrowserProvider:()=>Tre,peekBrowserProvider:()=>Rre});function L$(){Promise.resolve(DT()).then(()=>{process.exit(130)})}function N$(){Promise.resolve(DT()).then(()=>{process.exit(143)})}function B$(){yr=null}function kre(){bg||(process.on("SIGINT",L$),process.on("SIGTERM",N$),process.on("exit",B$),bg=!0)}function U$(){bg&&(process.removeListener("SIGINT",L$),process.removeListener("SIGTERM",N$),process.removeListener("exit",B$),bg=!1)}async function Tre(e){return yr!==null?yr:(is!==null||(is=(async()=>{let{PlaywrightProvider:t}=await Promise.resolve().then(()=>(F$(),D$)),n=h$(e),r=new t(n);return kre(),yr=r,is=null,r})()),is)}async function DT(){if(yr===null)return;let e=yr;yr=null,is=null,U$(),await e.shutdown()}function Ere(){return yr!==null}function Rre(){return yr}function xre(){yr=null,is=null,U$()}var yr,is,bg,as=v(()=>{"use strict";pg();yr=null,is=null,bg=!1});async function j$(e,t){try{return await i$(e,t)}catch(n){return U("[web/scrape] extraction failed",{url:t,err:n}),{title:"",markdown:"",textLength:0,usedFallback:!0}}}async function Mre(e,t){let{getBrowserProvider:n}=await Promise.resolve().then(()=>(as(),ss));return(await n()).render({url:e,timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:t.requestGuard})}async function H$(e,t){let n=t.fetchFn??globalThis.fetch,r=t.renderFn??Mre,o=t.lookupFn!==void 0?{lookupFn:t.lookupFn}:{},i=null,s=e,a=null,l=null;try{let u=await ug(n,e,{headers:Pre,signal:t.signal},o);a=u.status,s=u.url||e;let d=u.headers.get("content-type")??"";if(u.ok){if(Ire.test(d))throw new Error(`web_scrape markdown mode received binary content (${d.split(";")[0]}). Use mode: "raw" to fetch the bytes, or a different tool.`);let p=await u.text();if(_re.test(d)&&!Cre.test(d))return{title:"",markdown:p.trim(),finalUrl:s,usedRender:!1};if(i=await j$(p,s),t.signal.aborted)throw t.signal.reason??new Error("aborted")}}catch(u){if(t.signal.aborted||u instanceof Bn||u instanceof Error&&u.message.startsWith("web_scrape markdown mode received binary"))throw u;l=u}if(!(i===null||i.textLength<200)&&i!==null)return{title:i.title,markdown:i.markdown,finalUrl:s,usedRender:!1};try{await Zu(e,o);let u=await r(e,{timeoutMs:t.timeoutMs,signal:t.signal,requestGuard:p=>Zu(p,o)});u.finalUrl!==e&&/^https?:\/\//i.test(u.finalUrl)&&await Zu(u.finalUrl,o);let d=await j$(u.html,u.finalUrl);if(t.signal.aborted)throw t.signal.reason??new Error("aborted");if(i===null||d.textLength>=i.textLength)return{title:d.title,markdown:d.markdown,finalUrl:u.finalUrl,usedRender:!0}}catch(u){if(t.signal.aborted||u instanceof Bn)throw u;if(i===null){let d=u instanceof Error?u.message:String(u),p=l instanceof Error?l.message:`HTTP ${a??"error"}`,f=new Error(`web_scrape could not retrieve ${e}: fetch failed (${p}) and render failed (${d}).`);throw f.cause=u,f}}if(i!==null)return{title:i.title,markdown:i.markdown,finalUrl:s,usedRender:!1};throw new Error(`web_scrape could not retrieve any content from ${e} (HTTP ${a??"error"}).`)}var Cre,_re,Ire,Pre,W$=v(()=>{"use strict";s$();AT();me();Cre=/(text\/html|application\/xhtml\+xml)/i,_re=/(application\/json|\/xml|\+xml|text\/|application\/(java|ecma)script|csv)/i,Ire=/(image\/|audio\/|video\/|application\/pdf|application\/zip|application\/octet-stream|font\/)/i,Pre={"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 Dre(e){let t=e.fetchFn??globalThis.fetch;return{name:"exa",async search(n,{limit:r,signal:o}){let i=await t(Ore,{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),$re),contents:{highlights:{numSentences:3,highlightsPerUrl:1}}}),signal:o});if(!i.ok){let l="";try{let u=await i.text(),d=bt(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 K$(e){return e.exaApiKey!==void 0&&e.exaApiKey.trim()!==""?Dre({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 G$(e,t){if(t.length===0)return`# Search results for "${e}"
271
271
 
272
272
  (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(`
273
273
  `).trimEnd()}var Ore,$re,q$=v(()=>{"use strict";Ur();Ore="https://api.exa.ai/search",$re=10});function wg(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 ls=v(()=>{"use strict";mg()});function jre(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=Fre;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,Lre)}let a=Nre;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,Bre)}return{mode:r,url:o,query:i,timeoutMs:s,maxBytes:a}}function FT(e,t){return Buffer.byteLength(e,"utf8")<=t?{content:e,truncated:!1}:{content:Br(e,t),truncated:!0}}function Hre(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=jre(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 xT(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 ug(t,s.url,h,r)}catch(h){return a.signal.aborted?{content:`web_scrape aborted: ${u()}`,isError:!0}:h instanceof Bn?{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=FT(f,s.maxBytes);return{content:g.content,...g.truncated?{truncated:!0}:{}}}if(s.mode==="markdown")try{let p=await H$(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=FT(p.markdown,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 Bn)return{content:`web_scrape blocked: ${p.message}`,isError:!0};let f=p instanceof Error?p.message:String(p),g=Ut(p)&&!CT(f)?` (the render fallback needs the optional Playwright browser \u2014 run \`${ed()}\`)`:"";return{content:`web_scrape markdown error: ${f}${g}`,isError:!0}}let d=K$({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:Ure,timeoutMs:s.timeoutMs,signal:a.signal}),f=FT(G$(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 Fre,Lre,Nre,Bre,Ure,z$,J$=v(()=>{"use strict";W$();q$();AT();qi();ls();Fre=3e4,Lre=12e4,Nre=1e5,Bre=1e6,Ure=10;z$=Hre()});import{existsSync as Y$,mkdirSync as Wre,readFileSync as Kre,renameSync as Gre,unlinkSync as qre,writeFileSync as zre}from"node:fs";import{dirname as V$,join as Jre}from"node:path";import{randomBytes as Vre}from"node:crypto";function wn(e){let t=e??Av();if(!Y$(t))return[];try{let n=Kre(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 cs(e,t){let n=t??Av();Wre(V$(n),{recursive:!0});let r=Jre(V$(n),`.schedules.json.${process.pid}.${Vre(4).toString("hex")}.tmp`),o=JSON.stringify(e,null,2);try{zre(r,o,"utf-8"),Gre(r,n)}catch(i){try{Y$(r)&&qre(r)}catch{}throw i}}function Sg(e,t){let n=wn(t),r=n.map(l=>l.id),o=Yre(e.name),i=Xre(o,r),s=new Date().toISOString(),a={...e,notifyOn:e.notifyOn??"failure",id:i,createdAt:s,updatedAt:s};return n.push(a),cs(n,t),a}function vg(e,t){let n=wn(t),r=n.length,o=n.filter(i=>i.id!==e);return o.length===r?!1:(cs(o,t),!0)}function nd(e,t){return wn(t).find(n=>n.id===e)}function Yre(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"")}function Xre(e,t){if(!t.includes(e))return e;let n=2;for(;t.includes(`${e}-${n}`);)n+=1;return`${e}-${n}`}function X$(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 kg=v(()=>{"use strict";G()});import{existsSync as Qre,readFileSync as Zre}from"node:fs";import{join as eoe}from"node:path";async function Un(e,t,n){let r;try{let o=eoe(Pm("default"),"port");if(!Qre(o))return{synced:!1,detail:"daemon-not-detected (no port file)"};let i=Zre(o,"utf-8").trim();if(r=parseInt(i,10),Number.isNaN(r))return{synced:!1,detail:"daemon-not-detected (invalid port file)"}}catch{return{synced:!1,detail:"daemon-not-detected (unreadable port file)"}}try{let o=await fetch(`http://localhost:${r}${t}`,{method:e,headers:{"Content-Type":"application/json"},body:n!==void 0?JSON.stringify(n):void 0,signal:AbortSignal.timeout(2e3)});return o.ok?{synced:!0,detail:"synced"}:e==="POST"&&o.status===409?{synced:!0,detail:"already-registered"}:e==="DELETE"&&o.status===404?{synced:!0,detail:"not-registered"}:{synced:!1,detail:`daemon-rejected (HTTP ${o.status})`}}catch{return{synced:!1,detail:"daemon-unreachable (stale port file or network error)"}}}var Lo,LT=v(()=>{"use strict";G();Lo="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 toe}from"node:fs";import{readFile as noe}from"node:fs/promises";var Q$,Z$,eD,tD,nD=v(()=>{"use strict";kg();G();LT();Q$=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=Sg({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 Un("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 Un("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:Lo}})}},Z$=async(e,t)=>{let n=wn();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})))}},eD=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=tr();if(!toe(i))return{content:JSON.stringify([])};let s;try{let c=await noe(i);s=(c.length>1048576?c.subarray(c.length-1048576):c).toString("utf-8")}catch{return{content:JSON.stringify([])}}let a=s.split(`
@@ -1209,10 +1209,10 @@ ${t}`:i,a=new Se({parentAbortSignal:n?.abortSignal,...r?.traceWriter!==void 0?{t
1209
1209
 
1210
1210
  `)}var Iy=v(()=>{"use strict";Rt()});function ej(e){let{config:t,cwd:n}=e,r=e.hasSkillExecutor?Nh(void 0,{cwd:n,...typeof t.skillDispatchName=="string"&&t.skillDispatchName.length>0?{excludeName:t.skillDispatchName}:{}}):"",o=ih(t.isSkillDispatch),i=sh(e.readOnlyMemory),s={surface:e.surface,sessionId:t.sessionId,depth:t.depth,maxDepth:t.maxDepth,workspace:e.runtimeStateSource.getWorkspace()},a={toolBase:o,memoryPrompt:i,hotMemory:t.hotMemory??"",manifest:r,userSystem:e.userSystem};return{stableSystemPrefix:a,toolSystemAppend:$l(a,n,s)}}var tj=v(()=>{"use strict";Wn();RE();Iy()});import Pue from"@anthropic-ai/sdk";function nj(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 rj(e,t,n,r){let o=t.config,{localMode:i,token:s}=fF(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=ef(s),{client:l,throttleQueue:c,systemPrefix:u,tokenRefresher:d}=xF({config:o,token:s,authMode:a,localMode:i,factory:e.providerFactory??Xg(),createClient:A=>new Pue(A)}),p=nj(o.systemPrompt),f=typeof o.model=="string"&&o.model.length>0?ht(o.model)??o.model:r,g=lf(o,f),h=o.permissionMode??"default";e.setCurrentPermissionMode(h),e.ensureSharedRoots(o.cwd),o.cwd&&e.setCurrentCwd(o.cwd);let y=e.getSharedReadRoots(),b=e.getSharedWriteRoots();o.readRoots&&y&&y.length<=1&&(y.length=0,y.push(...o.readRoots)),o.writeRoots&&b&&b.length<=1&&(b.length=0,b.push(...o.writeRoots));let{queryDispatcher:w,runtimeStateSource:k,toolDefs:S,resolvedSessionId:E}=FF({config:o,model:f,permissionMode:h,surface:e.surface,providerName:n,externalTools:e.externalTools,sharedReadRoots:y,sharedWriteRoots:b,getCwd:()=>e.getCurrentCwd()||o.cwd||process.cwd(),getMcpTools:()=>e.mcpManager?.getMcpTools()??[],getSubagents:()=>e.subagentExecutor?e.subagentExecutor.getSubagentsLite():{active:[],backgroundJobs:[]},getMintedSessionId:()=>e.getMintedSessionId(),setMintedSessionId:A=>{e.setMintedSessionId(A)},getPresenceSessionId:()=>e.getPresenceSessionId(),setPresenceSessionId:A=>{e.setPresenceSessionId(A)},buildDispatcher:(A,C)=>e.buildDispatcher(A,C)}),x=o.cwd||process.cwd(),{stableSystemPrefix:D,toolSystemAppend:I}=ej({config:o,cwd:x,surface:e.surface,readOnlyMemory:e.readOnlyMemory,hasSkillExecutor:!!e.skillExecutor,runtimeStateSource:k,userSystem:p});return NP({prompt:t.prompt,options:{model:f,maxTokens:g,system:I},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:x,systemPrefix:u,throttleQueue:c,tokenRefresher:d,queryDispatcher:w,runtimeStateSource:k,toolDefs:S,resolvedSessionId:E,stableSystemPrefix:D,toolSystemAppend:I}}var mx=v(()=>{"use strict";Ni();fn();df();gF();Qg();AF();LF();tj();Co()});function oj(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 ij=v(()=>{"use strict"});function zd(e){if(typeof e?.baseUrl=="string"&&e.baseUrl.length>0)return!1;let t=T.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 Es(){let e=T.AFK_PROMPT_CACHE_TTL;return e==="5m"?"5m":e==="1h"?"1h":Mue}function Py(e){return zd(e)&&Es()==="1h"}function sj(e,t){if(e.length===0)return e;let n=e[e.length-1],r=lj(n,t);return r===n?e:[...e.slice(0,-1),r]}function aj(e,t){if(e.length===0)return e;let n=e[e.length-1],r=Oue(n,t);return r===n?e:[...e.slice(0,-1),r]}function Oue(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=lj(r,t);return o===r?e:{...e,content:[...n.slice(0,-1),o]}}function lj(e,t){return e.type==="thinking"||e.type==="redacted_thinking"?e:{...e,cache_control:{type:"ephemeral",ttl:t}}}var Mue,Dl=v(()=>{"use strict";W();Mue="1h"});var fx=v(()=>{"use strict";rs()});function Fue(e){let t=n=>n===void 0?void 0:n*gx;return{inputPerMTok:e.inputPerMTok*gx,outputPerMTok:e.outputPerMTok*gx,...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 Lue(e){return e.responseSpeed??e.requestSpeed??"standard"}function Nue(e){let t=hx.get(e);if(t)return t;let n=e.replace($ue,"");return n===e?void 0:hx.get(n)}function yx(e,t,n,r,o,i,s={}){let a=Nue(e);if(!a)return;let l=Lue(s)==="fast"&&Due.test(e)?Fue(a):a,c=1e6,u=C=>Number.isFinite(C)&&C>=0?C:0,d=u(t),p=u(n),f=u(r),g=u(o),h=d/c*l.inputPerMTok,y=p/c*l.outputPerMTok,b=l.cacheWrite5mPerMTok??l.inputPerMTok*1.25,w=l.cacheWrite1hPerMTok??l.inputPerMTok*2,k=l.cacheReadPerMTok??l.inputPerMTok*.1,S=i??{ephemeral5m:g,ephemeral1h:0},E=u(S.ephemeral5m),x=u(S.ephemeral1h),D=Math.max(0,g-(E+x)),I=E/c*b+x/c*w+D/c*w,A=f/c*k;return h+y+I+A}var hx,$ue,gx,Due,bx=v(()=>{"use strict";hx=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}]]),$ue=/-\d{8}$/,gx=2,Due=/^claude-opus-(?:5|4-8)(?:-|$)/});function Bue(e){let t=e.speed;return t==="fast"||t==="standard"?t:void 0}function Uue(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 Es()==="1h"?{ephemeral5m:0,ephemeral1h:r}:{ephemeral5m:r,ephemeral1h:0}}function wx(e,t,n,r){if(!e)return{stopReason:t??null};let o=Bue(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=yx(n,e.input_tokens??0,e.output_tokens??0,e.cache_read_input_tokens??0,e.cache_creation_input_tokens??0,Uue(e),{...r?{requestSpeed:r}:{},...o?{responseSpeed:o}:{}});s!==void 0&&(i.totalCostUsd=s)}return i}var cj=v(()=>{"use strict";Dl();bx()});var Sx=v(()=>{"use strict";bx();cj();xE()});function Jd(e){return e>2147483647?2147483647:e}var vx=v(()=>{"use strict"});function dj(){let e=T.AFK_MODEL_TTFB_TIMEOUT_MS;if(e===void 0||e.trim()==="")return uj;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?uj:Jd(t)}function pj(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?void 0:(e<Wue?e:Kue)+Hue}function mj(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(jue))},Jd(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 uj,jue,Hue,Wue,Kue,kx=v(()=>{"use strict";W();vx();uj=18e4;jue="model_ttfb_timeout",Hue=3e4,Wue=6e4,Kue=8e3});function gj(){let e=T.AFK_MODEL_STALL_TIMEOUT_MS;if(e===void 0||e.trim()==="")return fj;let t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?fj:Jd(t)}function yj(e){return e instanceof Error&&e.message===hj}function Tx(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 bj(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(hj))}};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 fj,hj,My=v(()=>{"use strict";W();vx();fj=12e5;hj="model_stream_stall_timeout"});function wj(e){if(!Number.isFinite(e)||e<=0)return 0;let t=Math.floor(e*2/3);return Math.max(1,t)}function Sj(e){if(!("status"in e))return!1;let t=e.status;return t===529||t===503}function Vd(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 Oy,Yd=v(()=>{"use strict";Oy=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*que(e,t,n){re(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*Rx(e,{input:t,turn:n,retry:r,requestStartedAt:o}){return e==="ttfb"?(r.ttfbRetries+=1,yield*que(t,o,r.ttfbRetries),"continue"):e==="overload"?(r.overloadRetries+=1,re(t.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:r.overloadRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*vj(oy(5e3*Math.pow(2,r.overloadRetries-1)),t,n),t.signal.aborted?"terminated":"continue"):(r.streamIncompleteRetries+=1,re(t.traceWriter,{phase:"rate_limit",metadata:{reason:"stream-incomplete",source:"mid-stream",attempt:r.streamIncompleteRetries}}),yield{type:"stream.retry",sessionId:t.ctx.sessionId},yield*vj(1e3*Math.pow(2,r.streamIncompleteRetries-1),t,n),t.signal.aborted?"terminated":"continue")}async function*vj(e,t,n){await rn(e,t.signal),t.signal.aborted&&(yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId})}var kj=v(()=>{"use strict";de();ys();ei();Yd()});function Ej(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=_o(e.authMode,e.sessionId,e.requestId,e.effort!==void 0,Py(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 $y(e,t){let n=e instanceof Error?e:new Error(String(e));if(!t||n.message.startsWith(Tj))return n;let r=new Error(`${Tj} ${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 Tj,xx=v(()=>{"use strict";Ni();Dl();Tj="[Fast mode requested; no standard-mode fallback will be attempted]"});async function*Rj(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 xj=v(()=>{"use strict"});function Aj(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 Cj=v(()=>{"use strict"});function zue(e){let{name:t,description:n,input_schema:r}=e;return{name:t,...n!==void 0?{description:n}:{},input_schema:r}}async function Jue(e,t,n,r,o){for(let i=0;;i++){if(i>0){let s=oy(5e3*Math.pow(2,i-1));if(await rn(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(Sj(a)&&i<3)continue;throw a}}}function Vue(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(zue)}:{},...e.thinking!==void 0?{thinking:e.thinking}:{},...e.effort!==void 0?{output_config:{effort:e.effort}}:{},...e.fastMode===!0?{speed:"fast"}:{}}}async function*_j({input:e,turn:t,retry:n,ttfbTimeoutMs:r,stallTimeoutMs:o}){let i=zd({baseUrl:e.baseUrl})?aj(e.messages,Es()):e.messages,s=Vue({...e,messages:i,tools:t.windDownReason!==null?null:e.tools}),a=Date.now(),l=mj(e.signal,r),c=bj(l.signal,o,u=>{re(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*Rj(Jue(e.client,s,e.headers,c.signal,e.signal),e,d=>{let p=pj(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"};let d=$y(u,e.fastMode===!0);return d.message.includes("thinking")&&Aj(e.messages,d),yield{type:"error",error:d},{kind:"terminated"}}}var Ij=v(()=>{"use strict";xx();Dl();de();ys();kx();My();ei();Yd();xj();Cj()});function Pj(e,t){return e||t!==null}function Mj(){return new sr("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 Oj=v(()=>{"use strict";Le()});function Yue(e){let t=e.trim();if(t.length===0)return{};try{return JSON.parse(t)}catch{return{}}}function Xue(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:Yue(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*$j(e,t,n){let r=[],o=null,i=null,s=!1,a=!!T.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(!Pj(s,o)){yield{kind:"event",event:{type:"error",error:Mj()}};return}a&&console.log("[translate] yielding turn-result"),yield{kind:"turn-result",result:Xue(r,o,i)}}var Dj=v(()=>{"use strict";W();Oj()});async function*Fj({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{T.AFK_TELEGRAM_TRACE&&console.log("[loop] awaiting translateMessageStream events");for await(let h of $j(hl(e,t.signal),t.ctx,()=>i.progress()))if(!g&&(h.kind==="turn-result"||h.event.type!=="error")&&(g=!0,o.firstByteSeen(),re(t.traceWriter,{phase:"model_ttfb",durationMs:Date.now()-a,resolvedModel:t.model})),i.progress(),T.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:Tx(s)},c=!0;break}if(Vd(h.event.error)&&r.canRetryOverload()&&!t.signal.aborted){d=!0;break}if(Vd(h.event.error)&&!t.signal.aborted){f=!0;break}if(t.signal.aborted)break;if(h.event.error instanceof sr&&r.canRetryStreamIncomplete()&&!t.signal.aborted){p=!0;break}yield h.event,c=!0;break}yield h.event}else{l=h.result;break}T.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 y=h instanceof Error?h:new Error(String(h));if((i.timedOut()||yj(y))&&!t.signal.aborted)return yield{type:"error",error:Tx(s)},{kind:"terminated"};if(Vd(y)&&r.canRetryOverload()&&!t.signal.aborted)d=!0;else if(Vd(y)&&!t.signal.aborted)f=!0;else return yield{type:"error",error:y},{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 Lj=v(()=>{"use strict";Dj();Le();wh();de();W();My();Yd()});async function*Nj(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()),Di(t.traceWriter,Ah({toolUseId:s.id,name:s.name,input:s.input,subagentId:t.subagentId})),yield{type:"tool.use.start",toolUseId:s.id,toolName:s.name,toolInput:Go(s.name,s.input),toolInputRaw:xh(s.input),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:$t(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 Bj=v(()=>{"use strict";Ki();de();QE();Rd();_h()});async function*Uj(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");Di(r.traceWriter,Ch({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:y}=u,b=y!==void 0?[{type:"image",source:{type:"base64",media_type:y.mediaType,data:y.data}},...g.length>0?[{type:"text",text:g}]:[]]:g;o.push({type:"tool_result",tool_use_id:c.id,content:b,...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===Ba);return a?(yield{type:"error",error:new wa(a.content)},"denial-tripped"):"committed"}var jj=v(()=>{"use strict";de();_h();Ff();Le()});async function*Hj(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*Nj(e,t,n);if(u.kind==="aborted"||(yield*Uj(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}${Go(s.name,s.input)}`:"unknown";if(yield{type:"progress",progress:{taskId:n.taskId,description:"Working",summary:`${Oh(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=Mh(n.iterations,r),c=Fh(n.startedAt,o);if(l||c){let u=l?Ih:$h,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?Kn:Gn}return"continue"}var Wj=v(()=>{"use strict";Rd();qo();yl();Bj();jj()});function*Kj(e,t,n){if(e.stopReason==="refusal"){yield{type:"assistant.message",text:e.text.length>0?e.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.`,sessionId:t.ctx.sessionId},yield{type:"turn.completed",usage:n.terminalUsage(),sessionId:t.ctx.sessionId};return}let r=Sr(e.stopReason)?lh(e.toolUseBlocks.map(i=>i.name),e.stopReason):null;e.text.length>0&&(yield{type:"assistant.message",text:r?`${e.text}
1211
1211
 
1212
- ${r}`:e.text,sessionId:t.ctx.sessionId},e.text.length<=Que&&(yield{type:"suggestion",suggestion:e.text,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 Que,Gj=v(()=>{"use strict";md();Que=200});import{randomUUID as Zue}from"node:crypto";var Dy,qj=v(()=>{"use strict";Sx();Dy=class{usage={stopReason:null};iterations=0;toolCallCount=0;windDownReason=null;taskId=Zue();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=pd(this.usage,t),this.usage.contextWindowTokens=(t.inputTokens??0)+(t.outputTokens??0)+(t.cachedInputTokens??0)+(t.cacheCreationTokens??0)}}});async function*Cx(e){let t=Ph(e.maxToolUseIterations),n=e.softDeadlineMs??0,r=new Dy,o=new Oy,i=c=>({input:e,turn:r,retry:o,requestStartedAt:c}),s=wj(dj()),a=gj(),l=new cl(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*_j({input:e,turn:r,retry:o,ttfbTimeoutMs:s,stallTimeoutMs:a});if(c.kind==="terminated")return;if(c.kind==="retry-ttfb"){if((yield*Rx("ttfb",i(c.requestStartedAt)))==="terminated")return;continue}let{events:u,ttfb:d,stall:p,requestStartedAt:f}=c,g=yield*Fj({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*Rx(g.reason,i(f)))==="terminated")return;continue}if(o.reset(),g.kind==="overload-exhausted"){re(e.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:3,exhausted:!0}}),yield{type:"assistant.message",text:HN,sessionId:e.ctx.sessionId},yield{type:"turn.completed",usage:r.withDuration({...r.usage,stopReason:kr}),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(wx(h.usage,h.stopReason,e.model,e.fastMode?"fast":void 0)),e.onUsageProgress?.(r.usage),h.stopReason!=="tool_use"){yield*Kj(h,e,r);return}if((yield*Hj(h,e,r,t,n))==="terminated")return}}finally{l.finish(r.elapsedMs())}}var zj=v(()=>{"use strict";Sx();de();kx();My();yl();ei();Yd();kj();Ij();Lj();Wj();Gj();qj();CE()});function ede(e,t){return e.authMode==="oauth"&&e.tokenRefresher!==void 0&&"status"in t&&t.status===401}async function*Jj(e,t,n){let r=null;for await(let i of Cx(t)){if(n())return;if(i.type==="error"&&ede(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*Cx(t)}var Vj=v(()=>{"use strict";zj()});var Fy=v(()=>{"use strict"});async function*Yj(e,t,n,r,o){let i=Wr(dt()??"");if(yield{type:"paused",reason:"usage-limit",accountId:i,autoResume:e.autoResumeOnUsageLimit},re(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=bF({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=Zg(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},re(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*Xj(e,t,n,r,o,i){if(i.getTime()-Date.now()>72e5){e.markCredentialSnapshotStale(),yield o;return}let s=Wr(dt()??""),a=Date.now();if(yield{type:"paused",reason:"usage-limit",resetsAt:i,accountId:s,autoResume:e.autoResumeOnUsageLimit},re(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=yF({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},re(t.traceWriter,{phase:"usage_limit_resume",durationMs:Date.now()-a,metadata:{source:"retry-layer",hotSwapped:l==="hot-swap"}}),yield*r(e,t,n)}var Qj=v(()=>{"use strict";eh();fx();de();Fy()});async function*t1(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=Zg(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(re(t.traceWriter,{phase:"rate_limit",metadata:{reason:"retry-after",source:"retry-layer",attempt:a,waitMs:d}}),await rn(d,t.signal),n()||t.signal.aborted)return;t.headers=e.rotateHeaders(t)}if(o){if(s){yield*Yj(e,t,n,r,o);return}i&&(yield*Xj(e,t,n,r,o,i))}}var n1=v(()=>{"use strict";eh();ys();de();Fy();Qj()});async function*r1(e,t,n,r){let o=GN(e.surface),i=null,s=!1;for(;;){let a=null;for await(let c of r(e,t,n)){if(KN(c)){a=c;break}yield c}if(!a){s&&i!==null&&re(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&&re(t.traceWriter,{phase:"overload_resume",durationMs:Date.now()-i,metadata:{source:"retry-layer",outcome:"ceiling-reached"}}),yield a;return}if(s||(re(t.traceWriter,{phase:"overload_pause",metadata:{reason:"overloaded",source:"retry-layer",hasResetTimestamp:!1,ceilingMs:o,surface:e.surface??"unknown"}}),s=!0),await rn(Math.min(WN(),l),t.signal),n()||t.signal.aborted)return;t.headers=e.rotateHeaders(t),yield{type:"stream.retry",sessionId:t.ctx.sessionId}}}var o1=v(()=>{"use strict";ei();ys();de()});import{randomUUID as ode}from"node:crypto";var Ly,i1=v(()=>{"use strict";Ni();Dl();fx();Vj();n1();o1();Fy();Ly=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 _o(this._authMode,this.initSessionId,ode(),t.effort!==void 0,Py({...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=dt(),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=dt();return{accountId:Wr(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*r1(r,t,n,(o,i,s)=>t1(o,i,s,Jj))}}});function s1(){return ide.map(e=>({...e}))}var ide,a1=v(()=>{"use strict";ide=[{value:"claude-sonnet-5",displayName:"Claude Sonnet 5",description:"Latest balanced Claude \u2014 recommended default"},{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 Ny(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 Ix=v(()=>{"use strict"});var Px=v(()=>{"use strict";ku()});import{randomUUID as sde}from"node:crypto";async function*l1(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}Ny(e.state.messages),e.state.messages.push({role:"user",content:i.content});let a=e.composeSystem(),{decision:l,runInput:c}=Ej({client:e.retry.client,messages:e.state.messages,system:a,tools:e.state.currentPermissionMode==="plan"?e.tools:e.tools?.filter(d=>d.name!==nn)??null,toolDispatcher:e.state.toolDispatcher,model:e.state.currentModel,maxTokens:e.maxTokens,signal:s.signal,authMode:e.retry.authMode,sessionId:e.initSessionId,requestId:sde(),...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(e.state.closed)return;d.type==="turn.completed"&&(e.state.lastUsage=d.usage,e.abort.clear(s)),(d.type==="turn.completed"||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:$y(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*ade(e)}}catch(r){yield{type:"error",error:r instanceof Error?r:new Error(String(r))}}finally{try{await n.return?.()}catch{}}}async function*ade(e){if(e.state.autoCompactThreshold===void 0||e.state.closed)return;let t=e.state.lastUsage,n=Wi(e.state.requestedModel);if(t===null||n<=0)return;let r=Xt(t);if(Su(r,n,e.state.autoCompactThreshold))try{e.hookRegistry&&await e.hookRegistry.dispatch({event:"PreCompact",sessionId:e.initSessionId,trigger:"auto"}),await e.compact()}catch(o){if(!(o instanceof Re))throw o}}var c1=v(()=>{"use strict";ds();Io();Ix();Px();Le();xx()});function u1(e){let t=e.lastUsage,n=Yt(e.requestedModel),r;if(t&&n>0){let s=Xt(t);r=Math.min(100,Math.max(0,s/n*100))}let{totalTokens:o,apiUsage:i}=wu(t);return{tools:[],agents:[],isAutoCompactEnabled:e.autoCompactThreshold!==void 0,apiUsage:i,totalTokens:o,...r!==void 0?{percentage:r}:{},maxTokens:n}}function d1(e){return e?e.getServerStates().map(t=>({name:t.serverName,status:t.status})):[]}function p1(e){return{subscriptionType:e==="oauth"?"claude-subscription":"api-key"}}var m1=v(()=>{"use strict";Io();Px()});var f1=v(()=>{"use strict";XE()});var g1=v(()=>{"use strict";VE()});function h1(e){let{state:t,systemPrefix:n,baseUrl:r}=e;t.userSystem&&(t.userSystem=ch(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=JE(t.currentPermissionMode);i!==null&&o.push(i);let s=YE(t.currentPermissionMode);return s!==null&&o.push(s),o.length===0?null:zd({baseUrl:r})?sj(o,Es()):o}var y1=v(()=>{"use strict";Dl();f1();g1();IE()});function b1(e,t){t===void 0||t.length===0||(e.requestedModel=t,e.currentModel=ht(t)??t)}function w1(e){let{state:t,mode:n,onPermissionMode:r}=e;t.currentPermissionMode=n,t.toolDispatcher.setAllowAll?.(Dn(n)),r?.(n)}function S1(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 v1(e){let{state:t,basePrompt:n,systemPromptRebuildFactory:r}=e;return r?(t.userSystem=r(n),!0):!1}var k1=v(()=>{"use strict";Da();fn()});function T1(e){return{type:"turn.completed",usage:{stopReason:"interrupted",resultSubtype:"interrupted",isError:!1},sessionId:e}}var E1=v(()=>{"use strict"});function lde(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 cde(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=I1(r.input);n.push(`[tool call: ${i} ${s}]`)}else if(o==="tool_result"){let i=r.content;n.push(`[tool result: ${P1(i)}]`)}else o==="image"?n.push("[image]"):o==="document"&&n.push("[document]")}return n.join(`
1212
+ ${r}`:e.text,sessionId:t.ctx.sessionId},e.text.length<=Que&&(yield{type:"suggestion",suggestion:e.text,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 Que,Gj=v(()=>{"use strict";md();Que=200});import{randomUUID as Zue}from"node:crypto";var Dy,qj=v(()=>{"use strict";Sx();Dy=class{usage={stopReason:null};iterations=0;toolCallCount=0;windDownReason=null;taskId=Zue();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=pd(this.usage,t),this.usage.contextWindowTokens=(t.inputTokens??0)+(t.outputTokens??0)+(t.cachedInputTokens??0)+(t.cacheCreationTokens??0)}}});async function*Cx(e){let t=Ph(e.maxToolUseIterations),n=e.softDeadlineMs??0,r=new Dy,o=new Oy,i=c=>({input:e,turn:r,retry:o,requestStartedAt:c}),s=wj(dj()),a=gj(),l=new cl(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*_j({input:e,turn:r,retry:o,ttfbTimeoutMs:s,stallTimeoutMs:a});if(c.kind==="terminated")return;if(c.kind==="retry-ttfb"){if((yield*Rx("ttfb",i(c.requestStartedAt)))==="terminated")return;continue}let{events:u,ttfb:d,stall:p,requestStartedAt:f}=c,g=yield*Fj({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*Rx(g.reason,i(f)))==="terminated")return;continue}if(o.reset(),g.kind==="overload-exhausted"){re(e.traceWriter,{phase:"rate_limit",metadata:{reason:"overloaded",source:"mid-stream",attempt:3,exhausted:!0}}),yield{type:"assistant.message",text:HN,sessionId:e.ctx.sessionId},yield{type:"turn.completed",usage:r.withDuration({...r.usage,stopReason:kr}),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(wx(h.usage,h.stopReason,e.model,e.fastMode?"fast":void 0)),e.onUsageProgress?.(r.usage),h.stopReason!=="tool_use"){yield*Kj(h,e,r);return}if((yield*Hj(h,e,r,t,n))==="terminated")return}}finally{l.finish(r.elapsedMs())}}var zj=v(()=>{"use strict";Sx();de();kx();My();yl();ei();Yd();kj();Ij();Lj();Wj();Gj();qj();CE()});function ede(e,t){return e.authMode==="oauth"&&e.tokenRefresher!==void 0&&"status"in t&&t.status===401}async function*Jj(e,t,n){let r=null;for await(let i of Cx(t)){if(n())return;if(i.type==="error"&&ede(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*Cx(t)}var Vj=v(()=>{"use strict";zj()});var Fy=v(()=>{"use strict"});async function*Yj(e,t,n,r,o){let i=Wr(dt()??"");if(yield{type:"paused",reason:"usage-limit",accountId:i,autoResume:e.autoResumeOnUsageLimit},re(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=bF({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=Zg(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},re(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*Xj(e,t,n,r,o,i){if(i.getTime()-Date.now()>72e5){e.markCredentialSnapshotStale(),yield o;return}let s=Wr(dt()??""),a=Date.now();if(yield{type:"paused",reason:"usage-limit",resetsAt:i,accountId:s,autoResume:e.autoResumeOnUsageLimit},re(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=yF({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},re(t.traceWriter,{phase:"usage_limit_resume",durationMs:Date.now()-a,metadata:{source:"retry-layer",hotSwapped:l==="hot-swap"}}),yield*r(e,t,n)}var Qj=v(()=>{"use strict";eh();fx();de();Fy()});async function*t1(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=Zg(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(re(t.traceWriter,{phase:"rate_limit",metadata:{reason:"retry-after",source:"retry-layer",attempt:a,waitMs:d}}),await rn(d,t.signal),n()||t.signal.aborted)return;t.headers=e.rotateHeaders(t)}if(o){if(s){yield*Yj(e,t,n,r,o);return}i&&(yield*Xj(e,t,n,r,o,i))}}var n1=v(()=>{"use strict";eh();ys();de();Fy();Qj()});async function*r1(e,t,n,r){let o=GN(e.surface),i=null,s=!1;for(;;){let a=null;for await(let c of r(e,t,n)){if(KN(c)){a=c;break}yield c}if(!a){s&&i!==null&&re(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&&re(t.traceWriter,{phase:"overload_resume",durationMs:Date.now()-i,metadata:{source:"retry-layer",outcome:"ceiling-reached"}}),yield a;return}if(s||(re(t.traceWriter,{phase:"overload_pause",metadata:{reason:"overloaded",source:"retry-layer",hasResetTimestamp:!1,ceilingMs:o,surface:e.surface??"unknown"}}),s=!0),await rn(Math.min(WN(),l),t.signal),n()||t.signal.aborted)return;t.headers=e.rotateHeaders(t),yield{type:"stream.retry",sessionId:t.ctx.sessionId}}}var o1=v(()=>{"use strict";ei();ys();de()});import{randomUUID as ode}from"node:crypto";var Ly,i1=v(()=>{"use strict";Ni();Dl();fx();Vj();n1();o1();Fy();Ly=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 _o(this._authMode,this.initSessionId,ode(),t.effort!==void 0,Py({...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=dt(),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=dt();return{accountId:Wr(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*r1(r,t,n,(o,i,s)=>t1(o,i,s,Jj))}}});function s1(){return ide.map(e=>({...e}))}var ide,a1=v(()=>{"use strict";ide=[{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 Ny(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 Ix=v(()=>{"use strict"});var Px=v(()=>{"use strict";ku()});import{randomUUID as sde}from"node:crypto";async function*l1(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}Ny(e.state.messages),e.state.messages.push({role:"user",content:i.content});let a=e.composeSystem(),{decision:l,runInput:c}=Ej({client:e.retry.client,messages:e.state.messages,system:a,tools:e.state.currentPermissionMode==="plan"?e.tools:e.tools?.filter(d=>d.name!==nn)??null,toolDispatcher:e.state.toolDispatcher,model:e.state.currentModel,maxTokens:e.maxTokens,signal:s.signal,authMode:e.retry.authMode,sessionId:e.initSessionId,requestId:sde(),...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(e.state.closed)return;d.type==="turn.completed"&&(e.state.lastUsage=d.usage,e.abort.clear(s)),(d.type==="turn.completed"||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:$y(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*ade(e)}}catch(r){yield{type:"error",error:r instanceof Error?r:new Error(String(r))}}finally{try{await n.return?.()}catch{}}}async function*ade(e){if(e.state.autoCompactThreshold===void 0||e.state.closed)return;let t=e.state.lastUsage,n=Wi(e.state.requestedModel);if(t===null||n<=0)return;let r=Xt(t);if(Su(r,n,e.state.autoCompactThreshold))try{e.hookRegistry&&await e.hookRegistry.dispatch({event:"PreCompact",sessionId:e.initSessionId,trigger:"auto"}),await e.compact()}catch(o){if(!(o instanceof Re))throw o}}var c1=v(()=>{"use strict";ds();Io();Ix();Px();Le();xx()});function u1(e){let t=e.lastUsage,n=Yt(e.requestedModel),r;if(t&&n>0){let s=Xt(t);r=Math.min(100,Math.max(0,s/n*100))}let{totalTokens:o,apiUsage:i}=wu(t);return{tools:[],agents:[],isAutoCompactEnabled:e.autoCompactThreshold!==void 0,apiUsage:i,totalTokens:o,...r!==void 0?{percentage:r}:{},maxTokens:n}}function d1(e){return e?e.getServerStates().map(t=>({name:t.serverName,status:t.status})):[]}function p1(e){return{subscriptionType:e==="oauth"?"claude-subscription":"api-key"}}var m1=v(()=>{"use strict";Io();Px()});var f1=v(()=>{"use strict";XE()});var g1=v(()=>{"use strict";VE()});function h1(e){let{state:t,systemPrefix:n,baseUrl:r}=e;t.userSystem&&(t.userSystem=ch(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=JE(t.currentPermissionMode);i!==null&&o.push(i);let s=YE(t.currentPermissionMode);return s!==null&&o.push(s),o.length===0?null:zd({baseUrl:r})?sj(o,Es()):o}var y1=v(()=>{"use strict";Dl();f1();g1();IE()});function b1(e,t){t===void 0||t.length===0||(e.requestedModel=t,e.currentModel=ht(t)??t)}function w1(e){let{state:t,mode:n,onPermissionMode:r}=e;t.currentPermissionMode=n,t.toolDispatcher.setAllowAll?.(Dn(n)),r?.(n)}function S1(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 v1(e){let{state:t,basePrompt:n,systemPromptRebuildFactory:r}=e;return r?(t.userSystem=r(n),!0):!1}var k1=v(()=>{"use strict";Da();fn()});function T1(e){return{type:"turn.completed",usage:{stopReason:"interrupted",resultSubtype:"interrupted",isError:!1},sessionId:e}}var E1=v(()=>{"use strict"});function lde(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 cde(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=I1(r.input);n.push(`[tool call: ${i} ${s}]`)}else if(o==="tool_result"){let i=r.content;n.push(`[tool result: ${P1(i)}]`)}else o==="image"?n.push("[image]"):o==="document"&&n.push("[document]")}return n.join(`
1213
1213
  `)}function ude(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+=I1(n.input).length:r==="tool_result"&&(t+=P1(n.content).length)}return t}function dde(e){if(typeof e=="string")return hs(e);if(Array.isArray(e)){let t=0;for(let n of e)n.type==="text"&&"text"in n&&(t+=hs(n.text));return t}return 0}function pde(e){if(typeof e=="string")return fl(e);if(Array.isArray(e)){for(let t of e)if(t.type==="text"&&"text"in t)return fl(t.text)}return!1}function R1(e,t){return gh(e,mde,t??{})}function x1(e,t,n,r){return LE(e,t,By,n,r)}function A1(e,t,n){let r=NE(e,By);return{model:t,max_tokens:n,system:yd,messages:[{role:"user",content:Sd(r)}],stream:!0}}function C1(e,t,n){return BE(e,t,n,By)}function _1(e,t,n){return UE(e,t,n,By)}function I1(e){try{let t=JSON.stringify(e);return t.length>240?t.slice(0,237)+"...":t}catch{return"{}"}}function P1(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 By,mde,M1=v(()=>{"use strict";vd();By={isFreshUserTurn:lde,renderMessage:cde,buildPreamble(e){return[{role:"user",content:bd+`
1214
1214
 
1215
- `+e},{role:"assistant",content:wd}]},countChars:ude};mde={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:dde(i.content),isPlaceholder:pde(i.content),clear(s){i.content=s}})}}return t}}});import{randomUUID as fde}from"node:crypto";async function $1(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=bde(),l=vu(Xt(t.lastUsage??{}),Wi(t.requestedModel)),c=x1(t.messages,a,l,wde());if(c<0)return O1(t,s,"history-too-short");if(c===0)return O1(t,s,"nothing-to-summarize");let u=t.messages.slice(0,c),d=vde(),p=A1(u,d,yde),f=n.begin(),g;try{if(f.signal.aborted)return{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s};let w=_o(r.authMode,o,fde()),k=r.client,S=await Promise.resolve(k.messages.create(p,{headers:w,signal:f.signal}));g=await kde(S)}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=_1(t.messages,c,g),y=C1(t.messages,c,g);t.messages.splice(0,t.messages.length,...y);let b=t.messages.length;return Zm(i,{trigger:"manual",preCompactionMessages:u,summary:g,keptTailCount:s-c,keepLastNConfig:a,messagesBefore:s,messagesAfter:b,tokensSavedEstimate:h}),{compacted:!0,messagesBefore:s,messagesAfter:b,tokensSavedEstimate:h}}function bde(){let e=T.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 gde}function wde(){let e=T.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 ml}function O1(e,t,n){let r=Sde(),{blocksCleared:o,bytesReclaimed:i}=R1(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 Sde(){return gl(T.AFK_MICROCOMPACT_TOOL_RESULT_BYTES,T.AFK_MICROCOMPACT_KEEP_LAST)}function vde(){let e=T.AFK_COMPACT_MODEL;return e!==void 0&&e.length>0?ht(e)??e:hde}async function kde(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 gde,hde,yde,D1=v(()=>{"use strict";Ni();M1();vd();ku();Io();de();fn();W();gde=2,hde="claude-haiku-4-5-20251001",yde=1024});function Mx(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 L1(e){return e.role!=="user"?!1:Mx(e.content).trim().length>0}function Tde(e){let t=e.replace(/\s+/g," ").trim();return t.length<=F1?t:t.slice(0,F1-1)+"\u2026"}function N1(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];r&&L1(r)&&t.push({turnIndex:n,preview:Tde(Mx(r.content))})}return t.reverse()}function B1(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||!L1(i))return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let s=Mx(i.content);return n.messages.splice(t),Ny(n.messages),{rewound:!0,reloadText:s,messagesBefore:o,messagesAfter:n.messages.length}}var F1,U1=v(()=>{"use strict";Ix();F1=72});function j1(e){return $1(e)}function H1(e){return N1(e.messages)}function W1(e,t,n){return B1({state:e,abort:t},n)}var K1=v(()=>{"use strict";D1();U1()});import{randomUUID as Ede}from"node:crypto";var Xd,Ox=v(()=>{"use strict";AE();ij();DE();i1();a1();c1();m1();y1();k1();E1();K1();Xd=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??Ede(),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 Ly({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=oj({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 pl}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*l1(this.turnDriverContext())}composeSystem(){return h1({state:this.state,systemPrefix:this.systemPrefix,...this.baseUrl!==void 0?{baseUrl:this.baseUrl}:{}})}async interrupt(t="interrupted"){this.abort.requestAbort(t)}makeInterruptedTurnEvent(){return T1(this.initSessionId)}async setModel(t){b1(this.state,t)}async setPermissionMode(t){w1({state:this.state,mode:t,...this.onPermissionMode?{onPermissionMode:this.onPermissionMode}:{}})}setCwd(t){S1({state:this.state,cwd:t,...this.cwdDependentsFactory?{cwdDependentsFactory:this.cwdDependentsFactory}:{}})}setSystemPrompt(t){return v1({state:this.state,basePrompt:t,...this.systemPromptRebuildFactory?{systemPromptRebuildFactory:this.systemPromptRebuildFactory}:{}})}async supportedCommands(){return ah()}async supportedModels(){return s1()}async supportedAgents(){return[]}async getContextUsage(){return u1(this.state)}async mcpServerStatus(){return d1(this.mcpManager)}async accountInfo(){return p1(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(){return j1({state:this.state,abort:this.abort,retry:this.retry,initSessionId:this.initSessionId,...this.traceWriter?{traceWriter:this.traceWriter}:{}})}listRewindTargets(){return H1(this.state)}async rewindConversation(t){return W1(this.state,this.abort,t)}close(){this.state.closed=!0,this.abort.requestAbort("closed"),this.abort.markClosed()}}});function G1(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=$l(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 q1=v(()=>{"use strict";Iy()});function z1(e){return t=>{e.stableSystemPrefix.userSystem=t!==void 0&&t.length>0?t:null;let n=e.getCurrentCwd()??e.fallbackCwd;return $l(e.stableSystemPrefix,n,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()})}}var J1=v(()=>{"use strict";Iy()});function V1(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:y,stableSystemPrefix:b,toolSystemAppend:w}=n,k=y,S=dM(r.resumeHistory),E=e.externalTools?void 0:G1({stableSystemPrefix:b,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),setCurrentCwd:I=>{e.setCurrentCwd(I)},getCurrentPermissionMode:()=>e.getCurrentPermissionMode(),sharedReadRoots:e.getSharedReadRoots(),sharedWriteRoots:e.getSharedWriteRoots(),subagentExecutor:e.subagentExecutor,skillExecutor:e.skillExecutor,composeExecutor:e.composeExecutor,buildDispatcher:(I,A)=>e.buildDispatcher(I,A)}),x=e.externalTools?void 0:z1({stableSystemPrefix:b,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),fallbackCwd:c}),D=uf(r.effort,a);return new Xd({client:o,authMode:s?"api-key":i,promptStream:t.prompt,toolDispatcher:f,...k!==void 0?{sessionId:k}:{},...S!==void 0?{initialMessages:S}:{},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:cf(r.thinking,l,a)}:{},...D!==void 0?{effort:D}:{},...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}:{},...E!==void 0?{cwdDependentsFactory:E}:{},...x!==void 0?{systemPromptRebuildFactory:x}:{},onPermissionMode:I=>{e.setCurrentPermissionMode(I)},...e.mcpManager!==void 0?{mcpManager:e.mcpManager}:{},...$a(r.autoCompact)!==void 0?{autoCompactThreshold:$a(r.autoCompact)}:{},...r.hookRegistry!==void 0?{hookRegistry:r.hookRegistry}:{},...d!==void 0?{throttleQueue:d}:{},...e.fastModeController!==void 0?{fastModeController:e.fastModeController}:{}})}var Y1=v(()=>{"use strict";Ox();df();q1();J1()});var $x,X1,Ye,Q1,Z1=v(()=>{"use strict";rf();df();pM();dF();Qg();Qg();xt();W();mF();mx();Y1();mx();$x="anthropic-direct",X1="claude-sonnet-5",Ye=class{name=$x;externalTools;memoryStore;providerFactory;skillExecutor;schemas;hookRegistry;permissions;canUseTool;subagentExecutor;composeExecutor;surface;declaredSurface;readOnlyMemory;readOnlyBash;mcpManager;customTools;fastModeController;grants=new mf;_mcpToolsCache=null;_mcpHandlersCache=null;_presenceSessionId=null;_mintedSessionId=null;constructor(t={}){if(this.memoryStore=t.memoryStore??new yt,this.externalTools=t.tools,this.skillExecutor=t.skillExecutor,this.schemas=pF(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 uF({memoryStore:this.memoryStore,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()}async complete(t){let n=t.apiKey&&t.apiKey.length>0?t.apiKey:T.ANTHROPIC_API_KEY||T.CLAUDE_CODE_OAUTH_TOKEN||"";if(!n)throw new Error(`${$x} 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??X1,system:t.system,user:t.user,maxTokens:t.maxTokens??64};t.signal&&(r.signal=t.signal);let o=this.providerFactory??Xg();return o&&(r.clientFactory=o),Ma(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 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=rj(n,t,$x,X1);return V1(n,t,r)}},Q1=new Ye});var Ts=v(()=>{"use strict";Z1();Ox()});function Ade(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"}}function ie(e,t){let n=t?.explicit??T.AFK_PROVIDER,r=t?.openaiBaseUrl??T.AFK_OPENAI_BASE_URL,o=Ade(n);if(o)return o;let i=Ui(e,t?.slots);if(i.provider==="anthropic")return"anthropic-direct";if(i.provider==="openai"||i.provider==="chatgpt-oauth")return"openai-compatible";let s=i.id.trim().toLowerCase();return s&&(xde.has(s)||s.startsWith("claude-")||s.startsWith("claude_")||s.startsWith("local-")||s.startsWith("local_"))?"anthropic-direct":s&&(s.startsWith("gpt-")||s.startsWith("gpt_")||ji(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 Uy(e,t,n){let r=ie(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 on(s);default:return new Ye(s)}}var xde,Ne=v(()=>{"use strict";Ts();xd();fn();Pt();Hi();W();Ts();xd();xde=new Set([...Object.keys(lk),"auto"])});var Fl,Dx=v(()=>{"use strict";Fl=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 jy(e,t){let n=t??_a(),r=Ia(e.model,n);if(!r){e.forceChatgptOAuth=!1;return}let o=n[r],i=o.provider==="anthropic"?"anthropic-direct":o.provider==="openai"||o.provider==="chatgpt-oauth"?"openai-compatible":ie(e.model,t?{slots:t}:void 0);e.forceChatgptOAuth=o.provider==="chatgpt-oauth",o.apiKey!==void 0?e.apiKey=o.apiKey:(i==="openai-compatible"||o.baseUrl!==void 0)&&(e.apiKey=void 0),o.baseUrl!==void 0&&(i==="openai-compatible"?e.openaiBaseUrl=o.baseUrl:e.baseUrl=o.baseUrl)}var Fx=v(()=>{"use strict";Ne();Pt()});function Cde(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(`
1215
+ `+e},{role:"assistant",content:wd}]},countChars:ude};mde={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:dde(i.content),isPlaceholder:pde(i.content),clear(s){i.content=s}})}}return t}}});import{randomUUID as fde}from"node:crypto";async function $1(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=bde(),l=vu(Xt(t.lastUsage??{}),Wi(t.requestedModel)),c=x1(t.messages,a,l,wde());if(c<0)return O1(t,s,"history-too-short");if(c===0)return O1(t,s,"nothing-to-summarize");let u=t.messages.slice(0,c),d=vde(),p=A1(u,d,yde),f=n.begin(),g;try{if(f.signal.aborted)return{compacted:!1,reason:"aborted",messagesBefore:s,messagesAfter:s};let w=_o(r.authMode,o,fde()),k=r.client,S=await Promise.resolve(k.messages.create(p,{headers:w,signal:f.signal}));g=await kde(S)}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=_1(t.messages,c,g),y=C1(t.messages,c,g);t.messages.splice(0,t.messages.length,...y);let b=t.messages.length;return Zm(i,{trigger:"manual",preCompactionMessages:u,summary:g,keptTailCount:s-c,keepLastNConfig:a,messagesBefore:s,messagesAfter:b,tokensSavedEstimate:h}),{compacted:!0,messagesBefore:s,messagesAfter:b,tokensSavedEstimate:h}}function bde(){let e=T.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 gde}function wde(){let e=T.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 ml}function O1(e,t,n){let r=Sde(),{blocksCleared:o,bytesReclaimed:i}=R1(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 Sde(){return gl(T.AFK_MICROCOMPACT_TOOL_RESULT_BYTES,T.AFK_MICROCOMPACT_KEEP_LAST)}function vde(){let e=T.AFK_COMPACT_MODEL;return e!==void 0&&e.length>0?ht(e)??e:hde}async function kde(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 gde,hde,yde,D1=v(()=>{"use strict";Ni();M1();vd();ku();Io();de();fn();W();gde=2,hde="claude-haiku-4-5-20251001",yde=1024});function Mx(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 L1(e){return e.role!=="user"?!1:Mx(e.content).trim().length>0}function Tde(e){let t=e.replace(/\s+/g," ").trim();return t.length<=F1?t:t.slice(0,F1-1)+"\u2026"}function N1(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];r&&L1(r)&&t.push({turnIndex:n,preview:Tde(Mx(r.content))})}return t.reverse()}function B1(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||!L1(i))return{rewound:!1,reason:"invalid-target",messagesBefore:o,messagesAfter:o};let s=Mx(i.content);return n.messages.splice(t),Ny(n.messages),{rewound:!0,reloadText:s,messagesBefore:o,messagesAfter:n.messages.length}}var F1,U1=v(()=>{"use strict";Ix();F1=72});function j1(e){return $1(e)}function H1(e){return N1(e.messages)}function W1(e,t,n){return B1({state:e,abort:t},n)}var K1=v(()=>{"use strict";D1();U1()});import{randomUUID as Ede}from"node:crypto";var Xd,Ox=v(()=>{"use strict";AE();ij();DE();i1();a1();c1();m1();y1();k1();E1();K1();Xd=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??Ede(),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 Ly({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=oj({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 pl}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*l1(this.turnDriverContext())}composeSystem(){return h1({state:this.state,systemPrefix:this.systemPrefix,...this.baseUrl!==void 0?{baseUrl:this.baseUrl}:{}})}async interrupt(t="interrupted"){this.abort.requestAbort(t)}makeInterruptedTurnEvent(){return T1(this.initSessionId)}async setModel(t){b1(this.state,t)}async setPermissionMode(t){w1({state:this.state,mode:t,...this.onPermissionMode?{onPermissionMode:this.onPermissionMode}:{}})}setCwd(t){S1({state:this.state,cwd:t,...this.cwdDependentsFactory?{cwdDependentsFactory:this.cwdDependentsFactory}:{}})}setSystemPrompt(t){return v1({state:this.state,basePrompt:t,...this.systemPromptRebuildFactory?{systemPromptRebuildFactory:this.systemPromptRebuildFactory}:{}})}async supportedCommands(){return ah()}async supportedModels(){return s1()}async supportedAgents(){return[]}async getContextUsage(){return u1(this.state)}async mcpServerStatus(){return d1(this.mcpManager)}async accountInfo(){return p1(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(){return j1({state:this.state,abort:this.abort,retry:this.retry,initSessionId:this.initSessionId,...this.traceWriter?{traceWriter:this.traceWriter}:{}})}listRewindTargets(){return H1(this.state)}async rewindConversation(t){return W1(this.state,this.abort,t)}close(){this.state.closed=!0,this.abort.requestAbort("closed"),this.abort.markClosed()}}});function G1(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=$l(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 q1=v(()=>{"use strict";Iy()});function z1(e){return t=>{e.stableSystemPrefix.userSystem=t!==void 0&&t.length>0?t:null;let n=e.getCurrentCwd()??e.fallbackCwd;return $l(e.stableSystemPrefix,n,{surface:e.surface,sessionId:e.config.sessionId,depth:e.config.depth,maxDepth:e.config.maxDepth,workspace:e.runtimeStateSource.getWorkspace()})}}var J1=v(()=>{"use strict";Iy()});function V1(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:y,stableSystemPrefix:b,toolSystemAppend:w}=n,k=y,S=dM(r.resumeHistory),E=e.externalTools?void 0:G1({stableSystemPrefix:b,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),setCurrentCwd:I=>{e.setCurrentCwd(I)},getCurrentPermissionMode:()=>e.getCurrentPermissionMode(),sharedReadRoots:e.getSharedReadRoots(),sharedWriteRoots:e.getSharedWriteRoots(),subagentExecutor:e.subagentExecutor,skillExecutor:e.skillExecutor,composeExecutor:e.composeExecutor,buildDispatcher:(I,A)=>e.buildDispatcher(I,A)}),x=e.externalTools?void 0:z1({stableSystemPrefix:b,config:r,surface:e.surface,runtimeStateSource:g,getCurrentCwd:()=>e.getCurrentCwd(),fallbackCwd:c}),D=uf(r.effort,a);return new Xd({client:o,authMode:s?"api-key":i,promptStream:t.prompt,toolDispatcher:f,...k!==void 0?{sessionId:k}:{},...S!==void 0?{initialMessages:S}:{},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:cf(r.thinking,l,a)}:{},...D!==void 0?{effort:D}:{},...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}:{},...E!==void 0?{cwdDependentsFactory:E}:{},...x!==void 0?{systemPromptRebuildFactory:x}:{},onPermissionMode:I=>{e.setCurrentPermissionMode(I)},...e.mcpManager!==void 0?{mcpManager:e.mcpManager}:{},...$a(r.autoCompact)!==void 0?{autoCompactThreshold:$a(r.autoCompact)}:{},...r.hookRegistry!==void 0?{hookRegistry:r.hookRegistry}:{},...d!==void 0?{throttleQueue:d}:{},...e.fastModeController!==void 0?{fastModeController:e.fastModeController}:{}})}var Y1=v(()=>{"use strict";Ox();df();q1();J1()});var $x,X1,Ye,Q1,Z1=v(()=>{"use strict";rf();df();pM();dF();Qg();Qg();xt();W();mF();mx();Y1();mx();$x="anthropic-direct",X1="claude-sonnet-4-6",Ye=class{name=$x;externalTools;memoryStore;providerFactory;skillExecutor;schemas;hookRegistry;permissions;canUseTool;subagentExecutor;composeExecutor;surface;declaredSurface;readOnlyMemory;readOnlyBash;mcpManager;customTools;fastModeController;grants=new mf;_mcpToolsCache=null;_mcpHandlersCache=null;_presenceSessionId=null;_mintedSessionId=null;constructor(t={}){if(this.memoryStore=t.memoryStore??new yt,this.externalTools=t.tools,this.skillExecutor=t.skillExecutor,this.schemas=pF(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 uF({memoryStore:this.memoryStore,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()}async complete(t){let n=t.apiKey&&t.apiKey.length>0?t.apiKey:T.ANTHROPIC_API_KEY||T.CLAUDE_CODE_OAUTH_TOKEN||"";if(!n)throw new Error(`${$x} 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??X1,system:t.system,user:t.user,maxTokens:t.maxTokens??64};t.signal&&(r.signal=t.signal);let o=this.providerFactory??Xg();return o&&(r.clientFactory=o),Ma(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 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=rj(n,t,$x,X1);return V1(n,t,r)}},Q1=new Ye});var Ts=v(()=>{"use strict";Z1();Ox()});function Ade(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"}}function ie(e,t){let n=t?.explicit??T.AFK_PROVIDER,r=t?.openaiBaseUrl??T.AFK_OPENAI_BASE_URL,o=Ade(n);if(o)return o;let i=Ui(e,t?.slots);if(i.provider==="anthropic")return"anthropic-direct";if(i.provider==="openai"||i.provider==="chatgpt-oauth")return"openai-compatible";let s=i.id.trim().toLowerCase();return s&&(xde.has(s)||s.startsWith("claude-")||s.startsWith("claude_")||s.startsWith("local-")||s.startsWith("local_"))?"anthropic-direct":s&&(s.startsWith("gpt-")||s.startsWith("gpt_")||ji(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 Uy(e,t,n){let r=ie(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 on(s);default:return new Ye(s)}}var xde,Ne=v(()=>{"use strict";Ts();xd();fn();Pt();Hi();W();Ts();xd();xde=new Set([...Object.keys(lk),"auto"])});var Fl,Dx=v(()=>{"use strict";Fl=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 jy(e,t){let n=t??_a(),r=Ia(e.model,n);if(!r){e.forceChatgptOAuth=!1;return}let o=n[r],i=o.provider==="anthropic"?"anthropic-direct":o.provider==="openai"||o.provider==="chatgpt-oauth"?"openai-compatible":ie(e.model,t?{slots:t}:void 0);e.forceChatgptOAuth=o.provider==="chatgpt-oauth",o.apiKey!==void 0?e.apiKey=o.apiKey:(i==="openai-compatible"||o.baseUrl!==void 0)&&(e.apiKey=void 0),o.baseUrl!==void 0&&(i==="openai-compatible"?e.openaiBaseUrl=o.baseUrl:e.baseUrl=o.baseUrl)}var Fx=v(()=>{"use strict";Ne();Pt()});function Cde(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(`
1216
1216
  `)}function _de(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 Ide(e,t){return typeof e=="string"?e.length>0?`${t}
1217
1217
 
1218
1218
  ${e}`:t:[{type:"text",text:t},...e]}var Hy,eH=v(()=>{"use strict";Dx();Fx();me();Hy=class{outerIterator;baseConfig;deps;currentModel;currentPermissionMode;currentCwd;currentSystemPrompt;systemPromptOverridden=!1;startupFamily;active;activeModel;closed=!1;shadowHistory;pendingUserText;pendingAssistantText="";lastSessionId;constructor(t,n){this.outerIterator=t.prompt[Symbol.asyncIterator](),this.baseConfig=t.config,this.deps=n,this.currentModel=typeof t.config.model=="string"?t.config.model:void 0,this.currentPermissionMode=t.config.permissionMode,this.currentCwd=t.config.cwd,this.startupFamily=n.providerNameForModel(this.currentModel),this.shadowHistory=[...t.config.resumeHistory??[]]}resolveInner(t){let n=this.deps.resolveProvider(t),r={...this.baseConfig};r.model=t??this.baseConfig.model;let o=n.name===this.startupFamily&&this.baseConfig.apiKey!==void 0?this.baseConfig.apiKey:this.deps.resolveApiKey(t);o!==void 0?r.apiKey=o:delete r.apiKey,jy(r);let i=[n.name,r.baseUrl??"",r.openaiBaseUrl??"",r.apiKey??"",r.forceChatgptOAuth?"chatgpt-oauth":""].join("\0");return{provider:n,innerConfig:r,signature:i}}buildInner(t,n){let{provider:r,innerConfig:o,signature:i}=this.resolveInner(t),s=new Fl(()=>this.lastSessionId);this.currentPermissionMode!==void 0&&(o.permissionMode=this.currentPermissionMode),this.currentCwd!==void 0&&(o.cwd=this.currentCwd),this.systemPromptOverridden&&(o.systemPrompt=this.currentSystemPrompt),n&&(o.resumeHistory=[...this.shadowHistory]);let a=r.query({prompt:s.createIterable(),config:o});return{family:r.name,signature:i,query:a,iterator:a[Symbol.asyncIterator](),input:s}}async closeActive(){let t=this.active;if(t){this.active=void 0;try{await t.iterator.return?.(void 0)}catch{}try{await t.query.close()}catch{}}}observeEvent(t){t.type==="assistant.message"&&(this.pendingAssistantText+=(this.pendingAssistantText?`
@@ -1853,7 +1853,7 @@ ${S}
1853
1853
  ${E}`})}return{fileBlocks:l,warnings:c}}function NY(e){let t=e.replace(/\s+/g," ").trim();return t.length<=60?t:`${t.slice(0,59)}\u2026`}async function BY(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}}async function UY(e,t,n,r,o="summary",i,s){let a=b2(e.text,e.attachments);r.onUserMessage&&await Promise.resolve(r.onUserMessage(a)).catch(()=>{}),r.setInFlight(!0),sc(process.stdout,pp(process.cwd(),!0));let l="",c=0,u=!1,d=!1,p=!1,f=!1,g=!1,h,y=!1,b=!1,w={abort:null},k=0,S=3e3,E=[],x=new Map,D=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,I=()=>{let O=r.subagentControl;O?.hasPromotableForeground()&&BY(O,A,r.onQueuedUserMessage).then(({jobs:H,flushedText:K,flushedPreview:_})=>{let F=(i??{fn:console.log}).fn;for(let M of H)F(m.dim(` \u2192 subagent backgrounded as ${M.jobId}: ${M.label}`));K!==void 0&&F(m.dim(` \u2192 queued message sent to this turn: ${NY(_??K)}`))}).catch(()=>{})},A=r.getCompositor?r.getCompositor():null,C=()=>new vc({out:kc(i),thinkingMode:o,...D?{activeSkillName:D}:{},onCancel:()=>{t.interrupt().catch(O=>{je()&&console.error(" "+m.error("session.interrupt() failed:"),O)})},...r.subagentControl?{onBackground:I}:{},...s?.history?{history:s.history}:{},...s?.autocompleteState?{autocompleteState:s.autocompleteState}:{},...s?.promptText!==void 0?{promptText:s.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},...A?{compositor:A}:{},...r.onStageChange?{onStageChange:r.onStageChange}:{}}),P=C(),N=async()=>{if(!f){f=!0;try{await P.dispose()}catch{}}},q=async()=>{await P.arm();let O=P.getCompositor();if(i&&O){let H=O;i.fn=K=>H.commitAbove(K),i.suppressSubagentCompletion=!0}r.setActiveCompositor?.(O),r.setInterruptNotifier?.(H=>P.setInterrupting(H)),r.rearmStatus?.()};try{A?A.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{y=!0,P.setSoftStopping(!0),t.interrupt().catch($=>{je()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),$)});let M=r.subagentControl;M?.hasActiveForeground()&&M.cancelActiveForeground().catch($=>{je()&&console.error(" "+m.error("soft-stop cancelActiveForeground() failed:"),$)})}),r.setPauseInterruptHandler&&r.setPauseInterruptHandler(()=>{b=!0,t.interrupt().catch(M=>{je()&&console.error(" "+m.error("pause-interrupt session.interrupt() failed:"),M)})}),await q(),r.setBackgroundHandler&&r.subagentControl&&r.setBackgroundHandler(I);let{fileBlocks:O,warnings:H}=LY(e.text,{rootDir:process.cwd()});for(let M of H)(i??{fn:console.log}).fn(m.dim(` @-file: ${M}`));if(e.attachments.length>0&&(await t.waitForInitialization(),t.sessionId===void 0))throw new Error("CLI session initialized without a session id");let K=O.length>0||e.attachments.length>0?await FY(e.text,e.attachments,void 0,O,t.sessionId):e.text,_=t.sendMessageStream(K);if(await al((M,$)=>{P.process(M,$)},async()=>{for await(let M of _){if(y||b)break;if(M.type==="chunk"&&M.chunk.type==="content"?(l=u?$Y(l,M.chunk.content):l+M.chunk.content,u=!1,d=!0):M.type==="message"&&!d&&(l=M.message.content),M.type==="stream_retry"&&(l=l.slice(0,c),u=l.length>0),M.type==="chunk"&&M.chunk.type==="tool_use_detail"){let $=M.chunk,B={toolName:$.toolName,toolUseId:$.toolUseId,input:$.toolInput,...$.toolInputRaw!==void 0&&{inputRaw:$.toolInputRaw}};x.set($.toolUseId,B),E.push(B)}else if(M.type==="chunk"&&M.chunk.type==="tool_result"){let $=M.chunk;c=l.length,u=!0;let B=x.get($.toolUseId);if(B&&(B.result=$.content,B.isError=$.isError,x.delete($.toolUseId)),r.onContextProgress){let X=Date.now();if(X-k>=S){k=X;try{let j=r.onContextProgress();j instanceof Promise&&await j}catch(j){je()&&console.error(" "+m.error("onContextProgress (status refresh) failed:"),j)}}}}if(M.type==="paused"){if(r.setPausedState?.(!0),await N(),A&&M.autoResume===!0){let $=new AbortController;w.abort=$;let B=M.resetsAt?M.resetsAt.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}):null,X=B?`Keep waiting \u2014 auto-resumes at ${B}`:"Keep waiting \u2014 auto-resume in progress",j="Switch model / provider (type /model after)",ee="Stop waiting",se=[m.warning(" \u23F3 Usage limit reached.")+(B?m.dim(` Auto-resumes at ${B}.`):""),m.dim(" Tip: run `claude login` in another terminal to switch account \u2014 this turn resumes on it automatically."),""];Pn(A,{header:se,options:[X,j,ee],signal:$.signal,initialIndex:0}).then(z=>{if(w.abort=null,!z)return;let te=z[0];te===void 0||te===X||(b=!0,te===j&&(i??{fn:console.log}).fn(m.dim(" Hint: type /model <name> to switch, then send your message again.")),t.interrupt().catch(ae=>{je()&&console.error(" "+m.error("picker pause-interrupt session.interrupt() failed:"),ae)}))}).catch(z=>{je()&&console.error(" "+m.error("picker promise rejected:"),z)})}else(i??{fn:console.log}).fn(OP({reason:M.reason,...M.resetsAt!==void 0?{resetsAt:M.resetsAt}:{},...M.accountId!==void 0?{accountId:M.accountId}:{},...M.autoResume!==void 0?{autoResume:M.autoResume}:{}}));continue}if(M.type==="resumed"){r.setPausedState?.(!1),w.abort?.abort(),w.abort=null;let $=M.hotSwapped&&M.accountId?`\u25B6 Resumed on ${M.accountId}`:"\u25B6 Resumed";l="",c=0,u=!1,d=!1,E.length=0,x.clear(),g=!1,h=void 0,p=!1,P=C(),f=!1,await q(),(i??{fn:console.log}).fn(m.success($));continue}if(M.type==="error"){await N(),Aa(Sa(M.error)),p=!0;continue}P.process(M),M.type==="done"&&(g=!0,h=M.metadata)}}),await N(),y){let M=i?i.fn:console.log,$=A?A.getPendingCount():0,B=$>0?` \xB7 ${$} queued`:"";M(m.warning(`\u23F8 Stopped${B} \u2014 work so far kept.`)+m.dim(" Send a message to continue.")),M("")}if(b){let M=i?i.fn:console.log;M(m.dim("\u25B6 Ending wait \u2014 running your next command\u2026")),M("")}if(g&&!y&&!b){Ps(n,a,l,h,E),r.onTurnComplete&&await r.onTurnComplete(a,l).catch(()=>{}),ic(process.stdout),rG(process.stdout,"afk: turn complete");let M=B=>{i?i.fn(B):console.log(B)},$=kS(l);if($){M(DY($)),M("");let B=qz(E);if(r.onTerminalState)try{r.onTerminalState($,{doneHasCorroboratingEvidence:B})}catch{}if(n.permissionMode==="autonomous"){let X=$.kind==="done"&&Xu().verifyDone===!0&&!B;Jz($,void 0,{unverified:X})}}if(wEe(h,n,M),r.onAfterTurn){let B=r.onAfterTurn();B instanceof Promise&&await B.catch(()=>{})}}}catch(O){await N(),p||Aa(Sa(O))}finally{await N(),sc(process.stdout,pp(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),w.abort?.abort(),w.abort=null,r.setInFlight(!1),r.rearmStatus?.()}}function bEe(e,t){let n=Math.round(e*100),r=ye(t);if(e>=1){let o=Math.round((e-1)*t);return{tier:"over",text:` context OVER ${Math.round(t/1e3)}k tok by ~${ye(o)} tok \u2014 model output may be silently truncated`}}return e>=.95?{tier:"near",text:` context ${n}% used of ${r} \u2014 near limit; output may soon truncate (consider /clear or a fresh session)`}:e>=.8?{tier:"caution",text:` context ${n}% used of ${r} \u2014 approaching limit`}:e>.5?{tier:"normal",text:` context ${n}% used of ${r}`}:{tier:"quiet",text:null}}function wEe(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(xe(e.durationMs)),e.totalCostUsd!==void 0&&r.push(ft(e.totalCostUsd));let o=Number(e.usage?.input_tokens??0),i=Number(e.usage?.output_tokens??0);o+i>0&&r.push(ye(o+i)+" tok"),r.length>0&&n(m.dim(" \u25E6 "+r.join(" \xB7 ")));let s=pC(t),a=Yt(t.model),l=bEe(s,a);if(l.text!==null){let u=l.tier==="over"||l.tier==="near"?m.error:l.tier==="caution"?m.warning:m.dim;n(u(l.text))}let c=OY(vw(rh()),new Date,{autoResume:YO()});if(c.text!==null){let u=c.tier==="over"||c.tier==="near"?m.error:c.tier==="caution"?m.warning:m.dim;n(u(c.text))}n("")}var SEe=5e3,vEe=3,kEe="[auto-resume] The background task above has finished. Continue the work it was dispatched for.";async function TEe(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 jY(e,t,n,r,o,i,s,a){let{contextPane:l,loopStageBar:c,mascotBar:u,verdictLedger:d,shellPassthrough:p,bgResultNotifier:f}=s,g=null,h=[];e.session.current.waitForInitialization().then(async I=>{je()&&(g=Lw(I)),await Dp(e.session.current),h=cC()}).catch(()=>{});let y=e.initialInput!==void 0?{text:e.initialInput,attachments:[]}:void 0,b,w=!1,k=!1,S,E,x,D=0;for(f.onInjectable=()=>{D>=vEe||!o.isAwaitingInput()||!o.bufferIsEmpty()||(D++,ic(process.stdout),y={text:kEe,attachments:[]},o.abortPendingRead())};;){if(g&&(e.replRenderer.writeLine(g),e.replRenderer.writeLine(""),g=null),h.length>0){for(let _ of h)e.replRenderer.writeLine(_);e.replRenderer.writeLine(""),h=[]}let I=p.drainNotifications();for(let{job:_,result:F}of I){let M=F.errorReason===void 0?"\u2713":"\u2717",$=F.errorReason==="abort"?"killed":F.errorReason==="timeout"?"timed out":F.errorReason==="signal-killed"?"killed by signal":`exit ${F.exitCode??0}`,B=Math.max(0,Math.round(F.durationMs/100)/10);e.replRenderer.writeLine(m.dim(` ${M} [${_.id}] ${$} \xB7 ${B}s \xB7 `)+_.command)}let A=f.drainNotifications();for(let{job:_}of A){let F=_.status==="completed"?"\u2713":_.status==="failed"?"\u2717":"\u2298",M=_.endedAt!==void 0?Math.max(0,Math.round((_.endedAt-_.startedAt)/100)/10):0,$=le(_.label,60);e.replRenderer.writeLine(m.dim(` ${F} [${_.jobId}] subagent ${_.status} \xB7 ${M}s \xB7 `)+$)}let C=l.renderIfChanged(e.stats.sessionId);if(C.length>0){for(let _ of C)e.replRenderer.writeLine(_);e.replRenderer.writeLine("")}let P,N;if(y===void 0){let _=await e.session.current.takePendingPlanExitSeed();_!==void 0&&(e.stats.permissionMode=_.mode,y={text:_.message,attachments:[]})}if(y!==void 0){let _=y;y=void 0;let F=_c(e.stats.permissionMode),M=Fs({buffer:_.text,promptText:F,isTTY:!!process.stdout.isTTY,attachmentSummary:pc([..._.attachments])});e.replRenderer.writeLine(M),P=_.text.trim(),N=_.attachments}else{let _=b;b=void 0;let F=await o.readLine({promptFn:()=>_c(e.stats.permissionMode),..._!==void 0?{initialBuffer:_}:{},primePromptSuggestion:!0,onSigint:r,onShiftTab:()=>{yS(e.slashCtx).catch(()=>{}),e.statusLine.rearm()}});P=F.text.trim(),N=F.attachments}if(!P&&N.length===0)continue;if(P.startsWith("!")){let _=/^(0|false|off|no)$/i.test(T.AFK_SHELL_PASSTHROUGH??"");if(e.options.shellPassthrough!==!1&&!_&&(w||(w=!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 p.dispatch(P))){e.statusLine.rearm();continue}}let q=!1;if(P.startsWith("/")){let _=await sG(P,e.slashCtx,N);if(_.handled){if(_.result==="exit"){await e.resolveWorktreeDisposition?.(!0),e.rl.close();return}if((P==="/clear"||P.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),d.reset(),S=void 0),_.result!==null&&typeof _.result=="object"&&"kind"in _.result&&_.result.kind==="submit"){y={text:_.result.message,attachments:N??[]},e.statusLine.rearm();continue}if(_.result!==null&&typeof _.result=="object"&&"kind"in _.result&&_.result.kind==="prefill"){b=_.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}q=!0}a.push(P),await TEe(e,P);let O=P;if(q){let _=yA(P);if(_){let F=_.name.replace(/^\//,"").split(":").pop()??"";if(F&&iC(F)){let M={skillName:F,rawArgs:_.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},$=e.session.current.sessionId,B=zs($),X=Date.now();U(`[afk trace] preflight.start commandName=${F}`);let j=!1,ee=await qs(M,{cwd:e.stats.cwd??process.cwd(),artifactDir:B},se=>{je()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${F}) failed: `)+(se instanceof Error?se.message:String(se)))});j=ee!==null,U(`[afk trace] preflight.end commandName=${F} durationMs=${Date.now()-X} success=${j}`),O=aC(ee?.manifestBlock,P)}}}let H=p.drainInjections();H.length>0&&(O=H+O);let K=f.drainInjections();if(K.length>0&&(O=K+O),S!==void 0&&(O=S+`
1854
1854
 
1855
1855
  `+O,S=void 0),e.hookRegistry)try{let _={event:"UserPromptSubmit",prompt:O,sessionId:e.stats.sessionId},F=await e.hookRegistry.dispatch(_);F.injectContext&&(O=F.injectContext+O)}catch(_){if(_ instanceof Re){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+(_.reason?m.dim(`: ${bt(_.reason)}`):"")),e.statusLine.rearm();continue}if(_ instanceof ur){e.replRenderer.writeLine(m.warning("\u2298 Turn blocked by hook")+m.dim(`: handler timed out after ${_.timeoutMs}ms`)),e.statusLine.rearm();continue}throw _}if(E=void 0,x=void 0,await UY({text:O,attachments:N},e.session.current,e.stats,{setInFlight(_){n.turnInFlight=_},...e.subagentControl?{subagentControl:e.subagentControl}:{},async onUserMessage(_){await t.appendUser(_)},async onQueuedUserMessage(_){await t.appendQueuedUser(_)},async onTurnComplete(_,F){if(await t.appendTurn(_,F),e.stats.sessionId)try{di(e.stats)}catch(M){k||(k=!0,e.replRenderer.writeLine(m.warning("\u26A0 ")+"session autosave failed \u2014 this conversation may not be resumable: "+(M instanceof Error?M.message:String(M))))}},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await e.gitStatusSampler.refresh(),e.statusLine.rearm(),c?.repaint("observing")},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:(_,F)=>{d?.push(_),E=_.kind,x=F?.doneHasCorroboratingEvidence},setActiveCompositor:_=>{n.activeCompositor=_},setInterruptNotifier:_=>{n.notifyInterrupting=_},scrollRegion:e.statusLine,getCompositor:()=>o.getCompositor(),setBackgroundHandler:_=>o.setBackgroundHandler(_),setSoftStopHandler:i,setPausedState:_=>o.setPausedState(_),setPauseInterruptHandler:_=>o.setPauseInterruptHandler(_),async onContextProgress(){await e.contextSampler.refresh(),e.statusLine.repaint(Xn(e.stats,e.contextSampler,e.gitStatusSampler))},...c?{onStageChange:(_,F)=>{c.repaint(_),u?.onStage(_,F)}}:{}},e.stats.thinkingUi??e.options.thinkingUi,e.completionWriter,o.toRunTurnRefs(_c(e.stats.permissionMode))),e.hookRegistry)try{let _=await e.hookRegistry.dispatch({event:"Stop",sessionId:e.stats.sessionId,...E!==void 0?{terminalState:E}:{},...x!==void 0?{doneHasCorroboratingEvidence:x}:{}},void 0,SEe);_.injectContext&&_.injectContext.trim().length>0&&(S=_.injectContext)}catch(_){if(_ instanceof gt)throw _;_ instanceof ur?(U("[stop hook] handler timed out"),e.completionWriter.fn(m.dim(" [stop hook] timed out"))):_ instanceof Re?e.completionWriter.fn(m.dim(` [stop hook] blocked: ${bt(_.reason??"no reason given")}`)):U("[stop hook] unexpected error: "+String(_))}}}function EEe(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 HY(e,t,n,r){let o=await cY(),i=new hS({rl:e.rl,history:o,statusLine:e.statusLine}),s=EEe(T.AFK_SUGGEST_GHOST,e.suggestGhostConfig),a;try{let{installSoftStop:l}=await fY(e,i,n,t,r,s,{getLoopStageBar:()=>a?.loopStageBar,getMascotBar:()=>a?.mascotBar});a=PY(e,n),await jY(e,t,n,r,i,l,a,o),await e.resolveWorktreeDisposition?.(!0)}finally{n.tryAbortShellForeground=null,a?.shellPassthrough.drainOnExit(),a?.bgResultNotifier.dispose(),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)}}Wu();el();import{execFile as REe}from"node:child_process";import{dirname as xEe,isAbsolute as AEe,resolve as CEe}from"node:path";import{promisify as _Ee}from"node:util";var WY=_Ee(REe),IEe=3e3,PEe=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function MEe(){let t=(await WY("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=AEe(t)?t:CEe(process.cwd(),t);return xEe(n)}async function KY(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await MEe()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),IEe)});try{let o=vn({execFile:WY,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=>PEe.has(c.verdict)&&s.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}rf();Wu();import{promises as OEe}from"node:fs";import{dirname as $Ee,join as zY}from"node:path";import{randomBytes as DEe}from"node:crypto";var FEe=["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(`
1856
- `),GY=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,g_=30,LEe=1024,NEe=8e3,BEe="haiku";async function UEe(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=KEe(n,LEe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??NEe),s=t.signal?GEe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Ma({token:t.token,model:t.model??BEe,system:FEe,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=jEe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=$Ee(t.worktreePath);return await HEe(l,c)}function jEe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(GY.test(t)&&t.length<=g_)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>g_)break;o=s}return GY.test(o)?o:null}async function HEe(e,t){if(!await WEe(zY(t,e)))return e;let n=DEe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,g_-5)}-${n}`}async function WEe(e){try{return await OEe.access(e),!0}catch{return!1}}function KEe(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 GEe(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 JY(e){let t,n,r=zY(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await UEe(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=`${ng(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return qY(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 qY(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 qY(e,t){e&&e.setCwd(t),qEe(t)}function qEe(e){try{process.chdir(e)}catch{}}nt();wt();G();import{spawn as YY}from"child_process";import{existsSync as XY,mkdirSync as XEe,readFileSync as QY,unlinkSync as VY,writeFileSync as ZY}from"fs";import{get as QEe}from"https";import{join as e4}from"path";import{readFileSync as zEe}from"fs";import{dirname as JEe,join as VEe}from"path";import{fileURLToPath as YEe}from"url";function Pr(){try{return"5.105.0"}catch{}try{let e=JEe(YEe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(zEe(VEe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}W();var ZEe=64*1024,eRe=10800*1e3,tRe=800,nRe=3600*1e3,rRe="update-check.json",oRe="pending-update.json";function h_(){return e4(ya(),rRe)}function zp(){return e4(ya(),oRe)}function y_(){let e=ya();XY(e)||XEe(e,{recursive:!0})}function t4(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 n4(){try{let e=QY(h_(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function r4(){try{y_();let e=`
1856
+ `),GY=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,g_=30,LEe=1024,NEe=8e3,BEe="haiku";async function UEe(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=KEe(n,LEe),o=new AbortController,i=setTimeout(()=>o.abort(),t.timeoutMs??NEe),s=t.signal?GEe([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,s):a=await Ma({token:t.token,model:t.model??BEe,system:FEe,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=jEe(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=$Ee(t.worktreePath);return await HEe(l,c)}function jEe(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(GY.test(t)&&t.length<=g_)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>g_)break;o=s}return GY.test(o)?o:null}async function HEe(e,t){if(!await WEe(zY(t,e)))return e;let n=DEe(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,g_-5)}-${n}`}async function WEe(e){try{return await OEe.access(e),!0}catch{return!1}}function KEe(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 GEe(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 JY(e){let t,n,r=zY(e.deferred.repoRoot,".afk-worktrees","unnamed"),o=await UEe(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=`${ng(e.branchPrefix)}${o}`;try{let c=await e.deferred.create(l);return qY(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 qY(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 qY(e,t){e&&e.setCwd(t),qEe(t)}function qEe(e){try{process.chdir(e)}catch{}}nt();wt();G();import{spawn as YY}from"child_process";import{existsSync as XY,mkdirSync as XEe,readFileSync as QY,unlinkSync as VY,writeFileSync as ZY}from"fs";import{get as QEe}from"https";import{join as e4}from"path";import{readFileSync as zEe}from"fs";import{dirname as JEe,join as VEe}from"path";import{fileURLToPath as YEe}from"url";function Pr(){try{return"5.106.0"}catch{}try{let e=JEe(YEe(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(zEe(VEe(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}W();var ZEe=64*1024,eRe=10800*1e3,tRe=800,nRe=3600*1e3,rRe="update-check.json",oRe="pending-update.json";function h_(){return e4(ya(),rRe)}function zp(){return e4(ya(),oRe)}function y_(){let e=ya();XY(e)||XEe(e,{recursive:!0})}function t4(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 n4(){try{let e=QY(h_(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function r4(){try{y_();let e=`
1857
1857
  const https = require('https');
1858
1858
  const fs = require('fs');
1859
1859
  const url = 'https://registry.npmjs.org/agent-afk/latest';