@reddb-io/red-skills 2.79.1 → 2.80.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.
|
@@ -492,7 +492,7 @@ ${e.slice(o.end).trimStart()}`.trimEnd()+`
|
|
|
492
492
|
`),et=new pp(s,"");PPr({input:ie.stdout}).on("line",Qt=>{he.push(Qt),Ae(Qt)}),ie.stderr.on("data",Qt=>{et.push(Qt.toString())}),ie.on("close",Qt=>{H({stdout:he.toString(),stderr:et.toString(),exitCode:Qt??0})})}else{let Ae=[],he=[];ie.stdout.on("data",et=>{Ae.push(et.toString())}),ie.stderr.on("data",et=>{he.push(et.toString())}),ie.on("close",et=>{H({stdout:Ae.join(""),stderr:he.join(""),exitCode:et??0})})}})},interactiveExec:async(F,_)=>{let P=Ae=>"'"+Ae.replace(/'/g,"'\\''")+"'",H=["set -m","PROMPT_COMMAND='stty sane 2>/dev/null; jobs %1 &>/dev/null 2>&1 || exit'",F.map(P).join(" ")].join(`
|
|
493
493
|
`)+`
|
|
494
494
|
`,V=Buffer.from(H).toString("base64");await J.exec(`printf '%s' '${V}' | base64 -d > /tmp/.sc_init.sh`);let ie=["exec"];return"isTTY"in _.stdin&&_.stdin.isTTY?ie.push("-it"):ie.push("-i"),_.cwd&&ie.push("-w",_.cwd),ie.push(d,"bash","--rcfile","/tmp/.sc_init.sh","-i"),new Promise((Ae,he)=>{let et=yIt("podman",ie,{stdio:[_.stdin,_.stdout,_.stderr]});et.on("error",wt=>{he(new Error(`podman exec failed: ${wt.message}`))}),et.on("close",wt=>{Ae({exitCode:wt??0})})})},copyFileIn:(F,_)=>new Promise((P,L)=>{LI("podman",["cp",F,`${d}:${_}`],H=>{H?L(new Error(`podman cp (in) failed: ${H.message}`)):P()})}),copyFileOut:(F,_)=>new Promise((P,L)=>{LI("podman",["cp",`${d}:${F}`,_],H=>{H?L(new Error(`podman cp (out) failed: ${H.message}`)):P()})}),close:async()=>{D(),await new Promise((F,_)=>{LI("podman",["rm","-f",d],P=>{P?_(new Error(`podman rm failed: ${P.message}`)):F()})})}};return J}})},QPr=e=>new Promise((t,r)=>{LI("podman",["image","inspect",e],n=>{n?r(new Error(`Image '${e}' not found locally. Build it first with 'podman build -t ${e} .'`)):t()})}),nve=()=>new Error("Podman Machine is not running. Run 'podman machine init && podman machine start' first."),MPr=()=>new Promise((e,t)=>{LI("podman",["machine","list","--format","json"],(r,n)=>{if(r){t(nve());return}try{JSON.parse(n.toString()).some(i=>i.Running)?e():t(nve())}catch{t(nve())}})})});function bIt(e,t,r,n,o,i){let s=xy[t],a=n?.effort,c=s.resolveAuthEnv?.(o);if(s.channel==="variant"){let p={};return a!==void 0&&(p.variant=a),c&&(p.env=c),e.opencode(r,Object.keys(p).length>0?p:void 0)}let u=a!==void 0&&s.efforts.includes(a),l=u?a:s.defaultEffort;a!==void 0&&!u&&i?.(s.defaultEffort!==void 0?`[afk] warn: effort '${a}' triggers thinking which MiniMax-M3 does not accept; capping to '${s.defaultEffort}' for runner '${t}' (accepted: ${s.efforts.join(", ")}).`:`[afk] warn: effort '${a}' is not accepted by runner '${t}' (accepted: ${s.efforts.join(", ")}); falling back to the provider default.`);let d=s.forcedModel??r;if(s.factory==="codex")return e.codex(d,l!==void 0?{effort:l}:void 0);let f={};return l!==void 0&&(f.effort=l),c&&(f.env=c),e.claudeCode(d,Object.keys(f).length>0?f:void 0)}async function AL(){let[e,t,r,n]=await Promise.all([Promise.resolve().then(()=>(UA(),oCt)),Promise.resolve().then(()=>(VZ(),fxt)),Promise.resolve().then(()=>(AIt(),gIt)),Promise.resolve().then(()=>(EIt(),xIt))]),o=c=>console.warn(c),i={claudeCode:(c,u)=>e.claudeCode(c,u),codex:(c,u)=>e.codex(c,u),opencode:(c,u)=>e.opencode(c,u)},s=(c,u,l)=>bIt(i,c,u,l,process.env,o),a=(c,u)=>{let l=u?.mountPath?[{hostPath:u.mountPath,sandboxPath:u.mountPath}]:void 0,d={...l?{mounts:l}:{},...u?.imageName?{imageName:u.imageName}:{}},f=Object.keys(d).length>0;if(c==="docker")return r.docker(f?d:void 0);if(c==="podman")return n.podman(f?d:void 0);let p=uCt(process.env);return t.noSandbox(p?{hostEnvAllowlist:p}:void 0)};return{run:e.run,agentFor:s,sandboxFor:a,warn:o}}var SIt=h(()=>{"use strict";UA();QI();lCt();dCt();eve();R2();Ns();lIt();tve();rve()});var m3=h(()=>{"use strict";Ns();R2();SIt();tve();rve()});var VPr,GPr,SL,vIt=h(()=>{"use strict";CD();VPr=ye.object({kind:ye.string().default(""),value:ye.string().default("")}),GPr=ye.object({kind:ye.string().default(""),number:ye.union([ye.number(),ye.string()]).optional().default(""),title:ye.string().default(""),slug:ye.string().default(""),worktree:ye.string().default(""),handoff:ye.string().default(""),started_at:ye.string().default(""),activity:ye.string().default(""),phase:ye.string().default(""),heartbeat_glyph:ye.union([ye.string(),ye.number(),ye.null()]).optional().default(""),heartbeat_pid:ye.union([ye.string(),ye.number(),ye.null()]).optional().default(""),runner:ye.string().default(""),model:ye.string().default(""),effort:ye.string().default(""),retries:ye.number().default(0),last_stream_line:ye.string().default(""),run_mode:ye.string().default(""),last_commit_at:ye.string().default(""),last_event_at:ye.string().default(""),iteration:ye.union([ye.number(),ye.string()]).optional().default(""),base:ye.string().default(""),base_ref:ye.string().default(""),base_sha:ye.string().default(""),base_source:ye.string().default(""),base_remote_reachable:ye.boolean().default(!1),base_local_sha:ye.string().default(""),base_local_ahead:ye.number().default(0),base_local_behind:ye.number().default(0),tools_called_count:ye.number().default(0),text_chunk_count:ye.number().default(0),reasoning_events:ye.number().default(0),reasoning_tokens:ye.number().default(0),waiting_count:ye.number().default(0),loc_added:ye.number().default(0),loc_removed:ye.number().default(0),loc_peak_added:ye.number().default(0),loc_peak_removed:ye.number().default(0),input_tokens:ye.number().default(0),output_tokens:ye.number().default(0),cost_usd:ye.number().default(0),output_shaping_variant:ye.string().default(""),output_shaping_enabled:ye.boolean().default(!1)}),SL=ye.object({version:ye.number().default(1),worker_id:ye.string().default(""),pid:ye.number().default(0),pid_start_time:ye.string().default(""),log:ye.string().default(""),started_at:ye.string().default(""),origin:ye.string().default(""),runner:ye.string().default(""),filter:VPr.default({}),total:ye.number().default(0),done:ye.number().default(0),failed:ye.number().default(0),blocked:ye.number().default(0),completed:ye.array(ye.number()).default([]),queue:ye.array(ye.number()).default([]),current:GPr.default({}),durations_seconds:ye.array(ye.number()).default([]),envelope:ye.object({posted:ye.boolean().default(!1)}).default({posted:!1})})});import{mkdir as JPr,readFile as YPr,rename as ZPr,writeFile as KPr}from"node:fs/promises";import{existsSync as XPr,mkdirSync as _It,readFileSync as RIt,renameSync as TIt,writeFileSync as BIt}from"node:fs";import{dirname as DIt,join as OIt}from"node:path";function PIt(){return SL.parse({})}function QIt(e,t){let r=OIt(e,NIt);if(XPr(r))return;_It(e,{recursive:!0});let n=`${r}.tmp.${process.pid}.sync`;BIt(n,gc(t),"utf8"),TIt(n,r)}function lve(e){if(!e)return null;try{let t=pu(e);return typeof t!="object"||t===null?null:{worker_id:typeof t.worker_id=="string"?t.worker_id:"",runner:typeof t.runner=="string"?t.runner:"",origin:typeof t.origin=="string"?t.origin:"",number:typeof t.number=="number"||typeof t.number=="string"?t.number:"",started_at:typeof t.started_at=="string"?t.started_at:""}}catch{return null}}function MIt(e){try{return lve(RIt(OIt(e,NIt),"utf8"))}catch{return null}}function eNr(e){if(typeof e!="object"||e===null)return e;let t=e.current;if(typeof t!="object"||t===null)return e;let r=t,n=(o,i)=>{r[o]===void 0&&r[i]!==void 0&&(r[o]=r[i])};return n("activity","stage"),n("loc_added","diff_added"),n("loc_removed","diff_removed"),n("reasoning_events","thinking_called_count"),n("last_commit_at","last_progress_at"),e}function dve(e){return SL.parse(eNr(e??{}))}function fve(e){return dve(pu(e))}async function FIt(e){try{let t=await YPr(e,"utf8");return fve(t)}catch{return PIt()}}function wL(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function LIt(e,t){for(let[r,n]of Object.entries(t)){let o=e[r];wL(o)&&wL(n)?LIt(o,n):e[r]=n}}function pve(e,t,r){let n=t.split(".").filter(Boolean);if(n.length===0)throw new Error("empty state field");let o=e;for(let a of n.slice(0,-1)){let c=o[a];(!c||typeof c!="object"||Array.isArray(c))&&(o[a]={}),o=o[a]}let i=n[n.length-1],s=o[i];wL(s)&&wL(r)?LIt(s,r):o[i]=r}function tNr(e){return typeof e=="string"?e!=="":typeof e=="number"?e!==0:e!=null}function rNr(e,t,r){let n=r.split(".").filter(Boolean),o=t;for(let i of n){if(!wL(o))return;o=o[i]}tNr(o)&&pve(e,r,o)}function oNr(e,t,r){let n=t;for(let o of nNr)rNr(e,n,o);(t.pid>0&&!r.allowPidReset||t.pid>0&&e.pid!==0)&&(e.pid=t.pid)}async function iNr(e,t){await JPr(DIt(e),{recursive:!0});let r=`${e}.tmp.${process.pid}.${Date.now()}`;await KPr(r,gc(SL.parse(t)),"utf8"),await ZPr(r,e)}function $It(e,t={}){let r=PIt();r.version=1,r.envelope={posted:!1};for(let[i,s]of Object.entries(t))pve(r,i,s);let n=dve(r);_It(DIt(e),{recursive:!0});let o=`${e}.tmp.${process.pid}.sync`;return BIt(o,gc(SL.parse(n)),"utf8"),TIt(o,e),n}async function sNr(e,t,r={}){let n=await FIt(e),o=structuredClone(n);for(let[s,a]of Object.entries(t))pve(o,s,a);oNr(o,n,r);let i=dve(o);return await iNr(e,i),i}async function x3(e,t,r={}){let o=(y3.get(e)??Promise.resolve()).catch(()=>{}).then(()=>sNr(e,t,r)),i=o.then(()=>{},()=>{});return y3.set(e,i),i.finally(()=>{y3.get(e)===i&&y3.delete(e)}),o}function mve(e){if(!Number.isInteger(e)||e<=0)return null;try{let t=RIt(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");if(r===-1)return null;let o=t.slice(r+2).trim().split(/\s+/)[19];return o&&/^\d+$/.test(o)?o:null}catch{return null}}function UIt(e,t=aNr,r=mve){if(!Number.isInteger(e.pid)||e.pid<=0||!t(e.pid,0))return!1;let n=e.pid_start_time??"";if(!n)return!0;let o=r(e.pid);return o===null||o===n}function aNr(e){try{return process.kill(e,0),!0}catch{return!1}}var NIt,nNr,y3,E3=h(()=>{"use strict";Ap();vIt();NIt="identity.json";nNr=["worker_id","pid_start_time","started_at","origin","runner","current.kind","current.number","current.started_at","current.runner","current.model","current.effort"],y3=new Map});import{constants as cNr}from"node:fs";import{access as uNr,appendFile as Y4n,mkdir as Z4n,readdir as iB,readFile as jIt,rename as K4n,rm as qIt,rmdir as HIt,stat as b3,writeFile as X4n}from"node:fs/promises";import{dirname as zIt,join as yp,normalize as hve,sep as $I}from"node:path";async function S3(e){try{return await uNr(e,cNr.F_OK),!0}catch{return!1}}async function zA(e){await mNr(e),await qIt(e,{recursive:!0,force:!0})}function gve(e){return hve(e).split($I).filter(Boolean)}function lNr(e){if(e===null)return!1;let t=e.trim();if(!/^[1-9][0-9]*$/.test(t))return!1;try{return process.kill(Number(t),0),!0}catch(r){return r.code==="EPERM"}}async function WIt(e){try{return lNr(await jIt(e,"utf8"))}catch{return!1}}function dNr(e){let t=gve(e);return t.length>=2&&t.at(-2)===".red"&&t.at(-1)==="tmp"}function fNr(e){let t=gve(e),r=t.at(-1)??"",n=t.at(-2)??"",o=t.at(-3)??"",i=t.findIndex((s,a)=>s==="tmp"&&t[a-1]===".red");if(i>=0&&t[i+1]==="supervisors"&&t[i+2]){let s=t.slice(0,i+3);return`${e.startsWith($I)?$I:""}${s.join($I)}`}return r.startsWith("afk-supervisor.")&&(n==="castle"||n==="afk")&&o==="state"?zIt(e):r.startsWith("afk-supervisor.")&&n==="tmp"&&o===".red"?zIt(e):(r==="castle"||r==="afk")&&n==="state"?e:null}function pNr(e){let t=gve(e),r=t.findIndex((s,a)=>s==="tmp"&&t[a-1]===".red");if(r<0)return null;let n=t[r+1];if(!["workers","go-workers","scout-workers"].includes(n??"")||!t[r+2])return null;let i=t.slice(0,r+3);return`${e.startsWith($I)?$I:""}${i.join($I)}`}async function mNr(e){if(dNr(e))throw new Error(`refusing to remove .red/tmp root: ${e}`);let t=fNr(e);if(t&&await WIt(yp(t,"afk-supervisor.pid")))throw new Error(`refusing to remove live supervisor artifact: ${e}`);let r=pNr(e);if(r&&await WIt(yp(r,"worker.pid"))){let n=hve(e),o=hve(r);if(n===o||n===yp(o,"worker.pid"))throw new Error(`refusing to remove live worker artifact: ${e}`)}}async function ub(e){try{return await jIt(e,"utf8")}catch{return null}}async function VIt(e){let t=[],r;try{r=await iB(e)}catch{return t}for(let n of r){let o=yp(e,n),i;try{i=await iB(o)}catch{continue}for(let s of i){let a=yp(o,s,"afk.state.toon");await S3(a)&&t.push(a)}}return t}async function Ave(e){let t={workerDirs:[],workerPidFiles:[],emptyAttemptDirs:[]};for(let r of eB(e)){let n=await hNr(r);t.workerDirs.push(...n.workerDirs),t.workerPidFiles.push(...n.workerPidFiles),t.emptyAttemptDirs.push(...n.emptyAttemptDirs)}return t}async function hNr(e){let t={workerDirs:[],workerPidFiles:[],emptyAttemptDirs:[]},r;try{r=await iB(e)}catch{return t}for(let n of r){let o=yp(e,n);try{if(!(await b3(o)).isDirectory())continue}catch{continue}let i=yp(o,"worker.pid");if(GIt(await ub(i)))continue;let s;try{s=await iB(o)}catch{continue}let a=[],c=!0;for(let d of s){let f=yp(o,d);if(d==="worker.pid"){try{(await b3(f)).isFile()||(c=!1)}catch{}if(!c)break;continue}if(!/^[1-9][0-9]*-a[1-9][0-9]*$/.test(d)){c=!1;break}try{if(!(await b3(f)).isDirectory()){c=!1;break}if((await iB(f)).length>0){c=!1;break}}catch{c=!1;break}a.push(f)}if(!c)continue;let u=[];for(let d of a)try{await HIt(d),u.push(d)}catch{c=!1;break}if(!c)continue;let l=!1;try{await S3(i)&&(await qIt(i,{force:!0}),l=!0),await HIt(o)}catch{continue}t.workerDirs.push(o),l&&t.workerPidFiles.push(i),t.emptyAttemptDirs.push(...u)}return t}function GIt(e){if(e===null)return!1;let t=e.trim();if(!/^[1-9][0-9]*$/.test(t))return!1;try{return process.kill(Number(t),0),!0}catch(r){return r.code==="EPERM"}}async function CL(e){let t=yp(e,"claims"),r;try{r=await iB(t)}catch{return[]}let n=[];for(let o of r){let i=yp(t,o);try{if(!(await b3(i)).isDirectory())continue}catch{continue}let s=await ub(yp(i,"pid"));if(!GIt(s)){let a=/^[1-9][0-9]*$/.test(o)?Number(o):void 0;n.push(a===void 0?{path:i}:{path:i,issue:a})}}return n}var WA=h(()=>{"use strict";E3();ab()});import{existsSync as nkt}from"node:fs";import{join as l1r}from"node:path";function okt(e){let t=qU(e);if(nkt(t))return t;let r=l1r(Dc(e),"branch-lock.yaml");return nkt(r)?r:t}async function zve(e){let t=await ub(e);if(t===null)return;let n=(t.split(`
|
|
495
|
-
`,1)[0]??"").trim();return n.length>0?n:void 0}async function ikt(e){return await zve(e)!==void 0}var skt=h(()=>{"use strict";Xd();WA()});function KI(e){let t={app:e,version:kvt(ZI("__RED_BUILD_VERSION__",()=>"2.79.1")??"0.0.0-dev"),gitSha:ZI("__RED_BUILD_GIT_SHA__",()=>"0ac8949d24cbbae9260e6f3ef82eae9985383904")??"unknown",buildTime:ZI("__RED_BUILD_TIME__",()=>"2026-07-22T08:59:47-03:00")??"unknown",bundleAsset:ZI("__RED_BUNDLE_ASSET__",()=>"afk-mcp.bundle.min.mjs")??"unknown"},r=ZI("__REDDB_SDK_VERSION__",()=>""),n=ZI("__REDDB_BINARY_TAG__",()=>"");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function kvt(e){return e.startsWith("v")?e.slice(1):e}function t_e(e){return`${e.app} ${e.version} ${e.gitSha}`}function ZI(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Q_t=Object.freeze({status:"aborted"});function re(e,t,r){function n(a,c){var u;Object.defineProperty(a,"_zod",{value:a._zod??{},enumerable:!1}),(u=a._zod).traits??(u.traits=new Set),a._zod.traits.add(e),t(a,c);for(let l in s.prototype)l in a||Object.defineProperty(a,l,{value:s.prototype[l].bind(a)});a._zod.constr=s,a._zod.def=c}let o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;let u=r?.Parent?new i:this;n(u,a),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}var M_t=Symbol("zod_brand"),wh=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},XL={};function mu(e){return e&&Object.assign(XL,e),XL}var Sr={};br(Sr,{BIGINT_FORMAT_RANGES:()=>A_e,Class:()=>lK,NUMBER_FORMAT_RANGES:()=>AK,aborted:()=>Db,allowsEval:()=>mK,assert:()=>H_t,assertEqual:()=>F_t,assertIs:()=>$_t,assertNever:()=>U_t,assertNotEqual:()=>L_t,assignProp:()=>pK,cached:()=>kB,captureStackTrace:()=>t$,cleanEnum:()=>tRt,cleanRegex:()=>_B,clone:()=>hu,createTransparentProxy:()=>G_t,defineLazy:()=>Wn,esc:()=>Bb,escapeRegex:()=>ZA,extend:()=>Z_t,finalizeIssue:()=>Hd,floatSafeRemainder:()=>fK,getElementAtPath:()=>z_t,getEnumValues:()=>IB,getLengthableOrigin:()=>RB,getParsedType:()=>V_t,getSizableOrigin:()=>y_e,isObject:()=>a0,isPlainObject:()=>c0,issue:()=>yK,joinValues:()=>e$,jsonStringifyReplacer:()=>dK,merge:()=>K_t,normalizeParams:()=>yt,nullish:()=>vB,numKeys:()=>q_t,omit:()=>Y_t,optionalKeys:()=>gK,partial:()=>X_t,pick:()=>J_t,prefixIssues:()=>Sp,primitiveTypes:()=>g_e,promiseAllObject:()=>W_t,propertyKeyTypes:()=>hK,randomString:()=>j_t,required:()=>eRt,stringifyPrimitive:()=>r$,unwrapMessage:()=>CB});function F_t(e){return e}function L_t(e){return e}function $_t(e){}function U_t(e){throw new Error}function H_t(e){}function IB(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function e$(e,t="|"){return e.map(r=>r$(r)).join(t)}function dK(e,t){return typeof t=="bigint"?t.toString():t}function kB(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function vB(e){return e==null}function _B(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function fK(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,o=r>n?r:n,i=Number.parseInt(e.toFixed(o).replace(".","")),s=Number.parseInt(t.toFixed(o).replace(".",""));return i%s/10**o}function Wn(e,t,r){Object.defineProperty(e,t,{get(){{let o=r();return e[t]=o,o}throw new Error("cached value already set")},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function pK(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function z_t(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function W_t(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let i=0;i<t.length;i++)o[t[i]]=n[i];return o})}function j_t(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Bb(e){return JSON.stringify(e)}var t$=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function a0(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mK=kB(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function c0(e){if(a0(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let r=t.prototype;return!(a0(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function q_t(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var V_t=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},hK=new Set(["string","number","symbol"]),g_e=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ZA(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function hu(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function yt(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function G_t(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,i){return t??(t=e()),Reflect.set(t,n,o,i)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function r$(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function gK(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var AK={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},A_e={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function J_t(e,t){let r={},n=e._zod.def;for(let o in t){if(!(o in n.shape))throw new Error(`Unrecognized key: "${o}"`);t[o]&&(r[o]=n.shape[o])}return hu(e,{...e._zod.def,shape:r,checks:[]})}function Y_t(e,t){let r={...e._zod.def.shape},n=e._zod.def;for(let o in t){if(!(o in n.shape))throw new Error(`Unrecognized key: "${o}"`);t[o]&&delete r[o]}return hu(e,{...e._zod.def,shape:r,checks:[]})}function Z_t(e,t){if(!c0(t))throw new Error("Invalid input to extend: expected a plain object");let r={...e._zod.def,get shape(){let n={...e._zod.def.shape,...t};return pK(this,"shape",n),n},checks:[]};return hu(e,r)}function K_t(e,t){return hu(e,{...e._zod.def,get shape(){let r={...e._zod.def.shape,...t._zod.def.shape};return pK(this,"shape",r),r},catchall:t._zod.def.catchall,checks:[]})}function X_t(e,t,r){let n=t._zod.def.shape,o={...n};if(r)for(let i in r){if(!(i in n))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(o[i]=e?new e({type:"optional",innerType:n[i]}):n[i])}else for(let i in n)o[i]=e?new e({type:"optional",innerType:n[i]}):n[i];return hu(t,{...t._zod.def,shape:o,checks:[]})}function eRt(e,t,r){let n=t._zod.def.shape,o={...n};if(r)for(let i in r){if(!(i in o))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(o[i]=new e({type:"nonoptional",innerType:n[i]}))}else for(let i in n)o[i]=new e({type:"nonoptional",innerType:n[i]});return hu(t,{...t._zod.def,shape:o,checks:[]})}function Db(e,t=0){for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Sp(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function CB(e){return typeof e=="string"?e:e?.message}function Hd(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=CB(e.inst?._zod.def?.error?.(e))??CB(t?.error?.(e))??CB(r.customError?.(e))??CB(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function y_e(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function RB(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function yK(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function tRt(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}var lK=class{constructor(...t){}};var x_e=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get(){return JSON.stringify(t,dK,2)},enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},n$=re("$ZodError",x_e),TB=re("$ZodError",x_e,{Parent:Error});function xK(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function EK(e,t){let r=t||function(i){return i.message},n={_errors:[]},o=i=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>o({issues:a}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(r(s));else{let a=n,c=0;for(;c<s.path.length;){let u=s.path[c];c===s.path.length-1?(a[u]=a[u]||{_errors:[]},a[u]._errors.push(r(s))):a[u]=a[u]||{_errors:[]},a=a[u],c++}}};return o(e),n}var bK=e=>(t,r,n,o)=>{let i=n?Object.assign(n,{async:!1}):{async:!1},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise)throw new wh;if(s.issues.length){let a=new(o?.Err??e)(s.issues.map(c=>Hd(c,i,mu())));throw t$(a,o?.callee),a}return s.value},SK=bK(TB),wK=e=>async(t,r,n,o)=>{let i=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){let a=new(o?.Err??e)(s.issues.map(c=>Hd(c,i,mu())));throw t$(a,o?.callee),a}return s.value},CK=wK(TB),IK=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new wh;return i.issues.length?{success:!1,error:new(e??n$)(i.issues.map(s=>Hd(s,o,mu())))}:{success:!0,data:i.value}},Ob=IK(TB),kK=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>Hd(s,o,mu())))}:{success:!0,data:i.value}},Pb=kK(TB);var E_e=/^[cC][^\s-]{8,}$/,b_e=/^[0-9a-z]+$/,S_e=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,w_e=/^[0-9a-vA-V]{20}$/,C_e=/^[A-Za-z0-9]{27}$/,I_e=/^[a-zA-Z0-9_-]{21}$/,k_e=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var v_e=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,vK=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;var __e=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var nRt="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function R_e(){return new RegExp(nRt,"u")}var T_e=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,B_e=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,D_e=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,O_e=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,P_e=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,_K=/^[A-Za-z0-9_-]*$/,N_e=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;var Q_e=/^\+(?:[0-9]){6,14}[0-9]$/,M_e="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",F_e=new RegExp(`^${M_e}$`);function L_e(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function $_e(e){return new RegExp(`^${L_e(e)}$`)}function U_e(e){let t=L_e({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-]\\d{2}:\\d{2})");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${M_e}T(?:${n})$`)}var H_e=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)};var z_e=/^\d+$/,W_e=/^-?\d+(?:\.\d+)?/i,j_e=/true|false/i,q_e=/null/i;var V_e=/^[^A-Z]*$/,G_e=/^[^a-z]*$/;var _s=re("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),J_e={number:"number",bigint:"bigint",object:"date"},RK=re("$ZodCheckLessThan",(e,t)=>{_s.init(e,t);let r=J_e[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,i=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),TK=re("$ZodCheckGreaterThan",(e,t)=>{_s.init(e,t);let r=J_e[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,i=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Y_e=re("$ZodCheckMultipleOf",(e,t)=>{_s.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):fK(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Z_e=re("$ZodCheckNumberFormat",(e,t)=>{_s.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,i]=AK[t.format];e._zod.onattach.push(s=>{let a=s._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,r&&(a.pattern=z_e)}),e._zod.check=s=>{let a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:t.format,code:"invalid_type",input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inst:e})}});var K_e=re("$ZodCheckMaxLength",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let s=RB(o);n.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),X_e=re("$ZodCheckMinLength",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let s=RB(o);n.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),eRe=re("$ZodCheckLengthEquals",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,i=o.length;if(i===t.length)return;let s=RB(o),a=i>t.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),BB=re("$ZodCheckStringFormat",(e,t)=>{var r,n;_s.init(e,t),e._zod.onattach.push(o=>{let i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),tRe=re("$ZodCheckRegex",(e,t)=>{BB.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),rRe=re("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=V_e),BB.init(e,t)}),nRe=re("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=G_e),BB.init(e,t)}),oRe=re("$ZodCheckIncludes",(e,t)=>{_s.init(e,t);let r=ZA(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),iRe=re("$ZodCheckStartsWith",(e,t)=>{_s.init(e,t);let r=new RegExp(`^${ZA(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),sRe=re("$ZodCheckEndsWith",(e,t)=>{_s.init(e,t);let r=new RegExp(`.*${ZA(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var aRe=re("$ZodCheckOverwrite",(e,t)=>{_s.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var i$=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
|
|
495
|
+
`,1)[0]??"").trim();return n.length>0?n:void 0}async function ikt(e){return await zve(e)!==void 0}var skt=h(()=>{"use strict";Xd();WA()});function KI(e){let t={app:e,version:kvt(ZI("__RED_BUILD_VERSION__",()=>"2.80.0")??"0.0.0-dev"),gitSha:ZI("__RED_BUILD_GIT_SHA__",()=>"4a1ed446d771c5769fdeef78ef501df459a8553c")??"unknown",buildTime:ZI("__RED_BUILD_TIME__",()=>"2026-07-22T10:44:22-03:00")??"unknown",bundleAsset:ZI("__RED_BUNDLE_ASSET__",()=>"afk-mcp.bundle.min.mjs")??"unknown"},r=ZI("__REDDB_SDK_VERSION__",()=>""),n=ZI("__REDDB_BINARY_TAG__",()=>"");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function kvt(e){return e.startsWith("v")?e.slice(1):e}function t_e(e){return`${e.app} ${e.version} ${e.gitSha}`}function ZI(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Q_t=Object.freeze({status:"aborted"});function re(e,t,r){function n(a,c){var u;Object.defineProperty(a,"_zod",{value:a._zod??{},enumerable:!1}),(u=a._zod).traits??(u.traits=new Set),a._zod.traits.add(e),t(a,c);for(let l in s.prototype)l in a||Object.defineProperty(a,l,{value:s.prototype[l].bind(a)});a._zod.constr=s,a._zod.def=c}let o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;let u=r?.Parent?new i:this;n(u,a),(c=u._zod).deferred??(c.deferred=[]);for(let l of u._zod.deferred)l();return u}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}var M_t=Symbol("zod_brand"),wh=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},XL={};function mu(e){return e&&Object.assign(XL,e),XL}var Sr={};br(Sr,{BIGINT_FORMAT_RANGES:()=>A_e,Class:()=>lK,NUMBER_FORMAT_RANGES:()=>AK,aborted:()=>Db,allowsEval:()=>mK,assert:()=>H_t,assertEqual:()=>F_t,assertIs:()=>$_t,assertNever:()=>U_t,assertNotEqual:()=>L_t,assignProp:()=>pK,cached:()=>kB,captureStackTrace:()=>t$,cleanEnum:()=>tRt,cleanRegex:()=>_B,clone:()=>hu,createTransparentProxy:()=>G_t,defineLazy:()=>Wn,esc:()=>Bb,escapeRegex:()=>ZA,extend:()=>Z_t,finalizeIssue:()=>Hd,floatSafeRemainder:()=>fK,getElementAtPath:()=>z_t,getEnumValues:()=>IB,getLengthableOrigin:()=>RB,getParsedType:()=>V_t,getSizableOrigin:()=>y_e,isObject:()=>a0,isPlainObject:()=>c0,issue:()=>yK,joinValues:()=>e$,jsonStringifyReplacer:()=>dK,merge:()=>K_t,normalizeParams:()=>yt,nullish:()=>vB,numKeys:()=>q_t,omit:()=>Y_t,optionalKeys:()=>gK,partial:()=>X_t,pick:()=>J_t,prefixIssues:()=>Sp,primitiveTypes:()=>g_e,promiseAllObject:()=>W_t,propertyKeyTypes:()=>hK,randomString:()=>j_t,required:()=>eRt,stringifyPrimitive:()=>r$,unwrapMessage:()=>CB});function F_t(e){return e}function L_t(e){return e}function $_t(e){}function U_t(e){throw new Error}function H_t(e){}function IB(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function e$(e,t="|"){return e.map(r=>r$(r)).join(t)}function dK(e,t){return typeof t=="bigint"?t.toString():t}function kB(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function vB(e){return e==null}function _B(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function fK(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,o=r>n?r:n,i=Number.parseInt(e.toFixed(o).replace(".","")),s=Number.parseInt(t.toFixed(o).replace(".",""));return i%s/10**o}function Wn(e,t,r){Object.defineProperty(e,t,{get(){{let o=r();return e[t]=o,o}throw new Error("cached value already set")},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function pK(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function z_t(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function W_t(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let i=0;i<t.length;i++)o[t[i]]=n[i];return o})}function j_t(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Bb(e){return JSON.stringify(e)}var t$=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function a0(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mK=kB(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function c0(e){if(a0(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let r=t.prototype;return!(a0(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function q_t(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var V_t=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},hK=new Set(["string","number","symbol"]),g_e=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ZA(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function hu(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function yt(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function G_t(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,i){return t??(t=e()),Reflect.set(t,n,o,i)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function r$(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function gK(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var AK={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},A_e={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function J_t(e,t){let r={},n=e._zod.def;for(let o in t){if(!(o in n.shape))throw new Error(`Unrecognized key: "${o}"`);t[o]&&(r[o]=n.shape[o])}return hu(e,{...e._zod.def,shape:r,checks:[]})}function Y_t(e,t){let r={...e._zod.def.shape},n=e._zod.def;for(let o in t){if(!(o in n.shape))throw new Error(`Unrecognized key: "${o}"`);t[o]&&delete r[o]}return hu(e,{...e._zod.def,shape:r,checks:[]})}function Z_t(e,t){if(!c0(t))throw new Error("Invalid input to extend: expected a plain object");let r={...e._zod.def,get shape(){let n={...e._zod.def.shape,...t};return pK(this,"shape",n),n},checks:[]};return hu(e,r)}function K_t(e,t){return hu(e,{...e._zod.def,get shape(){let r={...e._zod.def.shape,...t._zod.def.shape};return pK(this,"shape",r),r},catchall:t._zod.def.catchall,checks:[]})}function X_t(e,t,r){let n=t._zod.def.shape,o={...n};if(r)for(let i in r){if(!(i in n))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(o[i]=e?new e({type:"optional",innerType:n[i]}):n[i])}else for(let i in n)o[i]=e?new e({type:"optional",innerType:n[i]}):n[i];return hu(t,{...t._zod.def,shape:o,checks:[]})}function eRt(e,t,r){let n=t._zod.def.shape,o={...n};if(r)for(let i in r){if(!(i in o))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(o[i]=new e({type:"nonoptional",innerType:n[i]}))}else for(let i in n)o[i]=new e({type:"nonoptional",innerType:n[i]});return hu(t,{...t._zod.def,shape:o,checks:[]})}function Db(e,t=0){for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Sp(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function CB(e){return typeof e=="string"?e:e?.message}function Hd(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=CB(e.inst?._zod.def?.error?.(e))??CB(t?.error?.(e))??CB(r.customError?.(e))??CB(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function y_e(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function RB(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function yK(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function tRt(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}var lK=class{constructor(...t){}};var x_e=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get(){return JSON.stringify(t,dK,2)},enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},n$=re("$ZodError",x_e),TB=re("$ZodError",x_e,{Parent:Error});function xK(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function EK(e,t){let r=t||function(i){return i.message},n={_errors:[]},o=i=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>o({issues:a}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(r(s));else{let a=n,c=0;for(;c<s.path.length;){let u=s.path[c];c===s.path.length-1?(a[u]=a[u]||{_errors:[]},a[u]._errors.push(r(s))):a[u]=a[u]||{_errors:[]},a=a[u],c++}}};return o(e),n}var bK=e=>(t,r,n,o)=>{let i=n?Object.assign(n,{async:!1}):{async:!1},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise)throw new wh;if(s.issues.length){let a=new(o?.Err??e)(s.issues.map(c=>Hd(c,i,mu())));throw t$(a,o?.callee),a}return s.value},SK=bK(TB),wK=e=>async(t,r,n,o)=>{let i=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){let a=new(o?.Err??e)(s.issues.map(c=>Hd(c,i,mu())));throw t$(a,o?.callee),a}return s.value},CK=wK(TB),IK=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new wh;return i.issues.length?{success:!1,error:new(e??n$)(i.issues.map(s=>Hd(s,o,mu())))}:{success:!0,data:i.value}},Ob=IK(TB),kK=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>Hd(s,o,mu())))}:{success:!0,data:i.value}},Pb=kK(TB);var E_e=/^[cC][^\s-]{8,}$/,b_e=/^[0-9a-z]+$/,S_e=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,w_e=/^[0-9a-vA-V]{20}$/,C_e=/^[A-Za-z0-9]{27}$/,I_e=/^[a-zA-Z0-9_-]{21}$/,k_e=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var v_e=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,vK=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;var __e=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var nRt="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function R_e(){return new RegExp(nRt,"u")}var T_e=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,B_e=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,D_e=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,O_e=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,P_e=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,_K=/^[A-Za-z0-9_-]*$/,N_e=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;var Q_e=/^\+(?:[0-9]){6,14}[0-9]$/,M_e="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",F_e=new RegExp(`^${M_e}$`);function L_e(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function $_e(e){return new RegExp(`^${L_e(e)}$`)}function U_e(e){let t=L_e({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-]\\d{2}:\\d{2})");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${M_e}T(?:${n})$`)}var H_e=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)};var z_e=/^\d+$/,W_e=/^-?\d+(?:\.\d+)?/i,j_e=/true|false/i,q_e=/null/i;var V_e=/^[^A-Z]*$/,G_e=/^[^a-z]*$/;var _s=re("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),J_e={number:"number",bigint:"bigint",object:"date"},RK=re("$ZodCheckLessThan",(e,t)=>{_s.init(e,t);let r=J_e[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,i=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),TK=re("$ZodCheckGreaterThan",(e,t)=>{_s.init(e,t);let r=J_e[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,i=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Y_e=re("$ZodCheckMultipleOf",(e,t)=>{_s.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):fK(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Z_e=re("$ZodCheckNumberFormat",(e,t)=>{_s.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,i]=AK[t.format];e._zod.onattach.push(s=>{let a=s._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,r&&(a.pattern=z_e)}),e._zod.check=s=>{let a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:t.format,code:"invalid_type",input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inst:e})}});var K_e=re("$ZodCheckMaxLength",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let s=RB(o);n.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),X_e=re("$ZodCheckMinLength",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let s=RB(o);n.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),eRe=re("$ZodCheckLengthEquals",(e,t)=>{var r;_s.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!vB(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,i=o.length;if(i===t.length)return;let s=RB(o),a=i>t.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),BB=re("$ZodCheckStringFormat",(e,t)=>{var r,n;_s.init(e,t),e._zod.onattach.push(o=>{let i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),tRe=re("$ZodCheckRegex",(e,t)=>{BB.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),rRe=re("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=V_e),BB.init(e,t)}),nRe=re("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=G_e),BB.init(e,t)}),oRe=re("$ZodCheckIncludes",(e,t)=>{_s.init(e,t);let r=ZA(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),iRe=re("$ZodCheckStartsWith",(e,t)=>{_s.init(e,t);let r=new RegExp(`^${ZA(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),sRe=re("$ZodCheckEndsWith",(e,t)=>{_s.init(e,t);let r=new RegExp(`.*${ZA(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var aRe=re("$ZodCheckOverwrite",(e,t)=>{_s.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var i$=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
|
|
496
496
|
`).filter(s=>s),o=Math.min(...n.map(s=>s.length-s.trimStart().length)),i=n.map(s=>s.slice(o)).map(s=>" ".repeat(this.indent*2)+s);for(let s of i)this.content.push(s)}compile(){let t=Function,r=this?.args,o=[...(this?.content??[""]).map(i=>` ${i}`)];return new t(...r,o.join(`
|
|
497
497
|
`))}};var uRe={major:4,minor:0,patch:0};var In=re("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=uRe;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let i of o._zod.onattach)i(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,s,a)=>{let c=Db(i),u;for(let l of s){if(l._zod.def.when){if(!l._zod.def.when(i))continue}else if(c)continue;let d=i.issues.length,f=l._zod.check(i);if(f instanceof Promise&&a?.async===!1)throw new wh;if(u||f instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await f,i.issues.length!==d&&(c||(c=Db(i,d)))});else{if(i.issues.length===d)continue;c||(c=Db(i,d))}}return u?u.then(()=>i):i};e._zod.run=(i,s)=>{let a=e._zod.parse(i,s);if(a instanceof Promise){if(s.async===!1)throw new wh;return a.then(c=>o(c,n,s))}return o(a,n,s)}}e["~standard"]={validate:o=>{try{let i=Ob(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return Pb(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}}),DB=re("$ZodString",(e,t)=>{In.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??H_e(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),jn=re("$ZodStringFormat",(e,t)=>{BB.init(e,t),DB.init(e,t)}),DK=re("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=v_e),jn.init(e,t)}),OK=re("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=vK(n))}else t.pattern??(t.pattern=vK());jn.init(e,t)}),PK=re("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=__e),jn.init(e,t)}),NK=re("$ZodURL",(e,t)=>{jn.init(e,t),e._zod.check=r=>{try{let n=r.value,o=new URL(n),i=o.href;t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:N_e.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),!n.endsWith("/")&&i.endsWith("/")?r.value=i.slice(0,-1):r.value=i;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),QK=re("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=R_e()),jn.init(e,t)}),MK=re("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=I_e),jn.init(e,t)}),FK=re("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=E_e),jn.init(e,t)}),LK=re("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=b_e),jn.init(e,t)}),$K=re("$ZodULID",(e,t)=>{t.pattern??(t.pattern=S_e),jn.init(e,t)}),UK=re("$ZodXID",(e,t)=>{t.pattern??(t.pattern=w_e),jn.init(e,t)}),HK=re("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=C_e),jn.init(e,t)}),xRe=re("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=U_e(t)),jn.init(e,t)}),ERe=re("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=F_e),jn.init(e,t)}),bRe=re("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=$_e(t)),jn.init(e,t)}),SRe=re("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=k_e),jn.init(e,t)}),zK=re("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=T_e),jn.init(e,t),e._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv4"})}),WK=re("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=B_e),jn.init(e,t),e._zod.onattach.push(r=>{let n=r._zod.bag;n.format="ipv6"}),e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),jK=re("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=D_e),jn.init(e,t)}),qK=re("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=O_e),jn.init(e,t),e._zod.check=r=>{let[n,o]=r.value.split("/");try{if(!o)throw new Error;let i=Number(o);if(`${i}`!==o)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${n}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function wRe(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var VK=re("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=P_e),jn.init(e,t),e._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64"}),e._zod.check=r=>{wRe(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function oRt(e){if(!_K.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return wRe(r)}var GK=re("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=_K),jn.init(e,t),e._zod.onattach.push(r=>{r._zod.bag.contentEncoding="base64url"}),e._zod.check=r=>{oRt(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),JK=re("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Q_e),jn.init(e,t)});function iRt(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var YK=re("$ZodJWT",(e,t)=>{jn.init(e,t),e._zod.check=r=>{iRt(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var a$=re("$ZodNumber",(e,t)=>{In.init(e,t),e._zod.pattern=e._zod.bag.pattern??W_e,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),r}}),ZK=re("$ZodNumber",(e,t)=>{Z_e.init(e,t),a$.init(e,t)}),KK=re("$ZodBoolean",(e,t)=>{In.init(e,t),e._zod.pattern=j_e,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}});var XK=re("$ZodNull",(e,t)=>{In.init(e,t),e._zod.pattern=q_e,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}});var e8=re("$ZodUnknown",(e,t)=>{In.init(e,t),e._zod.parse=r=>r}),t8=re("$ZodNever",(e,t)=>{In.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function lRe(e,t,r){e.issues.length&&t.issues.push(...Sp(r,e.issues)),t.value[r]=e.value}var r8=re("$ZodArray",(e,t)=>{In.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let i=[];for(let s=0;s<o.length;s++){let a=o[s],c=t.element._zod.run({value:a,issues:[]},n);c instanceof Promise?i.push(c.then(u=>lRe(u,r,s))):lRe(c,r,s)}return i.length?Promise.all(i).then(()=>r):r}});function s$(e,t,r){e.issues.length&&t.issues.push(...Sp(r,e.issues)),t.value[r]=e.value}function dRe(e,t,r,n){e.issues.length?n[r]===void 0?r in n?t.value[r]=void 0:t.value[r]=e.value:t.issues.push(...Sp(r,e.issues)):e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}var c$=re("$ZodObject",(e,t)=>{In.init(e,t);let r=kB(()=>{let d=Object.keys(t.shape);for(let p of d)if(!(t.shape[p]instanceof In))throw new Error(`Invalid element at key "${p}": expected a Zod schema`);let f=gK(t.shape);return{shape:t.shape,keys:d,keySet:new Set(d),numKeys:d.length,optionalKeys:new Set(f)}});Wn(e._zod,"propValues",()=>{let d=t.shape,f={};for(let p in d){let m=d[p]._zod;if(m.values){f[p]??(f[p]=new Set);for(let g of m.values)f[p].add(g)}}return f});let n=d=>{let f=new i$(["shape","payload","ctx"]),p=r.value,m=x=>{let b=Bb(x);return`shape[${b}]._zod.run({ value: input[${b}], issues: [] }, ctx)`};f.write("const input = payload.value;");let g=Object.create(null),A=0;for(let x of p.keys)g[x]=`key_${A++}`;f.write("const newResult = {}");for(let x of p.keys)if(p.optionalKeys.has(x)){let b=g[x];f.write(`const ${b} = ${m(x)};`);let I=Bb(x);f.write(`
|
|
498
498
|
if (${b}.issues.length) {
|
|
@@ -541,7 +541,11 @@ ${e.stderr}`;return HPr.test(t)}var zPr=30*60*1e3,WPr=60*1e3;async function h3(e
|
|
|
541
541
|
${r.stderr}`)?!1:void 0;let n=(r.stdout??"").trim().toLowerCase();if(n)return TNr.has(n)}var DNr=[".github/CODEOWNERS","CODEOWNERS","docs/CODEOWNERS"];async function ONr(e,t){let r=!1;for(let n of DNr){let o=await Cn(e,["api",w3(e,`contents/${n}`),"-H","Accept: application/vnd.github.raw"]);if(o.code===0)return PNr(o.stdout??"",t);if(/not found|404|could not resolve/i.test(`${o.stdout}
|
|
542
542
|
${o.stderr}`)){r=!0;continue}return}return r?!1:void 0}function PNr(e,t){let r=`@${t.replace(/^@/,"")}`.toLowerCase();for(let n of e.split(`
|
|
543
543
|
`)){let o=n.replace(/#.*$/,"").trim();if(!o)continue;if(o.split(/\s+/).slice(1).some(s=>s.toLowerCase()===r))return!0}return!1}async function v3(e,t){let r=await Cn(e,["issue","view",String(t),...Ro(e),"--json","state,closedAt"]);if(r.code!==0)return/not found|could not resolve|no issues? match/i.test(r.stderr)?null:void 0;try{let n=JSON.parse(r.stdout);return{state:String(n.state??""),closedAt:n.closedAt??null}}catch{return}}WA();cL();Ap();import{createReadStream as GNr}from"node:fs";import{mkdir as JNr,readFile as n0t,rename as YNr,stat as ZNr,writeFile as KNr}from"node:fs/promises";import{dirname as XNr}from"node:path";function eQr(e){if(e===null||typeof e!="object")return null;let t=e,r=Number(t.size),n=Number(t.lines);if(!Number.isFinite(r)||r<0||!Number.isFinite(n)||n<0)return null;let o={size:r,lines:n};if(t.toonl!==null&&typeof t.toonl=="object"){let i=t.toonl,s=Number(i.byteOffset),a=Number(i.rowsSinceHeader);Number.isFinite(s)&&s>=0&&Number.isFinite(a)&&a>=0&&(o.toonl={byteOffset:s,rowsSinceHeader:a,activeHeader:typeof i.activeHeader=="string"?i.activeHeader:"",taggedHeaders:i.taggedHeaders!==null&&typeof i.taggedHeaders=="object"?Object.fromEntries(Object.entries(i.taggedHeaders).filter(c=>typeof c[1]=="string")):{}})}return o}async function tQr(e){try{let t=pu(await n0t(e,"utf8"));if(t===null||typeof t!="object"||Array.isArray(t))return{};let r={};for(let[n,o]of Object.entries(t)){let i=eQr(o);i!==null&&(r[n]=i)}return r}catch{return{}}}async function rQr(e,t){await JNr(XNr(e),{recursive:!0});let r=`${e}.tmp.${process.pid}.${Date.now()}`;await KNr(r,gc(t),"utf8"),await YNr(r,e)}function nQr(e){let t=0;for(let r=0;r<e.length;r+=1)e.charCodeAt(r)===10&&(t+=1);return t}async function oQr(e,t){return await new Promise((r,n)=>{let o=[],i=GNr(e,{start:t,encoding:"utf8"});i.on("data",s=>o.push(Buffer.from(s))),i.on("error",n),i.on("end",()=>r(Buffer.concat(o).toString("utf8")))})}async function iQr(e,t){let r;try{r=(await ZNr(e)).size}catch{return null}if(e.endsWith(".toonl")||e.endsWith(".jsonl")){let c=await n0t(e,"utf8"),u,l=t===void 0||r<t.size||t.toonl===void 0,d=t?.toonl;try{u=MI(c,l?void 0:d)}catch(p){if(!(p instanceof sb))throw p;l=!0,u=MI(c)}let f=l?u.records.length:(t?.lines??0)+u.records.length;return{count:{lines:f,newLines:u.records.length},cursor:{size:r,lines:f,toonl:u.cursor}}}let n=t===void 0||r<t.size,o=n?0:t.size,i=r>o?await oQr(e,o):"",s=nQr(i),a=n?s:t.lines+s;return{count:{lines:a,newLines:s},cursor:{size:r,lines:a}}}async function o0t(e,t){let r=await tQr(e),n={},o=new Map;for(let i of t){let s=await iQr(i,r[i]);s!==null&&(o.set(i,s.count),n[i]=s.cursor)}return await rQr(e,n).catch(()=>{}),o}ro();Ap();Kr();import{readFileSync as sQr,writeFileSync as aQr,renameSync as cQr,mkdirSync as uQr,unlinkSync as pYn}from"node:fs";import{dirname as lQr,join as hYn}from"node:path";function uB(e){return Vr(e).statuslineCachePath}function i0t(e){try{return JSON.parse(e)}catch{return Bo(e)}}function _3(e){try{let t=i0t(sQr(e,"utf8"));return{queue:Number(t.queue??0),human:Number(t.human??0),ts:Number(t.ts??0)}}catch{return null}}function s0t(e,t){try{uQr(lQr(e),{recursive:!0});let r=`${e}.tmp`;aQr(r,gc(t),"utf8"),cQr(r,e)}catch{}}function a0t(e,t,r,n=Math.floor(Date.now()/1e3)){let o=_3(e);if(!o)return!1;let i=new Set(t),s=new Set(r),a=l=>(s.has(l)?1:0)-(i.has(l)?1:0),c=a(zt),u=a(Ut);return c===0&&u===0?!1:(s0t(e,{queue:Math.max(0,o.queue+c),human:Math.max(0,o.human+u),ts:n}),!0)}async function TL(e,t,r,n){let o=await t();return o&&a0t(e,r,n),o}var pQr=new Set(["open","half-open","idle-parked"]);function mQr(e){if(e===null||typeof e!="object")return null;let t=e,r=Number(t.epoch??0);if(!Number.isFinite(r)||r<=0)return null;let n=Number(t.last_progress_epoch??0),o=Number(t.target??0),i=t.shrink_mode==="hard-kill"||t.shrink_mode==="drain-then-retire"?t.shrink_mode:void 0,s;if(Array.isArray(t.slot_details)){s=[];for(let u of t.slot_details){if(u===null||typeof u!="object")continue;let l=u,d=Number(l.index??-1);if(!Number.isFinite(d)||d<0)continue;let f=l.status;if(typeof f!="string"||!pQr.has(f))continue;let p=l.retry_at!==void 0?Number(l.retry_at):void 0,m=p!==void 0&&Number.isFinite(p)?p:void 0;s.push({index:d,status:f,...m!==void 0?{retryAt:m}:{}})}}let a;if(Array.isArray(t.slot_pids)){a=[];let u=new Set;for(let l of t.slot_pids){if(l===null||typeof l!="object")continue;let d=l,f=Number(d.slot),p=Number(d.pid);!Number.isSafeInteger(f)||f<0||u.has(f)||!Number.isSafeInteger(p)||p<=0||(u.add(f),a.push({slot:f,pid:p}))}}let c;if(t.trunk_freshness!==void 0&&t.trunk_freshness!==null){let u=t.trunk_freshness,l=u.status,d=Number(u.refreshed_at_epoch??0),f=Number(u.interval_s??0);if((l==="refreshed"||l==="failed"||l==="throttled")&&Number.isFinite(d)&&d>0&&Number.isFinite(f)&&f>0){let p=Number(u.next_due_epoch);c={status:l,refreshedAtEpoch:d,intervalS:f,...Number.isFinite(p)&&p>0?{nextDueEpoch:p}:{},...typeof u.remote_ref=="string"?{remoteRef:u.remote_ref}:{},...typeof u.mirror_ref=="string"?{mirrorRef:u.mirror_ref}:{},...typeof u.sha=="string"?{sha:u.sha}:{},...typeof u.message=="string"?{message:u.message}:{}}}}return{ts:typeof t.ts=="string"?t.ts:"",epoch:r,lastProgressEpoch:Number.isFinite(n)&&n>0?n:void 0,runner:typeof t.runner=="string"?t.runner:"",target:Number.isFinite(o)&&o>=0?o:void 0,...i!==void 0?{shrinkMode:i}:{},bundleVersion:typeof t.bundle_version=="string"?t.bundle_version:void 0,readyForAgent:Number(t.ready_for_agent??0)||0,slotsBusy:Number(t.slots?.busy??0)||0,slotsFree:Number(t.slots?.free??0)||0,slotsTotal:Number(t.slots?.total??0)||0,slotsParked:Number(t.slots?.parked??0)||0,spawnsThisTick:Number(t.spawns_this_tick??0)||0,churnDeaths:Number(t.churn?.deaths??0)||0,churnRespawns:Number(t.churn?.respawns??0)||0,churnWindowS:Number(t.churn?.window_s??0)||0,...c!==void 0?{trunkFreshness:c}:{},...s!==void 0?{slotDetails:s}:{},...a!==void 0?{slotPids:a}:{}}}async function gh(e){let t=await ub(e);if(t===null)return null;try{return mQr(pu(t))}catch{return null}}async function c0t(e,t,r="",n={}){let o=n.exists??(m=>dQr(m)),i=n.readWorkerPid??(m=>{try{return fQr(BL(m,"worker.pid"),"utf8")}catch{return null}}),s=n.killAlive??(m=>{try{return process.kill(m,0),!0}catch{return!1}}),a=n.isPreserved??(async m=>{try{let g=await lb({cwd:e,repo:r},m);return g.length===0?!0:g.some(A=>A===Ut||A.startsWith("blocked:"))}catch{return!0}}),c=n.removeWorktree??(async m=>{await Ac({cwd:e},m)}),u=n.removeDir??(m=>zA(m)),l=new Map,d=m=>{let g=l.get(m);if(g!==void 0)return g;let A=i(m),y=A?parseInt(A.trim(),10):NaN,x=Number.isFinite(y)&&y>0?s(y):!0;return l.set(m,x),x},f=[];for(let m of t){let g=R3(m.path),A=R3(g),y=m.renderableLive||d(A),x=m.state.current.number,b=typeof x=="number"?x:Number.parseInt(String(x),10),I=Number.isFinite(b)&&b>0?await a(b):!0;f.push({attemptDir:g,worktreePath:BL(g,"worktree"),workerPidAlive:y,preserved:I})}let p=[];for(let m of HCt(f))m.removeWorktree&&o(m.worktreePath)&&await c(m.worktreePath).catch(()=>{}),m.reclaimDir&&(await u(m.attemptDir).catch(()=>{}),p.push(m.attemptDir));return p}async function qA(e=process.cwd(),t=""){let r=Vr(e),n=Fh(BL(e,".red")),o=await Pee(n);if(o.length===0){let d=await UI(r.tmpDir);await c0t(e,d,t).catch(()=>{}),await Ave(r.tmpDir).catch(()=>{});let f=bve(d),p=f.map(({path:g,state:A})=>A.log||BL(R3(g),"afk.log")),m=await o0t(r.monitorLogCursorPath,p);o=f.map(({path:g,state:A,active:y,live:x,liveness:b,livenessVerdict:I})=>{let w=A.log||BL(R3(g),"afk.log"),k=m.get(w);return{state:{worker_id:A.worker_id,pid:A.pid,runner:A.runner,started_at:A.started_at,origin:A.origin||void 0,total:A.total,done:A.done,blocked:A.blocked,failed:A.failed,current:{number:A.current.number,title:A.current.title,activity:A.current.activity,phase:A.current.phase,started_at:A.current.started_at,input_tokens:A.current.input_tokens,output_tokens:A.current.output_tokens,cost_usd:A.current.cost_usd,tools_called_count:A.current.tools_called_count,text_chunk_count:A.current.text_chunk_count,reasoning_events:A.current.reasoning_events,waiting_count:A.current.waiting_count}},liveness:b,livenessVerdict:I,live:y,pidLive:x,diffAdded:A.current.loc_added,diffRemoved:A.current.loc_removed,...k!==void 0?{logLines:k.lines,logNewLines:k.newLines}:{}}})}let i=await Nee(n),s=i.length>0?i:(await Y9(r.historyPath,{read:ub})).map(d=>({event:d.event,epoch:d.epoch})),a=await Qee(n)??await gh(r.fleetStatePath);a?.bundleVersion&&(a.latestBundleVersion=Lke(a.bundleVersion).laneNewestVersion??void 0);let c=_3(r.statuslineCachePath),u=Math.floor(Date.now()/1e3),l=c!==null?{remoteQueue:c.queue,remoteHuman:c.human,remoteCacheAgeS:u-c.ts}:{};return{workers:o,events:s,fleet:a,...l}}Ap();import{constants as yQr}from"node:fs";import{access as xQr,readdir as l0t,readFile as EQr,rm as bQr}from"node:fs/promises";import{dirname as SQr,join as Fd}from"node:path";var hQr=e=>new Promise(t=>setTimeout(t,e));function Hi(e){try{return process.kill(e,0),!0}catch{return!1}}function gQr(e,t){try{process.kill(-e,t)}catch{try{process.kill(e,t)}catch{}}}var AQr={isAlive:Hi,signal:gQr,sleep:hQr};async function jI(e,t={}){let r=t.io??AQr,n=t.pollMs??100,o=t.graceTries??20,i=t.killTries??10;r.signal(e,"SIGTERM");for(let s=0;s<o;s+=1){if(!r.isAlive(e))return!0;await r.sleep(n)}r.signal(e,"SIGKILL");for(let s=0;s<i;s+=1){if(!r.isAlive(e))return!0;await r.sleep(n)}return!r.isAlive(e)}async function d0t(e){try{let t=(await EQr(e,"utf8")).trim();if(!/^\d+$/.test(t))return null;let r=Number(t);return Number.isSafeInteger(r)&&r>0?r:null}catch{return null}}async function u0t(e,t){let r;try{r=await l0t(e)}catch{return[]}return r.map(n=>{let o=/^s([1-9][0-9]*)$/.exec(n);if(!o)return null;let i=Number(o[1]);return!Number.isSafeInteger(i)||i<=0?null:{pid:i,path:Fd(e,n)}}).filter(n=>n!==null).sort((n,o)=>o.pid-n.pid).filter(n=>t(n.pid)).map(n=>({...n,source:"snapshot-dir"}))}async function qI(e,t=Hi,r={}){let n=Fd(e,"afk-supervisor.pid"),o=await d0t(n);if(o!==null&&t(o))return{pid:o,source:"pid-file",path:n};let i=await u0t(e,t);return i.length>0?i[0]:(r.fleet??"default")!=="default"?null:(await u0t(SQr(e),t))[0]??null}async function wQr(e){try{return await xQr(e,yQr.F_OK),!0}catch{return!1}}async function CQr(e){let t=[Fd(e,"afk-supervisor.pid"),Fd(e,"afk-supervisor-boot.pid"),Fd(e,"state.toon"),Fd(e,"state.toon.tmp"),Fd(e,"afk-supervisor.stop"),Fd(e,"resize.toon"),Fd(e,"restarts.toon"),Fd(e,"monitor-log-cursors.toon")];try{for(let r of await l0t(e))(r.startsWith("afk-supervisor.log")||r==="supervisor.log.toonl")&&t.push(Fd(e,r))}catch{}return[...new Set(t)]}async function f0t(e,t=Hi){let r=typeof e=="string"?[e]:[...e],n=null;for(let a of r)if(n=await d0t(Fd(a,"afk-supervisor.pid")),n!==null)break;if(n!==null&&t(n))return{status:"live",pid:n,removed:[]};let o=(await Promise.all(r.map(a=>CQr(a)))).flat(),i=[];for(let a of o)await wQr(a)&&i.push(a);if(i.length===0)return{status:"absent",removed:[]};let s=[];for(let a of i)try{await bQr(a,{force:!0}),s.push(a)}catch{}return{status:"stale",...n!==null?{pid:n}:{},removed:s}}Qke();WA();Oc();lL();async function Tve(e){let t={cwd:e.root},r={cwd:e.root,repo:e.repo},n=await uve(t,"afk/"),o=await ave(t,"afk/*"),i=await cve(t),s=o.filter(l=>!i.has(l)).map(l=>({branch:l})),a=new Set;for(let l of[...n,...s]){let d=o3(l.branch);d!==null&&a.add(d)}let c=await sB(r),u=new Map;for(let l of a){let d=c.get(l);d?u.set(l,{state:d.state,closedAt:d.closedAt}):u.set(l,await v3(r,l))}return{remoteLiveRefs:n,localLiveRefs:s,lookup:l=>u.get(l),deleteRemote:l=>ove(t,l),deleteLocal:async l=>{await yL(t,l)}}}uke();mL();var BQr=/^[ \t]*(?:[-*][ \t]+)?branch:[ \t]+(\S+)[ \t]*(?:#.*)?$/,DQr=/Spec[ \t]*#[ \t]*(\d+)/,T3="main";function Bve(e,t,r){let n=e;return n.startsWith(t)&&(n=n.slice(t.length)),n.endsWith(r)&&(n=n.slice(0,n.length-r.length)),n}function p0t(e){for(let t of e.split(`
|
|
544
|
-
`)){let r=BQr.exec(t);if(!r)continue;let n=r[1];if(n=Bve(n,"`","`"),n=Bve(n,'"','"'),n=Bve(n,"'","'"),n.length!==0)return n}}function OQr(e){let t=DQr.exec(e);return t?Number(t[1]):void 0}async function m0t(e,t){let r=p0t(e.issueBody);if(r)return{branch:r,source:"pin"};let n=OQr(e.issueBody);if(n!==void 0){let i=await t.fetchIssueBody(n);if(i!==void 0){let s=p0t(i);if(s)return{branch:s,source:"pin"}}}let o=t.defaultBranch?.trim();return{branch:o!==void 0&&o.length>0?o:T3,source:"trunk"}}function B3(e){return e!==void 0&&e.trim().length>0}async function h0t(e,t){let r=await t.readLockedBranch();if(B3(r))return{branch:r.trim(),source:"lock"};if(B3(t.configLockedBranch))return{branch:t.configLockedBranch.trim(),source:"pin"};let n=await m0t(e,{fetchIssueBody:t.fetchIssueBody,defaultBranch:t.configTrunk});return B3(n.branch)?n:{branch:B3(t.configTrunk)?t.configTrunk.trim():T3,source:"trunk"}}async function g0t(e,t){return(await h0t(e,t)).branch}Kr();ab();gL();Kke();oB();QI();var PQr="refs/heads/red-trunk";async function y0t(e,t){let{repo:r,remote:n,branch:o,stillBehind:i,inSync:s}=t,a=`${n}/${o}`;return s?{ok:!0,action:"in-sync"}:i?{ok:(await e(["git","-C",r,"merge","--ff-only",a])).code===0,action:"fast-forward"}:(await e(["git","-C",r,"rebase",a])).code!==0?(await e(["git","-C",r,"rebase","--abort"]),{ok:!1,action:"rebase"}):{ok:!0,action:"rebase"}}async function x0t(e,t){let{repo:r,remote:n,base:o,branch:i}=t,s=t.maxPushRetries??2,a=Math.max(0,t.maxAgentResolveAttempts??2),c=`${n}/${o}`,u=async()=>{
|
|
544
|
+
`)){let r=BQr.exec(t);if(!r)continue;let n=r[1];if(n=Bve(n,"`","`"),n=Bve(n,'"','"'),n=Bve(n,"'","'"),n.length!==0)return n}}function OQr(e){let t=DQr.exec(e);return t?Number(t[1]):void 0}async function m0t(e,t){let r=p0t(e.issueBody);if(r)return{branch:r,source:"pin"};let n=OQr(e.issueBody);if(n!==void 0){let i=await t.fetchIssueBody(n);if(i!==void 0){let s=p0t(i);if(s)return{branch:s,source:"pin"}}}let o=t.defaultBranch?.trim();return{branch:o!==void 0&&o.length>0?o:T3,source:"trunk"}}function B3(e){return e!==void 0&&e.trim().length>0}async function h0t(e,t){let r=await t.readLockedBranch();if(B3(r))return{branch:r.trim(),source:"lock"};if(B3(t.configLockedBranch))return{branch:t.configLockedBranch.trim(),source:"pin"};let n=await m0t(e,{fetchIssueBody:t.fetchIssueBody,defaultBranch:t.configTrunk});return B3(n.branch)?n:{branch:B3(t.configTrunk)?t.configTrunk.trim():T3,source:"trunk"}}async function g0t(e,t){return(await h0t(e,t)).branch}Kr();ab();gL();Kke();oB();QI();var PQr="refs/heads/red-trunk";async function y0t(e,t){let{repo:r,remote:n,branch:o,stillBehind:i,inSync:s}=t,a=`${n}/${o}`;return s?{ok:!0,action:"in-sync"}:i?{ok:(await e(["git","-C",r,"merge","--ff-only",a])).code===0,action:"fast-forward"}:(await e(["git","-C",r,"rebase",a])).code!==0?(await e(["git","-C",r,"rebase","--abort"]),{ok:!1,action:"rebase"}):{ok:!0,action:"rebase"}}async function x0t(e,t){let{repo:r,remote:n,base:o,branch:i}=t,s=t.maxPushRetries??2,a=Math.max(0,t.maxAgentResolveAttempts??2),c=`${n}/${o}`,u=t.squashAheadThreshold??1,l=async()=>{let p=await e(["git","-C",r,"merge-base",c,"HEAD"]),m=p.stdout.trim();if(p.code!==0||m.length===0)return;let g=await e(["git","-C",r,"rev-list","--count",`${m}..HEAD`]),A=Number.parseInt(g.stdout.trim(),10);if(g.code!==0||!Number.isFinite(A)||A<=u)return;let y=await e(["git","-C",r,"log","--reverse","--format=%s",`${m}..HEAD`]),x=y.code===0?y.stdout.trim().split(`
|
|
545
|
+
`).slice(0,50).map(k=>`- ${k}`).join(`
|
|
546
|
+
`):"";if((await e(["git","-C",r,"reset","--soft",m])).code!==0)return;let I=`land: squash ${A} attempt commits from ${i}${x?`
|
|
547
|
+
|
|
548
|
+
${x}`:""}`;(await e(["git","-C",r,"commit","-m",I,"--quiet"])).code!==0&&await e(["git","-C",r,"reset","--soft","HEAD@{1}"])},d=async()=>{if((await e(["git","-C",r,"fetch",n,o,"--quiet"])).code!==0)return{ok:!1,reason:"fetch-failed"};if((await e(["git","-C",r,"merge-base","--is-ancestor",c,"HEAD"])).code===0)return{ok:!0,alreadyIntegrated:!0};if(await l(),(await e(["git","-C",r,"rebase",c])).code!==0){if(t.resolveMechanical&&await t.resolveMechanical(r))return{ok:!0};for(let A=0;A<a;A++)if(t.resolveAgent&&await t.resolveAgent(r))return{ok:!0};return await e(["git","-C",r,"rebase","--abort"]),{ok:!1,reason:"conflict"}}return{ok:!0}},f=await d();if(!f.ok)return f;if(f.alreadyIntegrated)return{ok:!0};for(let p=0;p<=s;p++){if((await e(["git","-C",r,"push",n,`HEAD:refs/heads/${i}`,"--force-with-lease"])).code===0)return{ok:!0};if(p<s){let g=await d();if(!g.ok)return g}}return{ok:!1,reason:"push-rejected"}}async function E0t(e,t){let{repo:r,remote:n,branch:o,target:i,n:s,title:a,preMergeSha:c}=t,u=t.mergeTitle??`merge: #${s} ${a}`;return(await e(["git","-C",r,"merge","--no-ff","--no-verify",o,"-m",u])).code!==0?{ok:!1,rolledBack:!1}:(await e(["git","-C",r,"push",n,`HEAD:refs/heads/${i}`])).code!==0?(await e(["git","-C",r,"reset","--hard",c]),{ok:!1,rolledBack:!0}):{ok:!0,rolledBack:!1}}function NQr(e){let t=e.trim();if(t==="")return[];try{let r=JSON.parse(t);return Array.isArray(r)?r.flatMap(n=>{if(typeof n!="object"||n===null)return[];let o=n.name,i=n.state;return typeof o!="string"?[]:[{name:o,state:typeof i=="string"?i:""}]}):[]}catch{return[]}}function QQr(e){let t=e.trim().toUpperCase();return t!==""&&t!=="PENDING"}async function MQr(e,t,r,n){let o=n.maxPolls??30,i=n.intervalMs??1e4,s=n.check.trim().toLowerCase(),a=!1;for(let c=0;c<o;c++){let u=await e(["gh","-R",t,"pr","checks",String(r),"--json","name,state"]),l=NQr(u.stdout).find(d=>d.name.toLowerCase().includes(s));if(l!==void 0&&(a=!0,QQr(l.state)))return"concluded";c+1<o&&await n.sleep(i)}return a?"timeout":"absent"}var VI=e=>typeof e=="string"?e.trim().toUpperCase():"";function FQr(e){let t=VI(e.conclusion),r=VI(e.state);return["FAILURE","TIMED_OUT","CANCELLED","ACTION_REQUIRED","STARTUP_FAILURE","STALE"].includes(t)?!0:["FAILURE","ERROR"].includes(r)}function LQr(e){let t=VI(e.status),r=VI(e.state),n=VI(e.conclusion);return!!(t!==""&&t!=="COMPLETED"||["PENDING","EXPECTED"].includes(r)||t==="COMPLETED"&&n==="")}function $Qr(e){let t=e.trim();if(t==="")return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1};try{let r=JSON.parse(t);if(typeof r!="object"||r===null)return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1};let n=r.mergeStateStatus,o=r.mergeable,i=r.statusCheckRollup,s=Array.isArray(i)?i.filter(a=>typeof a=="object"&&a!==null):[];return{mergeStateStatus:typeof n=="string"?n:"",mergeable:typeof o=="string"?o:"",anyFailed:s.some(FQr),anyPending:s.some(LQr)}}catch{return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1}}}function UQr(e){let t=VI(e.mergeStateStatus),r=VI(e.mergeable);return r==="CONFLICTING"?"conflict":r==="UNKNOWN"?"pending":t==="DIRTY"?"conflict":e.anyFailed?"ci-failed":t==="BEHIND"?"pending":t==="CLEAN"?"merge":e.anyPending?"pending":t==="BLOCKED"||t==="UNSTABLE"||t==="HAS_HOOKS"?"merge":"pending"}async function HQr(e,t,r,n){let o=n.maxPolls??60,i=n.intervalMs??1e4;for(let s=0;s<o;s++){let a=await e(["gh","-R",t,"pr","view",String(r),"--json","mergeStateStatus,mergeable,statusCheckRollup"]),c=UQr($Qr(a.stdout));if(c!=="pending")return c;s+1<o&&await n.sleep(i)}return"pending"}var zQr="Automated AFK landing for #";async function D3(e,t){let r=t.mirrorRef??PQr;if((await e(["git","-C",t.gitRepo,"fetch","--quiet",t.remote,t.target])).code!==0)return{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: fetch (${t.remote}/${t.target} unavailable)`};let o=await e(["git","-C",t.gitRepo,"rev-parse","--verify","--quiet",`${t.remote}/${t.target}`]),i=o.stdout.trim();return o.code!==0||i===""?{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: resolve (${t.remote}/${t.target} unavailable)`}:(await e(["git","-C",t.gitRepo,"update-ref",r,i])).code!==0?{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: update-ref (${r} -> ${t.remote}/${t.target})`}:{action:"promoted",mirrorRef:r,target:t.target,remote:t.remote,evidence:`promoted ${r} to ${t.remote}/${t.target}`}}async function b0t(e,t){let{repo:r,gitRepo:n,remote:o,branch:i,target:s,n:a,title:c,mergeTitle:u,worktree:l,waitForReview:d,ciAwait:f,onPrResolved:p,mergeQueue:m}=t;if(l&&(await e(["git","-C",l,"push",o,`HEAD:refs/heads/${i}`,"--force-with-lease"])).code!==0)return{ok:!1,reason:"push-failed"};let g=await WQr(e,{repo:r,branch:i,target:s,n:a,title:c,mergeTitle:u});if(g===void 0)return{ok:!1,reason:"no-pr"};if(p)try{if(await p(g)==="abort")return{ok:!1,reason:"pr-resolved-abort",prNumber:g}}catch{}if(d&&await MQr(e,r,g,d),f){let I=await HQr(e,r,g,f);if(I==="conflict")return{ok:!1,prNumber:g,reason:"conflict"};if(I==="ci-failed")return{ok:!1,prNumber:g,reason:"ci-failed"};if(I==="pending")return{ok:!1,prNumber:g,reason:"ci-pending"}}let A=["gh","-R",r,"pr","merge",String(g),"--merge"];if(m&&A.push("--auto"),u&&A.push("--subject",u),(await e(A)).code!==0)return{ok:!1,prNumber:g,reason:"merge-failed"};if(m)return{ok:!0,prNumber:g};let x=await e(["gh","-R",r,"pr","view",String(g),"--json","mergeCommit","--jq",".mergeCommit.oid"]),b=x.code===0?x.stdout.trim():"";return await D3(e,{gitRepo:n,remote:o,target:s}),{ok:!0,prNumber:g,...b?{mergeSha:b}:{}}}async function WQr(e,t){let{repo:r,branch:n,target:o,n:i,title:s}=t,a=t.mergeTitle??`merge: #${i} ${s}`,c=await A0t(e,r,n,o);if(c===void 0){if((await e(["gh","-R",r,"pr","create","--base",o,"--head",n,"--title",ra(a),"--body",ra(`${zQr}${i}. Per-attempt history lives in the issue Envelopes, the local ledgers, and pushed worker-branch commits.
|
|
545
549
|
|
|
546
550
|
Closes #${i}`)])).code!==0)return;c=await A0t(e,r,n,o)}return c}function jQr(e,t,r){let{branch:n,n:o,title:i,target:s}=e,a=r.split(`
|
|
547
551
|
`).slice(0,400).join(`
|
|
@@ -50,7 +50,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50
50
|
`:`[${n[c]}\r
|
|
51
51
|
]`;continue}o+=n[c],n[c]==="\\"?i=!0:s&&n[c]==="]"?s=!1:!s&&n[c]==="["&&(s=!0)}try{new RegExp(o)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return o}function Ka(e,t){if(t.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),t.target==="openApi3"&&e.keyType?._def.typeName===E.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((n,o)=>({...n,[o]:W(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",o]})??Ce(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let r={type:"object",additionalProperties:W(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if(t.target==="openApi3")return r;if(e.keyType?._def.typeName===E.ZodString&&e.keyType._def.checks?.length){let{type:n,...o}=Ga(e.keyType._def,t);return{...r,propertyNames:o}}else{if(e.keyType?._def.typeName===E.ZodEnum)return{...r,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===E.ZodBranded&&e.keyType._def.type._def.typeName===E.ZodString&&e.keyType._def.type._def.checks?.length){let{type:n,...o}=Ja(e.keyType._def,t);return{...r,propertyNames:o}}}return r}function Bv(e,t){if(t.mapStrategy==="record")return Ka(e,t);let r=W(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||Ce(t),n=W(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||Ce(t);return{type:"array",maxItems:125,items:{type:"array",items:[r,n],minItems:2,maxItems:2}}}function Wv(e){let t=e.values,n=Object.keys(e.values).filter(i=>typeof t[t[i]]!="number").map(i=>t[i]),o=Array.from(new Set(n.map(i=>typeof i)));return{type:o.length===1?o[0]==="string"?"string":"number":["string","number"],enum:n}}function Jv(e){return e.target==="openAi"?void 0:{not:Ce({...e,currentPath:[...e.currentPath,"not"]})}}function Gv(e){return e.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Ki={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Xv(e,t){if(t.target==="openApi3")return Kv(e,t);let r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(n=>n._def.typeName in Ki&&(!n._def.checks||!n._def.checks.length))){let n=r.reduce((o,i)=>{let s=Ki[i._def.typeName];return s&&!o.includes(s)?[...o,s]:o},[]);return{type:n.length>1?n:n[0]}}else if(r.every(n=>n._def.typeName==="ZodLiteral"&&!n.description)){let n=r.reduce((o,i)=>{let s=typeof i._def.value;switch(s){case"string":case"number":case"boolean":return[...o,s];case"bigint":return[...o,"integer"];case"object":if(i._def.value===null)return[...o,"null"];default:return o}},[]);if(n.length===r.length){let o=n.filter((i,s,a)=>a.indexOf(i)===s);return{type:o.length>1?o:o[0],enum:r.reduce((i,s)=>i.includes(s._def.value)?i:[...i,s._def.value],[])}}}else if(r.every(n=>n._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((n,o)=>[...n,...o._def.values.filter(i=>!n.includes(i))],[])};return Kv(e,t)}var Kv=(e,t)=>{let r=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((n,o)=>W(n._def,{...t,currentPath:[...t.currentPath,"anyOf",`${o}`]})).filter(n=>!!n&&(!t.strictUnions||typeof n=="object"&&Object.keys(n).length>0));return r.length?{anyOf:r}:void 0};function Yv(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target==="openApi3"?{type:Ki[e.innerType._def.typeName],nullable:!0}:{type:[Ki[e.innerType._def.typeName],"null"]};if(t.target==="openApi3"){let n=W(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&"$ref"in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let r=W(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Qv(e,t){let r={type:"number"};if(!e.checks)return r;for(let n of e.checks)switch(n.kind){case"int":r.type="integer",of(r,"type",n.message,t);break;case"min":t.target==="jsonSchema7"?n.inclusive?ie(r,"minimum",n.value,n.message,t):ie(r,"exclusiveMinimum",n.value,n.message,t):(n.inclusive||(r.exclusiveMinimum=!0),ie(r,"minimum",n.value,n.message,t));break;case"max":t.target==="jsonSchema7"?n.inclusive?ie(r,"maximum",n.value,n.message,t):ie(r,"exclusiveMaximum",n.value,n.message,t):(n.inclusive||(r.exclusiveMaximum=!0),ie(r,"maximum",n.value,n.message,t));break;case"multipleOf":ie(r,"multipleOf",n.value,n.message,t);break}return r}function eb(e,t){let r=t.target==="openAi",n={type:"object",properties:{}},o=[],i=e.shape();for(let a in i){let c=i[a];if(c===void 0||c._def===void 0)continue;let u=nO(c);u&&r&&(c._def.typeName==="ZodOptional"&&(c=c._def.innerType),c.isNullable()||(c=c.nullable()),u=!1);let l=W(c._def,{...t,currentPath:[...t.currentPath,"properties",a],propertyPath:[...t.currentPath,"properties",a]});l!==void 0&&(n.properties[a]=l,u||o.push(a))}o.length&&(n.required=o);let s=rO(e,t);return s!==void 0&&(n.additionalProperties=s),n}function rO(e,t){if(e.catchall._def.typeName!=="ZodNever")return W(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return t.removeAdditionalStrategy==="strict"?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function nO(e){try{return e.isOptional()}catch{return!0}}var tb=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return W(e.innerType._def,t);let r=W(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Ce(t)},r]}:Ce(t)};var rb=(e,t)=>{if(t.pipeStrategy==="input")return W(e.in._def,t);if(t.pipeStrategy==="output")return W(e.out._def,t);let r=W(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),n=W(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,n].filter(o=>o!==void 0)}};function nb(e,t){return W(e.type._def,t)}function ob(e,t){let n={type:"array",uniqueItems:!0,items:W(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&ie(n,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&ie(n,"maxItems",e.maxSize.value,e.maxSize.message,t),n}function ib(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((r,n)=>W(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[]),additionalItems:W(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((r,n)=>W(r._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((r,n)=>n===void 0?r:[...r,n],[])}}function sb(e){return{not:Ce(e)}}function ab(e){return Ce(e)}var cb=(e,t)=>W(e.innerType._def,t);var ub=(e,t,r)=>{switch(t){case E.ZodString:return Ga(e,r);case E.ZodNumber:return Qv(e,r);case E.ZodObject:return eb(e,r);case E.ZodBigInt:return Nv(e,r);case E.ZodBoolean:return Av();case E.ZodDate:return sf(e,r);case E.ZodUndefined:return sb(r);case E.ZodNull:return Gv(r);case E.ZodArray:return Dv(e,r);case E.ZodUnion:case E.ZodDiscriminatedUnion:return Xv(e,r);case E.ZodIntersection:return Fv(e,r);case E.ZodTuple:return ib(e,r);case E.ZodRecord:return Ka(e,r);case E.ZodLiteral:return Vv(e,r);case E.ZodEnum:return Uv(e);case E.ZodNativeEnum:return Wv(e);case E.ZodNullable:return Yv(e,r);case E.ZodOptional:return tb(e,r);case E.ZodMap:return Bv(e,r);case E.ZodSet:return ob(e,r);case E.ZodLazy:return()=>e.getter()._def;case E.ZodPromise:return nb(e,r);case E.ZodNaN:case E.ZodNever:return Jv(r);case E.ZodEffects:return Lv(e,r);case E.ZodAny:return Ce(r);case E.ZodUnknown:return ab(r);case E.ZodDefault:return qv(e,r);case E.ZodBranded:return Ja(e,r);case E.ZodReadonly:return cb(e,r);case E.ZodCatch:return Zv(e,r);case E.ZodPipeline:return rb(e,r);case E.ZodFunction:case E.ZodVoid:case E.ZodSymbol:return;default:return(n=>{})(t)}};function W(e,t,r=!1){let n=t.seen.get(e);if(t.override){let a=t.override?.(e,t,n,r);if(a!==jv)return a}if(n&&!r){let a=oO(n,t);if(a!==void 0)return a}let o={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,o);let i=ub(e,e.typeName,t),s=typeof i=="function"?W(i(),t):i;if(s&&iO(e,t,s),t.postProcess){let a=t.postProcess(s,e,t);return o.jsonSchema=s,a}return o.jsonSchema=s,s}var oO=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:Wa(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((r,n)=>t.currentPath[n]===r)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),Ce(t)):t.$refStrategy==="seen"?Ce(t):void 0}},iO=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription&&(r.markdownDescription=e.description)),r);var uf=(e,t)=>{let r=Iv(t),n=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((c,[u,l])=>({...c,[u]:W(l._def,{...r,currentPath:[...r.basePath,r.definitionPath,u]},!0)??Ce(r)}),{}):void 0,o=typeof t=="string"?t:t?.nameStrategy==="title"?void 0:t?.name,i=W(e._def,o===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,o]},!1)??Ce(r),s=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;s!==void 0&&(i.title=s),r.flags.hasReferencedOpenAiAnyType&&(n||(n={}),n[r.openAiAnyTypeName]||(n[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let a=o===void 0?n?{...i,[r.definitionPath]:n}:i:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,o].join("/"),[r.definitionPath]:{...n,[o]:i}};return r.target==="jsonSchema7"?a.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(a.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in a||"oneOf"in a||"allOf"in a||"type"in a&&Array.isArray(a.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),a};function sO(e){return!e||e==="jsonSchema7"||e==="draft-7"?"draft-7":e==="jsonSchema2019-09"||e==="draft-2020-12"?"draft-2020-12":"draft-7"}function lf(e,t){return Nt(e)?Od(e,{target:sO(t?.target),io:t?.pipeStrategy??"input"}):uf(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??"input"})}function df(e){let r=Wr(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=$a(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function ff(e,t){let r=Br(e,t);if(!r.success)throw r.error;return r.data}var aO=6e4,Xa=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(Ea,r=>{this._oncancel(r)}),this.setNotificationHandler(Ca,r=>{this._onprogress(r)}),this.setRequestHandler(Oa,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(ja,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new q(F.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(Ia,async(r,n)=>{let o=async()=>{let i=r.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(i,n.sessionId);){if(a.type==="response"||a.type==="error"){let c=a.message,u=c.id,l=this._requestResolvers.get(u);if(l)if(this._requestResolvers.delete(u),a.type==="response")l(c);else{let d=c,g=new q(d.error.code,d.error.message,d.error.data);l(g)}else{let d=a.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${u}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let s=await this._taskStore.getTask(i,n.sessionId);if(!s)throw new q(F.InvalidParams,`Task not found: ${i}`);if(!Gr(s.status))return await this._waitForTaskUpdate(i,n.signal),await o();if(Gr(s.status)){let a=await this._taskStore.getTaskResult(i,n.sessionId);return this._clearTaskQueue(i),{...a,_meta:{...a._meta,[Jr]:{taskId:i}}}}return await o()};return await o()}),this.setRequestHandler(Da,async(r,n)=>{try{let{tasks:o,nextCursor:i}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:i,_meta:{}}}catch(o){throw new q(F.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(Aa,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new q(F.InvalidParams,`Task not found: ${r.params.taskId}`);if(Gr(o.status))throw new q(F.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId);let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new q(F.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...i}}catch(o){throw o instanceof q?o:new q(F.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,o,i=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:o})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),q.fromError(F.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=i=>{n?.(i),this._onerror(i)};let o=this._transport?.onmessage;this._transport.onmessage=(i,s)=>{o?.(i,s),Li(i)||wv(i)?this._onresponse(i):Vd(i)?this._onrequest(i,s):bv(i)?this._onnotification(i):this._onerror(new Error(`Unknown message type: ${JSON.stringify(i)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=q.fromError(F.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,o=this._transport,i=t.params?._meta?.[Jr]?.taskId;if(n===void 0){let l={jsonrpc:"2.0",id:t.id,error:{code:F.MethodNotFound,message:"Method not found"}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{type:"error",message:l,timestamp:Date.now()},o?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):o?.send(l).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let s=new AbortController;this._requestHandlerAbortControllers.set(t.id,s);let a=yv(t.params)?t.params.task:void 0,c=this._taskStore?this.requestTaskStore(t,o?.sessionId):void 0,u={signal:s.signal,sessionId:o?.sessionId,_meta:t.params?._meta,sendNotification:async l=>{if(s.signal.aborted)return;let d={relatedRequestId:t.id};i&&(d.relatedTask={taskId:i}),await this.notification(l,d)},sendRequest:async(l,d,g)=>{if(s.signal.aborted)throw new q(F.ConnectionClosed,"Request was cancelled");let m={...g,relatedRequestId:t.id};i&&!m.relatedTask&&(m.relatedTask={taskId:i});let p=m.relatedTask?.taskId??i;return p&&c&&await c.updateTaskStatus(p,"input_required"),await this.request(l,d,m)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:i,taskStore:c,taskRequestedTtl:a?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{a&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,u)).then(async l=>{if(s.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:t.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:"response",message:d,timestamp:Date.now()},o?.sessionId):await o?.send(d)},async l=>{if(s.signal.aborted)return;let d={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(l.code)?l.code:F.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:"error",message:d,timestamp:Date.now()},o?.sessionId):await o?.send(d)}).catch(l=>this._onerror(new Error(`Failed to send response: ${l}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===s&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,o=Number(r),i=this._progressHandlers.get(o);if(!i){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let s=this._responseHandlers.get(o),a=this._timeoutInfo.get(o);if(a&&s&&a.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),s(c);return}i(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),Li(t))n(t);else{let s=new q(t.error.code,t.error.message,t.error.data);n(s)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let i=!1;if(Li(t)&&t.result&&typeof t.result=="object"){let s=t.result;if(s.task&&typeof s.task=="object"){let a=s.task;typeof a.taskId=="string"&&(i=!0,this._taskProgressTokens.set(a.taskId,r))}}if(i||this._progressHandlers.delete(r),Li(t))o(t);else{let s=q.fromError(t.error.code,t.error.message,t.error.data);o(s)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(t,r,n)}}catch(s){yield{type:"error",error:s instanceof q?s:new q(F.InternalError,String(s))}}return}let i;try{let s=await this.request(t,So,n);if(s.task)i=s.task.taskId,yield{type:"taskCreated",task:s.task};else throw new q(F.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:i},n);if(yield{type:"taskStatus",task:a},Gr(a.status)){a.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:i},r,n)}:a.status==="failed"?yield{type:"error",error:new q(F.InternalError,`Task ${i} failed`)}:a.status==="cancelled"&&(yield{type:"error",error:new q(F.InternalError,`Task ${i} was cancelled`)});return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:i},r,n)};return}let c=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(u=>setTimeout(u,c)),n?.signal?.throwIfAborted()}}catch(s){yield{type:"error",error:s instanceof q?s:new q(F.InternalError,String(s))}}}request(t,r,n){let{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s,task:a,relatedTask:c}=n??{};return new Promise((u,l)=>{let d=T=>{l(T)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),a&&this.assertTaskCapability(t.method)}catch(T){d(T);return}n?.signal?.throwIfAborted();let g=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:g};n?.onprogress&&(this._progressHandlers.set(g,n.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:g}}),a&&(m.params={...m.params,task:a}),c&&(m.params={...m.params,_meta:{...m.params?._meta||{},[Jr]:c}});let p=T=>{this._responseHandlers.delete(g),this._progressHandlers.delete(g),this._cleanupTimeout(g),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:g,reason:String(T)}},{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s}).catch(D=>this._onerror(new Error(`Failed to send cancellation: ${D}`)));let R=T instanceof q?T:new q(F.RequestTimeout,String(T));l(R)};this._responseHandlers.set(g,T=>{if(!n?.signal?.aborted){if(T instanceof Error)return l(T);try{let R=Br(r,T.result);R.success?u(R.data):l(R.error)}catch(R){l(R)}}}),n?.signal?.addEventListener("abort",()=>{p(n?.signal?.reason)});let y=n?.timeout??aO,v=()=>p(q.fromError(F.RequestTimeout,"Request timed out",{timeout:y}));this._setupTimeout(g,y,n?.maxTotalTimeout,v,n?.resetTimeoutOnProgress??!1);let P=c?.taskId;if(P){let T=R=>{let D=this._responseHandlers.get(g);D?D(R):this._onerror(new Error(`Response handler missing for side-channeled request ${g}`))};this._requestResolvers.set(g,T),this._enqueueTaskMessage(P,{type:"request",message:m,timestamp:Date.now()}).catch(R=>{this._cleanupTimeout(g),l(R)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:i,onresumptiontoken:s}).catch(T=>{this._cleanupTimeout(g),l(T)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},Ma,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},Na,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},Sv,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let a={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[Jr]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[Jr]:r.relatedTask}}}),this._transport?.send(a,r).catch(c=>this._onerror(c))});return}let s={...t,jsonrpc:"2.0"};r?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[Jr]:r.relatedTask}}}),await this._transport.send(s,r)}setRequestHandler(t,r){let n=df(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,i)=>{let s=ff(t,o);return Promise.resolve(r(s,i))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=df(t);this._notificationHandlers.set(n,o=>{let i=ff(t,o);return Promise.resolve(r(i))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n,o)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let o of n)if(o.type==="request"&&Vd(o.message)){let i=o.message.id,s=this._requestResolvers.get(i);s?(s(new q(F.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(i)):this._onerror(new Error(`Resolver missing for request ${i} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r){let n=this._options?.defaultTaskPollInterval??1e3;try{let o=await this._taskStore?.getTask(t);o?.pollInterval&&(n=o.pollInterval)}catch{}return new Promise((o,i)=>{if(r.aborted){i(new q(F.InvalidRequest,"Request cancelled"));return}let s=setTimeout(o,n);r.addEventListener("abort",()=>{clearTimeout(s),i(new q(F.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!t)throw new Error("No request provided");return await n.createTask(o,t.id,{method:t.method,params:t.params},r)},getTask:async o=>{let i=await n.getTask(o,r);if(!i)throw new q(F.InvalidParams,"Failed to retrieve task: Task not found");return i},storeTaskResult:async(o,i,s)=>{await n.storeTaskResult(o,i,s,r);let a=await n.getTask(o,r);if(a){let c=Bi.parse({method:"notifications/tasks/status",params:a});await this.notification(c),Gr(a.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,i,s)=>{let a=await n.getTask(o,r);if(!a)throw new q(F.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(Gr(a.status))throw new q(F.InvalidParams,`Cannot update task "${o}" from terminal status "${a.status}" to "${i}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,i,s,r);let c=await n.getTask(o,r);if(c){let u=Bi.parse({method:"notifications/tasks/status",params:c});await this.notification(u),Gr(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function lb(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function db(e,t){let r={...e};for(let n in t){let o=n,i=t[o];if(i===void 0)continue;let s=r[o];lb(s)&&lb(i)?r[o]={...s,...i}:r[o]=i}return r}var r0=Xs(Yp(),1),n0=Xs(t0(),1);function lN(){let e=new r0.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,n0.default)(e),e}var Cc=class{constructor(t){this._ajv=t??lN()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var jc=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],i=Array.isArray(o.content)?o.content:[o.content],s=i.some(l=>l.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,c=a?Array.isArray(a.content)?a.content:[a.content]:[],u=c.some(l=>l.type==="tool_use");if(s){if(i.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(g=>g.type==="tool_use").map(g=>g.id)),d=new Set(i.filter(g=>g.type==="tool_result").map(g=>g.toolUseId));if(l.size!==d.size||![...l].every(g=>d.has(g)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},Gi,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),o=t.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let i=o==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:i},To,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function o0(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function i0(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var Mc=class extends Xa{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Ji.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let i=this._loggingLevels.get(o);return i?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(i):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new Cc,this.setRequestHandler(Wd,n=>this._oninitialize(n)),this.setNotificationHandler(Jd,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(tf,async(n,o)=>{let i=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:s}=n.params,a=Ji.safeParse(s);return a.success&&this._loggingLevels.set(i,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new jc(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=db(this._capabilities,t)}setRequestHandler(t,r){let o=Wr(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let i;if(Nt(o)){let a=o;i=a._zod?.def?.value??a.value}else{let a=o;i=a._def?.value??a.value}if(typeof i!="string")throw new Error("Schema method literal must be a string");if(i==="tools/call"){let a=async(c,u)=>{let l=Br(Po,c);if(!l.success){let p=l.error instanceof Error?l.error.message:String(l.error);throw new q(F.InvalidParams,`Invalid tools/call request: ${p}`)}let{params:d}=l.data,g=await Promise.resolve(r(c,u));if(d.task){let p=Br(So,g);if(!p.success){let y=p.error instanceof Error?p.error.message:String(p.error);throw new q(F.InvalidParams,`Invalid task creation result: ${y}`)}return p.data}let m=Br(Ha,g);if(!m.success){let p=m.error instanceof Error?m.error.message:String(m.error);throw new q(F.InvalidParams,`Invalid tools/call result: ${p}`)}return m.data};return super.setRequestHandler(t,a)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){i0(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&o0(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:mv.includes(r)?r:Ud,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Ra)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],i=o.some(u=>u.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,a=s?Array.isArray(s.content)?s.content:[s.content]:[],c=a.some(u=>u.type==="tool_use");if(i){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},rf,r):this.request({method:"sampling/createMessage",params:t},Gi,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},To,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},i=await this.request({method:"elicitation/create",params:o},To,r);if(i.action==="accept"&&i.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(i.content);if(!a.valid)throw new q(F.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(s){throw s instanceof q?s:new q(F.InternalError,`Error validating elicitation response: ${s instanceof Error?s.message:String(s)}`)}return i}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},nf,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var a0=Symbol.for("mcp.completable");function sm(e){return!!e&&typeof e=="object"&&a0 in e}function c0(e){return e[a0]?.complete}var s0;(function(e){e.Completable="McpCompletable"})(s0||(s0={}));var dN=/^[A-Za-z0-9._-]{1,128}$/;function fN(e){let t=[];if(e.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(" ")&&t.push("Tool name contains spaces, which may cause parsing issues"),e.includes(",")&&t.push("Tool name contains commas, which may cause parsing issues"),(e.startsWith("-")||e.endsWith("-"))&&t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(e.startsWith(".")||e.endsWith("."))&&t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!dN.test(e)){let r=e.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,i)=>i.indexOf(n)===o);return t.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function pN(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let r of t)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function am(e){let t=fN(e);return pN(e,t.warnings),t.isValid}var Ic=class{constructor(t){this._mcpServer=t}registerToolTask(t,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${t}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(t,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}};var Dc=class{constructor(t,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Mc(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Ic(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(on(Va)),this.server.assertCanSetRequestHandler(on(Po)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Va,()=>({tools:Object.entries(this._registeredTools).filter(([,t])=>t.enabled).map(([t,r])=>{let n={name:t,title:r.title,description:r.description,inputSchema:(()=>{let o=xo(r.inputSchema);return o?lf(o,{strictUnions:!0,pipeStrategy:"input"}):mN})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=xo(r.outputSchema);o&&(n.outputSchema=lf(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(Po,async(t,r)=>{try{let n=this._registeredTools[t.params.name];if(!n)throw new q(F.InvalidParams,`Tool ${t.params.name} not found`);if(!n.enabled)throw new q(F.InvalidParams,`Tool ${t.params.name} disabled`);let o=!!t.params.task,i=n.execution?.taskSupport,s="createTask"in n.handler;if((i==="required"||i==="optional")&&!s)throw new q(F.InternalError,`Tool ${t.params.name} has taskSupport '${i}' but was not registered with registerToolTask`);if(i==="required"&&!o)throw new q(F.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(i==="optional"&&!o&&s)return await this.handleAutomaticTaskPolling(n,t,r);let a=await this.validateToolInput(n,t.params.arguments,t.params.name),c=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,c,t.params.name),c}catch(n){if(n instanceof q&&n.code===F.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(t){return{content:[{type:"text",text:t}],isError:!0}}async validateToolInput(t,r,n){if(!t.inputSchema)return;let i=xo(t.inputSchema)??t.inputSchema,s=await wa(i,r);if(!s.success){let a="error"in s?s.error:"Unknown error",c=xa(a);throw new q(F.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${c}`)}return s.data}async validateToolOutput(t,r,n){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new q(F.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=xo(t.outputSchema),i=await wa(o,r.structuredContent);if(!i.success){let s="error"in i?i.error:"Unknown error",a=xa(s);throw new q(F.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(t,r,n){let o=t.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let s={...n,taskStore:n.taskStore};if(t.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,s))}else{let a=o;return await Promise.resolve(a.createTask(s))}}if(t.inputSchema){let s=o;return await Promise.resolve(s(r,n))}else{let s=o;return await Promise.resolve(s(n))}}async handleAutomaticTaskPolling(t,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(t,r.params.arguments,r.params.name),i=t.handler,s={...n,taskStore:n.taskStore},a=o?await Promise.resolve(i.createTask(o,s)):await Promise.resolve(i.createTask(s)),c=a.task.taskId,u=a.task,l=u.pollInterval??5e3;for(;u.status!=="completed"&&u.status!=="failed"&&u.status!=="cancelled";){await new Promise(g=>setTimeout(g,l));let d=await n.taskStore.getTask(c);if(!d)throw new q(F.InternalError,`Task ${c} not found during polling`);u=d}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(on(Ba)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Ba,async t=>{switch(t.params.ref.type){case"ref/prompt":return Ev(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return Ov(t),this.handleResourceCompletion(t,t.params.ref);default:throw new q(F.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let n=this._registeredPrompts[r.name];if(!n)throw new q(F.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new q(F.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return Ps;let i=Wr(n.argsSchema)?.[t.params.argument.name];if(!sm(i))return Ps;let s=c0(i);if(!s)return Ps;let a=await s(t.params.argument.value,t.params.context);return l0(a)}async handleResourceCompletion(t,r){let n=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return Ps;throw new q(F.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(t.params.argument.name);if(!o)return Ps;let i=await o(t.params.argument.value,t.params.context);return l0(i)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(on(Za)),this.server.assertCanSetRequestHandler(on(qa)),this.server.assertCanSetRequestHandler(on(La)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Za,async(t,r)=>{let n=Object.entries(this._registeredResources).filter(([i,s])=>s.enabled).map(([i,s])=>({uri:i,name:s.name,...s.metadata})),o=[];for(let i of Object.values(this._registeredResourceTemplates)){if(!i.resourceTemplate.listCallback)continue;let s=await i.resourceTemplate.listCallback(r);for(let a of s.resources)o.push({...i.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(qa,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(La,async(t,r)=>{let n=new URL(t.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new q(F.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let i of Object.values(this._registeredResourceTemplates)){let s=i.resourceTemplate.uriTemplate.match(n.toString());if(s)return i.readCallback(n,s,r)}throw new q(F.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(on(Ua)),this.server.assertCanSetRequestHandler(on(Fa)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Ua,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?hN(r.argsSchema):void 0}))})),this.server.setRequestHandler(Fa,async(t,r)=>{let n=this._registeredPrompts[t.params.name];if(!n)throw new q(F.InvalidParams,`Prompt ${t.params.name} not found`);if(!n.enabled)throw new q(F.InvalidParams,`Prompt ${t.params.name} disabled`);if(n.argsSchema){let o=xo(n.argsSchema),i=await wa(o,t.params.arguments);if(!i.success){let c="error"in i?i.error:"Unknown error",u=xa(c);throw new q(F.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${u}`)}let s=i.data,a=n.callback;return await Promise.resolve(a(s,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(t,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let i=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let s=this._createRegisteredResourceTemplate(t,void 0,r,o,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(t,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let i=this._createRegisteredResourceTemplate(t,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}_createRegisteredResource(t,r,n,o,i){let s={name:t,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=s)),typeof a.name<"u"&&(s.name=a.name),typeof a.title<"u"&&(s.title=a.title),typeof a.metadata<"u"&&(s.metadata=a.metadata),typeof a.callback<"u"&&(s.readCallback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=s,s}_createRegisteredResourceTemplate(t,r,n,o,i){let s={resourceTemplate:n,title:r,metadata:o,readCallback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==t&&(delete this._registeredResourceTemplates[t],u.name&&(this._registeredResourceTemplates[u.name]=s)),typeof u.title<"u"&&(s.title=u.title),typeof u.template<"u"&&(s.resourceTemplate=u.template),typeof u.metadata<"u"&&(s.metadata=u.metadata),typeof u.callback<"u"&&(s.readCallback=u.callback),typeof u.enabled<"u"&&(s.enabled=u.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=s;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(u=>!!n.completeCallback(u))&&this.setCompletionRequestHandler(),s}_createRegisteredPrompt(t,r,n,o,i){let s={title:r,description:n,argsSchema:o===void 0?void 0:Un(o),callback:i,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==t&&(delete this._registeredPrompts[t],a.name&&(this._registeredPrompts[a.name]=s)),typeof a.title<"u"&&(s.title=a.title),typeof a.description<"u"&&(s.description=a.description),typeof a.argsSchema<"u"&&(s.argsSchema=Un(a.argsSchema)),typeof a.callback<"u"&&(s.callback=a.callback),typeof a.enabled<"u"&&(s.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=s,o&&Object.values(o).some(c=>{let u=c instanceof vt?c._def?.innerType:c;return sm(u)})&&this.setCompletionRequestHandler(),s}_createRegisteredTool(t,r,n,o,i,s,a,c,u){am(t);let l={title:r,description:n,inputSchema:u0(o),outputSchema:u0(i),annotations:s,execution:a,_meta:c,handler:u,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==t&&(typeof d.name=="string"&&am(d.name),delete this._registeredTools[t],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=Un(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=Un(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(t,...r){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let n,o,i,s;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let c=r[0];if(cm(c))o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!cm(r[0])&&(s=r.shift());else if(typeof c=="object"&&c!==null){if(Object.values(c).some(u=>typeof u=="object"&&u!==null))throw new Error(`Tool ${t} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);s=r.shift()}}let a=r[0];return this._createRegisteredTool(t,void 0,n,o,i,s,{taskSupport:"forbidden"},void 0,a)}registerTool(t,r,n){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:o,description:i,inputSchema:s,outputSchema:a,annotations:c,_meta:u}=r;return this._createRegisteredTool(t,o,i,s,a,c,{taskSupport:"forbidden"},u,n)}prompt(t,...r){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let i=r[0],s=this._createRegisteredPrompt(t,void 0,n,o,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(t,r,n){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:o,description:i,argsSchema:s}=r,a=this._createRegisteredPrompt(t,o,i,s,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(t,r){return this.server.sendLoggingMessage(t,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var mN={type:"object",properties:{}};function d0(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function f0(e){return"_def"in e||"_zod"in e||d0(e)}function cm(e){return typeof e!="object"||e===null||f0(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(d0)}function u0(e){if(e){if(cm(e))return Un(e);if(!f0(e))throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return e}}function hN(e){let t=Wr(e);return t?Object.entries(t).map(([r,n])=>{let o=V_(n),i=H_(n);return{name:r,description:o,required:!i}}):[]}function on(e){let r=Wr(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=$a(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function l0(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var Ps={completion:{values:[],hasMore:!1}};import m0 from"node:process";var Nc=class{append(t){this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
|
|
52
52
|
`);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),gN(r)}clear(){this._buffer=void 0}};function gN(e){return xv.parse(JSON.parse(e))}function p0(e){return JSON.stringify(e)+`
|
|
53
|
-
`}var Ac=class{constructor(t=m0.stdin,r=m0.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new Nc,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=p0(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function h0(e){let t={app:e,version:yN(Bo("__RED_BUILD_VERSION__",()=>"2.
|
|
53
|
+
`}var Ac=class{constructor(t=m0.stdin,r=m0.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new Nc,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._onerror=n=>{this.onerror?.(n)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=p0(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};function h0(e){let t={app:e,version:yN(Bo("__RED_BUILD_VERSION__",()=>"2.80.0")??"0.0.0-dev"),gitSha:Bo("__RED_BUILD_GIT_SHA__",()=>"4a1ed446d771c5769fdeef78ef501df459a8553c")??"unknown",buildTime:Bo("__RED_BUILD_TIME__",()=>"2026-07-22T10:44:22-03:00")??"unknown",bundleAsset:Bo("__RED_BUNDLE_ASSET__",()=>"code-nav.bundle.min.mjs")??"unknown"},r=Bo("__REDDB_SDK_VERSION__",()=>""),n=Bo("__REDDB_BINARY_TAG__",()=>"");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function yN(e){return e.startsWith("v")?e.slice(1):e}function g0(e){return`${e.app} ${e.version} ${e.gitSha}`}function Bo(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var um={typescript:{command:"typescript-language-server",args:["--stdio"],extensions:[".ts",".tsx",".js",".jsx",".mts",".cts",".mjs",".cjs"],languageId:"typescript"},go:{command:"gopls",args:[],extensions:[".go"],languageId:"go"},rust:{command:"rust-analyzer",args:[],extensions:[".rs"],languageId:"rust"},python:{command:"pyright-langserver",args:["--stdio"],extensions:[".py",".pyi"],languageId:"python"}};function y0(){let e=process.env.CODE_NAV_SERVERS;if(!e)return um;try{let t=JSON.parse(e),r={...um};for(let[n,o]of Object.entries(t))r[n]={...r[n]??{},...o};return r}catch(t){return process.stderr.write(`code-nav: failed to parse CODE_NAV_SERVERS, using defaults: ${String(t)}
|
|
54
54
|
`),um}}function _0(e){let t=new Map;for(let[r,n]of Object.entries(e))for(let o of n.extensions)t.set(o,r);return t}var hi=Xs(Zk(),1),ft=Xs(ny(),1);import{spawn as rA}from"node:child_process";import{readFile as nA}from"node:fs/promises";import{pathToFileURL as qk,fileURLToPath as oA}from"node:url";import{resolve as iA}from"node:path";var Bs=class{constructor(t,r){this.spec=t;this.rootPath=r}spec;rootPath;proc;conn;ready;openDocs=new Set;async ensureStarted(){return this.ready?this.ready:(this.ready=this.start(),this.ready)}async start(){let t=rA(this.spec.command,this.spec.args,{cwd:this.rootPath,stdio:["pipe","pipe","pipe"]});this.proc=t,await new Promise((i,s)=>{t.once("spawn",()=>i()),t.once("error",a=>s(new Error(`failed to spawn '${this.spec.command}': ${a.message}`)))}),t.stderr.on("data",i=>{process.stderr.write(`[${this.spec.command}] ${i.toString()}`)}),t.once("exit",()=>{try{this.conn?.dispose()}catch{}});let r=(0,hi.createProtocolConnection)(new hi.StreamMessageReader(t.stdout),new hi.StreamMessageWriter(t.stdin));this.conn=r,r.listen();let n=qk(this.rootPath).toString(),o={processId:process.pid,rootUri:n,workspaceFolders:[{uri:n,name:"workspace"}],capabilities:{textDocument:{definition:{linkSupport:!0},references:{},documentSymbol:{hierarchicalDocumentSymbolSupport:!0},hover:{contentFormat:["markdown","plaintext"]}},workspace:{symbol:{}}}};await r.sendRequest(ft.InitializeRequest.type,o),await r.sendNotification(ft.InitializedNotification.type,{})}async ensureOpen(t){let r=iA(this.rootPath,t),n=qk(r).toString();if(this.openDocs.has(n))return n;let o=await nA(r,"utf8");return await this.conn.sendNotification(ft.DidOpenTextDocumentNotification.type,{textDocument:{uri:n,languageId:this.spec.languageId,version:1,text:o}}),this.openDocs.add(n),n}async definition(t,r,n){await this.ensureStarted();let o=await this.ensureOpen(t),i=await this.conn.sendRequest(ft.DefinitionRequest.type,{textDocument:{uri:o},position:{line:r,character:n}});return sA(i)}async references(t,r,n,o){await this.ensureStarted();let i=await this.ensureOpen(t);return await this.conn.sendRequest(ft.ReferencesRequest.type,{textDocument:{uri:i},position:{line:r,character:n},context:{includeDeclaration:o}})??[]}async documentSymbols(t){await this.ensureStarted();let r=await this.ensureOpen(t);return await this.conn.sendRequest(ft.DocumentSymbolRequest.type,{textDocument:{uri:r}})??[]}async hover(t,r,n){await this.ensureStarted();let o=await this.ensureOpen(t);return this.conn.sendRequest(ft.HoverRequest.type,{textDocument:{uri:o},position:{line:r,character:n}})}async workspaceSymbols(t){return await this.ensureStarted(),await this.conn.sendRequest(ft.WorkspaceSymbolRequest.type,{query:t})??[]}dispose(){try{this.conn?.dispose()}catch{}this.proc?.kill()}};function sA(e){return e?(Array.isArray(e)?e:[e]).map(r=>"targetUri"in r?{uri:r.targetUri,range:r.targetSelectionRange}:r):[]}function oy(e,t){try{let r=oA(e);return(r.startsWith(t)?r.slice(t.length).replace(/^[/\\]/,""):r)||r}catch{return e}}var Js=process.env.CODE_NAV_ROOT??process.cwd(),Ws=y0(),Lk=_0(Ws),gi=new Map;function ku(e){let t=aA(e),r=Lk.get(t);if(!r)throw new Error(`no language server configured for '${t}'. Configured extensions: ${[...Lk.keys()].join(", ")||"(none)"}.`);let n=gi.get(r);return n||(n=new Bs(Ws[r],Js),gi.set(r,n)),n}function cA(){for(let e of Object.keys(Ws))gi.has(e)||gi.set(e,new Bs(Ws[e],Js));return[...gi.values()]}function sy(e,t){return`${oy(e,Js)}:${t.start.line+1}:${t.start.character+1}`}var iy=h0("code-nav"),yi=new Dc({name:"code-nav",version:iy.version}),Pu={file:Fr.string().describe("Workspace-relative path to the source file."),line:Fr.number().int().describe("Zero-based line number."),character:Fr.number().int().describe("Zero-based character offset on the line.")};yi.registerTool("goto_definition",{title:"Go to definition",description:"Resolve the symbol at a file position to its definition(s). Returns file:line:column locations. Use this instead of grepping for a name.",inputSchema:Pu},async({file:e,line:t,character:r})=>{let n=await ku(e).definition(e,t,r);return n.length===0?_r("No definition found."):_r(n.map(o=>sy(o.uri,o.range)).join(`
|
|
55
55
|
`))});yi.registerTool("find_references",{title:"Find references",description:"Find every reference to the symbol at a file position across the workspace. Semantic \u2014 matches the actual symbol, not text.",inputSchema:{...Pu,includeDeclaration:Fr.boolean().optional().describe("Include the declaration itself (default true).")}},async({file:e,line:t,character:r,includeDeclaration:n})=>{let o=await ku(e).references(e,t,r,n??!0);return o.length===0?_r("No references found."):_r(`${o.length} reference(s):
|
|
56
56
|
`+o.map(i=>sy(i.uri,i.range)).join(`
|
package/dist/dev.bundle.min.mjs
CHANGED
|
@@ -571,7 +571,7 @@ ${n}`,"</details>"].join(`
|
|
|
571
571
|
`),0}async function qIe(e,t=process.cwd(),r=process.stdout){let n=e[0];if(n!=="render"&&n!=="refresh"&&n!=="act")return process.stderr.write(`[afk] hitl-card requires a subcommand: render | refresh | act
|
|
572
572
|
`),2;let{values:o}=Hd(e.slice(1),GDr),i=Number(o.issue);if(!Number.isInteger(i)||i<=0)return process.stderr.write(`[afk] hitl-card requires --issue <N>
|
|
573
573
|
`),2;let s=o.root?.trim()||t,a=qDr(s),c=await VDr(a,o.repo);try{if(n==="render")return await YDr(a,c,i,r);if(n==="refresh")return await JDr(a,c,i,r);let u=o.body??"",l=o.author?.trim()||void 0;return await eOr(a,c,i,u,l,s,r)}catch(u){return process.stderr.write(`[afk] hitl-card ${n} failed: ${u instanceof Error?u.message:String(u)}
|
|
574
|
-
`),1}}var GDr,VIe=h(()=>{"use strict";BE();hn();ZA();OE();Ii();so();lI();yE();HIe();dr();Ywt();P6();GDr={issue:{kind:"value",coerce:e=>Number(e)},body:{kind:"value",coerce:e=>e},author:{kind:"value",coerce:e=>e},repo:{kind:"value",aliases:["R"],coerce:e=>e},root:{kind:"value",coerce:e=>e}}});Yr();import{mkdir as oIe,readFile as BRr,readdir as DRr,rename as ORr,rm as eSt,stat as PRr,writeFile as rSt}from"node:fs/promises";import{dirname as X3,join as sI}from"node:path";function Dp(e){let t={app:e,version:p_t(BI("__RED_BUILD_VERSION__",()=>"2.
|
|
574
|
+
`),1}}var GDr,VIe=h(()=>{"use strict";BE();hn();ZA();OE();Ii();so();lI();yE();HIe();dr();Ywt();P6();GDr={issue:{kind:"value",coerce:e=>Number(e)},body:{kind:"value",coerce:e=>e},author:{kind:"value",coerce:e=>e},repo:{kind:"value",aliases:["R"],coerce:e=>e},root:{kind:"value",coerce:e=>e}}});Yr();import{mkdir as oIe,readFile as BRr,readdir as DRr,rename as ORr,rm as eSt,stat as PRr,writeFile as rSt}from"node:fs/promises";import{dirname as X3,join as sI}from"node:path";function Dp(e){let t={app:e,version:p_t(BI("__RED_BUILD_VERSION__",()=>"2.80.0")??"0.0.0-dev"),gitSha:BI("__RED_BUILD_GIT_SHA__",()=>"4a1ed446d771c5769fdeef78ef501df459a8553c")??"unknown",buildTime:BI("__RED_BUILD_TIME__",()=>"2026-07-22T10:44:22-03:00")??"unknown",bundleAsset:BI("__RED_BUNDLE_ASSET__",()=>"dev.bundle.min.mjs")??"unknown"},r=BI("__REDDB_SDK_VERSION__",()=>""),n=BI("__REDDB_BINARY_TAG__",()=>"");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function p_t(e){return e.startsWith("v")?e.slice(1):e}function ERe(e){return`${e.app} ${e.version} ${e.gitSha}`}function BI(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Po();vi();Po();import{join as Fs}from"node:path";async function Qp(e){let{gh:t}=await Promise.resolve().then(()=>(hn(),jh)),r=await t(["repo","view","--json","nameWithOwner","-q",".nameWithOwner"],{cwd:e});return r.code===0?r.stdout.trim():""}async function fi(e=process.cwd()){let t=await Qp(e);return{root:e,repo:t,remote:"origin"}}function Ut(e,t){let r=tf(t),n=ps(e),o=pl(e),i=YI(e),s=nU(e),a=Fs(n,"supervisors",r);return{fleet:r,tmpDir:n,stateDir:o,workersRoot:K_e(e),historyPath:Fs(i,"history.toonl"),supervisorRuntimeDir:a,fleetStatePath:Fs(a,"state.toon"),fleetFirehosePath:Fs(a,"supervisor.log.toonl"),monitorLogCursorPath:Fs(a,"monitor-log-cursors.toon"),supervisorPidPath:Fs(a,"afk-supervisor.pid"),supervisorStopPath:Fs(a,"afk-supervisor.stop"),supervisorLogPath:Fs(a,"supervisor.log.toonl"),supervisorResizePath:Fs(a,"resize.toon"),supervisorRestartsPath:Fs(a,"restarts.toon"),runnerCircuitDir:Fs(a,"runner-circuit"),statuslineCachePath:Fs(s,"statusline-cache.toon"),statuslineRepoCachePath:Fs(s,"statusline-repo-cache.toon"),branchLockPath:oU(e),landLockPath:Fs(n,"afk-land.lock"),claimsDir:Z_e(e),diagnosticsDir:eTe(e),mergeResolveScratchPath:Fs(X_e(e),"merge-resolve.last"),landingWorktreesDir:rTe(e),rebaseWorktreesDir:nTe(e),cascadeWorktreesDir:oTe(e),feedbackWorktreesDir:tTe(e),adoptWorktreesDir:iTe(e),reconcileWorktreesDir:sTe(e),gitignorePath:Fs(e,".gitignore"),configPath:Fs(Wh(e),"config.yaml")}}so();Ih();bCe();import{readFileSync as FIr}from"node:fs";import{join as MIr}from"node:path";function wIr(e){return`sandcastle:${(e.replace(/[\\/]+$/,"").split(/[\\/]/).pop()??"local").toLowerCase().replace(/[^a-z0-9_.-]/g,"-")||"local"}`}function x3(e){let t=(e.envOverride??"").trim();if(t)return t;let r=(e.configured??"").trim();return r||wIr(e.repoRoot)}function rbt(e,t){return`sandcastle ${e} build-image --image-name ${t}`}import{execFileSync as CIr}from"node:child_process";var nbt=[{command:"unknown",cpu:100}];function kIr(e){return Number.isInteger(e)&&e>1}function IIr(e){let t=new Map,r=new Map;for(let n of e.split(`
|
|
575
575
|
`)){let o=n.trim();if(o.length===0)continue;let i=o.split(/\s+/);if(i.length<4)continue;let s=Number(i[0]),a=Number(i[1]),c=Number(i[2]);if(!Number.isInteger(s)||!Number.isInteger(a))continue;let u=i.slice(3).join(" "),l=vIr(u);r.set(s,{command:l,cpu:Number.isFinite(c)?c:0});let d=t.get(a);d?d.push(s):t.set(a,[s])}return{children:t,info:r}}function vIr(e){let t=e.split(/\s+/)[0]??e,r=t.lastIndexOf("/");return r>=0?t.slice(r+1):t}function RIr(e,t,r){let n=[],o=new Set,i=[e];for(;i.length>0;){let s=i.pop();if(o.has(s))continue;o.add(s);let a=r.get(s);a&&n.push(a);let c=t.get(s);if(c)for(let u of c)i.push(u)}return n}function _Ir(e,t){if(!kIr(e))return[];let r;try{r=t()}catch{return nbt}try{let{children:n,info:o}=IIr(r);return RIr(e,n,o)}catch{return nbt}}function b3(e){return _Ir(e,()=>CIr("ps",["-e","-o","pid=,ppid=,%cpu=,comm="],{encoding:"utf8",maxBuffer:16*1024*1024,timeout:5e3}))}mc();Po();hn();MCe();var gB="red-trunk",QCe=`refs/heads/${gB}`;function ibt(e){return{cwd:e.cwd}}function ir(e,t){return(e.exec??ft)("git",t,ibt(e))}async function sbt(e){let t=await ir(e,["rev-parse","--is-inside-work-tree"]);return t.code===0&&t.stdout.trim()==="true"}async function abt(e){let t=await ir(e,["remote","-v"]);if(t.code!==0)return[];let r=new Set,n=[];for(let o of t.stdout.split(`
|
|
576
576
|
`)){let i=o.trim().split(/\s+/),s=i[0],a=i[1];if(!s||!a)continue;let c=`${s}\0${a}`;r.has(c)||(r.add(c),n.push({name:s,url:a}))}return n}async function cbt(e,t,r){if((await ir(e,["remote","set-url",t,r])).code!==0)throw new Error(`git remote set-url failed for ${t}`)}async function ubt(e){return(await ir(e,["rev-parse","--verify","--quiet","refs/heads/main"])).code===0}async function l1(e){let t=await ir(e,["branch","--show-current"]);return t.code===0?t.stdout.trim():""}async function vh(e){let t=await ir(e,["rev-parse","--short","HEAD"]);return t.code===0?t.stdout.trim():""}async function lbt(e){let t=await ir(e,["rev-parse","--verify","--quiet","HEAD"]),r=t.stdout.trim();return t.code===0&&r!==""?r:void 0}async function bp(e,t){if(!t)return{ok:!0};let r=await ir(e,["branch","-D",t]);if(r.code!==0){let n=r.stderr.trim()||r.stdout.trim()||`exit ${r.code}`;return{ok:!1,error:`git branch -D failed for ${t}: ${n}`}}return{ok:!0}}async function w3(e,t){t&&await ir(e,["push","origin","--delete",t])}async function Nd(e,t){return t?(await ir(e,["rev-parse","--verify","--quiet",`refs/heads/${t}`])).code===0:!1}async function Vk(e,t){if(!t)return;let r=await ir(e,["rev-parse","--verify","--quiet",`refs/heads/${t}`]),n=r.stdout.trim();return r.code===0&&n!==""?n:void 0}async function dbt(e,t){let r=t.remote.trim()||"origin",n=t.branch.trim();if(!n)return{remoteReachable:!1};let o=await ir(e,["fetch","--quiet",r,n]),i=await S3(e,`refs/heads/${n}`),s=await S3(e,`${r}/${n}`),a=i&&s?await OIr(e,`refs/heads/${n}`,`${r}/${n}`):void 0;return{localSha:i,remoteSha:s,ahead:a?.ahead,behind:a?.behind,remoteReachable:o.code===0}}async function AB(e,t){t&&await ir(e,["fetch","origin",t])}async function S3(e,t){let r=await ir(e,["rev-parse","--verify","--quiet",t]),n=r.stdout.trim();return r.code===0&&n!==""?n:void 0}async function OIr(e,t,r){let n=await ir(e,["rev-list","--left-right","--count",`${t}...${r}`]);if(n.code!==0)return;let[o,i]=n.stdout.trim().split(/\s+/),s=Number(o),a=Number(i);if(!(!Number.isFinite(s)||!Number.isFinite(a)))return{ahead:s,behind:a}}async function C3(e,t){let r=t.base.trim(),n=t.remote?.trim()||"origin",o=`${n}/${r}`,i=r?await ir(e,["fetch",n,r]):PIr("empty base"),s=r?await S3(e,o):void 0;if(i.code===0&&s){let a=await S3(e,QCe);return a&&a!==s&&await ir(e,["merge-base","--is-ancestor",QCe,o]),(await ir(e,["update-ref",QCe,s])).code!==0?{ok:!1,base:r,baseRef:o,sha:s,source:"mirror",remoteReachable:!0,reason:"base-stale",message:`could not update fleet trunk mirror ${gB} from ${o}`}:{ok:!0,base:r,baseRef:gB,sha:s,source:"mirror",remoteReachable:!0}}return{ok:!1,base:r,baseRef:o,sha:s??"",source:"mirror",remoteReachable:!1,reason:"base-stale",message:`could not refresh fleet trunk mirror ${gB} from ${o}`}}function PIr(e){return{code:1,stdout:"",stderr:e}}async function fbt(e,t){let r=t.branch.trim(),n=t.baseRef.trim(),o=t.remote?.trim()||"origin";if(!r||!n)return!1;let i=await ir(e,["rev-parse","--verify","--quiet",n]),s=i.code===0?i.stdout.trim():"";if(!s)return!1;let a=await $Ce(e,r),c=await Nd(e,r),u=`refs/remotes/${o}/${r}`,l=await ir(e,["rev-parse","--verify","--quiet",u]),d=l.code===0&&l.stdout.trim()!=="",f=c?r:d?`${o}/${r}`:void 0,p=!1;if(f){let A=await ir(e,["merge-base",f,n]);p=A.code!==0||A.stdout.trim()!==s}let m=!!(a||c||d);return(t.force?m:p)?(a&&await li(e,a),c&&await bp(e,r),d&&await ir(e,["update-ref","-d",u]),await ir(e,["push",o,"--delete",r]),!0):!1}async function pbt(e,t,r){if(!t||!r)return!1;let n=await Vk(e,t);if(!n){let i=await ir(e,["rev-parse","--verify","--quiet",`refs/remotes/origin/${t}`]);n=i.code===0&&i.stdout.trim()!==""?i.stdout.trim():void 0}return n?(await ir(e,["merge-base","--is-ancestor",n,`origin/${r}`])).code===0:!1}async function yB(e,t,r){let n=await ir(e,["diff","--name-only",`${r}...${t}`]);return n.code!==0?[]:n.stdout.split(`
|
|
577
577
|
`).map(o=>o.trim()).filter(Boolean)}async function mbt(e,t,r){let n=await ir(e,["diff","--shortstat",`${r}...${t}`]);return n.code===0?n.stdout.trim():""}async function hbt(e,t){let r=t,n=await ir(e,["merge-base",t,"HEAD"]);n.code===0&&n.stdout.trim()!==""&&(r=n.stdout.trim());let o=await ir(e,["diff","--shortstat",r]);return LCe(o.code===0?o.stdout:"")}function LCe(e){let t=/(\d+) insertion/.exec(e),r=/(\d+) deletion/.exec(e);return{added:t?Number(t[1]):0,removed:r?Number(r[1]):0}}async function gbt(e,t){let r=t,n=await ir(e,["merge-base",t,"HEAD"]);n.code===0&&n.stdout.trim()!==""&&(r=n.stdout.trim());let o=await ir(e,["diff","--shortstat",`${r}..HEAD`]);return LCe(o.code===0?o.stdout:"")}async function Abt(e){let t=await ir(e,["diff","--shortstat","HEAD"]);return LCe(t.code===0?t.stdout:"")}async function Fd(e,t,r){let n=await ir(e,["fetch","origin",r]),o=await ir(e,["worktree","add","--force","--detach",t,`origin/${r}`]);return o.code===0?{ok:!0,stderr:""}:{ok:!1,stderr:[n.code===0?"":n.stderr,o.stderr].map(s=>s.trim()).filter(Boolean).join(`
|
|
@@ -586,7 +586,11 @@ ${n}`,"</details>"].join(`
|
|
|
586
586
|
`)){let f=d.trim();if(!f||c.has(f))continue;let p=lB(f);p!=="glossary"&&p!=="adr"||c.set(f,{path:f,state:"ahead",group:p,ignored:!1,trackedPrecedent:i.get(p)??!1})}let l=e3({base:t,files:[...c.values()]});return l.files.length>0?{count:l.files.length}:void 0}var $3=[".red/CONTEXT.md",".red/CONTEXT-MAP.md",".red/contexts",".red/adr"];function AEt(e){return e==="adr"?".red/adr":".red"}function yEt(e,t){let r=new Map;for(let n of e.split(`
|
|
587
587
|
`)){let o=n.replace(/\s+$/,"");if(!o)continue;let i=o.slice(0,2),s=o.slice(3),a=s.indexOf(" -> ");a!==-1&&(s=s.slice(a+4)),s=xbt(s);let c=lB(s);c!=="glossary"&&c!=="adr"||r.set(s,{path:s,state:i==="??"||i==="!!"?"untracked":"modified",group:c,ignored:i==="!!",trackedPrecedent:t.get(c)??!1})}return[...r.values()]}async function hEt(e,t,r){if(r!=="glossary"&&r!=="adr")return!1;let n=await ft("git",["ls-tree","-r","--name-only",t,"--",AEt(r)],{cwd:e.cwd});return n.code===0&&n.stdout.trim()!==""}async function gEt(e,t,r,n){if(r!=="glossary"&&r!=="adr")return!1;let o=await n("git",["ls-tree","-r","--name-only",t,"--",AEt(r)],{cwd:e.cwd});return o.code===0&&o.stdout.trim()!==""}async function Uke(e,t){let r={cwd:e.root},o=(await ft("git",["fetch",e.remote,t],{cwd:e.root})).code===0,i=`${e.remote}/${t}`,s=new Map([["glossary",await hEt(r,i,"glossary")],["adr",await hEt(r,i,"adr")]]),a=await ft("git",["status","--porcelain","--untracked-files=all","--ignored=matching","--",...$3],{cwd:e.root}),c=a.code===0?yEt(a.stdout,s):[],u=new Map(c.map(l=>[l.path,l]));if(o){let l=await ft("git",["diff","--name-only",`${i}...HEAD`,"--",...$3],{cwd:e.root});if(l.code===0)for(let d of l.stdout.split(`
|
|
588
588
|
`)){let f=d.trim();if(!f||u.has(f))continue;let p=lB(f);p!=="glossary"&&p!=="adr"||u.set(f,{path:f,state:"ahead",group:p,ignored:!1,trackedPrecedent:s.get(p)??!1})}}return{base:t,files:[...u.values()],originReachable:o}}async function Hke(e,t){let r=Ut(e.root),n=`${Date.now().toString(36)}-${process.pid}`,o=Lke(r.tmpDir,"docs-sweep",n),i=`docs/afk-docs-sweep-${n}`,s="docs: land AFK boot docs sweep",a="Automated Docs Sweep landing for stranded .red documentation.";if(await ol(mEt(o)),(await ft("git",["worktree","add","-b",i,o,`${e.remote}/${t.base}`],{cwd:e.root})).code!==0)return{ok:!1,reason:"worktree-add-failed"};try{for(let y of t.files){let b=Lke(e.root,y.path),S=Lke(o,y.path);Cvr(b)?(kvr(mEt(S),{recursive:!0}),wvr(b,S)):Ivr(S,{force:!0})}if((await ft("git",["add","--force","--",...t.files.map(y=>y.path)],{cwd:o})).code!==0)return{ok:!1,reason:"add-failed"};if((await ft("git",["commit","-m",s],{cwd:o})).code!==0)return{ok:!1,reason:"commit-failed"};if((await ft("git",["push",e.remote,`HEAD:refs/heads/${i}`],{cwd:o})).code!==0)return{ok:!1,reason:"push-failed"};let f=await ft("gh",["-R",e.repo,"pr","create","--base",t.base,"--head",i,"--title",s,"--body",a],{cwd:e.root});if(f.code!==0)return{ok:!1,reason:"pr-create-failed"};let p=/\/pull\/([0-9]+)/.exec(f.stdout)?.[1]??f.stdout.trim().match(/^[0-9]+$/)?.[0],m=p?{code:0,stdout:p,stderr:""}:await ft("gh",["-R",e.repo,"pr","view",i,"--json","number","-q",".number"],{cwd:e.root}),g=m.stdout.trim();return m.code!==0||!g?{ok:!1,reason:"pr-resolve-failed"}:(await ft("gh",["-R",e.repo,"pr","merge",g,"--merge","--delete-branch"],{cwd:e.root})).code!==0?{ok:!1,reason:"merge-failed"}:(await ft("git",["fetch",e.remote,t.base],{cwd:e.root}),{ok:!0})}finally{await ft("git",["worktree","remove","--force",o],{cwd:e.root})}}ZL();Ii();async function Wke(e){let t={cwd:e.root},r={cwd:e.root,repo:e.repo},n=await Sp(t,"afk/"),o=await k3(t,"afk/*"),i=await I3(t),s=o.filter(l=>!i.has(l)).map(l=>({branch:l})),a=new Set;for(let l of[...n,...s]){let d=aB(l.branch);d!==null&&a.add(d)}let c=await CE(r),u=new Map;for(let l of a){let d=c.get(l);d?u.set(l,{state:d.state,closedAt:d.closedAt}):u.set(l,await D1(r,l))}return{remoteLiveRefs:n,localLiveRefs:s,lookup:l=>u.get(l),deleteRemote:l=>w3(t,l),deleteLocal:async l=>{await bp(t,l)}}}import{existsSync as QEt,readFileSync as LEt}from"node:fs";import{join as W1}from"node:path";OL();so();Wk();var vvr=/^[ \t]*(?:[-*][ \t]+)?branch:[ \t]+(\S+)[ \t]*(?:#.*)?$/,Rvr=/Spec[ \t]*#[ \t]*(\d+)/,U1="main";function jke(e,t,r){let n=e;return n.startsWith(t)&&(n=n.slice(t.length)),n.endsWith(r)&&(n=n.slice(0,n.length-r.length)),n}function xEt(e){for(let t of e.split(`
|
|
589
|
-
`)){let r=vvr.exec(t);if(!r)continue;let n=r[1];if(n=jke(n,"`","`"),n=jke(n,'"','"'),n=jke(n,"'","'"),n.length!==0)return n}}function _vr(e){let t=Rvr.exec(e);return t?Number(t[1]):void 0}async function bEt(e,t){let r=xEt(e.issueBody);if(r)return{branch:r,source:"pin"};let n=_vr(e.issueBody);if(n!==void 0){let i=await t.fetchIssueBody(n);if(i!==void 0){let s=xEt(i);if(s)return{branch:s,source:"pin"}}}let o=t.defaultBranch?.trim();return{branch:o!==void 0&&o.length>0?o:U1,source:"trunk"}}function U3(e){return e!==void 0&&e.trim().length>0}async function Gke(e,t){let r=await t.readLockedBranch();if(U3(r))return{branch:r.trim(),source:"lock"};if(U3(t.configLockedBranch))return{branch:t.configLockedBranch.trim(),source:"pin"};let n=await bEt(e,{fetchIssueBody:t.fetchIssueBody,defaultBranch:t.configTrunk});return U3(n.branch)?n:{branch:U3(t.configTrunk)?t.configTrunk.trim():U1,source:"trunk"}}async function RE(e,t){return(await Gke(e,t)).branch}dr();hc();jk();c3();Gk();ZA();var Tvr="refs/heads/red-trunk";async function SEt(e,t){let{repo:r,remote:n,branch:o,stillBehind:i,inSync:s}=t,a=`${n}/${o}`;return s?{ok:!0,action:"in-sync"}:i?{ok:(await e(["git","-C",r,"merge","--ff-only",a])).code===0,action:"fast-forward"}:(await e(["git","-C",r,"rebase",a])).code!==0?(await e(["git","-C",r,"rebase","--abort"]),{ok:!1,action:"rebase"}):{ok:!0,action:"rebase"}}async function wEt(e,t){let{repo:r,remote:n,base:o,branch:i}=t,s=t.maxPushRetries??2,a=Math.max(0,t.maxAgentResolveAttempts??2),c=`${n}/${o}`,u=async()=>{
|
|
589
|
+
`)){let r=vvr.exec(t);if(!r)continue;let n=r[1];if(n=jke(n,"`","`"),n=jke(n,'"','"'),n=jke(n,"'","'"),n.length!==0)return n}}function _vr(e){let t=Rvr.exec(e);return t?Number(t[1]):void 0}async function bEt(e,t){let r=xEt(e.issueBody);if(r)return{branch:r,source:"pin"};let n=_vr(e.issueBody);if(n!==void 0){let i=await t.fetchIssueBody(n);if(i!==void 0){let s=xEt(i);if(s)return{branch:s,source:"pin"}}}let o=t.defaultBranch?.trim();return{branch:o!==void 0&&o.length>0?o:U1,source:"trunk"}}function U3(e){return e!==void 0&&e.trim().length>0}async function Gke(e,t){let r=await t.readLockedBranch();if(U3(r))return{branch:r.trim(),source:"lock"};if(U3(t.configLockedBranch))return{branch:t.configLockedBranch.trim(),source:"pin"};let n=await bEt(e,{fetchIssueBody:t.fetchIssueBody,defaultBranch:t.configTrunk});return U3(n.branch)?n:{branch:U3(t.configTrunk)?t.configTrunk.trim():U1,source:"trunk"}}async function RE(e,t){return(await Gke(e,t)).branch}dr();hc();jk();c3();Gk();ZA();var Tvr="refs/heads/red-trunk";async function SEt(e,t){let{repo:r,remote:n,branch:o,stillBehind:i,inSync:s}=t,a=`${n}/${o}`;return s?{ok:!0,action:"in-sync"}:i?{ok:(await e(["git","-C",r,"merge","--ff-only",a])).code===0,action:"fast-forward"}:(await e(["git","-C",r,"rebase",a])).code!==0?(await e(["git","-C",r,"rebase","--abort"]),{ok:!1,action:"rebase"}):{ok:!0,action:"rebase"}}async function wEt(e,t){let{repo:r,remote:n,base:o,branch:i}=t,s=t.maxPushRetries??2,a=Math.max(0,t.maxAgentResolveAttempts??2),c=`${n}/${o}`,u=t.squashAheadThreshold??1,l=async()=>{let p=await e(["git","-C",r,"merge-base",c,"HEAD"]),m=p.stdout.trim();if(p.code!==0||m.length===0)return;let g=await e(["git","-C",r,"rev-list","--count",`${m}..HEAD`]),A=Number.parseInt(g.stdout.trim(),10);if(g.code!==0||!Number.isFinite(A)||A<=u)return;let y=await e(["git","-C",r,"log","--reverse","--format=%s",`${m}..HEAD`]),b=y.code===0?y.stdout.trim().split(`
|
|
590
|
+
`).slice(0,50).map(v=>`- ${v}`).join(`
|
|
591
|
+
`):"";if((await e(["git","-C",r,"reset","--soft",m])).code!==0)return;let k=`land: squash ${A} attempt commits from ${i}${b?`
|
|
592
|
+
|
|
593
|
+
${b}`:""}`;(await e(["git","-C",r,"commit","-m",k,"--quiet"])).code!==0&&await e(["git","-C",r,"reset","--soft","HEAD@{1}"])},d=async()=>{if((await e(["git","-C",r,"fetch",n,o,"--quiet"])).code!==0)return{ok:!1,reason:"fetch-failed"};if((await e(["git","-C",r,"merge-base","--is-ancestor",c,"HEAD"])).code===0)return{ok:!0,alreadyIntegrated:!0};if(await l(),(await e(["git","-C",r,"rebase",c])).code!==0){if(t.resolveMechanical&&await t.resolveMechanical(r))return{ok:!0};for(let A=0;A<a;A++)if(t.resolveAgent&&await t.resolveAgent(r))return{ok:!0};return await e(["git","-C",r,"rebase","--abort"]),{ok:!1,reason:"conflict"}}return{ok:!0}},f=await d();if(!f.ok)return f;if(f.alreadyIntegrated)return{ok:!0};for(let p=0;p<=s;p++){if((await e(["git","-C",r,"push",n,`HEAD:refs/heads/${i}`,"--force-with-lease"])).code===0)return{ok:!0};if(p<s){let g=await d();if(!g.ok)return g}}return{ok:!1,reason:"push-rejected"}}async function CEt(e,t){let{repo:r,remote:n,branch:o,target:i,n:s,title:a,preMergeSha:c}=t,u=t.mergeTitle??`merge: #${s} ${a}`;return(await e(["git","-C",r,"merge","--no-ff","--no-verify",o,"-m",u])).code!==0?{ok:!1,rolledBack:!1}:(await e(["git","-C",r,"push",n,`HEAD:refs/heads/${i}`])).code!==0?(await e(["git","-C",r,"reset","--hard",c]),{ok:!1,rolledBack:!0}):{ok:!0,rolledBack:!1}}function Bvr(e){let t=e.trim();if(t==="")return[];try{let r=JSON.parse(t);return Array.isArray(r)?r.flatMap(n=>{if(typeof n!="object"||n===null)return[];let o=n.name,i=n.state;return typeof o!="string"?[]:[{name:o,state:typeof i=="string"?i:""}]}):[]}catch{return[]}}function Dvr(e){let t=e.trim().toUpperCase();return t!==""&&t!=="PENDING"}async function Ovr(e,t,r,n){let o=n.maxPolls??30,i=n.intervalMs??1e4,s=n.check.trim().toLowerCase(),a=!1;for(let c=0;c<o;c++){let u=await e(["gh","-R",t,"pr","checks",String(r),"--json","name,state"]),l=Bvr(u.stdout).find(d=>d.name.toLowerCase().includes(s));if(l!==void 0&&(a=!0,Dvr(l.state)))return"concluded";c+1<o&&await n.sleep(i)}return a?"timeout":"absent"}var rI=e=>typeof e=="string"?e.trim().toUpperCase():"";function Pvr(e){let t=rI(e.conclusion),r=rI(e.state);return["FAILURE","TIMED_OUT","CANCELLED","ACTION_REQUIRED","STARTUP_FAILURE","STALE"].includes(t)?!0:["FAILURE","ERROR"].includes(r)}function Nvr(e){let t=rI(e.status),r=rI(e.state),n=rI(e.conclusion);return!!(t!==""&&t!=="COMPLETED"||["PENDING","EXPECTED"].includes(r)||t==="COMPLETED"&&n==="")}function Fvr(e){let t=e.trim();if(t==="")return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1};try{let r=JSON.parse(t);if(typeof r!="object"||r===null)return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1};let n=r.mergeStateStatus,o=r.mergeable,i=r.statusCheckRollup,s=Array.isArray(i)?i.filter(a=>typeof a=="object"&&a!==null):[];return{mergeStateStatus:typeof n=="string"?n:"",mergeable:typeof o=="string"?o:"",anyFailed:s.some(Pvr),anyPending:s.some(Nvr)}}catch{return{mergeStateStatus:"",mergeable:"",anyFailed:!1,anyPending:!1}}}function Mvr(e){let t=rI(e.mergeStateStatus),r=rI(e.mergeable);return r==="CONFLICTING"?"conflict":r==="UNKNOWN"?"pending":t==="DIRTY"?"conflict":e.anyFailed?"ci-failed":t==="BEHIND"?"pending":t==="CLEAN"?"merge":e.anyPending?"pending":t==="BLOCKED"||t==="UNSTABLE"||t==="HAS_HOOKS"?"merge":"pending"}async function Qvr(e,t,r,n){let o=n.maxPolls??60,i=n.intervalMs??1e4;for(let s=0;s<o;s++){let a=await e(["gh","-R",t,"pr","view",String(r),"--json","mergeStateStatus,mergeable,statusCheckRollup"]),c=Mvr(Fvr(a.stdout));if(c!=="pending")return c;s+1<o&&await n.sleep(i)}return"pending"}var Lvr="Automated AFK landing for #";async function H3(e,t){let r=t.mirrorRef??Tvr;if((await e(["git","-C",t.gitRepo,"fetch","--quiet",t.remote,t.target])).code!==0)return{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: fetch (${t.remote}/${t.target} unavailable)`};let o=await e(["git","-C",t.gitRepo,"rev-parse","--verify","--quiet",`${t.remote}/${t.target}`]),i=o.stdout.trim();return o.code!==0||i===""?{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: resolve (${t.remote}/${t.target} unavailable)`}:(await e(["git","-C",t.gitRepo,"update-ref",r,i])).code!==0?{action:"noop",mirrorRef:r,target:t.target,remote:t.remote,evidence:`condition failed: update-ref (${r} -> ${t.remote}/${t.target})`}:{action:"promoted",mirrorRef:r,target:t.target,remote:t.remote,evidence:`promoted ${r} to ${t.remote}/${t.target}`}}async function qke(e,t){let{gitRepo:r,remote:n,target:o}=t,i=await e(["git","-C",r,"symbolic-ref","--short","HEAD"]),s=i.stdout.trim();if(i.code!==0)return{guard:"refused",target:o,remote:n,failed:"head-unresolved",failedCondition:"on-trunk",evidence:`condition failed: on-trunk (could not resolve current branch; expected=${o})`};if(s!==o)return{guard:"refused",target:o,remote:n,currentBranch:s,failed:"not-on-trunk",failedCondition:"on-trunk",evidence:`condition failed: on-trunk (current=${s||"unknown"} expected=${o})`};let a=await e(["git","-C",r,"status","--porcelain"]);if(a.code!==0)return{guard:"refused",target:o,remote:n,currentBranch:s,failed:"status-unreadable",failedCondition:"clean-tree",evidence:"condition failed: clean-tree (could not read git status)"};let c=a.stdout.trim();return c!==""?{guard:"refused",target:o,remote:n,currentBranch:s,failed:"dirty-tree",failedCondition:"clean-tree",evidence:`condition failed: clean-tree (${c.split(`
|
|
590
594
|
`).length} dirty path(s))`}:(await e(["git","-C",r,"fetch","--quiet",n,o])).code!==0?{guard:"refused",target:o,remote:n,currentBranch:s,failed:"fetch-failed",failedCondition:"fetch",evidence:`condition failed: fetch (${n}/${o} unavailable)`}:(await e(["git","-C",r,"merge-base","--is-ancestor",o,`${n}/${o}`])).code!==0?{guard:"refused",target:o,remote:n,currentBranch:s,failed:"not-ancestor",failedCondition:"ancestor",evidence:`condition failed: ancestor (${o} is not an ancestor of ${n}/${o})`}:{guard:"passed",target:o,remote:n,currentBranch:s,evidence:`guard passed: on-trunk clean-tree ancestor (${o} -> ${n}/${o})`}}async function W3(e,t){let r=await qke(e,t);return r.guard!=="passed"?{...r,action:"noop"}:(await e(["git","-C",t.gitRepo,"merge","--ff-only",`${t.remote}/${t.target}`])).code!==0?{...r,guard:"refused",action:"noop",failed:"merge-failed",failedCondition:"merge",evidence:`condition failed: merge (ff-only merge of ${t.remote}/${t.target} failed)`}:{...r,action:"fast-forward",evidence:`fast-forwarded ${t.target} to ${t.remote}/${t.target}`}}async function kEt(e,t){let{repo:r,gitRepo:n,remote:o,branch:i,target:s,n:a,title:c,mergeTitle:u,worktree:l,waitForReview:d,ciAwait:f,onPrResolved:p,mergeQueue:m}=t;if(l&&(await e(["git","-C",l,"push",o,`HEAD:refs/heads/${i}`,"--force-with-lease"])).code!==0)return{ok:!1,reason:"push-failed"};let g=await Vke(e,{repo:r,branch:i,target:s,n:a,title:c,mergeTitle:u});if(g===void 0)return{ok:!1,reason:"no-pr"};if(p)try{if(await p(g)==="abort")return{ok:!1,reason:"pr-resolved-abort",prNumber:g}}catch{}if(d&&await Ovr(e,r,g,d),f){let k=await Qvr(e,r,g,f);if(k==="conflict")return{ok:!1,prNumber:g,reason:"conflict"};if(k==="ci-failed")return{ok:!1,prNumber:g,reason:"ci-failed"};if(k==="pending")return{ok:!1,prNumber:g,reason:"ci-pending"}}let A=["gh","-R",r,"pr","merge",String(g),"--merge"];if(m&&A.push("--auto"),u&&A.push("--subject",u),(await e(A)).code!==0)return{ok:!1,prNumber:g,reason:"merge-failed"};if(m)return{ok:!0,prNumber:g};let b=await e(["gh","-R",r,"pr","view",String(g),"--json","mergeCommit","--jq",".mergeCommit.oid"]),S=b.code===0?b.stdout.trim():"";return await H3(e,{gitRepo:n,remote:o,target:s}),{ok:!0,prNumber:g,...S?{mergeSha:S}:{}}}async function Vke(e,t){let{repo:r,branch:n,target:o,n:i,title:s}=t,a=t.mergeTitle??`merge: #${i} ${s}`,c=await EEt(e,r,n,o);if(c===void 0){if((await e(["gh","-R",r,"pr","create","--base",o,"--head",n,"--title",pn(a),"--body",pn(`${Lvr}${i}. Per-attempt history lives in the issue Envelopes, the local ledgers, and pushed worker-branch commits.
|
|
591
595
|
|
|
592
596
|
Closes #${i}`)])).code!==0)return;c=await EEt(e,r,n,o)}return c}async function IEt(e,t){let{repo:r,branch:n,target:o,n:i,title:s,reviewLabel:a}=t,c=await Vke(e,{repo:r,branch:n,target:o,n:i,title:s});return c===void 0?{ok:!1}:(await e(["gh","-R",r,"pr","edit",String(c),"--add-label",a])).code!==0?{ok:!1,prNumber:c}:{ok:!0,prNumber:c}}async function vEt(e,t){let r=await Vke(e,t);return r===void 0?{ok:!1}:{ok:!0,prNumber:r}}function $vr(e,t,r){let{branch:n,n:o,title:i,target:s}=e,a=r.split(`
|
|
@@ -718,7 +722,7 @@ ${r.body}
|
|
|
718
722
|
`);function APr(e){if(e==="codex")return"codex";if(e==="claude"||e==="claude-minimax")return"claude"}function pCt(e,t){let r=APr(t);return r?`${e}
|
|
719
723
|
|
|
720
724
|
${c$(void 0,{runner:r})}`:e}function n0e(e){if(e.runMode==="scout")return hPr;if(!e.structuredOutput)return pCt(fCt,e.runner);let t="</exit-protocol>";return pCt(fCt.replace(t,`${gPr}
|
|
721
|
-
${t}`),e.runner)}var yPr=/^afk\/[^/]+\/([0-9]+)-[a-z0-9-]+$/;function xPr(e){let t=yPr.exec(e);return t?Number(t[1]):null}function hCt(e,t){let r=e.filter(n=>xPr(n.branch)===t);return r.length===0?null:r.reduce((n,o)=>{let i=n.commitS??-1/0;return(o.commitS??-1/0)>i?o:n})}function gCt(e){if(!e)return;let t="prev-failure-reason:",r=e.indexOf(t);if(r!==-1)return e.slice(r+t.length).trim()}var bPr=new Set(["feedback-failed","no-sentinel","stalled","blocked","base-stale","merge-conflict","runner-transient","exhausted","signal-killed"]);function ACt(e){if(!e)return!1;let t=(e.trim().split(/\s+/)[0]??"").replace(/:$/,"");return t.length>0&&!bPr.has(t)}function yCt(e){return/\brestart\b|\brebuild\b/i.test(e)}function xCt(e,t){return t?[`Branch \`${e}\` was pushed in a prior attempt and its gate already passed
|
|
725
|
+
${t}`),e.runner)}var yPr=/^afk\/[^/]+\/([0-9]+)-[a-z0-9-]+$/;function xPr(e){let t=yPr.exec(e);return t?Number(t[1]):null}function hCt(e,t){let r=e.filter(n=>xPr(n.branch)===t);return r.length===0?null:r.reduce((n,o)=>{let i=n.commitS??-1/0;return(o.commitS??-1/0)>i?o:n})}function gCt(e){if(!e)return;let t="prev-failure-reason:",r=e.indexOf(t);if(r!==-1)return e.slice(r+t.length).trim()}var bPr=new Set(["feedback-failed","no-sentinel","stalled","blocked","base-stale","merge-conflict","runner-transient","exhausted","signal-killed"]);function ACt(e){if(!e)return!1;let t=(e.trim().split(/\s+/)[0]??"").replace(/:$/,"");return t.length>0&&!bPr.has(t)}function yCt(e){return/\brestart\b|\brebuild\b/i.test(e)}function xCt(e,t,r="main"){let n=["FIRST, before anything else, sync the branch with the current base:",`run \`git fetch origin ${r}\` then \`git rebase origin/${r}\`.`,"If the rebase conflicts, resolve every conflict NOW (honor both sides),","`git rebase --continue`, and push the synced branch with","`git push --force-with-lease`. Only then proceed."].join(" ");return t?[`Branch \`${e}\` was pushed in a prior attempt and its gate already passed.`,`Checkout this branch in your worktree. ${n}`,"Re-run the merge gate, and emit `<promise>DONE</promise>` when it passes.","Do NOT re-implement \u2014 the work is already there."].join(" "):[`Branch \`${e}\` was pushed in a prior attempt.`,`Checkout this branch in your worktree. ${n}`,"Continue from where it left off \u2014",`do NOT start over. Run \`git log --oneline origin/${r}..HEAD\` to see what was`,"already committed, then satisfy the merge gate and emit `<promise>DONE</promise>`."].join(" ")}function bCt(e){return e.closed!==!0?"continue":e.ownMerge?"done":"claim-lost"}Ih();var EPr=new Set(["pnpm-lock.yaml","pnpm-workspace.yaml","package.json","turbo.json","tsconfig.json","tsconfig.base.json",".npmrc",".nvmrc"]);function ECt(e){return e.startsWith("./")?e.slice(2):e}function SPr(e){let t=ECt(e);return t.startsWith(".github/")?!0:t.includes("/")?!1:EPr.has(t)}function wPr(e,t){let r=new Map;for(let i of t.packages)for(let s of i.dependsOn){let a=r.get(s);a||(a=[],r.set(s,a)),a.push(i.dir)}let n=new Set(e),o=[...e];for(;o.length>0;){let i=o.shift();for(let s of r.get(i)??[])n.has(s)||(n.add(s),o.push(s))}return[...n].sort()}function SCt(e,t,r){for(let s of e)if(SPr(s))return{type:"whole-workspace",triggerFile:ECt(s)};let n=void 0;if(n!==void 0)return{type:"whole-workspace",triggerFile:n};let o=n$(t,e);return{type:"cone",packages:wPr(o,r),triggerPackages:o}}function wCt(e){return e.type==="whole-workspace"?["."]:e.packages}function B9(e){if(e.type==="whole-workspace")return`scope: whole-workspace (trigger: \`${e.triggerFile}\`)`;if(e.packages.length===0)return"scope: cone [] (no package found for changed files)";let t=e.packages.map(o=>`\`${o}\``).join(", "),r=e.triggerPackages.map(o=>`\`${o}\``).join(", "),n=e.triggerPackages.length<e.packages.length?` \u2014 expanded from ${r}`:"";return`scope: cone [${t}]${n}`}hn();var CPr=10*60*1e3;async function o0e(e,t){let{worktree:r,commands:n,now:o}=t,i=t.timeoutMs??CPr,s=[],a=[],c=!1;for(let u of n){let l=u.trim();if(l==="")continue;let d=`backpressure:${l}`,f=o(),p=await e({command:l,cwd:r,timeoutMs:i}),m=o()-f,g=p.code===0?"passed":"failed";g==="failed"&&(c=!0);let A=p.code===KI?`command timed out after ${i}ms`:r$(g,`${p.stdout}${p.stderr}`),y=cy({name:d,status:g,command:l,exitCode:p.code,durationMs:m,summary:A});s.push({name:d,command:l,status:g,record:y}),a.push(p9(y))}return{ok:!c,checks:s,sidecar:a}}var kPr="\u{1F916} backpressure evidence ledger \u2014 operator-declared merge-gate checks (non-blocking, observability only; the merge/park decision is unchanged).";function CCt(e){if(e.length===0)return null;let t=e.map(r=>r.status==="passed"?`\u2705 ${r.name}`:`\u274C ${r.name} \u2192 ${r.record.summary??"command failed"}`);return[kPr,"",...t].join(`
|
|
722
726
|
`)}hn();var IPr=10*60*1e3;async function kCt(e,t){let{worktree:r,commands:n,now:o}=t,i=t.timeoutMs??IPr,s=!1,a=[];for(let c of n){let u=c.trim();if(u==="")continue;let l=o(),d=await e({command:u,cwd:r,timeoutMs:i}),f=o()-l;if(d.code!==0){let g=d.code===KI?`timed out after ${i}ms`:`exited ${d.code}`;return a.push(`post_attempt_format: ${u}: ${g} (${f}ms) \u2014 aborting`),{ok:!1,committed:s,log:a}}d.committed&&(s=!0);let p=d.committed?"formatted + committed":"clean";a.push(`post_attempt_format: ${u}: ${p} (${f}ms)`)}return{ok:!0,committed:s,log:a}}jk();yE();OE();gS();dr();function ICt(e,t){return t===Td&&e==="no-mistakes"}function RCt(e,t){return/^[0-9a-f]{7,40}$/i.test(t)||t.startsWith("refs/")||t.startsWith(`${e}/`)?t:`${e}/${t}`}function _Ct(e){return{"current.base":e.base,"current.base_ref":e.baseRef,"current.base_sha":e.sha,"current.base_source":e.source,"current.base_remote_reachable":e.remoteReachable,...e.localSha?{"current.base_local_sha":e.localSha}:{},...e.localAhead!==void 0?{"current.base_local_ahead":e.localAhead}:{},...e.localBehind!==void 0?{"current.base_local_behind":e.localBehind}:{}}}function s0e(e){return[`base: ${e.base}`,`ref: ${e.baseRef}`,`sha: ${e.sha||"(unresolved)"}`,`source: ${e.source}`,`remote_reachable: ${String(e.remoteReachable)}`,e.localSha?`local_sha: ${e.localSha}`:void 0,e.localAhead!==void 0?`local_ahead: ${e.localAhead}`:void 0,e.localBehind!==void 0?`local_behind: ${e.localBehind}`:void 0].filter(t=>!!t).join(`
|
|
723
727
|
`)}function TCt(e){if(!e)return!1;let t="prev-failure-reason:",r=e.indexOf(t),n=r===-1?e:e.slice(r+t.length);return/\bmerge-conflict\b/.test(n)}function D9(e,t,r){return e.resolveTier?.(t,r)??{model:e.model,effort:e.effort}}var vCt=0,i0e=1,vPr=124;function RPr(e){let t={"current.phase":"terminal","current.outcome":e};return e==="done"?{...t,"current.last_exit_code":vCt}:e==="blocked"?{...t,"current.last_exit_code":vCt}:e==="stalled"?{...t,"current.last_exit_code":vPr,"current.failure_kind":"timeout"}:e==="no-sentinel"?{...t,"current.last_exit_code":i0e,"current.failure_kind":"crash"}:e==="signal-killed"?{...t,"current.last_exit_code":i0e,"current.failure_kind":"signal-killed"}:{...t,"current.last_exit_code":i0e}}function ly(e){return e.recoveryOrdinal&&Number.isInteger(e.recoveryOrdinal)&&e.recoveryOrdinal>0?e.recoveryOrdinal:e.attempt}function O9(e,t){e.markState?.(RPr(t)),t!=="done"&&e.recordWorkerEvent?.("worker.blocked",{outcome:t})}Ih();qL();Q6();jk();OE();dr();W6();function a0e(e){return e.filter(t=>t.startsWith("blocked:"))}function DCt(e){let t=ef.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`\\s*${t}\\s*$`),"").trim()}function OCt(e,t){let r=e.join("").trim()||(t??"").trim();return DCt(r)||"_Scout completed without output. Check the attempt log for details._"}function PCt(e,t){if(e.completionSignal===ef)return!0;let r=t.join("").trim()||(e.stdout??"").trim();return r.length>0&&DCt(r)!==r}var NCt=new Set(["stalled","crashed","merge-conflict"]);async function c0e(e,t,r,n,o){let i=M6(o);return i===null?e.gh.editLabels(t,r,n):(await e.gh.ensureLabel(i),e.gh.editLabels(t,r,[...n,i]))}async function fI(e,t,r,n,o,i){try{return ey({edge:i,fromLabels:r,removeLabels:n,addLabels:o}),await e.gh.editLabels(t,n,o)}catch(s){if(!(s instanceof oB))throw s;let a=a0e([...r]).filter(u=>!o.includes(u)),c=[...new Set([...n,...a])];try{ey({edge:i,fromLabels:r,removeLabels:c,addLabels:o})}catch(u){let l=u instanceof Error?u.message:String(u);e.appendIterLog(`warn: lifecycle transition "${i}" for #${t} still malformed after reconcile (${l}); applying best-effort park.`)}return await e.gh.editLabels(t,c,o)}}async function dy(e,t,r,n,o={}){let i=xp(r,n,e.recoveryEnv??{},{stalledRecoverable:!1}),s=o.forceDecision??i.decision;if(!o.forceDecision){let a=await BCt(e,"on_recovery_decision",JSON.stringify({issue:{number:t,title:""},decision:s,reason:r,attempt_n:n})),c=_Pr(a.context);c!==null&&(s=c)}if(s==="escalate"){i.typedLabel!==null&&await e.gh.ensureLabel(i.typedLabel);let a=i.typedLabel!==null?[it,i.typedLabel]:[it];if(await fI(e,t,[nt],[nt],a,"human-blocked"),s===i.decision&&i.escalationComment!==null&&await e.gh.comment(t,i.escalationComment),await BCt(e,"on_blocked",JSON.stringify({issue:{number:t,title:""},blocked_label:i.typedLabel??"",reason:r,attempt_n:n})),e.gh.renderDecisionCard)try{await e.gh.renderDecisionCard(t)}catch{}}else await fI(e,t,[nt],[nt],[je],"retry");return s}async function BCt(e,t,r){try{let n=ay(e.hooks.config,e.hooks.resolveOptions);return await dI(t,n[t],r,e.hooks.exec,{env:e.hooks.env??{},log:o=>e.appendIterLog(o)})}catch{return{context:r,aborted:!1}}}function _Pr(e){try{let t=JSON.parse(e);if(typeof t!="object"||t===null)return null;let r=t.decision;return r==="retry"||r==="escalate"?r:null}catch{return null}}function FCt(e){try{let t=JSON.parse(e);if(typeof t!="object"||t===null)return null;let r=t.class;return r==="infra"||r==="semantic"?r:null}catch{return null}}function MCt(e){let t=e.recoveryEnv?.RED_GO_VERIFY_RETRIES,r=t===void 0?NaN:Number(t);return Number.isInteger(r)&&r>=0?r:e.goVerifyRetries!==void 0&&Number.isInteger(e.goVerifyRetries)&&e.goVerifyRetries>=0?e.goVerifyRetries:aSt}var TPr=0;function QCt(e){let t=e.recoveryEnv?.RED_AFK_STALL_CONVERGENCE_BUDGET,r=t===void 0?NaN:Number(t);return Number.isInteger(r)&&r>=0?r:e.stallConvergenceBudget!==void 0&&Number.isInteger(e.stallConvergenceBudget)&&e.stallConvergenceBudget>=0?e.stallConvergenceBudget:TPr}function LCt(e,t){return[e.replace(/\n+$/,""),"","<afk-gate-correction>",`The ${t.gate} machine gate failed after DONE. This is bounded correction retry ${t.retry}/${t.cap}.`,"Fix the failure on the existing branch, run the relevant gate, commit only the needed changes, then emit the required terminal sentinel.","","<validation-tail>",$Ct(t.validation,80),"</validation-tail>","</afk-gate-correction>",""].join(`
|
|
724
728
|
`)}function $Ct(e,t){let r=e.split(`
|
|
@@ -732,7 +736,7 @@ ${t}`),e.runner)}var yPr=/^afk\/[^/]+\/([0-9]+)-[a-z0-9-]+$/;function xPr(e){let
|
|
|
732
736
|
`),notes:`review-requested: PR #${s.prNumber} labelled ${i}`}),await al(n,o),{outcome:"review-requested",issue:o.issue,branch:e.branch,base:e.base,locked:!1,hooksFired:e.hooksFired,preserved:!0,swept:!1}):await HB(e,"review-pr-open-failed")}async function JCt(e,t,r){let{deps:n,input:o}=e;await uI(n.remoteGit,o.repoDir,e.branch,e.branch);let i=await vEt(n.mergeExec,{repo:o.repo,branch:e.branch,target:t,n:o.issue,title:o.title});if(!i.ok)return await HB(e,"manual-landing-pr-open-failed");await P9(e,i.prNumber);let s=i.prNumber!==void 0?`PR #${i.prNumber}`:"the open PR",a=i.prNumber!==void 0?`https://github.com/${o.repo}/pull/${i.prNumber}`:void 0,c=`manual landing (\`landing:manual\`): the full pipeline ran and ${s} is open, but the merge is HELD for a human's final merge click`;await c0e(n,o.issue,[nt],[it],"manual-landing");let u=[`Inner agent completed (DONE, committed) and ${s} is open (${a??"PR URL unavailable"}).`,"Held for MANUAL LANDING (`landing:manual`, #1049): a human drives the final merge click; the inner agent was NOT re-run.",`The issue auto-closes on PR merge via \`Closes #${o.issue}\`.`],l=await LB(e,XA("manual-landing"),"manual-landing",{notes:u.join(`
|
|
733
737
|
`),validation:r.length>0?r.join(`
|
|
734
738
|
`):void 0});return await UB(e.deps,o,$B("manual-landing",{log:c})),await n.gh.comment(o.issue,`\u{1F916} /afk: ${c}. ${a?`${a} \u2014 `:""}the implementation is complete and committed. Holding for a human to land the existing PR (merge it to auto-close this issue); the inner agent was NOT re-run (#1049).`),await fy(e,"manual-landing",{durationS:n.nowEpoch()-e.startedEpoch,validationSummary:r.join(`
|
|
735
|
-
`),notes:`manual-landing: ${s} held for human merge`}),await al(n,o),{outcome:"manual-landing",issue:o.issue,branch:e.branch,base:e.base,hooksFired:e.hooksFired,envelopePosted:l,preserved:!0,swept:!1}}async function KCt(e,t){try{let r=await e.gh.listByLabel(`req:${t}`);if(r.length===0)return;let n=new Map([[t,!0]]),o=async a=>{let c=n.get(a);if(c!==void 0)return c;let u=await e.gh.issueClosed(a);return n.set(a,u),u},i=[];for(let a of r){let c=XL(a.labels),u=[];for(let l of c)u.push({n:l,closed:await o(l)});i.push({number:a.number,reqs:u})}let s=K6(t,i);for(let a of s){await e.gh.editLabels(a.number,[tl,...a.reqLabels],[je]);let c=a.refs.map(u=>Number(u.slice(1))).filter(u=>Number.isFinite(u));await e.gh.comment(a.number,await e1(c,e.gh.issueReference))}}catch(r){e.appendIterLog(`\u{1F916} /afk close-cascade for #${t} failed (best-effort; boot sweep will retry): ${String(r)}`)}}var FPr=/^spec:([0-9]+)$/,MPr=/^afk\/([A-Za-z0-9._-]+)\/([0-9]+)-/;function u0e(e){let t=`\u{1F916} /afk cascade-rebase (landing of #${e.landedIssue}):`;return e.status==="skipped-active"?`${t} \`${e.branch}\` was NOT rebased onto \`${e.mergeSha}\` \u2014 worker \`${e.workerId??"unknown"}\` is still alive on it. It will rebase onto the current base when it lands.`:e.status==="failed"?`${t} \`${e.branch}\` could NOT be rebased onto \`${e.mergeSha}\`${e.warn?`: ${e.warn}`:""}. The branch still sits on the pre-landing base; expect a rebase or conflict resolution on the next attempt.`:`${t} \`${e.branch}\` was rebased onto \`${e.mergeSha}\` and force-pushed.`}async function ZCt(e,t,r,n,o){if(e.cascadeRebase&&He(e.hooks.config,"afk.landing.cascade_rebase")!=="false")try{let i=[];for(let u of o){let l=FPr.exec(u);l&&i.push(Number(l[1]))}if(i.length===0)return;let s=new Set;for(let u of i){let l=await e.gh.listByLabel(`spec:${u}`);for(let d of l)d.number!==r&&s.add(d.number)}if(s.size===0)return;let a=async(u,l)=>{try{await e.gh.comment(u,l)}catch(d){e.appendIterLog(`\u{1F916} /afk cascade-rebase: could not comment the outcome on #${u} (best-effort): ${String(d)}`)}},c=await e.cascadeRebase.listAFKBranches(t.repoDir,t.remote);for(let u of c){let l=MPr.exec(u);if(!l)continue;let d=l[1],f=Number(l[2]);if(!s.has(f))continue;if(e.cascadeRebase.isWorkerLive(d)){e.appendIterLog(`\u{1F916} /afk cascade-rebase: skipping ${u} \u2014 worker ${d} is alive`),await a(f,u0e({status:"skipped-active",branch:u,landedIssue:r,mergeSha:n,workerId:d}));continue}let p=await e.cascadeRebase.rebaseAndPush(t.repoDir,u,n);p.ok?(e.appendIterLog(`\u{1F916} /afk cascade-rebase: rebased ${u} onto ${n}`),await a(f,u0e({status:"rebased",branch:u,landedIssue:r,mergeSha:n}))):(e.appendIterLog(`\u{1F916} /afk cascade-rebase warning: ${p.warn??`failed to rebase ${u} onto ${n}`}`),await a(f,u0e({status:"failed",branch:u,landedIssue:r,mergeSha:n,...p.warn?{warn:p.warn}:{}})))}}catch(i){e.appendIterLog(`\u{1F916} /afk cascade-rebase for #${r} failed (best-effort): ${String(i)}`)}}function QE(e,t,r,n,o){if(r){let i=[`\u{1F916} /afk claim-lost #${e}`];if(n?.winner&&i.push(`holder=${n.winner}`),n?.winnerClaimId!==void 0&&i.push(`claim_id=${n.winnerClaimId}`),n?.winnerCreatedAt){let s=Date.parse(n.winnerCreatedAt);Number.isNaN(s)||i.push(`age_s=${Math.max(0,r.nowEpoch()-Math.floor(s/1e3))}`)}i.push(`reason=${n?.reason??o??"issue no longer claimable"}`),r.appendIterLog(i.join(" "))}return{outcome:"claim-lost",issue:e,hooksFired:t,preserved:!1,swept:!1}}async function al(e,t){e.claimGh&&await e.claimGh.concede(t.issue,Sh({worker:t.claimant??t.workerId,runner:t.runner},"concede","released")),await e.claimLock.release(t.issue)}async function LE(e,t,r,n,o,i){return await dy(e,t.issue,"hook-aborted",ly(t))==="retry"&&await e.gh.comment(t.issue,`\u{1F916} /afk aborted before runner invocation (${i}). Restored \`${je}\`.`),await al(e,t),l0e({outcome:"hook-aborted",issue:t.issue,branch:r,base:n,hooksFired:o})}async function QPr(e,t,r,n,o,i,s){if(await dy(e,t.issue,"exhausted",ly(t)),await e.gh.comment(t.issue,s?`\u{1F916} /afk: both runners exhausted. Iteration preserved at \`${t.attemptDir}\`.`:`\u{1F916} /afk: runner \`${i}\` exhausted; rerun /afk when quota resets, or pass \`--fallback-runner\` to swap to the other runner on exhaustion.`),e.historyPath&&e.historyClock){let{historyAppend:a}=await Promise.resolve().then(()=>(Pk(),GSe));await a(e.historyPath,e.historyClock,"exhausted",{worker:t.workerId,issue:t.issue,runner:i,reason:s?"both-runners":i})}return await al(e,t),{outcome:"exhausted",issue:t.issue,branch:r,base:n,hooksFired:o,preserved:!0,swept:!1}}function f0e(e){return e==="exhausted"||e==="runner-transient"}async function p0e(e,t,r,n,o,i,s,a){if(s==="exhausted")return QPr(e,t,r,n,o,i,a);if(await dy(e,t.issue,"runner-transient",ly(t)),await e.gh.comment(t.issue,a?`\u{1F916} /afk: both runner invocations hit a transient runner transport/setup failure. Iteration preserved at \`${t.attemptDir}\`.`:`\u{1F916} /afk: runner \`${i}\` hit a transient transport/setup failure; bounded recovery will retry or page a human when the retry budget is exhausted.`),e.historyPath&&e.historyClock){let{historyAppend:c}=await Promise.resolve().then(()=>(Pk(),GSe));await c(e.historyPath,e.historyClock,"runner-transient",{worker:t.workerId,issue:t.issue,runner:i,reason:a?"both-runners":i})}return await al(e,t),{outcome:"runner-transient",issue:t.issue,branch:r,base:n,hooksFired:o,preserved:!0,swept:!1}}function XCt(e){let t;try{t=JSON.parse(e)}catch{return}if(typeof t!="object"||t===null)return;let r=t.env;if(typeof r!="object"||r===null||Array.isArray(r))return;let n={};for(let[o,i]of Object.entries(r))typeof i=="string"&&(n[o]=i);return Object.keys(n).length>0?n:void 0}function yc(e){let t=e.issue,r=e.title,n={};t!==void 0&&(n.issue={number:t,title:r??""});for(let[o,i]of Object.entries(e))o==="issue"||o==="title"||(n[o]=i);return JSON.stringify(n)}function WB(e,t,r,n){return JSON.stringify({issue:{number:e.issue,title:e.title},workspace:t,result:{status:r,outcome:n},attempt_n:e.attempt,iter_log:`${e.attemptDir}/afk.log`,state_file:`${e.attemptDir}/afk.state.toon`})}function ekt(e,t,r,n){return JSON.stringify({issue:{number:e.issue,title:e.title},workspace:t,error:{class:r,rc:0},attempt_n:n})}async function m0e(e,t){let{issue:r}=t,n=[],o=e.nowEpoch(),i=ay(e.hooks.config,e.hooks.resolveOptions),s=!1,a=async()=>{if(s){s=!1;try{await al(e,t)}finally{kIe(null)}return}await e.claimLock.release(r)},c,u=async(ie,Z)=>{n.push(ie);let Ee=await dI(ie,i[ie],Z,e.hooks.exec,{env:e.hooks.env??{},log:T=>e.appendIterLog(T)});if(ie==="pre_worktree"&&!Ee.aborted){let T=XCt(Ee.context);T&&(c=T)}return Ee},l=async(ie,Z)=>!(await u(ie,Z)).aborted;if(!await e.claimLock.acquire(r))return QE(r,n);let d=t.laneLabel??je,f=await e.gh.viewLabels(r);if(!f.includes(d))return await e.claimLock.release(r),QE(r,n);if(e.claimGh){let ie=await Yyt(e.claimGh,{worker:t.claimant??t.workerId,runner:t.runner},r,{isStale:e.claimStale,deathFor:e.recoveredWorkerDeathCause});if(ie.verdict==="lost")return await e.claimLock.release(r),QE(r,n,e,ie);s=!0,kIe(async()=>{s&&(s=!1,await al(e,t))})}else if(f.includes(nt))return await e.claimLock.release(r),QE(r,n,e,void 0,"running label already present");let p=Ra(t.body);if(p&&!NCt.has(p.kind))return await e.gh.ensureLabel(AE),await fI(e,r,f,[je],[it,AE],"preflight-blocked"),await e.gh.comment(r,`\u{1F916} /afk preflight stopped: active Current blocker (${p.kind}) still requires human input: ${p.next}`),await a(),{outcome:"blocked",issue:r,hooksFired:n,preserved:!1,swept:!1};let m=e.gh.repoVisibility?await e.gh.repoVisibility():void 0,g=Gd(e.hooks.config,m),A;e.gh.issueTrust&&(A=await e.gh.issueTrust(r));let y=!!(g.failClosed&&e.gh.actorTrustSignals);if((g.enabled||y)&&A){let ie=e.gh.actorTrustSignals,Ee=await PSt(g,A,ie?T=>ie(T):async()=>({}));if(!Ee.executable)return e.appendIterLog(`\u{1F916} /afk trust gate refused #${r} [${OSt(g)}]: ${Ee.reason} \u2014 not claimed; no worktree/handoff materialised.`),await a(),QE(r,n,e,void 0,Ee.reason)}let b=await jCt(e,g,A);if(b.refused){let ie=b.reason??"untrusted issue author requires container isolation";return e.appendIterLog(`\u{1F916} /afk sandbox policy refused #${r}: ${ie}.`),GCt(e,t,n,ie)}!b.authorTrusted&&b.sandboxMode!==(e.sandboxMode??"none")&&e.appendIterLog(`\u{1F916} /afk sandbox policy: untrusted issue author forced ${b.sandboxMode} isolation for #${r}.`);let S=[je,...a0e(f)];if(!await fI(e,r,f,S,[nt],"claim")&&!e.claimGh)return await a(),QE(r,n);e.recordWorkerEvent?.("worker.claimed",{title:t.title});let C=A9(t.title),v=DIe("afk",t.workerId,r,C);if(v===null)return await fI(e,r,[nt],[nt],[je],"retry"),await a(),QE(r,n);let R=await RE(t.baseInput,e.lookups.base),D=(e.lookups.base.configTrunk??"").trim()||"main",N=e.nowIso();if(await e.fs.ensureAttemptDir(t.attemptDir),await e.gh.comment(r,`\u{1F916} /afk started at \`${N}\` on runner \`${t.runner}\` (worker \`${t.workerId}\`). branch: \`${v}\``),!await l("pre_worktree",yc({issue:r,title:t.title,target:v,branch:v})))return await LE(e,t,v,R,n,"pre_worktree");let H=await e.lookups.comments(r),B=await e.lookups.issueUrl(r),Q=await e.lookups.priorAttemptContext(r),L=await e.lookups.discoverBranches?.()??[],_=r0e(H),O=yCt(_)?null:hCt(L,r),M=gCt(Q),W=O!==null&&ACt(M),ae=O!==null?xCt(O.branch,W):void 0,fe=LSt(r,e.outputShaping??{terseSteering:!1}),pe=mCt({issue:r,title:t.title,body:t.body,runner:t.runner,started:N,attempt:t.attempt,url:B,comments:H,priorAttemptContext:Q,specRef:t.specRef,mergeGateCommands:e.backpressureCommands??[],outputShaping:fe,resumeFromBranch:ae});e.markState?.({"current.output_shaping_enabled":fe.enabled,"current.output_shaping_variant":fe.variant});let Qe=`${t.attemptDir}/handoff.md`;await e.fs.writeHandoff(Qe,pe),e.appendIterLog(dwt(r,N)),e.recordWorkerEvent?.("worker.steered",{handoff:Qe,output_shaping:fe.variant});let Fe=await e.classifyIssue?.(USt({issue:r,title:t.title,body:t.body,labels:f})).catch(()=>{})??"think";if(!await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:t.runner,attempt_n:t.attempt})))return await LE(e,t,v,R,n,"pre_attempt");let Xe;if(e.git.resolveFreshBase?Xe=await e.git.resolveFreshBase({base:R,remote:t.remote}):(e.git.fetchBase&&await e.git.fetchBase(R),Xe={ok:!0,base:R,baseRef:RCt(t.remote,R),sha:"",source:"remote",remoteReachable:!0}),e.markState?.(_Ct(Xe)),!Xe.ok){let ie={deps:e,input:t,branch:v,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:o9(f),modelTier:Fe,model:e.model,effort:e.effort,resolvedBase:Xe,noBranchLink:!0},Z=Xe.message??"could not refresh fleet trunk mirror; remote unreachable or ref missing.";return await Ph(ie,"runner-transient","runner-transient",{notes:Z,log:Z})}let qe=Xe.baseRef;O||await e.git.prepareFreshWorkerBranch?.({branch:v,baseRef:qe,force:TCt(Q)});let Gt=wc(t.runner),$=t.attempt,xe=Fe,st=o9(f),Tr=!1,xt=v,En={...t,runner:Gt,attempt:$},Me={deps:e,input:En,branch:xt,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:st,modelTier:xe,model:e.model,effort:e.effort,resolvedBase:Xe},Xt=[],$n,Oo=["."],io,bo=pe,Ta=0,GE=0,my,qE,au=[],SI=t.runMode==="scout"?ie=>{ie.type==="text"&&au.push(ie.message),e.recordAgentEvent?.(ie)}:e.recordAgentEvent,hy=MCt(e),gy=async(ie,Z)=>t.laneLabel!==Td||Ta>=hy?!1:(Ta+=1,$+=1,bo=UCt(pe,{gate:ie,validation:Z,retry:Ta,cap:hy}),e.appendIterLog(`\u{1F916} /go: ${ie} machine gate failed after DONE; correction retry ${Ta}/${hy}.`),await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$}))),bc=0,x=QCt(e),J=async(ie,Z)=>t.laneLabel===Td||Tr||bc>=x?!1:(bc+=1,$+=1,bo=LCt(pe,{gate:ie,validation:Z,retry:bc,cap:x}),e.appendIterLog(`\u{1F916} /afk: ${ie} machine gate failed after DONE; correction retry ${bc}/${x}.`),await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$}))),ue=W;for(;;){let ie=D9(e,Gt,xe),Z;if(ue){ue=!1;let et=O.branch;e.appendIterLog(`\u{1F916} /afk #${r}: gate-green fast path \u2014 re-validating \`${et}\`, agent skipped.`),Z={outcome:"done",branch:et,commits:[],stdout:""}}else{let et={runner:Gt,model:ie.model,effort:ie.effort,handoffPath:Qe,handoffContent:bo,systemPrompt:n0e({runMode:t.runMode,structuredOutput:XE(wc(Gt)),runner:Gt}),branch:v,base:qe,cwd:t.attemptDir,logPath:`${t.attemptDir}/afk.log`,onAgentEvent:SI,onHeartbeat:Sn=>{let Ec=e.heartbeatVitals?.();l("on_heartbeat",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$,...Ec?{vitals:Ec}:{}})),e.emitHeartbeat?.({...Sn,base:R})},remote:t.remote,continuousPush:t.runMode!=="scout",goalProbe:()=>e.gh.issueClosed(r),env:c,sandboxMode:b.sandboxMode},Ar=e.notesLoop??{enabled:!1,maxIterations:1,innerMaxIterations:0,tokenBudget:0,wallClockS:0};if(Z=(await MSt({config:Ar,baseHandoff:bo,runOnce:({handoff:Sn})=>e.runAgent({...et,handoffContent:Sn,...Ar.enabled&&Ar.innerMaxIterations>0?{maxIterations:Ar.innerMaxIterations}:{}}),persistNotes:Sn=>e.writeNotes?.(FSt(t.attemptDir),Sn),now:()=>e.nowEpoch()*1e3,tokensSpent:()=>{let Sn=e.heartbeatVitals?.();return Sn?(Sn.input_tokens??0)+(Sn.output_tokens??0):0},log:Sn=>e.appendIterLog(Sn)})).run,f0e(Z.outcome)){if(!e.fallbackRunner)return await p0e(e,t,v,R,n,Gt,Z.outcome,!1);await l("post_attempt",WB({...t,attempt:$},v,"fail",Z.outcome));let Sn=Gt==="claude"?"codex":"claude";if(Gt=Sn,$+=1,!await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$})))return await LE(e,t,v,R,n,"pre_attempt");let Ec=D9(e,Sn,xe);if(Z=await e.runAgent({runner:Sn,model:Ec.model,effort:Ec.effort,handoffPath:Qe,handoffContent:bo,systemPrompt:n0e({runMode:t.runMode,structuredOutput:XE(wc(Sn)),runner:Sn}),branch:v,base:R,cwd:t.attemptDir,logPath:`${t.attemptDir}/afk.log`,onAgentEvent:SI,remote:t.remote,continuousPush:t.runMode!=="scout",goalProbe:()=>e.gh.issueClosed(r),env:c,sandboxMode:b.sandboxMode}),f0e(Z.outcome))return await l("post_attempt",WB({...t,attempt:$},v,"fail",Z.outcome)),await p0e(e,t,v,R,n,Gt,Z.outcome,!0)}}xt=Z.branch||v,En={...t,runner:Gt,attempt:$},Me={deps:e,input:En,branch:xt,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:st,modelTier:xe,model:ie.model,effort:ie.effort},t.runMode==="scout"&&Z.outcome==="no-sentinel"&&PCt(Z,au)&&(e.appendIterLog("\u{1F916} /scout: AgentOutput was missing, but the captured agent stream ended with DONE \u2014 posting the recovered scout report."),Z={...Z,outcome:"done",completionSignal:Z.completionSignal??ef});let Ee=!1;if(Z.outcome==="no-sentinel"){if(!(t.runMode!=="scout"&&(await e.lookups.changedFiles(xt,qe)).length>0&&(!e.lookups.branchPresent||await e.lookups.branchPresent(xt))))return await l("on_attempt_error",ekt(En,xt,"no-sentinel",En.attempt)),await Ph(Me,"no-sentinel","no-sentinel",{notes:"_(no Notes appended; inner agent exited without a sentinel and the branch carries no work)_",log:Z.stdout&&Z.stdout.split(`
|
|
739
|
+
`),notes:`manual-landing: ${s} held for human merge`}),await al(n,o),{outcome:"manual-landing",issue:o.issue,branch:e.branch,base:e.base,hooksFired:e.hooksFired,envelopePosted:l,preserved:!0,swept:!1}}async function KCt(e,t){try{let r=await e.gh.listByLabel(`req:${t}`);if(r.length===0)return;let n=new Map([[t,!0]]),o=async a=>{let c=n.get(a);if(c!==void 0)return c;let u=await e.gh.issueClosed(a);return n.set(a,u),u},i=[];for(let a of r){let c=XL(a.labels),u=[];for(let l of c)u.push({n:l,closed:await o(l)});i.push({number:a.number,reqs:u})}let s=K6(t,i);for(let a of s){await e.gh.editLabels(a.number,[tl,...a.reqLabels],[je]);let c=a.refs.map(u=>Number(u.slice(1))).filter(u=>Number.isFinite(u));await e.gh.comment(a.number,await e1(c,e.gh.issueReference))}}catch(r){e.appendIterLog(`\u{1F916} /afk close-cascade for #${t} failed (best-effort; boot sweep will retry): ${String(r)}`)}}var FPr=/^spec:([0-9]+)$/,MPr=/^afk\/([A-Za-z0-9._-]+)\/([0-9]+)-/;function u0e(e){let t=`\u{1F916} /afk cascade-rebase (landing of #${e.landedIssue}):`;return e.status==="skipped-active"?`${t} \`${e.branch}\` was NOT rebased onto \`${e.mergeSha}\` \u2014 worker \`${e.workerId??"unknown"}\` is still alive on it. It will rebase onto the current base when it lands.`:e.status==="failed"?`${t} \`${e.branch}\` could NOT be rebased onto \`${e.mergeSha}\`${e.warn?`: ${e.warn}`:""}. The branch still sits on the pre-landing base; expect a rebase or conflict resolution on the next attempt.`:`${t} \`${e.branch}\` was rebased onto \`${e.mergeSha}\` and force-pushed.`}async function ZCt(e,t,r,n,o){if(e.cascadeRebase&&He(e.hooks.config,"afk.landing.cascade_rebase")!=="false")try{let i=[];for(let u of o){let l=FPr.exec(u);l&&i.push(Number(l[1]))}if(i.length===0)return;let s=new Set;for(let u of i){let l=await e.gh.listByLabel(`spec:${u}`);for(let d of l)d.number!==r&&s.add(d.number)}if(s.size===0)return;let a=async(u,l)=>{try{await e.gh.comment(u,l)}catch(d){e.appendIterLog(`\u{1F916} /afk cascade-rebase: could not comment the outcome on #${u} (best-effort): ${String(d)}`)}},c=await e.cascadeRebase.listAFKBranches(t.repoDir,t.remote);for(let u of c){let l=MPr.exec(u);if(!l)continue;let d=l[1],f=Number(l[2]);if(!s.has(f))continue;if(e.cascadeRebase.isWorkerLive(d)){e.appendIterLog(`\u{1F916} /afk cascade-rebase: skipping ${u} \u2014 worker ${d} is alive`),await a(f,u0e({status:"skipped-active",branch:u,landedIssue:r,mergeSha:n,workerId:d}));continue}let p=await e.cascadeRebase.rebaseAndPush(t.repoDir,u,n);p.ok?(e.appendIterLog(`\u{1F916} /afk cascade-rebase: rebased ${u} onto ${n}`),await a(f,u0e({status:"rebased",branch:u,landedIssue:r,mergeSha:n}))):(e.appendIterLog(`\u{1F916} /afk cascade-rebase warning: ${p.warn??`failed to rebase ${u} onto ${n}`}`),await a(f,u0e({status:"failed",branch:u,landedIssue:r,mergeSha:n,...p.warn?{warn:p.warn}:{}})))}}catch(i){e.appendIterLog(`\u{1F916} /afk cascade-rebase for #${r} failed (best-effort): ${String(i)}`)}}function QE(e,t,r,n,o){if(r){let i=[`\u{1F916} /afk claim-lost #${e}`];if(n?.winner&&i.push(`holder=${n.winner}`),n?.winnerClaimId!==void 0&&i.push(`claim_id=${n.winnerClaimId}`),n?.winnerCreatedAt){let s=Date.parse(n.winnerCreatedAt);Number.isNaN(s)||i.push(`age_s=${Math.max(0,r.nowEpoch()-Math.floor(s/1e3))}`)}i.push(`reason=${n?.reason??o??"issue no longer claimable"}`),r.appendIterLog(i.join(" "))}return{outcome:"claim-lost",issue:e,hooksFired:t,preserved:!1,swept:!1}}async function al(e,t){e.claimGh&&await e.claimGh.concede(t.issue,Sh({worker:t.claimant??t.workerId,runner:t.runner},"concede","released")),await e.claimLock.release(t.issue)}async function LE(e,t,r,n,o,i){return await dy(e,t.issue,"hook-aborted",ly(t))==="retry"&&await e.gh.comment(t.issue,`\u{1F916} /afk aborted before runner invocation (${i}). Restored \`${je}\`.`),await al(e,t),l0e({outcome:"hook-aborted",issue:t.issue,branch:r,base:n,hooksFired:o})}async function QPr(e,t,r,n,o,i,s){if(await dy(e,t.issue,"exhausted",ly(t)),await e.gh.comment(t.issue,s?`\u{1F916} /afk: both runners exhausted. Iteration preserved at \`${t.attemptDir}\`.`:`\u{1F916} /afk: runner \`${i}\` exhausted; rerun /afk when quota resets, or pass \`--fallback-runner\` to swap to the other runner on exhaustion.`),e.historyPath&&e.historyClock){let{historyAppend:a}=await Promise.resolve().then(()=>(Pk(),GSe));await a(e.historyPath,e.historyClock,"exhausted",{worker:t.workerId,issue:t.issue,runner:i,reason:s?"both-runners":i})}return await al(e,t),{outcome:"exhausted",issue:t.issue,branch:r,base:n,hooksFired:o,preserved:!0,swept:!1}}function f0e(e){return e==="exhausted"||e==="runner-transient"}async function p0e(e,t,r,n,o,i,s,a){if(s==="exhausted")return QPr(e,t,r,n,o,i,a);if(await dy(e,t.issue,"runner-transient",ly(t)),await e.gh.comment(t.issue,a?`\u{1F916} /afk: both runner invocations hit a transient runner transport/setup failure. Iteration preserved at \`${t.attemptDir}\`.`:`\u{1F916} /afk: runner \`${i}\` hit a transient transport/setup failure; bounded recovery will retry or page a human when the retry budget is exhausted.`),e.historyPath&&e.historyClock){let{historyAppend:c}=await Promise.resolve().then(()=>(Pk(),GSe));await c(e.historyPath,e.historyClock,"runner-transient",{worker:t.workerId,issue:t.issue,runner:i,reason:a?"both-runners":i})}return await al(e,t),{outcome:"runner-transient",issue:t.issue,branch:r,base:n,hooksFired:o,preserved:!0,swept:!1}}function XCt(e){let t;try{t=JSON.parse(e)}catch{return}if(typeof t!="object"||t===null)return;let r=t.env;if(typeof r!="object"||r===null||Array.isArray(r))return;let n={};for(let[o,i]of Object.entries(r))typeof i=="string"&&(n[o]=i);return Object.keys(n).length>0?n:void 0}function yc(e){let t=e.issue,r=e.title,n={};t!==void 0&&(n.issue={number:t,title:r??""});for(let[o,i]of Object.entries(e))o==="issue"||o==="title"||(n[o]=i);return JSON.stringify(n)}function WB(e,t,r,n){return JSON.stringify({issue:{number:e.issue,title:e.title},workspace:t,result:{status:r,outcome:n},attempt_n:e.attempt,iter_log:`${e.attemptDir}/afk.log`,state_file:`${e.attemptDir}/afk.state.toon`})}function ekt(e,t,r,n){return JSON.stringify({issue:{number:e.issue,title:e.title},workspace:t,error:{class:r,rc:0},attempt_n:n})}async function m0e(e,t){let{issue:r}=t,n=[],o=e.nowEpoch(),i=ay(e.hooks.config,e.hooks.resolveOptions),s=!1,a=async()=>{if(s){s=!1;try{await al(e,t)}finally{kIe(null)}return}await e.claimLock.release(r)},c,u=async(ie,Z)=>{n.push(ie);let Ee=await dI(ie,i[ie],Z,e.hooks.exec,{env:e.hooks.env??{},log:T=>e.appendIterLog(T)});if(ie==="pre_worktree"&&!Ee.aborted){let T=XCt(Ee.context);T&&(c=T)}return Ee},l=async(ie,Z)=>!(await u(ie,Z)).aborted;if(!await e.claimLock.acquire(r))return QE(r,n);let d=t.laneLabel??je,f=await e.gh.viewLabels(r);if(!f.includes(d))return await e.claimLock.release(r),QE(r,n);if(e.claimGh){let ie=await Yyt(e.claimGh,{worker:t.claimant??t.workerId,runner:t.runner},r,{isStale:e.claimStale,deathFor:e.recoveredWorkerDeathCause});if(ie.verdict==="lost")return await e.claimLock.release(r),QE(r,n,e,ie);s=!0,kIe(async()=>{s&&(s=!1,await al(e,t))})}else if(f.includes(nt))return await e.claimLock.release(r),QE(r,n,e,void 0,"running label already present");let p=Ra(t.body);if(p&&!NCt.has(p.kind))return await e.gh.ensureLabel(AE),await fI(e,r,f,[je],[it,AE],"preflight-blocked"),await e.gh.comment(r,`\u{1F916} /afk preflight stopped: active Current blocker (${p.kind}) still requires human input: ${p.next}`),await a(),{outcome:"blocked",issue:r,hooksFired:n,preserved:!1,swept:!1};let m=e.gh.repoVisibility?await e.gh.repoVisibility():void 0,g=Gd(e.hooks.config,m),A;e.gh.issueTrust&&(A=await e.gh.issueTrust(r));let y=!!(g.failClosed&&e.gh.actorTrustSignals);if((g.enabled||y)&&A){let ie=e.gh.actorTrustSignals,Ee=await PSt(g,A,ie?T=>ie(T):async()=>({}));if(!Ee.executable)return e.appendIterLog(`\u{1F916} /afk trust gate refused #${r} [${OSt(g)}]: ${Ee.reason} \u2014 not claimed; no worktree/handoff materialised.`),await a(),QE(r,n,e,void 0,Ee.reason)}let b=await jCt(e,g,A);if(b.refused){let ie=b.reason??"untrusted issue author requires container isolation";return e.appendIterLog(`\u{1F916} /afk sandbox policy refused #${r}: ${ie}.`),GCt(e,t,n,ie)}!b.authorTrusted&&b.sandboxMode!==(e.sandboxMode??"none")&&e.appendIterLog(`\u{1F916} /afk sandbox policy: untrusted issue author forced ${b.sandboxMode} isolation for #${r}.`);let S=[je,...a0e(f)];if(!await fI(e,r,f,S,[nt],"claim")&&!e.claimGh)return await a(),QE(r,n);e.recordWorkerEvent?.("worker.claimed",{title:t.title});let C=A9(t.title),v=DIe("afk",t.workerId,r,C);if(v===null)return await fI(e,r,[nt],[nt],[je],"retry"),await a(),QE(r,n);let R=await RE(t.baseInput,e.lookups.base),D=(e.lookups.base.configTrunk??"").trim()||"main",N=e.nowIso();if(await e.fs.ensureAttemptDir(t.attemptDir),await e.gh.comment(r,`\u{1F916} /afk started at \`${N}\` on runner \`${t.runner}\` (worker \`${t.workerId}\`). branch: \`${v}\``),!await l("pre_worktree",yc({issue:r,title:t.title,target:v,branch:v})))return await LE(e,t,v,R,n,"pre_worktree");let H=await e.lookups.comments(r),B=await e.lookups.issueUrl(r),Q=await e.lookups.priorAttemptContext(r),L=await e.lookups.discoverBranches?.()??[],_=r0e(H),O=yCt(_)?null:hCt(L,r),M=gCt(Q),W=O!==null&&ACt(M),ae=O!==null?xCt(O.branch,W,R):void 0,fe=LSt(r,e.outputShaping??{terseSteering:!1}),pe=mCt({issue:r,title:t.title,body:t.body,runner:t.runner,started:N,attempt:t.attempt,url:B,comments:H,priorAttemptContext:Q,specRef:t.specRef,mergeGateCommands:e.backpressureCommands??[],outputShaping:fe,resumeFromBranch:ae});e.markState?.({"current.output_shaping_enabled":fe.enabled,"current.output_shaping_variant":fe.variant});let Qe=`${t.attemptDir}/handoff.md`;await e.fs.writeHandoff(Qe,pe),e.appendIterLog(dwt(r,N)),e.recordWorkerEvent?.("worker.steered",{handoff:Qe,output_shaping:fe.variant});let Fe=await e.classifyIssue?.(USt({issue:r,title:t.title,body:t.body,labels:f})).catch(()=>{})??"think";if(!await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:t.runner,attempt_n:t.attempt})))return await LE(e,t,v,R,n,"pre_attempt");let Xe;if(e.git.resolveFreshBase?Xe=await e.git.resolveFreshBase({base:R,remote:t.remote}):(e.git.fetchBase&&await e.git.fetchBase(R),Xe={ok:!0,base:R,baseRef:RCt(t.remote,R),sha:"",source:"remote",remoteReachable:!0}),e.markState?.(_Ct(Xe)),!Xe.ok){let ie={deps:e,input:t,branch:v,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:o9(f),modelTier:Fe,model:e.model,effort:e.effort,resolvedBase:Xe,noBranchLink:!0},Z=Xe.message??"could not refresh fleet trunk mirror; remote unreachable or ref missing.";return await Ph(ie,"runner-transient","runner-transient",{notes:Z,log:Z})}let qe=Xe.baseRef;O||await e.git.prepareFreshWorkerBranch?.({branch:v,baseRef:qe,force:TCt(Q)});let Gt=wc(t.runner),$=t.attempt,xe=Fe,st=o9(f),Tr=!1,xt=v,En={...t,runner:Gt,attempt:$},Me={deps:e,input:En,branch:xt,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:st,modelTier:xe,model:e.model,effort:e.effort,resolvedBase:Xe},Xt=[],$n,Oo=["."],io,bo=pe,Ta=0,GE=0,my,qE,au=[],SI=t.runMode==="scout"?ie=>{ie.type==="text"&&au.push(ie.message),e.recordAgentEvent?.(ie)}:e.recordAgentEvent,hy=MCt(e),gy=async(ie,Z)=>t.laneLabel!==Td||Ta>=hy?!1:(Ta+=1,$+=1,bo=UCt(pe,{gate:ie,validation:Z,retry:Ta,cap:hy}),e.appendIterLog(`\u{1F916} /go: ${ie} machine gate failed after DONE; correction retry ${Ta}/${hy}.`),await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$}))),bc=0,x=QCt(e),J=async(ie,Z)=>t.laneLabel===Td||Tr||bc>=x?!1:(bc+=1,$+=1,bo=LCt(pe,{gate:ie,validation:Z,retry:bc,cap:x}),e.appendIterLog(`\u{1F916} /afk: ${ie} machine gate failed after DONE; correction retry ${bc}/${x}.`),await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$}))),ue=W;for(;;){let ie=D9(e,Gt,xe),Z;if(ue){ue=!1;let et=O.branch;e.appendIterLog(`\u{1F916} /afk #${r}: gate-green fast path \u2014 re-validating \`${et}\`, agent skipped.`),Z={outcome:"done",branch:et,commits:[],stdout:""}}else{let et={runner:Gt,model:ie.model,effort:ie.effort,handoffPath:Qe,handoffContent:bo,systemPrompt:n0e({runMode:t.runMode,structuredOutput:XE(wc(Gt)),runner:Gt}),branch:v,base:qe,cwd:t.attemptDir,logPath:`${t.attemptDir}/afk.log`,onAgentEvent:SI,onHeartbeat:Sn=>{let Ec=e.heartbeatVitals?.();l("on_heartbeat",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$,...Ec?{vitals:Ec}:{}})),e.emitHeartbeat?.({...Sn,base:R})},remote:t.remote,continuousPush:t.runMode!=="scout",goalProbe:()=>e.gh.issueClosed(r),env:c,sandboxMode:b.sandboxMode},Ar=e.notesLoop??{enabled:!1,maxIterations:1,innerMaxIterations:0,tokenBudget:0,wallClockS:0};if(Z=(await MSt({config:Ar,baseHandoff:bo,runOnce:({handoff:Sn})=>e.runAgent({...et,handoffContent:Sn,...Ar.enabled&&Ar.innerMaxIterations>0?{maxIterations:Ar.innerMaxIterations}:{}}),persistNotes:Sn=>e.writeNotes?.(FSt(t.attemptDir),Sn),now:()=>e.nowEpoch()*1e3,tokensSpent:()=>{let Sn=e.heartbeatVitals?.();return Sn?(Sn.input_tokens??0)+(Sn.output_tokens??0):0},log:Sn=>e.appendIterLog(Sn)})).run,f0e(Z.outcome)){if(!e.fallbackRunner)return await p0e(e,t,v,R,n,Gt,Z.outcome,!1);await l("post_attempt",WB({...t,attempt:$},v,"fail",Z.outcome));let Sn=Gt==="claude"?"codex":"claude";if(Gt=Sn,$+=1,!await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$})))return await LE(e,t,v,R,n,"pre_attempt");let Ec=D9(e,Sn,xe);if(Z=await e.runAgent({runner:Sn,model:Ec.model,effort:Ec.effort,handoffPath:Qe,handoffContent:bo,systemPrompt:n0e({runMode:t.runMode,structuredOutput:XE(wc(Sn)),runner:Sn}),branch:v,base:R,cwd:t.attemptDir,logPath:`${t.attemptDir}/afk.log`,onAgentEvent:SI,remote:t.remote,continuousPush:t.runMode!=="scout",goalProbe:()=>e.gh.issueClosed(r),env:c,sandboxMode:b.sandboxMode}),f0e(Z.outcome))return await l("post_attempt",WB({...t,attempt:$},v,"fail",Z.outcome)),await p0e(e,t,v,R,n,Gt,Z.outcome,!0)}}xt=Z.branch||v,En={...t,runner:Gt,attempt:$},Me={deps:e,input:En,branch:xt,base:R,slug:C,hooksFired:n,startedEpoch:o,issueType:st,modelTier:xe,model:ie.model,effort:ie.effort},t.runMode==="scout"&&Z.outcome==="no-sentinel"&&PCt(Z,au)&&(e.appendIterLog("\u{1F916} /scout: AgentOutput was missing, but the captured agent stream ended with DONE \u2014 posting the recovered scout report."),Z={...Z,outcome:"done",completionSignal:Z.completionSignal??ef});let Ee=!1;if(Z.outcome==="no-sentinel"){if(!(t.runMode!=="scout"&&(await e.lookups.changedFiles(xt,qe)).length>0&&(!e.lookups.branchPresent||await e.lookups.branchPresent(xt))))return await l("on_attempt_error",ekt(En,xt,"no-sentinel",En.attempt)),await Ph(Me,"no-sentinel","no-sentinel",{notes:"_(no Notes appended; inner agent exited without a sentinel and the branch carries no work)_",log:Z.stdout&&Z.stdout.split(`
|
|
736
740
|
`).slice(-1)[0]||"(no captured stdout)"});Ee=!0,e.appendIterLog(`\u{1F916} /afk: no-sentinel exit but worker branch \`${xt}\` carries work \u2014 salvaging through the feedback gate (issue #332).`),await l("post_attempt",WB(En,xt,"success","no-sentinel"))}else if(Z.outcome==="goal-moot"){let et=e.lookups.branchMerged?await e.lookups.branchMerged(xt,R).catch(()=>!1):!1,Ar=bCt({closed:!0,ownMerge:et}),Zn=Ar==="done"?"done":"claim-lost";await l("post_attempt",WB(En,xt,Ar==="done"?"success":"fail","goal-moot")),e.appendIterLog(Ar==="done"?`\u{1F916} /afk #${r}: goal predicate \u2014 issue already CLOSED by this attempt's own merge; nothing to land (done).`:`\u{1F916} /afk #${r}: goal predicate \u2014 issue already CLOSED by another lander; attempt mooted (claim-lost).`);try{await e.gh.editLabels(r,[nt],[])}catch{}return await a(),{outcome:Zn,issue:r,branch:xt,base:R,hooksFired:n,preserved:!1,swept:!1}}else{let et=Z.outcome==="done"?"success":"fail";if(await l("post_attempt",WB(En,xt,et,Z.outcome)),Z.outcome==="blocked")return await Ph(Me,"blocked","blocked",{notes:`_(inner agent emitted BLOCKED \u2014 see iteration log at \`${t.attemptDir}\`)_`})}if(t.runMode==="scout"){let et=OCt(au,Z.stdout);return await e.gh.comment(r,`## \u{1F50D} Scout Report
|
|
737
741
|
|
|
738
742
|
${et}`),await e.gh.close(r),await a(),{outcome:"done",issue:r,hooksFired:n,preserved:!1,swept:!1}}if(e.lookups.branchPresent&&!await e.lookups.branchPresent(xt))return NE("post-agent:branch-present-failed"),e.appendIterLog(`\u{1F916} /afk: worker branch \`${xt}\` absent on host \u2014 sandcastle commits did not reach the host; escalating.`),await HB(Me,"worker branch absent \u2014 sandcastle commits did not reach the host");let T=e.postAttemptFormatCommands??[];if(e.postAttemptFormat&&T.length>0){NE("post-agent:post-attempt-format");let et=await kCt(e.postAttemptFormat,{worktree:xt,commands:T,now:e.nowEpoch});for(let Ar of et.log)e.appendIterLog(`\u{1F916} /afk: ${Ar}`);if(!et.ok)return await LE(e,t,v,R,n,"post_attempt_format")}e.markPhase?.("validating"),NE("post-agent:feedback-start");let X=await e.lookups.changedFiles(xt,qe);if(X.length===0){let et="DONE rejected: attempt branch has no diff against the merge-base; no work changed, so the completion claim was not accepted.";if(e.appendIterLog(`\u{1F916} /afk: ${et}`),await gy("feedback",et)||await J("feedback",et))continue;let Ar=bc>0&&bc>=x?` Post-DONE gate-correction budget exhausted (${x} consecutive failed cycles).`:"";return await Ph(Me,"feedback-failed","feedback",{notes:`Inner agent emitted DONE, but the attempt branch has no diff against the merge-base. The worker branch was not merged.${Ar}`,validation:et},{validationSummary:et})}io=HCt(X)?void 0:WCt(X),io&&e.appendIterLog(`\u{1F916} /afk: ${io}`);let Se=SCt(X,e.layout,e.graph??{packages:[]}),le=wCt(Se);Oo=le;let de=[];if(!await l("pre_feedback",yc({issue:r,title:t.title,workspace:v,scopes:le})))return await LE(e,t,v,R,n,"pre_feedback");let me=await BB(e.pnpm,{worktree:xt,scopes:le,layout:e.layout,now:e.nowEpoch,baselineWorktree:R,validationScope:Se,resourceBudget:e.validationResourceBudget});if(NE("post-agent:feedback-done"),de.push({stage:"feedback",ok:me.ok}),me.ok||await l("on_baseline_probe",yc({issue:r,title:t.title,workspace:v,ok:me.ok,inconclusive:me.baselineInconclusive})),await l("post_feedback",yc({issue:r,title:t.title,workspace:v,result:{status:me.ok?"pass":"fail"}})),S9(de).failedStage==="feedback"){await QB(e,t.attemptDir,me.sidecar);let et=h9(me),Ar=await u("on_feedback_classify",yc({issue:r,title:t.title,workspace:v,class:et?"infra":"semantic"})),Zn=FCt(Ar.context);if(Zn!==null&&(et=Zn==="infra"),!et&&xe==="simple"&&!Tr){if(Tr=!0,xe="complex",$+=1,e.appendIterLog(`\u{1F916} /afk: simple-tier feedback failed for #${r}; retrying once on the complex tier before terminal validation routing.`),!await l("pre_attempt",yc({issue:r,title:t.title,workspace:v,runner:Gt,attempt_n:$})))return await LE(e,t,v,R,n,"pre_attempt");continue}let Sn=et?"feedback-failed-infra":"feedback-failed",Ec;et?Ec=`Feedback validation failed for an INFRA reason (worktree/submodule/pnpm install/OOM) on branch \`${xt}\` \u2014 the recovery policy will retry up to its cap.`:Ee?Ec="Salvaged a no-sentinel branch (it carried work), but feedback validation failed \u2014 the branch was not merged.":Ec="Feedback validation failed after the inner agent emitted DONE. The worker branch was not merged.";let CI=`${me.validationScope?`${B9(me.validationScope)}
|
|
@@ -6578,7 +6578,7 @@ Usage:
|
|
|
6578
6578
|
${n} archive --candidate <json> [--root <dir>] [--archive-dir <rel>]
|
|
6579
6579
|
${n} restore <name> [--root <dir>] [--archive-dir <rel>]`}function Ux(n){return mVn(typeof n.root=="string"?n.root:process.cwd())}function hut(n){return typeof n["archive-dir"]=="string"?n["archive-dir"]:void 0}async function eK(n){let a=await xs(n);return a?a.mode!=="graph"?{ok:!1,message:`curate: skill telemetry needs graph mode (this project is "${a.mode}") \u2014 run \`${VEe}\``}:ju(a)?{ok:!0}:{ok:!1,message:`curate: skill telemetry is not enabled here \u2014 run \`${VEe}\``}:{ok:!1,message:`curate: memory is not initialized here \u2014 run \`${VEe}\``}}function bVn(){let n=GVn(uVn(import.meta.url));return n.includes("dist/curate-skill")||n.endsWith("dist/curate-skill")?put(n,"..","cli.js"):put(n,"..","cli.ts")}async function pVn(n,a){let i=["curate","skills","--json"];a!==void 0&&i.push("--stale-days",String(a));let d=bVn(),h=d.endsWith(".ts")?but(process.execPath,["--import","tsx",d,...i,"--root",n],{encoding:"utf8"}):but(process.execPath,[d,...i,"--root",n],{encoding:"utf8"}),y=h.status??1;if(y!==0)throw new Error(`memory curate skills exited ${y}`);return Gut(h.stdout??"")}function ZVn(n){return typeof n.flags["stale-days"]=="string"?Number(n.flags["stale-days"]):void 0}async function Wut(n,a){return(a.loadCuratorReport??pVn)(Ux(n.flags),ZVn(n))}async function hVn(n){let a=Ux(n.flags),i=await eK(a);return i.ok?(console.log("curate: skill telemetry is enabled \u2014 ready to curate"),0):(console.error(i.message),2)}async function WVn(n,a){let i=Ux(n.flags),d=await eK(i);if(!d.ok)return console.error(d.message),2;let u;try{u=await Wut(n,a)}catch(J){return console.error(`curate: ${J.message}`),1}let{candidates:h,byCategory:y,filtered:f}=NEe(u);return console.log(JSON.stringify({candidates:h,byCategory:y,filtered:f,totals:{totalSkills:u.totalSkills,curatableSkills:u.curatableSkills,readOnlySkills:u.readOnlySkills}},null,2)),0}async function NVn(n,a){let i=Ux(n.flags),d=await eK(i);if(!d.ok)return console.error(d.message),2;let u;try{u=await Wut(n,a)}catch(J){return console.error(`curate: ${J.message}`),1}let{byCategory:h}=NEe(u);if(YEe(h)===0)return console.error("curate: no candidates \u2014 no issue filed"),0;let y=typeof n.flags.label=="string"?n.flags.label:void 0,f=await uut({byCategory:h,totals:{totalSkills:u.totalSkills,curatableSkills:u.curatableSkills,readOnlySkills:u.readOnlySkills},generatedAt:u.generatedAt},{cwd:i,label:y});return console.log(`curate: filed background issue \u2014 ${f.output||f.title}`),0}async function YVn(n){let a=Ux(n.flags),i=await eK(a);if(!i.ok)return console.error(i.message),2;let d=n.flags.candidate;if(typeof d!="string")return console.error("curate archive: --candidate <json> is required"),2;let u;try{u=JSON.parse(d)}catch(y){return console.error(`curate archive: invalid --candidate JSON: ${y.message}`),2}let h=await out(u,{rootDir:a,archiveDir:hut(n.flags)});return h.ok?(console.log(`curate: archived "${h.receipt.name}" \u2192 ${h.receipt.archiveRoot} (${h.receipt.files.length} file(s), manifest at ${h.receipt.manifestPath})`),0):(console.error(`curate archive: refused \u2014 ${h.rejection.reason}: ${h.rejection.detail}`),3)}async function VVn(n){let a=Ux(n.flags),i=await eK(a);if(!i.ok)return console.error(i.message),2;let d=n.positional[0];if(!d)return console.error("curate restore: skill name is required"),2;let u=await dut(d,{rootDir:a,archiveDir:hut(n.flags)});return console.log(`curate: restored "${u.name}" \u2192 ${u.restoredRoot} (${u.files.length} file(s) hash-verified)`),0}async function gEe(n,a={}){switch(n.command){case"check":return hVn(n);case"list":return WVn(n,a);case"background":return NVn(n,a);case"archive":return YVn(n);case"restore":return VVn(n);case void 0:case"--help":case"-h":return console.log(Zut(a.usageCommand)),0;default:return console.error(`unknown curate subcommand: ${n.command}
|
|
6580
6580
|
|
|
6581
|
-
${Zut(a.usageCommand)}`),2}}function yEe(n){let a={app:n,version:gVn(Bx("__RED_BUILD_VERSION__",()=>"2.
|
|
6581
|
+
${Zut(a.usageCommand)}`),2}}function yEe(n){let a={app:n,version:gVn(Bx("__RED_BUILD_VERSION__",()=>"2.80.0")??"0.0.0-dev"),gitSha:Bx("__RED_BUILD_GIT_SHA__",()=>"4a1ed446d771c5769fdeef78ef501df459a8553c")??"unknown",buildTime:Bx("__RED_BUILD_TIME__",()=>"2026-07-22T10:44:22-03:00")??"unknown",bundleAsset:Bx("__RED_BUNDLE_ASSET__",()=>"memory.bundle.min.mjs")??"unknown"},i=Bx("__REDDB_SDK_VERSION__",()=>"1.23.1"),d=Bx("__REDDB_BINARY_TAG__",()=>"v1.23.1");return i&&(a.reddbSdkVersion=i),d&&(a.reddbBinaryTag=d),a}function gVn(n){return n.startsWith("v")?n.slice(1):n}function REe(n){return`${n.app} ${n.version} ${n.gitSha}`}function Bx(n,a){try{let i=a();return typeof i=="string"&&i.length>0?i:void 0}catch{return process.env[n.replace(/^__|__$/g,"")]}}async function Rut(n){let{store:a}=await ga(n);try{let i=await a.stats();console.log(`memory: ${i.nodes} node(s), ${i.edges} edge(s)`)}finally{await a.close()}}async function vut(n){let a=n.positional[0];if(a!=="status"&&a!=="status-viewer"&&a!=="maintain"&&a!=="search")throw new Error("vector needs an action \u2014 supported: memory vector status|status-viewer|maintain|search");let i=process.env.RED_MEMORY_VECTOR_PROVIDER;n.flags.local===!0&&(process.env.RED_MEMORY_VECTOR_PROVIDER="local");let{store:d}=await ga(n);try{if(a==="search"){let h=n.positional.slice(1).join(" ").trim();if(!h)throw new Error("nothing to search \u2014 pass a query: memory vector search <query>");let y=await G5(d,h,{limit:Ir(n.flags,"limit")});if(n.flags.json===!0){console.log(JSON.stringify(y,null,2));return}if(y.status==="unavailable"){let f=y.error?` \u2014 ${y.error}`:"";console.log(`memory: vector search unavailable${f}`);return}console.log(`memory: vector search ${y.hits.length}/${y.limit} hit(s) for "${h}"`);for(let f of y.hits){let J=f.source?` source=${f.source}`:"";console.log(` ${f.score.toFixed(3)} memory_nodes:${f.rid} (${f.node_type}) ${f.title}${J}`),f.excerpt&&console.log(` ${f.excerpt}`)}return}if(a==="status-viewer"){let h=Wa(n.flags),y=Vl(n.flags,"out")??Pr(h,".red/memory/vector-status-viewer.html"),f=BD(await d.vectorStatus());await hs(Ps(y),{recursive:!0}),await fi(y,f.html,"utf8"),console.log(`memory: vector status viewer written ${y}`),console.log(` status: ${f.report.overall}`),console.log(` contract: ${f.contract.consumes}`);return}let u=a==="maintain"?await d.maintainVectorProjection({strict:n.flags.strict===!0}):await d.vectorStatus();if(n.flags.json===!0){console.log(JSON.stringify(u,null,2));return}console.log(`memory: vector projection ${u.overall} \u2014 ${u.ready}/${u.total} ready`),u.stale>0&&console.log(` stale: ${u.stale}`),u.unavailable>0&&console.log(` unavailable: ${u.unavailable}`),u.failed>0&&console.log(` failed: ${u.failed}`);for(let h of u.nodes.filter(y=>y.status!=="ready")){let y=h.error?` \u2014 ${h.error}`:"";console.log(` ${h.rid} (${h.node_type}) ${h.label}: ${h.status}${y}`)}for(let h of u.docs.filter(y=>y.status!=="ready")){let y=h.error?` \u2014 ${h.error}`:"";console.log(` doc:${h.rid} ${h.path}: ${h.status}${y}`)}}finally{await d.close(),n.flags.local===!0&&(i==null?delete process.env.RED_MEMORY_VECTOR_PROVIDER:process.env.RED_MEMORY_VECTOR_PROVIDER=i)}}async function Fut(n){let{store:a}=await ga(n);try{let i=Ir(n.flags,"stale-days")??90,d=await Gy(a,{staleDays:i});if(d.stale.length===0){console.log(`memory: healthy \u2014 0 of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled)`);return}console.log(`memory: ${d.stale.length} of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled):`);for(let y of d.stale)console.log(` ${y.rid} (${y.node_type}) ${y.title} \u2014 ${y.ageDays}d idle`);if(n.flags.prune!==!0){console.log(`
|
|
6582
6582
|
Re-run with --prune to delete these (asks for confirmation first).`);return}let u=n.flags.yes===!0;if(!u){if(!process.stdin.isTTY){console.log(`
|
|
6583
6583
|
refusing to prune without confirmation \u2014 re-run with --yes in a non-interactive shell`);return}let y=Qie({input:process.stdin,output:process.stdout}),f=(await y.question(`
|
|
6584
6584
|
Delete ${d.stale.length} stale node(s)? Type "yes" to confirm: `)).trim();y.close(),u=f==="yes"}if(!u){console.log("memory: aborted \u2014 nothing deleted");return}let{pruned:h}=await UFe(a,d.stale);console.log(`memory: pruned ${h} stale node(s)`)}finally{await a.close()}}async function Xut(n){let a=Wa(n.flags),i=n.positional[0]??".red/memory/export",d=km(i)?i:xr(a,i),u=n.flags.communities===!0,h=n.flags.interop===!0,{store:y}=await ga(n);try{let f=await tQ(y,d,{communities:u,interop:h});console.log(`memory: exported ${f.nodes} node(s), ${f.edges} edge(s)`),u&&console.log(" communities: coloured via native Louvain"),console.log(` graph: ${f.htmlPath}`),console.log(` json: ${f.jsonPath}`),console.log(` audit: ${f.auditPath}`),f.interop&&(console.log(` nodes: ${f.interop.nodesJsonlPath}`),console.log(` edges: ${f.interop.edgesJsonlPath}`),console.log(` graphml:${f.interop.graphmlPath}`),console.log(` cypher: ${f.interop.cypherPath}`))}finally{await y.close()}}async function fut(n){let a=n.positional.join(" ").trim();if(!a)throw new Error("nothing to search \u2014 pass a query: memory global-search <query>");let i=typeof n.flags.limit=="string"?Number(n.flags.limit):void 0,{store:d,config:u}=await ga(n);try{let h=await jv("memory.global-search",{store:d,providerConfig:u.provider},{query:a,limit:i,cache:n.flags["no-cache"]===!0?"off":"read-only"});if(n.flags.json===!0){console.log(JSON.stringify(h,null,2));return}console.log(`memory: ${h.total_hits} global-search hit(s) for "${h.query}"`),console.log(` source: ${h.generated_from.operation_id}`),console.log(` graph hash: ${h.generated_from.graph_hash}`),console.log(` provider: ${h.generated_from.provider.status}${h.generated_from.provider.error?` (${h.generated_from.provider.error})`:""}`);for(let y of h.evidence)console.log(` ${y.community_id}: score ${y.score}, ${y.size} node(s)`),console.log(` matched: ${y.matched_terms.join(", ")}`),console.log(` top label: ${y.top_label}`),console.log(` top type: ${y.top_node_type}`),y.narrative_summary&&console.log(` summary: ${y.narrative_summary}`)}finally{await d.close()}}async function vVn(n,a){let i=Vl(n.flags,"from");if(i){let u=km(i)?i:xr(a,i),h=JSON.parse(await Sb(u,"utf8")),y=h.contract??h,f=EFe(y);if(!f.valid)throw new Error(`architecture-overview: ${u} is not a valid graph contract \u2014 ${f.errors.join("; ")}`);return y}let{store:d}=await ga(n);try{let[u,h,y]=await Promise.all([d.listNodes(),d.listEdges(),d.communities()]);return Ff({nodes:u,edges:h.map(zf),communities:y})}finally{await d.close()}}async function wut(n){let a=Wa(n.flags),i=await vVn(n,a),d=ufe(i);if(n.flags.json===!0){console.log(JSON.stringify(d,null,2));return}if(n.flags.stdout===!0){process.stdout.write(d.markdown);return}let u=Vl(n.flags,"out")??".red/memory/architecture-overview.md",h=km(u)?u:xr(a,u);await hs(Ps(h),{recursive:!0}),await fi(h,d.markdown,"utf8"),console.log(`memory: architecture overview written ${h}`),console.log(` contract: ${d.generated_from.contract_version}`),console.log(` ${d.totals.nodes} node(s), ${d.layers.length} layer(s), ${d.communities.length} community(ies)`)}async function h5(){if(process.stdin.isTTY)return"";let n=[];for await(let a of process.stdin)n.push(a);return Buffer.concat(n).toString("utf8")}var FVn=["SessionStart","PostToolUse","Stop","PreCompact"];async function Hut(n){let a=n.positional[0],i=n.flags.runner==="codex"?"codex":"claude";if(!a||!FVn.includes(a)){process.stdout.write("{}");return}try{let d=await h5(),u=d.trim()?JSON.parse(d):{},h=Wa(n.flags)!==process.cwd()?Wa(n.flags):typeof u.cwd=="string"?u.cwd:process.cwd(),y=await Wfe(i,a,u);try{a==="SessionStart"?await Ny(h,y.sessionId?{id:y.sessionId}:{}):await eN(h)||(y.sessionId?await Ny(h,{id:y.sessionId}):await Awe(h))}catch{}let f=await Owe(y,h);process.stdout.write(Nfe(i,a,f))}catch{process.stdout.write("{}")}}var XVn=["post-commit","post-checkout"];async function Qut(n){switch(n.positional[0]){case"refresh":return fVn(n);case"install-hooks":return HVn(n);case"uninstall-hooks":return QVn(n);default:throw new Error("vcs needs a subcommand \u2014 memory vcs refresh|install-hooks|uninstall-hooks")}}async function fVn(n){let a=Wa(n.flags),i=Vl(n.flags,"event"),d=n.flags.json===!0;if(!i||!XVn.includes(i)){d&&console.log(JSON.stringify({noop:!0,reason:"unknown vcs event"}));return}try{let u=await Mwe(a,{event:i,prevHead:Vl(n.flags,"prev"),newHead:Vl(n.flags,"new"),flag:Vl(n.flags,"flag"),export:n.flags["no-export"]!==!0});if(d){console.log(JSON.stringify(u,null,2));return}if(u.noop){console.log(`memory: ${i} \u2014 no-op (${u.reason})`);return}let h=u.refresh;console.log(`memory: ${i} refreshed ${h?.files??0} changed file(s) \u2014 ${h?.added??0} added, ${h?.updated??0} updated, ${h?.stale??0} stale`),u.exported&&console.log(` exported ${u.exported.nodes} node(s) \u2192 ${u.exported.jsonPath}`)}catch(u){let h=`error: ${u instanceof Error?u.message:String(u)}`;console.log(d?JSON.stringify({noop:!0,reason:h}):`memory: ${i} \u2014 no-op (${h})`)}}async function Eut(n){try{let{stdout:a}=await yy("git",["-C",n,"rev-parse","--git-path","hooks"],{encoding:"utf8"}),i=a.trim();return i?km(i)?i:xr(n,i):xr(n,".git/hooks")}catch{return xr(n,".git/hooks")}}function wVn(){let n=process.env.CLAUDE_PLUGIN_ROOT??process.env.CODEX_PLUGIN_ROOT,a=gut(new URL("../cli.ts",import.meta.url)),i=[n?Pr(n,"scripts","bootstrap.mjs"):void 0,Pr(Ps(Ps(a)),"scripts","bootstrap.mjs")];for(let d of i)if(d&&tK(d))return d}async function HVn(n){let a=Wa(n.flags),i=await xs(a);if(!i){console.log("memory: not initialized here \u2014 run `memory init --mode graph` before installing git hooks");return}if(i.mode!=="graph"){console.log(`memory: git hooks need graph mode \u2014 this project is "${i.mode}". Re-run \`memory init --mode graph\` first`);return}let d=await Eut(a),u=await Uwe({hooksDir:d,bootstrapPath:wVn(),force:n.flags.force===!0});if(n.flags.json===!0){console.log(JSON.stringify({hooksDir:d,...u},null,2));return}u.installed.length>0&&console.log(`memory: installed ${u.installed.join(", ")} into ${d}`);for(let h of u.backedUp)console.log(` backed up existing hook \u2192 ${h}`);for(let h of u.skipped)console.log(` skipped ${h.hook}: ${h.reason}`)}async function QVn(n){let a=Wa(n.flags),i=await Eut(a),d=await Bwe(i);if(n.flags.json===!0){console.log(JSON.stringify({hooksDir:i,...d},null,2));return}d.removed.length>0?console.log(`memory: removed ${d.removed.join(", ")} from ${i}`):console.log(`memory: no managed hooks found in ${i}`);for(let u of d.restored)console.log(` restored backed-up hook \u2192 ${u}`);for(let u of d.skipped)console.log(` ${u.reason}`)}async function _ut(n){let a=n.positional[0];if(a==="learn")return EVn(n);if(a!=="record")throw new Error("unknown attempt command \u2014 expected: memory attempt record|learn");let i=await h5();if(!i.trim())throw new Error("attempt record needs a JSON payload on stdin");let d=JSON.parse(i),{store:u}=await ga(n);try{let h=await uEe(u,d);console.log(`memory: recorded attempt ${d.repository}#${d.issueNumber}/${d.attemptNumber} (rid ${h.attemptRid})`)}finally{await u.close()}}async function EVn(n){let a=n.positional[1];if(a==="apply")return _Vn(n);if(a!=null)throw new Error("memory attempt learn supports: apply");let i=Wa(n.flags),d=n.flags.json===!0,u=n.flags["write-proposal"]===!0,{store:h}=await ga(n);try{let y=await bEe(h),f=u?await pEe(i,y):null,J=y.proposals.length===0?"no-candidates":u?"proposal-written":"proposal-ready";if(d){console.log(JSON.stringify({state:J,proposalFile:f,...y},null,2));return}console.log(`memory: attempt learning - ${J}`);for(let S of y.proposals)console.log(` [${S.kind}] ${S.title}`),console.log(` evidence: ${S.evidenceSummary}`);for(let S of y.rejected)console.log(` ${S.action}: ${S.kind} - ${S.reason}`);f&&console.log(` proposal: ${f}`),console.log(`
|
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -156,7 +156,7 @@ const timer = setInterval(() => {
|
|
|
156
156
|
}, 500);
|
|
157
157
|
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Vs(){for(let e of iE())try{process.kill(e,"SIGTERM")}catch{}}function iE(){if(process.platform==="win32")return[];let e="";try{e=Mx("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),i=Number(n[2]),o=n[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function oE(e){if(e.collection!==ue)return e;let t=await kp(e.raw_text,Tp(e.raw_bytes)),r=await kp(e.emitted_text,Tp(e.emitted_bytes)),{raw_text:n,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function kp(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=qx)try{return await Ap((async()=>({tokens:(await aE())("cl100k_base").encode(e).length,estimated:!1}))(),Vx,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function aE(){return vp??=import(Wx(cE()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await vp}function cE(){let e=Ma(Gx(import.meta.url)),r=[qs(e,"..","node_modules","js-tiktoken","dist","index.js"),qs(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Ux(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Tp(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function q(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function $a(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Ap(e,t,r){let n;try{return await Promise.race([e,new Promise((s,i)=>{n=setTimeout(()=>i(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function uE(e){try{return JSON.parse(e)}catch{return e}}function lE(e){return Op(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Op(t)&&(t.collection===re||t.collection===G||t.collection===ue||t.collection===Ne)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Op(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function dE(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
|
|
158
158
|
`);if(s<0)return;let i=r.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??mr(),ok:!1,error:a instanceof Error?a.message:String(a)};Np(e,u)}finally{e.end()}})()})}function Np(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
159
|
-
`)}catch{}}async function fE(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await wo(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await ts(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await bo(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return mE(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await pE(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function pE(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await yp(s,t).request(r,n)}function mE(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var qx,Vx,Dp,Kx,zx,Yx,Ba,Ep,vp,$p=b(()=>{"use strict";De();$n();Ie();Ke();Sp();xe();Se();qx=256*1024,Vx=500,Dp=2e3,Kx=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),zx="rsp-status-summary.json",Yx=[re,G,ue,Ne,Ur],Ba=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await Xx(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,i=[...n.records];for(let a of r)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await yo(this.opts.rootDir,async a=>{let c=er(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:q(c.command)||"unknown",source_id:q(c.id),source_collection:q(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await Qx(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof r.id=="string"&&r.id.trim()!==""?r.id:mr(),a={...await oE(r),id:o,created_at:s,expires_at:i};return await t.kv(r.collection).put(o,a),{collection:r.collection,key:o,created_at:s,expires_at:i,bytes:r.collection===re?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===re||r.accounting_recorded===!0?null:r.collection===ue?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ne?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:q(r.reason)||"unknown",wrapper_family:q(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:q(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ne,id:mr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:re,id:`mirror:${mr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:$a(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(Ur).get("index:v1"),n=typeof r=="string"?uE(r):r;return lE(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Ur).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),i=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||i.length<r.records.length)&&await this.writeIndex(t,{version:1,records:i})}};Ep=!1});Ce();function he(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=he(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function uc(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function lc(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new fi(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var fi=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return xn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Jt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function dc(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let i=e[++n]??"",o=i.indexOf("=");o<=0||(r[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:r}}function En(e,t){let r=he(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!r)return t;let n=/^(\d+)(d)?$/.exec(r);if(!n)return t;let s=Number(n[1]);return Number.isFinite(s)&&s>0?s:t}function fc(e){return e.includes("--full")}Ie();import{existsSync as gE}from"node:fs";import{fileURLToPath as hE}from"node:url";function Sc(e){let t={app:e,version:Tm(Gt("__RED_BUILD_VERSION__",()=>"2.
|
|
159
|
+
`)}catch{}}async function fE(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await wo(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await ts(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await bo(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return mE(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await pE(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function pE(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await yp(s,t).request(r,n)}function mE(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var qx,Vx,Dp,Kx,zx,Yx,Ba,Ep,vp,$p=b(()=>{"use strict";De();$n();Ie();Ke();Sp();xe();Se();qx=256*1024,Vx=500,Dp=2e3,Kx=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),zx="rsp-status-summary.json",Yx=[re,G,ue,Ne,Ur],Ba=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await Xx(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,i=[...n.records];for(let a of r)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await yo(this.opts.rootDir,async a=>{let c=er(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:q(c.command)||"unknown",source_id:q(c.id),source_collection:q(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await Qx(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof r.id=="string"&&r.id.trim()!==""?r.id:mr(),a={...await oE(r),id:o,created_at:s,expires_at:i};return await t.kv(r.collection).put(o,a),{collection:r.collection,key:o,created_at:s,expires_at:i,bytes:r.collection===re?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===re||r.accounting_recorded===!0?null:r.collection===ue?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ne?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:q(r.reason)||"unknown",wrapper_family:q(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:q(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ne,id:mr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:re,id:`mirror:${mr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:$a(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(Ur).get("index:v1"),n=typeof r=="string"?uE(r):r;return lE(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Ur).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),i=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||i.length<r.records.length)&&await this.writeIndex(t,{version:1,records:i})}};Ep=!1});Ce();function he(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=he(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function uc(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function lc(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new fi(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var fi=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return xn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Jt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function dc(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let i=e[++n]??"",o=i.indexOf("=");o<=0||(r[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:r}}function En(e,t){let r=he(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!r)return t;let n=/^(\d+)(d)?$/.exec(r);if(!n)return t;let s=Number(n[1]);return Number.isFinite(s)&&s>0?s:t}function fc(e){return e.includes("--full")}Ie();import{existsSync as gE}from"node:fs";import{fileURLToPath as hE}from"node:url";function Sc(e){let t={app:e,version:Tm(Gt("__RED_BUILD_VERSION__",()=>"2.80.0")??"0.0.0-dev"),gitSha:Gt("__RED_BUILD_GIT_SHA__",()=>"4a1ed446d771c5769fdeef78ef501df459a8553c")??"unknown",buildTime:Gt("__RED_BUILD_TIME__",()=>"2026-07-22T10:44:22-03:00")??"unknown",bundleAsset:Gt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Gt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Gt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Tm(e){return e.startsWith("v")?e.slice(1):e}function Gt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Ce();Ie();xr();import{existsSync as ob}from"node:fs";import{fileURLToPath as ab}from"node:url";Li();Ie();Mi();import{existsSync as yy}from"node:fs";import{fileURLToPath as wy}from"node:url";async function sr(e,t){let r={stats:by(e.telemetryByteBudget),telemetry:So(t)};if(!e.storeUri.startsWith("file://"))return r;let n=wy(e.storeUri);if(!yy(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Ke(),Qt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:So(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Ke(),Qt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(xe(),Gr)),a=await qt(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}function xo(e,t=So(30),r=!1){return`${j(Eo(e,t,r))}
|
|
160
160
|
`}function Eo(e,t,r){let n=t.savings.top_commands.slice(0,r?10:3),s=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??rs(),o=t.health.recent_failures.slice(0,r?20:5),a=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:_y(t.savings),dollars_saved_estimate_usd_display:Ry(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:n,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-n.length)},health:{...t.health,degradation_rate_display:Ro(t.health.degradation_rate),show_hit_rate_display:Ro(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-o.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:Ro(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:_o(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:_o(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:_o(t.latency.store_elapsed_ms_avg)}}}function Zu(e){return`${j(e)}
|
|
161
161
|
`}function So(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function by(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:rs()}}function rs(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function ko(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
162
162
|
`)}function _y(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function Ry(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Cr(e.dollars_saved_estimate_usd):`${Cr(e.dollars_saved_low_usd)}-${Cr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Cr(e.dollars_saved_estimate_usd)})`}function _o(e){return e==null?"none":String(e)}function Ro(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Hl(e){let{stats:t,telemetry:r}=await sr(e,30),[n,s]=await Promise.all([cb(e),Promise.resolve().then(()=>(Jo(),Fo)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function ql(e){let t=Eo(e.stats,e.telemetry,!1),r=hi({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??rs()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},ub(e));return`${j(r)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reddb-io/red-skills",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.80.0",
|
|
4
4
|
"description": "RedSkills plugin runtime bundles (dev, code-nav, memory, brain) distributed over npm — the v2 client transport (ADR 0091). Carries the platform-independent JS bundles inside the tarball plus thin bin shims; no postinstall download.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|