@reddb-io/red-skills 3.4.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,7 +37,7 @@ var iw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{fo
37
37
  `;return y+=k,a+=1,c+=1,u+=k.length,y},declareLane(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=D_(h),w=aa(G,y),k=b(_);return Rd(k.fields,y)?"":(k.fields=y,_d(_,w))},pushTagged(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=b(_),w=Ed(Sd(h),y.fieldsByShape),k=aa(G,w),T=w.map(Te=>ie(h[Te],G)),M="";return Rd(y.fields,w)||(y.fields=w,M+=_d(_,k)),`${M}${_}:${T.join(G)}
38
38
  `},end(){return f?"":(f=!0,m())}}}var xd,vd,Cd,cL,uL,Od=g(()=>{ot();hr();qt();xd=[G,"|"," "],vd=8,Cd=/^[A-Za-z0-9_-]+$/,cL=new TextEncoder,uL=new TextDecoder});var N=g(()=>{Gl();ot();hr();hr();yd();Od()});function F_(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C(ca(e))}
39
39
  `)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??F_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=j_(e.diagnostics,3)),t}function $e(e,t,n){let s=([n,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Fl(s)?{command:e,category:"transient",error:yr(s)||"GitHub API rate limit exceeded",help:Bl,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:yr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:yr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:yr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Ad(e,t,n,r){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function j_(e,t){return e.split(/\r?\n/).slice(0,t).join(`
40
- `).trim()}var Ve=g(()=>{"use strict";jl();N()});function Ms(e){let t={app:e,version:X_(Tn("__RED_BUILD_VERSION__",()=>"3.4.0")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"fcb63eef6c1ba0ca04107accdd7336499b338205")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-03T21:27:55Z")??"unknown",bundleAsset:Tn("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Tn("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Tn("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function X_(e){return e.startsWith("v")?e.slice(1):e}function Fd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as Q_,join as it,resolve as da}from"node:path";function tR(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Gd(e){return it(tR(e),jd)}function Hd(e){return it(Gd(e),"state")}function Ud(e){return it(Gd(e),"tmp")}function q(e){return it(Hd(e),"rsp")}function nR(e){return it(Hd(e),"red-skills.rdb")}function rR(e){return it(Ud(e),"red-skills.rdb")}function Jd(e,t){let n=nR(e);if(t(n))return n;let r=rR(e);if(t(r))throw sR();return n}function sR(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Vd(e){return it(Ud(e),"waits")}function Kd(e){let t=e.overrideEnvVars??fa;for(let r of t){let s=e.env[r];if(s)return Q_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(it(n,jd)))return n;let r=it(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var jd,Z_,eR,fa,Wd,qd,Re=g(()=>{jd=".red",Z_="MEMORY_ROOT",eR="RED_BRAIN_ROOT",fa=[Z_,eR];Wd=".red/state/red-skills.rdb";qd=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var oR,iR,qL,at=g(()=>{N();Re();oR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],iR=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],qL=[...oR,...iR]});function br(e){let{values:t,rest:n}=Ht(e,{query:zd.query},Yd);return{argv:n,query:t.query?.trim()||void 0}}function Xd(e){let{values:t,rest:n}=Ht(e,zd,Yd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function aR(e,t){if(!t)return!0;let n=pa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>aR(n,t)):[...e]}function ct(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function pa(e){return Array.isArray(e)?e.map(pa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(pa).join(" "):String(e??"")}var zd,Yd,wr=g(()=>{"use strict";ji();zd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Yd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>mR,RSP_OVERHEAD_LEDGER_FILE:()=>ef,RSP_OVERHEAD_SCHEMA_VERSION:()=>tf,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>rf,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>kt,overheadLedgerPath:()=>ba,overheadMsOf:()=>nf,overheadTelemetryFields:()=>Us,readOverheadLedger:()=>_r,readSelfStateFile:()=>Ws,readSelfStateFileSync:()=>yR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>hR,resetOverheadLedger:()=>gR,startChildProcessTimer:()=>ce});import{existsSync as cR,mkdirSync as uR,readFileSync as Qd,renameSync as lR,writeFileSync as dR}from"node:fs";import{readFile as fR}from"node:fs/promises";import{dirname as pR,join as Zd}from"node:path";function nf(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=nf(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Us(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Zd(q(e),ef)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=RR(t);if(kR(n))return n}catch{}return{version:1,families:{}}}function Rr(e,t,n=De,r=Date.now()){let s=_r(e),o=ya(t,n),i=s.families[t.family]??_R(t.family,r),a=ka(i,r)?sf(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(r).toISOString()};return o.breached?c>=n.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(r).toISOString(),u.disabled_until=new Date(r+n.cooldownMs).toISOString(),u.disabled_reason=bR(t.family,c,o,n)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,of(e,s),u}function wa(e,t,n=Date.now()){let r=_r(e).families[t];return!r?.disabled||ka(r,n)?null:r}function gR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},of(e,n),n}function kt(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?sf(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=r.filter(a=>a.disabled),o=r.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:tf,verdict:i,summary:wR(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function rf(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function hR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,rf(Number(process.hrtime.bigint()-e)/1e6))}}async function Ws(e){let t=await fR(e,"utf8");return kr(Buffer.byteLength(t)),t}function yR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function bR(e,t,n,r){let s=n.reasons.map(o=>o==="wall-clock-ceiling"?`added ${n.overhead_ms}ms > ${r.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${r.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function wR(e,t,n){if(e==="green")return"every wrapper family is inside its overhead ceiling";let r=[];return t.length>0&&r.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),n.length>0&&r.push(`breaching: ${n.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),r.join("; ")}function ka(e,t){if(!e.disabled||!e.disabled_until)return!1;let n=Date.parse(e.disabled_until);return Number.isFinite(n)&&n<=t}function sf(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function _R(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function of(e,t){try{let n=ba(e);if(!cR(Zd(e,".red")))return;uR(pR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;dR(r,`${C(t)}
40
+ `).trim()}var Ve=g(()=>{"use strict";jl();N()});function Ms(e){let t={app:e,version:X_(Tn("__RED_BUILD_VERSION__",()=>"3.4.1")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"cc35a368bbce59f0a8e6cb70417816a7b3d22723")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-04T01:32:37Z")??"unknown",bundleAsset:Tn("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Tn("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Tn("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function X_(e){return e.startsWith("v")?e.slice(1):e}function Fd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as Q_,join as it,resolve as da}from"node:path";function tR(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Gd(e){return it(tR(e),jd)}function Hd(e){return it(Gd(e),"state")}function Ud(e){return it(Gd(e),"tmp")}function q(e){return it(Hd(e),"rsp")}function nR(e){return it(Hd(e),"red-skills.rdb")}function rR(e){return it(Ud(e),"red-skills.rdb")}function Jd(e,t){let n=nR(e);if(t(n))return n;let r=rR(e);if(t(r))throw sR();return n}function sR(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Vd(e){return it(Ud(e),"waits")}function Kd(e){let t=e.overrideEnvVars??fa;for(let r of t){let s=e.env[r];if(s)return Q_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(it(n,jd)))return n;let r=it(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var jd,Z_,eR,fa,Wd,qd,Re=g(()=>{jd=".red",Z_="MEMORY_ROOT",eR="RED_BRAIN_ROOT",fa=[Z_,eR];Wd=".red/state/red-skills.rdb";qd=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var oR,iR,qL,at=g(()=>{N();Re();oR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],iR=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],qL=[...oR,...iR]});function br(e){let{values:t,rest:n}=Ht(e,{query:zd.query},Yd);return{argv:n,query:t.query?.trim()||void 0}}function Xd(e){let{values:t,rest:n}=Ht(e,zd,Yd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function aR(e,t){if(!t)return!0;let n=pa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>aR(n,t)):[...e]}function ct(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function pa(e){return Array.isArray(e)?e.map(pa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(pa).join(" "):String(e??"")}var zd,Yd,wr=g(()=>{"use strict";ji();zd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Yd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>mR,RSP_OVERHEAD_LEDGER_FILE:()=>ef,RSP_OVERHEAD_SCHEMA_VERSION:()=>tf,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>rf,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>kt,overheadLedgerPath:()=>ba,overheadMsOf:()=>nf,overheadTelemetryFields:()=>Us,readOverheadLedger:()=>_r,readSelfStateFile:()=>Ws,readSelfStateFileSync:()=>yR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>hR,resetOverheadLedger:()=>gR,startChildProcessTimer:()=>ce});import{existsSync as cR,mkdirSync as uR,readFileSync as Qd,renameSync as lR,writeFileSync as dR}from"node:fs";import{readFile as fR}from"node:fs/promises";import{dirname as pR,join as Zd}from"node:path";function nf(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=nf(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Us(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Zd(q(e),ef)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=RR(t);if(kR(n))return n}catch{}return{version:1,families:{}}}function Rr(e,t,n=De,r=Date.now()){let s=_r(e),o=ya(t,n),i=s.families[t.family]??_R(t.family,r),a=ka(i,r)?sf(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(r).toISOString()};return o.breached?c>=n.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(r).toISOString(),u.disabled_until=new Date(r+n.cooldownMs).toISOString(),u.disabled_reason=bR(t.family,c,o,n)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,of(e,s),u}function wa(e,t,n=Date.now()){let r=_r(e).families[t];return!r?.disabled||ka(r,n)?null:r}function gR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},of(e,n),n}function kt(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?sf(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=r.filter(a=>a.disabled),o=r.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:tf,verdict:i,summary:wR(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function rf(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function hR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,rf(Number(process.hrtime.bigint()-e)/1e6))}}async function Ws(e){let t=await fR(e,"utf8");return kr(Buffer.byteLength(t)),t}function yR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function bR(e,t,n,r){let s=n.reasons.map(o=>o==="wall-clock-ceiling"?`added ${n.overhead_ms}ms > ${r.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${r.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function wR(e,t,n){if(e==="green")return"every wrapper family is inside its overhead ceiling";let r=[];return t.length>0&&r.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),n.length>0&&r.push(`breaching: ${n.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),r.join("; ")}function ka(e,t){if(!e.disabled||!e.disabled_until)return!1;let n=Date.parse(e.disabled_until);return Number.isFinite(n)&&n<=t}function sf(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function _R(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function of(e,t){try{let n=ba(e);if(!cR(Zd(e,".red")))return;uR(pR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;dR(r,`${C(t)}
41
41
  `,{encoding:"utf8",mode:384}),lR(r,n)}catch{}}function RR(e){try{return JSON.parse(e)}catch{return L(e)}}function kR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(SR)}function SR(e){return ga(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function ga(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ha(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var ef,tf,Bs,Fs,js,Gs,Hs,mR,De,_a,Ra,V=g(()=>{"use strict";Re();N();ef="overhead-budget.toon",tf="red.rsp.overhead.v1",Bs=250,Fs=1024*1024,js=64*1024,Gs=3,Hs=6*60*60*1e3,mR=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],De={maxOverheadMs:Bs,maxSelfStateBytes:Fs,netLossFloorBytes:js,consecutiveBreaches:Gs,cooldownMs:Hs};_a=0,Ra=0});function uf(e){return e.trimStart().startsWith("{")?"json":"toon"}function Ea(e){let t=0;for(;e[t]===`
42
42
  `||e[t]==="\r";)t+=1;let n=e.slice(t);if(n==="")return null;let r=uf(n);if(r==="json"){let o=n.indexOf(`
43
43
  `);return o<0?null:{frame:n.slice(0,o),dialect:r,rest:n.slice(o+1)}}let s=n.indexOf(`
@@ -85,25 +85,25 @@ ${s}
85
85
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
86
86
  `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function cu(e,t,n){await ht(e,{collection:te,id:ev(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}var Uo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as ov}from"node:child_process";async function is(e,t){return await iv(t,async n=>{let r=await cv(e,t.cwd,n);return r||await av(e,t.cwd,n)})}async function iv(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let n=new AbortController,r=setTimeout(()=>n.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,n.signal]);try{let o=await t(s);return n.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(r)}}async function av(e,t,n){return n.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(r=>{let s=!1,o=l=>{s||(s=!0,n.removeEventListener("abort",a),r(l))},i=ov("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&no(l).then(f=>to(f,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function cv(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await uv(e[2],t,n);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await me({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Bn(s,"database_id")||Bn(s,"id"),status:ee(s,"status").toUpperCase(),conclusion:ee(s,"conclusion").toUpperCase(),workflowName:ee(s,"workflow_name")||ee(s,"name"),headBranch:ee(s,"head_branch"),url:ee(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=ao(e,"--branch"),s=ao(e,"--limit")??"20",o=await me({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:s},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=tn(Ye(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Bn(a,"database_id")||Bn(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=ao(e,"--limit")??"20",s=await me({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=tn(JSON.parse(s.stdout)).map(i=>({tagName:ee(i,"tag_name"),publishedAt:ee(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function uv(e,t,n){let r=await me({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:n,command:`gh pr view ${e}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Ye(s.head),"sha"),[i,a]=o?await Promise.all([me({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:n,command:`gh pr view ${e} status`}),me({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:n,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?tn(Ye(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Ye(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,a.stderr].filter(Boolean).join(`
87
87
  `),stdout:JSON.stringify({number:Bn(s,"number"),state:ee(s,"state").toUpperCase(),mergeable:lv(s),statusCheckRollup:[...c.map(l=>({conclusion:ee(l,"state").toUpperCase()})),...u.map(l=>({status:ee(l,"status").toUpperCase(),conclusion:ee(l,"conclusion").toUpperCase()}))],url:ee(s,"html_url")})}}function lv(e){let t=ee(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var sg=g(()=>{"use strict";Uo();co();pt()});function ig(e,t,n){let r=Date.now();return()=>dv(e,t,n,r)}async function dv(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return Z("missing PR number");let s=await is(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Z(s.stderr||"gh pr view failed");let o=ic(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(fv),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(o.state)!=="OPEN")return ft("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return ft("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return ft("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return In(`PR #${e} has ${l} pending checks`);if(i.length===0){let f=Date.now()-r;return a==="UNKNOWN"||a==="BLOCKED"||f<n.emptyChecksGraceMs?In(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:f}):ft("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?In(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):ft("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function ag(e,t){if(!e)return Z("missing run id");let n=await is(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return Z(n.stderr||"gh run view failed");let r=ic(n.stdout),s=String(r.status??"").toLowerCase(),o=String(r.conclusion??"").toLowerCase();return s!=="completed"?In(`run ${e} is ${s||"pending"}`):o==="success"?ft("success",`run ${e} succeeded`,og(r)):ft("failure",`run ${e} concluded ${o||"unknown"}`,og(r))}async function cg(e,t){let n=await is(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return Mn(s)&&s.databaseId!=null?String(s.databaseId):""}async function ug(e,t,n){let r=await is(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return Z(r.stderr||"gh release list failed");let o=tn(JSON.parse(r.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||pv(e,a))&&c>=t});return o?ft("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):In("no matching release is published yet")}function fv(e){let t=Mn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function og(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function pv(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var lg=g(()=>{"use strict";Zt();sg();co()});function as(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
88
- `)}var uu=g(()=>{"use strict"});var dg=g(()=>{"use strict";N()});var fg=g(()=>{"use strict"});function mv(e){return Object.keys(e)}function Qn(e){return{...e,fields:mv(e.fields)}}var pg,mg,gg,gv,hv,yv,hg,lu=g(()=>{"use strict";pg="red.castle.lane.v1",mg="red.castle.state.v1",gg="red.castle.history.v1",gv="red.castle.validation.v2",hv="red.castle.envelope.v1",yv="red.castle.hitl-card.v1",hg=[Qn({schemaId:pg,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Qn({schemaId:mg,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Qn({schemaId:gg,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Qn({schemaId:gv,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Qn({schemaId:hv,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Qn({schemaId:yv,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var lB,Wo=g(()=>{"use strict";N();lu();lB=new Map(hg.map(e=>[e.schemaId,new Set(e.fields)]))});var yg=g(()=>{"use strict";fg();Wo()});var bg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var du=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as _v,mkdir as Rv,readFile as kv}from"node:fs/promises";import{dirname as Sv,join as Ev}from"node:path";function fu(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function wg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:fu(t.at,"at"),singleton:fu(t.singleton,"singleton"),kind:fu(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function xv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function vv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function Cv(e){return Ev(e.castleStateRoot,"singleton-events.toonl")}function pu(e,t={}){let n=t.fs??{appendFile:_v,mkdir:Rv,readFile:kv},r=t.clock??(()=>new Date().toISOString()),s=Cv(e);return{path:s,async append(o){let i=wg({at:o.at??r(),...o});return await n.mkdir(Sv(s),{recursive:!0}),await n.appendFile(s,Vt().push(xv(i)),"utf8"),i},async read(o={}){vv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Jt(i).map(wg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var mu=g(()=>{"use strict";N()});var Vo=g(()=>{"use strict";N();Jo();mu()});var _g=g(()=>{"use strict";qo();du();Vo()});var Rg=g(()=>{"use strict"});var KB,kg=g(()=>{"use strict";N();KB=24*60*60*1e3});var Sg=g(()=>{"use strict";Wo()});var QB,ZB,Eg=g(()=>{"use strict";QB=15*6e4,ZB=30*6e4});var xg=g(()=>{"use strict"});var Ov,Av,n1,r1,vg=g(()=>{"use strict";Ov=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],Av={pre_worktree:["cargo","gradle"]},n1=Object.values(Av).flat(),r1=new Set(Ov)});var Cg=g(()=>{"use strict"});var Tg=g(()=>{"use strict";Vo()});var Og=g(()=>{"use strict"});var Ag=g(()=>{"use strict"});var Pg=g(()=>{"use strict"});var gu=g(()=>{"use strict"});var Ig=g(()=>{"use strict";N();gu()});var Lg=g(()=>{"use strict";N()});var hu=g(()=>{"use strict"});var yu=g(()=>{"use strict"});import{resolve as re}from"node:path";function $g(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,Pv),workersRoot:i,worker:u=>re(i,u),workerSteerFile:u=>re(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>re(a,u),worktreesRoot:c,worktreeLane:u=>re(c,u)}}var Pv,Dg=g(()=>{"use strict";Pv="default"});var Ng=g(()=>{"use strict";Jo()});var Mg=g(()=>{"use strict"});var Bg=g(()=>{"use strict";hu();yu()});import{mkdir as Iv,readFile as Lv,rename as $v,rm as Dv,writeFile as Nv}from"node:fs/promises";import{dirname as Mv,join as Bv}from"node:path";function jv(e){if(!Fv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Gv(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Hv(e){return e.code==="ENOENT"}function Uv(e){return e.code==="EEXIST"}function Wv(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function bu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return jv(t),Bv(e.castleStateRoot,"singletons",t,"lease.toon")}function Fg(e,t={}){let n=t.fs??{mkdir:Iv,readFile:Lv,rename:$v,rm:Dv,writeFile:Nv},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Gv;async function o(a){try{return Wv(L(await n.readFile(a,"utf8")))}catch(c){if(Hv(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await n.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await n.rename(u,a)}return{read(a){return o(Ko(e,a))},async acquire(a,c){let u=Ko(e,a);await n.mkdir(Mv(u),{recursive:!0});let l=!1;for(;;){let f=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:f,renewed_at:f};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!Uv(p))throw p}let m=await o(u);if(m){if(bu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!bu(l,c))throw new zo(a);let f={...l,renewed_at:r()};return await i(u,f),f},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!bu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,Fv,jg=g(()=>{"use strict";N();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},Fv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var wu=g(()=>{"use strict"});var Gg=g(()=>{"use strict"});var qv,Jv,Vv,G1,Hg=g(()=>{"use strict";qv={refreshCadenceS:270,tolerance:3},Jv=270,Vv=2700,G1={...qv,claimGraceS:Jv,recentCommitProtectionS:Vv}});var Ug=g(()=>{"use strict"});function Wg(e){return e==="single-object"?"rest":"graphql"}function U(e,t,n,r,s){return{key:e,kind:"read",cardinality:t,surface:s??Wg(t),budget:n,...s?{only:s}:{},why:r}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var qg,U1,Jg=g(()=>{qg=[U("issue view","single-object","rest","one issue by number; REST answers it in one request against the idle pool"),U("pr view","single-object","rest","one pull request by number, polled per Worker per iteration"),U("repo view","single-object","rest","one repository's own metadata"),U("run view","single-object","rest","one Actions run; the Actions API has no GraphQL surface either way"),U("release view","single-object","rest","one release by tag"),U("pr diff","single-object","rest","one pull request's diff, served by a REST media type"),U("issue list","multi-node","graphql","a connection of issues; one GraphQL query beats N REST pages"),U("pr list","multi-node","graphql","a connection of pull requests; one GraphQL query beats N REST pages"),U("pr checks","multi-node","graphql","every check context on one commit, which is a connection, not an object"),U("release list","multi-node","rest","Releases have no GraphQL connection gh reads; REST pages them","rest"),U("run list","multi-node","rest","the Actions API has no GraphQL surface, so a listing draws the request pool","rest"),U("label list","multi-node","graphql","a connection of labels inside one repository"),U("issue list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("pr list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("search issues","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search prs","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search repos","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("api graphql","multi-node","graphql","the caller wrote the query; `gh api graphql` is GraphQL by construction"),U("api rest","single-object","rest","any `gh api <path>` that is not `graphql` is a REST request"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],U1=new Map(qg.map(e=>[e.key,e]))});var Vg=g(()=>{});var Kg=g(()=>{});var zg=g(()=>{});var Yg=g(()=>{Jg();Vg();Kg();zg()});import{execFile as Qv}from"node:child_process";import{promisify as Zv}from"node:util";var MF,Xg=g(()=>{"use strict";Yg();wu();MF=Zv(Qv)});var Qg=g(()=>{"use strict";dg();yg();bg();qo();_g();Rg();kg();Sg();Wo();Eg();xg();vg();Cg();du();Tg();Og();Ag();Pg();Vo();Ig();Lg();lu();hu();yu();Dg();Ng();Mg();Bg();Jo();gu();mu();jg();wu();Gg();Hg();Ug();Xg()});import{EventEmitter as eC}from"node:events";import{spawn as tC}from"node:child_process";function Xo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Qo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,_u,nC,rC,sC,oC,Yo,Ru=g(()=>{cs="github-webhook",_u="github.webhook.delivery";nC="pull_request,pull_request_review,check_run,check_suite,workflow_run",rC=3,sC=1e3,oC=/no extension matched|unknown command|command not found/i,Yo=class extends eC{constructor(n,r){super();this.opts=n;this.terminate=r}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let n=this.child;this.child=void 0,n&&(this.stopping=this.terminate(n,sC).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Xo(c,r):Qo(c,r))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let n=this.opts.ghBin??"gh",r;try{r=tC(n,["webhook","forward",`--events=${nC}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
89
- `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");oC.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(n){let r;try{r=JSON.parse(n)}catch{this.emit("malformed-delivery",n);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",r)}scheduleRestart(){if(this._dead||this.restarts>=rC)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Zg=g(()=>{"use strict";Ru();Ru();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as iC}from"node:events";import{join as aC}from"node:path";function Su(e){let t=so(e.cwd),n=$g(aC(t,".red"));return new ku({...e,leases:e.leases??Fg(n),lane:e.lane??pu(n),makeForwarder:e.makeForwarder??((r,s)=>new Zo({cwd:r,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(r=>$n(r.pid,r.start_time))})}var ku,eh=g(()=>{"use strict";Qg();Zg();pt();tc();ku=class extends iC{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Xo(a,r):Qo(a,r))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===_u&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Eu={};B(Eu,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>lC});import{randomUUID as th}from"node:crypto";import{mkdir as cC,rm as uC}from"node:fs/promises";async function lC(e,t=process.cwd()){let n;try{n=await up(e)}catch(r){return await gC(e,r)}if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(as()),0;if(n.kind==="ls"){let r={schema:tp,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Za(n.kind)?await dC({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function dC(e,t){let n=e.kind,r=oc({id:th(),kind:n,target:mC(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Xa[n],status:"running",attempts:0}),s=hp(t,r.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await cC(Dn(t),{recursive:!0}),await Nn(s,r);let l=await fC(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let f=await _p({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(f.result,e.options.format)),f.exitCode}catch(l){let f=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,f,{status:"success"},new Date().toISOString());return await Mr(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Fn(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await uC(s,{force:!0}).catch(()=>{})}}async function fC(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:pp(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:ig(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await pC(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>ag(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>ug(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function pC(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await cg(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function mC(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function gC(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Za(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=oc({id:th(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Xa[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var xu=g(()=>{"use strict";lp();kp();zp();Zt();nc();lg();pt();Dr();uu();eh();Dr();uu()});import{existsSync as _C}from"node:fs";import{join as RC}from"node:path";function kC(){for(let e of(process.env.PATH??"").split(":"))if(e&&_C(RC(e,"rsp")))return!0;return!1}function us(){return kC()?["rsp"]:[process.execPath,process.argv[1]]}var vu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>ih,rewriteProxyCommandLine:()=>oh,runProxy:()=>xC});import{spawn as SC}from"node:child_process";function EC(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function xC(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=ih(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=oh(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await vC(t.telemetryRoot,n,c),await sh(n);throw c}for(let c of s)await CC(t.telemetryRoot,c);let i=await sh(r||n),a=Number(process.hrtime.bigint()-o)/1e6;return await ht(t.telemetryRoot,{collection:Se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function oh(e,t="lossless",n=us()){let r=LC(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||IC(r,a)==="|")return i.text;let c=TC(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function ih(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function vC(e,t,n){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:xe(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function CC(e,t){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function sh(e){let t=SC(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
90
- `),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function TC(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=DC(o);if(!i)return null;let a=PC(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(nn(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=OC(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(EC),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function OC(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:AC(t,n)}function AC(e,t){return e[0]==="cat"&&e.length===2&&Cu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Cu(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Cu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Cu(e){return!!e&&!e.startsWith("-")}function PC(e){let t=0;for(;t<e.length&&qn(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&qn(e[t].value);)t+=1;return t}function IC(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function LC(e){let t=[],n=0,r,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(r){i===r&&(r=void 0);continue}if(i==="'"||i==='"'){r=i;continue}let a=$C(e,o);a&&(o>n&&t.push({kind:"segment",text:e.slice(n,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,n=o+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function $C(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function DC(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Ur();vu();Ge()});function uh(e,t={}){let n=NC(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Tu(o),u=Tu(i),l=Tu(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>HC(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Ou(d.length,c)+Ou(d.tokens.length,u)+Ou(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+jC(d.tokens,r,n.length)+GC(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function NC(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(ah(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(ah(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function ah(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:MC(r),tokens:BC(r),numbers:FC(r),length:r.length}}function MC(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function BC(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function FC(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function jC(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(o=>Math.log2(n/Math.max(1,t.get(o)??n))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function GC(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Tu(e){let t=ch(e),n=ch(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Ou(e,t){return Math.abs(e-t.median)/t.mad}function ch(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function HC(e,t,n,r){return e<r&&n<t}var lh=g(()=>{"use strict"});var Au={};B(Au,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>fh,StructuredUsageError:()=>ni,cleanStatusPayload:()=>hh,recoveryInstruction:()=>He,renderGitContract:()=>ph,runGitWrapper:()=>WC});import{spawn as UC}from"node:child_process";async function WC(e,t){let n=mh(e),r=gh(n.argv),s=await KC(r,n.argv.slice(1));return ph(e,s,t)}async function ph(e,t,n){let r=mh(e);if((t.status??0)!==0||t.signal){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=gh(r.argv),o;try{o=zC(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ri)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let i=C(o);if(qC(s,i,r.full,n))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=p0(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await n.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${He(u)}
88
+ `)}var uu=g(()=>{"use strict"});var dg=g(()=>{"use strict";N()});var fg=g(()=>{"use strict"});function mv(e){return Object.keys(e)}function Qn(e){return{...e,fields:mv(e.fields)}}var pg,mg,gg,gv,hv,yv,hg,lu=g(()=>{"use strict";pg="red.castle.lane.v1",mg="red.castle.state.v1",gg="red.castle.history.v1",gv="red.castle.validation.v2",hv="red.castle.envelope.v1",yv="red.castle.hitl-card.v1",hg=[Qn({schemaId:pg,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Qn({schemaId:mg,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Qn({schemaId:gg,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Qn({schemaId:gv,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Qn({schemaId:hv,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Qn({schemaId:yv,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var lB,Wo=g(()=>{"use strict";N();lu();lB=new Map(hg.map(e=>[e.schemaId,new Set(e.fields)]))});var yg=g(()=>{"use strict";fg();Wo()});var bg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var du=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as _v,mkdir as Rv,readFile as kv}from"node:fs/promises";import{dirname as Sv,join as Ev}from"node:path";function fu(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function wg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:fu(t.at,"at"),singleton:fu(t.singleton,"singleton"),kind:fu(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function xv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function vv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function Cv(e){return Ev(e.castleStateRoot,"singleton-events.toonl")}function pu(e,t={}){let n=t.fs??{appendFile:_v,mkdir:Rv,readFile:kv},r=t.clock??(()=>new Date().toISOString()),s=Cv(e);return{path:s,async append(o){let i=wg({at:o.at??r(),...o});return await n.mkdir(Sv(s),{recursive:!0}),await n.appendFile(s,Vt().push(xv(i)),"utf8"),i},async read(o={}){vv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Jt(i).map(wg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var mu=g(()=>{"use strict";N()});var Vo=g(()=>{"use strict";N();Jo();mu()});var _g=g(()=>{"use strict";qo();du();Vo()});var Rg=g(()=>{"use strict"});var KB,kg=g(()=>{"use strict";N();KB=24*60*60*1e3});var Sg=g(()=>{"use strict";Wo()});var QB,ZB,Eg=g(()=>{"use strict";QB=15*6e4,ZB=30*6e4});var xg=g(()=>{"use strict"});var Ov,Av,n1,r1,vg=g(()=>{"use strict";Ov=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],Av={pre_worktree:["cargo","gradle"]},n1=Object.values(Av).flat(),r1=new Set(Ov)});var Cg=g(()=>{"use strict"});var Tg=g(()=>{"use strict";Vo()});var Og=g(()=>{"use strict"});var Ag=g(()=>{"use strict"});var Pg=g(()=>{"use strict"});var gu=g(()=>{"use strict"});var Ig=g(()=>{"use strict";N();gu()});var Lg=g(()=>{"use strict";N()});var hu=g(()=>{"use strict"});var yu=g(()=>{"use strict"});import{resolve as re}from"node:path";function $g(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,Pv),workersRoot:i,worker:u=>re(i,u),workerSteerFile:u=>re(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>re(a,u),worktreesRoot:c,worktreeLane:u=>re(c,u)}}var Pv,Dg=g(()=>{"use strict";Pv="default"});var Ng=g(()=>{"use strict";Jo()});var Mg=g(()=>{"use strict"});var Bg=g(()=>{"use strict";hu();yu()});import{mkdir as Iv,readFile as Lv,rename as $v,rm as Dv,writeFile as Nv}from"node:fs/promises";import{dirname as Mv,join as Bv}from"node:path";function jv(e){if(!Fv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Gv(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Hv(e){return e.code==="ENOENT"}function Uv(e){return e.code==="EEXIST"}function Wv(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function bu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return jv(t),Bv(e.castleStateRoot,"singletons",t,"lease.toon")}function Fg(e,t={}){let n=t.fs??{mkdir:Iv,readFile:Lv,rename:$v,rm:Dv,writeFile:Nv},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Gv;async function o(a){try{return Wv(L(await n.readFile(a,"utf8")))}catch(c){if(Hv(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await n.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await n.rename(u,a)}return{read(a){return o(Ko(e,a))},async acquire(a,c){let u=Ko(e,a);await n.mkdir(Mv(u),{recursive:!0});let l=!1;for(;;){let f=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:f,renewed_at:f};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!Uv(p))throw p}let m=await o(u);if(m){if(bu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!bu(l,c))throw new zo(a);let f={...l,renewed_at:r()};return await i(u,f),f},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!bu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,Fv,jg=g(()=>{"use strict";N();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},Fv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var wu=g(()=>{"use strict"});var Gg=g(()=>{"use strict"});var qv,Jv,Vv,G1,Hg=g(()=>{"use strict";qv={refreshCadenceS:270,tolerance:3},Jv=270,Vv=2700,G1={...qv,claimGraceS:Jv,recentCommitProtectionS:Vv}});var Ug=g(()=>{"use strict"});function Wg(e){return e==="single-object"?"rest":"graphql"}function U(e,t,n,r,s,o){return{key:e,kind:"read",cardinality:t,volatility:n,surface:o??Wg(t),budget:r,...o?{only:o}:{},why:s}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var qg,U1,Jg=g(()=>{qg=[U("issue view","single-object","stable-poll","rest","one issue by number, repeatedly polled while usually unchanged; REST answers in one request"),U("pr view","single-object","stable-poll","rest","one pull request by number, polled per Worker per iteration"),U("repo view","single-object","stable-poll","rest","one repository's own metadata, repeatedly read while usually unchanged"),U("run view","single-object","stable-poll","rest","one Actions run repeatedly polled to terminal; Actions has no GraphQL surface"),U("release view","single-object","stable-poll","rest","one release by tag, repeatedly checked while usually absent or unchanged"),U("pr diff","single-object","one-shot","rest","one pull request's diff, read once for review and served by a REST media type"),U("issue list","multi-node","stable-poll","graphql","a repeatedly polled, usually-unchanged issue connection; GraphQL avoids N REST pages"),U("pr list","multi-node","stable-poll","graphql","a repeatedly polled, usually-unchanged pull-request connection; GraphQL avoids N REST pages"),U("pr checks","multi-node","stable-poll","graphql","check contexts form a connection repeatedly polled while awaiting terminal state"),U("release list","multi-node","stable-poll","rest","release waits poll a usually-unchanged list; Releases has no GraphQL connection gh reads","rest"),U("run list","multi-node","stable-poll","rest","run waits poll a usually-unchanged list; Actions has no GraphQL surface","rest"),U("label list","multi-node","one-shot","graphql","a label connection loaded once for the current operation"),U("issue list (search)","multi-node","stable-poll","search","queue discovery polls usually-unchanged search results through the 30/min search connection"),U("pr list (search)","multi-node","stable-poll","search","PR discovery polls usually-unchanged search results through the 30/min search connection"),U("search issues","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("search prs","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("search repos","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("api graphql","multi-node","one-shot","graphql","the caller supplies one explicit GraphQL query rather than a routed poll"),U("api rest","single-object","one-shot","rest","the caller supplies one explicit REST path rather than a routed poll"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],U1=new Map(qg.map(e=>[e.key,e]))});var Vg=g(()=>{});var Kg=g(()=>{});var zg=g(()=>{});var Yg=g(()=>{Jg();Vg();Kg();zg()});import{execFile as Qv}from"node:child_process";import{promisify as Zv}from"node:util";var MF,Xg=g(()=>{"use strict";Yg();wu();MF=Zv(Qv)});var Qg=g(()=>{"use strict";dg();yg();bg();qo();_g();Rg();kg();Sg();Wo();Eg();xg();vg();Cg();du();Tg();Og();Ag();Pg();Vo();Ig();Lg();lu();hu();yu();Dg();Ng();Mg();Bg();Jo();gu();mu();jg();wu();Gg();Hg();Ug();Xg()});import{EventEmitter as e0}from"node:events";import{spawn as t0}from"node:child_process";function Xo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Qo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,_u,n0,r0,s0,o0,Yo,Ru=g(()=>{cs="github-webhook",_u="github.webhook.delivery";n0="pull_request,pull_request_review,check_run,check_suite,workflow_run",r0=3,s0=1e3,o0=/no extension matched|unknown command|command not found/i,Yo=class extends e0{constructor(n,r){super();this.opts=n;this.terminate=r}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let n=this.child;this.child=void 0,n&&(this.stopping=this.terminate(n,s0).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Xo(c,r):Qo(c,r))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let n=this.opts.ghBin??"gh",r;try{r=t0(n,["webhook","forward",`--events=${n0}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
89
+ `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");o0.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(n){let r;try{r=JSON.parse(n)}catch{this.emit("malformed-delivery",n);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",r)}scheduleRestart(){if(this._dead||this.restarts>=r0)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Zg=g(()=>{"use strict";Ru();Ru();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as i0}from"node:events";import{join as a0}from"node:path";function Su(e){let t=so(e.cwd),n=$g(a0(t,".red"));return new ku({...e,leases:e.leases??Fg(n),lane:e.lane??pu(n),makeForwarder:e.makeForwarder??((r,s)=>new Zo({cwd:r,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(r=>$n(r.pid,r.start_time))})}var ku,eh=g(()=>{"use strict";Qg();Zg();pt();tc();ku=class extends i0{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Xo(a,r):Qo(a,r))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===_u&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Eu={};B(Eu,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>l0});import{randomUUID as th}from"node:crypto";import{mkdir as c0,rm as u0}from"node:fs/promises";async function l0(e,t=process.cwd()){let n;try{n=await up(e)}catch(r){return await g0(e,r)}if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(as()),0;if(n.kind==="ls"){let r={schema:tp,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Za(n.kind)?await d0({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function d0(e,t){let n=e.kind,r=oc({id:th(),kind:n,target:m0(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Xa[n],status:"running",attempts:0}),s=hp(t,r.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await c0(Dn(t),{recursive:!0}),await Nn(s,r);let l=await f0(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let f=await _p({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(f.result,e.options.format)),f.exitCode}catch(l){let f=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,f,{status:"success"},new Date().toISOString());return await Mr(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Fn(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await u0(s,{force:!0}).catch(()=>{})}}async function f0(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:pp(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:ig(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await p0(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>ag(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>ug(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function p0(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await cg(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function m0(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function g0(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Za(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=oc({id:th(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Xa[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var xu=g(()=>{"use strict";lp();kp();zp();Zt();nc();lg();pt();Dr();uu();eh();Dr();uu()});import{existsSync as _0}from"node:fs";import{join as R0}from"node:path";function k0(){for(let e of(process.env.PATH??"").split(":"))if(e&&_0(R0(e,"rsp")))return!0;return!1}function us(){return k0()?["rsp"]:[process.execPath,process.argv[1]]}var vu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>ih,rewriteProxyCommandLine:()=>oh,runProxy:()=>x0});import{spawn as S0}from"node:child_process";function E0(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function x0(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=ih(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=oh(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await v0(t.telemetryRoot,n,c),await sh(n);throw c}for(let c of s)await C0(t.telemetryRoot,c);let i=await sh(r||n),a=Number(process.hrtime.bigint()-o)/1e6;return await ht(t.telemetryRoot,{collection:Se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function oh(e,t="lossless",n=us()){let r=L0(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||I0(r,a)==="|")return i.text;let c=T0(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function ih(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function v0(e,t,n){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:xe(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function C0(e,t){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function sh(e){let t=S0(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
90
+ `),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function T0(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=D0(o);if(!i)return null;let a=P0(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(nn(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=O0(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(E0),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function O0(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:A0(t,n)}function A0(e,t){return e[0]==="cat"&&e.length===2&&Cu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Cu(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Cu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Cu(e){return!!e&&!e.startsWith("-")}function P0(e){let t=0;for(;t<e.length&&qn(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&qn(e[t].value);)t+=1;return t}function I0(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function L0(e){let t=[],n=0,r,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(r){i===r&&(r=void 0);continue}if(i==="'"||i==='"'){r=i;continue}let a=$0(e,o);a&&(o>n&&t.push({kind:"segment",text:e.slice(n,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,n=o+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function $0(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function D0(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Ur();vu();Ge()});function uh(e,t={}){let n=N0(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Tu(o),u=Tu(i),l=Tu(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>H0(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Ou(d.length,c)+Ou(d.tokens.length,u)+Ou(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+j0(d.tokens,r,n.length)+G0(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function N0(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(ah(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(ah(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function ah(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:M0(r),tokens:B0(r),numbers:F0(r),length:r.length}}function M0(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function B0(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function F0(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function j0(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(o=>Math.log2(n/Math.max(1,t.get(o)??n))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function G0(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Tu(e){let t=ch(e),n=ch(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Ou(e,t){return Math.abs(e-t.median)/t.mad}function ch(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function H0(e,t,n,r){return e<r&&n<t}var lh=g(()=>{"use strict"});var Au={};B(Au,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>fh,StructuredUsageError:()=>ni,cleanStatusPayload:()=>hh,recoveryInstruction:()=>He,renderGitContract:()=>ph,runGitWrapper:()=>W0});import{spawn as U0}from"node:child_process";async function W0(e,t){let n=mh(e),r=gh(n.argv),s=await K0(r,n.argv.slice(1));return ph(e,s,t)}async function ph(e,t,n){let r=mh(e);if((t.status??0)!==0||t.signal){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=gh(r.argv),o;try{o=z0(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ri)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let i=C(o);if(q0(s,i,r.full,n))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=pC(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await n.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${He(u)}
91
91
  `;return{stdout:Buffer.from(`${C(a.payload)}
92
- ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function mh(e){let{argv:t,query:n,full:r}=Xd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function qC(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!JC(e)||r.level!=="lossless")return!0;let s=f0(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function JC(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function gh(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function VC(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${fh.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function KC(e,t){let n=UC("git",VC(e,t),{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function zC(e,t,n,r){switch(e){case"status":return YC(t,n,r);case"log":return s0(t,n,r);case"diff":return o0(t,n,r);case"commit":return Ot(i0(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ot(a0(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return c0(t,n,r);case"branch":return u0(t,n,r);case"show":return l0(t,n,r)}}function YC(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of XC(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){r=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){r=e0(u),o=!0;continue}let l=QC(u);if(l){o=!0,s.push(l);continue}let f=ZC(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return hh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=yh(a,"state");return Ot({command:e.join(" "),branch:r,rows:a,summary:r0(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function XC(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function QC(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return ls(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(10).join(" "),n)}return e.startsWith("? ")?ls(e.slice(2),"??"):null}function ZC(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(t0(e.slice(3),t),t):null}function ls(e,t){let n=dh(t[0]??"."),r=dh(t[1]??".");return{path:n0(e),index:n,worktree:r,state:d0(`${n}${r}`)}}function dh(e){return e===" "?".":e}function e0(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function t0(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function n0(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function r0(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function hh(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function s0(e,t,n){let r=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=ae(r,n);return Ot({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function o0(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=ae(s,n),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Ot({command:e.join(" "),files:o,summary:`${n?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function i0(e,t){let n=t.split(`
93
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),f=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function a0(e,t){let n=t.split(`
94
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${i} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${i} -> ${r} +${a} commits`}}function c0(e,t,n){let r=t.split(`
95
- `),s=[],o=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=o.commit.slice(0,12);l&&l.commit===f&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:f,path:o.path}),o=null}let i=ae(s,n),a=yh(i,"author");return Ot({command:e.join(" "),ranges:i,authors:a,summary:`${n?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function u0(e,t,n){let r=t.split(`
96
- `).filter(Boolean).map(i=>{let[a,c,u,l,f,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=ae(r,n),o=s.find(i=>i.current)?.name??"";return Ot({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${o?`, current ${o}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function l0(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,o=r>=0&&s>=0?t.slice(r+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=o.split(""),m=[];for(let y of i.split(`
92
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function mh(e){let{argv:t,query:n,full:r}=Xd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function q0(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!J0(e)||r.level!=="lossless")return!0;let s=fC(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function J0(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function gh(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function V0(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${fh.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function K0(e,t){let n=U0("git",V0(e,t),{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function z0(e,t,n,r){switch(e){case"status":return Y0(t,n,r);case"log":return sC(t,n,r);case"diff":return oC(t,n,r);case"commit":return Ot(iC(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ot(aC(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return cC(t,n,r);case"branch":return uC(t,n,r);case"show":return lC(t,n,r)}}function Y0(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of X0(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){r=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){r=eC(u),o=!0;continue}let l=Q0(u);if(l){o=!0,s.push(l);continue}let f=Z0(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return hh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=yh(a,"state");return Ot({command:e.join(" "),branch:r,rows:a,summary:rC(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function X0(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Q0(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return ls(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(10).join(" "),n)}return e.startsWith("? ")?ls(e.slice(2),"??"):null}function Z0(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(tC(e.slice(3),t),t):null}function ls(e,t){let n=dh(t[0]??"."),r=dh(t[1]??".");return{path:nC(e),index:n,worktree:r,state:dC(`${n}${r}`)}}function dh(e){return e===" "?".":e}function eC(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function tC(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function nC(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function rC(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function hh(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function sC(e,t,n){let r=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=ae(r,n);return Ot({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function oC(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=ae(s,n),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Ot({command:e.join(" "),files:o,summary:`${n?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function iC(e,t){let n=t.split(`
93
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),f=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function aC(e,t){let n=t.split(`
94
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${i} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${i} -> ${r} +${a} commits`}}function cC(e,t,n){let r=t.split(`
95
+ `),s=[],o=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=o.commit.slice(0,12);l&&l.commit===f&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:f,path:o.path}),o=null}let i=ae(s,n),a=yh(i,"author");return Ot({command:e.join(" "),ranges:i,authors:a,summary:`${n?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function uC(e,t,n){let r=t.split(`
96
+ `).filter(Boolean).map(i=>{let[a,c,u,l,f,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=ae(r,n),o=s.find(i=>i.current)?.name??"";return Ot({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${o?`, current ${o}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function lC(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,o=r>=0&&s>=0?t.slice(r+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=o.split(""),m=[];for(let y of i.split(`
97
97
  `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!w)continue;let k=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...k].filter(T=>T==="+").length,deleted:[...k].filter(T=>T==="-").length,binary:k.startsWith("Bin")})}let p=ae(m,n),b=0,_=0,h=0;for(let y of p)b+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,h+=typeof y.deleted=="number"?y.deleted:0;return Ot({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
98
- `).length:0,files:p,summary:`${n?`${p.length}/${m.length}`:p.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ot(e,t,n){return t?ct(e,n):e}function d0(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function yh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function f0(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function p0(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var fh,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();fh=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Ad(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var $u={};B($u,{NORMALIZATION_ALLOWLIST:()=>Eh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>Sh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Oh,formatNormalizeDecision:()=>Th,hookDecisionFromClaudePostExecJson:()=>xh,hookDecisionFromCodexPostExecJson:()=>vh,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Iu,runClaudePostExecHook:()=>h0,runCodexPostExecHook:()=>y0,transcodeJsonToToon:()=>kh});import{readFileSync as si}from"node:fs";function kh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Pu(o,a)?i.trimEnd():e}async function Iu(e,t={}){let n=R0(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:C(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,o=Rh(t.minTokens,m0),i=Rh(t.maxItems,g0);if(!(s>i&&v0(e)>=o))return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??ds)(r,i)}catch(b){return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:C0(b)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[f,m,p].filter(Boolean).join(`
99
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=k0(e),s=new Set;r&&e.forEach((a,c)=>{Lu(a)!==r&&s.add(c)});let o=S0(e,r);for(let a of s)n.add(a);for(let a of o)n.add(a);let i=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function ui(e){let t=e;for(let n of Eh)t=n.apply(t);return t}async function xh(e,t){return await Ch(e,t)}async function vh(e,t){return await Ch(e,t)}async function Ch(e,t){let n=_0(e),r=T0(n,["cwd"])||t.cwd;if(!await(t.isEnabled??w0)(r))return{kind:"passthrough",reason:"disabled"};let o=O0(n,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??ui)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Th(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Oh(e){return{stdout:"",status:0}}async function h0(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await xh(t,{cwd:process.cwd()}),r=Th(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function y0(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await vh(t,{cwd:process.cwd()}),r=Oh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function b0(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let o=e.charCodeAt(n);if(o===7){n++;break}if(o===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function bh(e){return e>=32&&e<=63}function w0(e){return Fe(e,process.env).enabled}function _0(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function R0(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Zn(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function k0(e){let t=new Map;for(let s of e){let o=Lu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Lu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${wh(e[t])}`).join("|"):wh(e)}function S0(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Lu(s)!==t))for(let[i,a]of Ah(s)){let c=r.get(i)??[];c.push({index:o,value:a}),r.set(i,c)}});for(let s of r.values()){for(let o of E0(s))n.add(o);for(let o of x0(s))n.add(o)}return n}function E0(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=_h(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=_h(s);if(o===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-r)>i).map(a=>a.index)}function x0(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function Ah(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Zn(e)?Object.entries(e).flatMap(([n,r])=>Ah(r,t?`${t}.${n}`:n)):[]}function wh(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function _h(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function v0(e){return Math.ceil(e.length/4)}function Rh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function C0(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function T0(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function O0(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Pu(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Pu(n[i],r[i]))}var oi,ii,ai,ci,Sh,m0,g0,Eh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:b0},ii={id:"cr-progress",apply:e=>e.split(`
98
+ `).length:0,files:p,summary:`${n?`${p.length}/${m.length}`:p.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ot(e,t,n){return t?ct(e,n):e}function dC(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function yh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function fC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function pC(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var fh,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();fh=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Ad(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var $u={};B($u,{NORMALIZATION_ALLOWLIST:()=>Eh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>Sh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Oh,formatNormalizeDecision:()=>Th,hookDecisionFromClaudePostExecJson:()=>xh,hookDecisionFromCodexPostExecJson:()=>vh,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Iu,runClaudePostExecHook:()=>hC,runCodexPostExecHook:()=>yC,transcodeJsonToToon:()=>kh});import{readFileSync as si}from"node:fs";function kh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Pu(o,a)?i.trimEnd():e}async function Iu(e,t={}){let n=RC(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:C(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,o=Rh(t.minTokens,mC),i=Rh(t.maxItems,gC);if(!(s>i&&vC(e)>=o))return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??ds)(r,i)}catch(b){return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:CC(b)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[f,m,p].filter(Boolean).join(`
99
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=kC(e),s=new Set;r&&e.forEach((a,c)=>{Lu(a)!==r&&s.add(c)});let o=SC(e,r);for(let a of s)n.add(a);for(let a of o)n.add(a);let i=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function ui(e){let t=e;for(let n of Eh)t=n.apply(t);return t}async function xh(e,t){return await Ch(e,t)}async function vh(e,t){return await Ch(e,t)}async function Ch(e,t){let n=_C(e),r=TC(n,["cwd"])||t.cwd;if(!await(t.isEnabled??wC)(r))return{kind:"passthrough",reason:"disabled"};let o=OC(n,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??ui)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Th(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Oh(e){return{stdout:"",status:0}}async function hC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await xh(t,{cwd:process.cwd()}),r=Th(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function yC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await vh(t,{cwd:process.cwd()}),r=Oh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function bC(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let o=e.charCodeAt(n);if(o===7){n++;break}if(o===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function bh(e){return e>=32&&e<=63}function wC(e){return Fe(e,process.env).enabled}function _C(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function RC(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Zn(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function kC(e){let t=new Map;for(let s of e){let o=Lu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Lu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${wh(e[t])}`).join("|"):wh(e)}function SC(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Lu(s)!==t))for(let[i,a]of Ah(s)){let c=r.get(i)??[];c.push({index:o,value:a}),r.set(i,c)}});for(let s of r.values()){for(let o of EC(s))n.add(o);for(let o of xC(s))n.add(o)}return n}function EC(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=_h(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=_h(s);if(o===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-r)>i).map(a=>a.index)}function xC(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function Ah(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Zn(e)?Object.entries(e).flatMap(([n,r])=>Ah(r,t?`${t}.${n}`:n)):[]}function wh(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function _h(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function vC(e){return Math.ceil(e.length/4)}function Rh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function CC(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function TC(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function OC(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Pu(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Pu(n[i],r[i]))}var oi,ii,ai,ci,Sh,mC,gC,Eh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:bC},ii={id:"cr-progress",apply:e=>e.split(`
100
100
  `).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
101
101
  `)},ai={id:"trailing-whitespace",apply:e=>e.split(`
102
102
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
103
103
  `)},ci={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
104
104
 
105
- `)};Sh={id:"json-to-toon",apply:e=>kh(e)},m0=200,g0=15;Eh=[oi,ii,ai,ci,Sh]});var gs={};B(gs,{parseExecCommandLine:()=>Nh,renderExecContract:()=>Dh,runExecWrapper:()=>$0});import{isUtf8 as A0}from"node:buffer";import{spawn as P0}from"node:child_process";async function $0(e,t){let n=Nh(e),r=await D0(n);return await Dh(n,r,t)}async function Dh(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=$e(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let o=N0(r),i=o.kind==="text"?Buffer.from(o.text):r,a=nT(n.heavyByteThreshold,I0);if(i.length<=a&&n.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=o.kind==="text"?B0(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):F0(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Nh(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function D0(e){let t=P0(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function N0(e){return A0(e)?{kind:"text",text:M0(e.toString("utf8"))}:{kind:"bytes"}}function M0(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function B0(e,t,n,r,s,o=z0,i=ds){let c=Math.max(1,Math.floor((r==="terse"?$h:L0)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=K0(e,c,l,o),d=j0(e),m=G0(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Mh(s,d,t,tT(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Uh(f.error)}:m.degradation;return{text:Hh(p),degradation:b}}function F0(e,t,n,r){let s=Math.max(1,Math.floor($h/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Hh(Mh(r,"bytes",t,0,n,o))}}function Mh(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function j0(e){let t=e.trim();return t?Fh(t)?"json":jh(e)?"jsonl":Y0(e)?"unified-diff":Gh(e)?"tabular":X0(e)?"log-like":Q0(e)?"prose":"untyped":"untyped"}function G0(e,t,n,r,s,o,i=ds){switch(e){case"json":return H0(t,i);case"jsonl":return{summary:U0(t)};case"unified-diff":return{summary:W0(t)};case"tabular":return{summary:q0(t)};case"log-like":return{summary:J0(t,o)};case"prose":return{summary:V0(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Bh(n,r,s,o)}}}function H0(e,t){let n=Fh(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(At),item_keys:Nu(n)}}}catch(r){return{summary:Ih(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Uh(r)}}}return{summary:Ih(n)}}if(ms(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,o])=>[s,At(o)]))}}}return{summary:{root_type:typeof n,value:At(n)}}}function Ih(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(At),item_keys:Nu(e)}}function U0(e){let t=jh(e)??[],n=Z0(t,"level");return{records:t.length,keys:Nu(t),levels:n,first:At(t[0]),last:At(t.at(-1))}}function W0(e){let t=new Map,n="",r=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,n&&t.get(n).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(r++,n&&t.get(n).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:r,deleted_lines:s}}function q0(e){let t=Gh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Bh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function J0(e,t){let n=ps(e);return{entries:n.length,levels:eT(n),first:ln(n[0]??""),last:ln(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:ln(r.text)}))}}function V0(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:ln(t[0]??""),closing:ln(t.at(-1)??"")}}function Bh(e,t,n,r){let s=Lh(e.subarray(0,t)),o=Lh(e.subarray(n));return{head:s,tail:o,outliers:r.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:ln(i.text)}))}}function K0(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function z0(e,t){return uh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Fh(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return ms(n)||Array.isArray(n)?n:null}catch{return null}}function jh(e){let t=ps(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function Y0(e){let t=ps(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return r&&s&&o}function Gh(e){let t=ps(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function X0(e){let t=ps(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function Q0(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function ps(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Nu(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function Z0(e,t){let n=new Map;for(let r of e){if(!ms(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();n.set(o,(n.get(o)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function eT(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function At(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(At):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,At(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Ph?t:`${t.slice(0,Ph-1)}\u2026`}function Hh(e){let t=C(e).trimEnd(),n=L(t);if(!Du(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
106
- `}function Du(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Du(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Du(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Uh(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Lh(e){return e.toString("utf8").replace(/�$/g,"")}function tT(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function nT(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var I0,L0,$h,Ph,hs=g(()=>{"use strict";V();N();lh();un();fs();Ve();I0=8*1024,L0=2*1024,$h=1024,Ph=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>pT,formatCodexHookDecision:()=>ny,formatHookDecision:()=>ty,hookDecisionFromClaudePreExecJson:()=>wT,hookDecisionFromCodexPreExecJson:()=>_T,rewriteCommand:()=>Zh,rewriteTableFromCapabilities:()=>Qh,runClaudePreExecHook:()=>RT,runCodexPreExecHook:()=>kT});import{accessSync as uT,constants as lT,existsSync as dT,readFileSync as yi}from"node:fs";import{fileURLToPath as fT}from"node:url";function pT(){hi=void 0,Mu=!1}function mT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return uT(`${t}/rsp`,lT.X_OK),!0}catch{}return!1}function gT(e){return hi===void 0&&(hi=e()),hi}function hT(){Mu||(Mu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Qh(e){let t=new Map;for(let n of e)t.set(jT(n.command),["rsp",...n.wrapper]);return t}function Zh(e,t=us()){let n=PT(e);if(n)return n;let r=OT(e);if(!r)return gi(e,t);let s=r.tokens.map(u=>u.text);if(s.length>0&&qn(s[0]))return gi(e,t);let o=bT(r,t);if(o)return o;if(r.tokens.some(u=>u.quoted))return gi(e,t);let i=[...ws].sort((u,l)=>l.command.length-u.command.length).find(u=>AT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ay(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(Pt),...c].join(" "),capabilityId:i.id}}function bT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ay(e.redirectSuffix),o=t.map(Pt);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",Pt(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",Pt(n[1]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===4&&n[1]==="-n"&&/^[1-9][0-9]*$/.test(n[2])&&mi(n[3])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[2],Pt(n[3]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===3&&/^-[1-9][0-9]*$/.test(n[1])&&mi(n[2])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[1].slice(1),Pt(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function wT(e,t){return await ey(e,t)}async function _T(e,t){return await ey(e,t)}async function ey(e,t){return(await Fu(e,t,"pre-exec")).decision}async function Fu(e,t,n){let r=dy(e);if(!r.ok){let p={kind:"passthrough",reason:r.reason};return{decision:p,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:p,reason:r.reason})}}let s=r.payload,o=Ue(s,["cwd"])||Ue(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ST)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:Bu(s),decision:p,reason:"disabled"})}}let a=Bu(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"missing-command"})}}if(!gT(t.resolveBinary??mT)){hT();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Fe(o,process.env),f=t.rspInvocationPrefix??us(),d=l.proxyEnabled?IT(a,f):(t.rewrite??(p=>Zh(p,f)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:m})}}return await xT(o,t.wakeResident??ET),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function ty(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ny(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ry(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
105
+ `)};Sh={id:"json-to-toon",apply:e=>kh(e)},mC=200,gC=15;Eh=[oi,ii,ai,ci,Sh]});var gs={};B(gs,{parseExecCommandLine:()=>Nh,renderExecContract:()=>Dh,runExecWrapper:()=>$C});import{isUtf8 as AC}from"node:buffer";import{spawn as PC}from"node:child_process";async function $C(e,t){let n=Nh(e),r=await DC(n);return await Dh(n,r,t)}async function Dh(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=$e(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let o=NC(r),i=o.kind==="text"?Buffer.from(o.text):r,a=nT(n.heavyByteThreshold,IC);if(i.length<=a&&n.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=o.kind==="text"?BC(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):FC(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Nh(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function DC(e){let t=PC(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function NC(e){return AC(e)?{kind:"text",text:MC(e.toString("utf8"))}:{kind:"bytes"}}function MC(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function BC(e,t,n,r,s,o=zC,i=ds){let c=Math.max(1,Math.floor((r==="terse"?$h:LC)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=KC(e,c,l,o),d=jC(e),m=GC(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Mh(s,d,t,tT(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Uh(f.error)}:m.degradation;return{text:Hh(p),degradation:b}}function FC(e,t,n,r){let s=Math.max(1,Math.floor($h/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Hh(Mh(r,"bytes",t,0,n,o))}}function Mh(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function jC(e){let t=e.trim();return t?Fh(t)?"json":jh(e)?"jsonl":YC(e)?"unified-diff":Gh(e)?"tabular":XC(e)?"log-like":QC(e)?"prose":"untyped":"untyped"}function GC(e,t,n,r,s,o,i=ds){switch(e){case"json":return HC(t,i);case"jsonl":return{summary:UC(t)};case"unified-diff":return{summary:WC(t)};case"tabular":return{summary:qC(t)};case"log-like":return{summary:JC(t,o)};case"prose":return{summary:VC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Bh(n,r,s,o)}}}function HC(e,t){let n=Fh(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(At),item_keys:Nu(n)}}}catch(r){return{summary:Ih(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Uh(r)}}}return{summary:Ih(n)}}if(ms(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,o])=>[s,At(o)]))}}}return{summary:{root_type:typeof n,value:At(n)}}}function Ih(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(At),item_keys:Nu(e)}}function UC(e){let t=jh(e)??[],n=ZC(t,"level");return{records:t.length,keys:Nu(t),levels:n,first:At(t[0]),last:At(t.at(-1))}}function WC(e){let t=new Map,n="",r=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,n&&t.get(n).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(r++,n&&t.get(n).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:r,deleted_lines:s}}function qC(e){let t=Gh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Bh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function JC(e,t){let n=ps(e);return{entries:n.length,levels:eT(n),first:ln(n[0]??""),last:ln(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:ln(r.text)}))}}function VC(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:ln(t[0]??""),closing:ln(t.at(-1)??"")}}function Bh(e,t,n,r){let s=Lh(e.subarray(0,t)),o=Lh(e.subarray(n));return{head:s,tail:o,outliers:r.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:ln(i.text)}))}}function KC(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function zC(e,t){return uh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Fh(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return ms(n)||Array.isArray(n)?n:null}catch{return null}}function jh(e){let t=ps(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function YC(e){let t=ps(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return r&&s&&o}function Gh(e){let t=ps(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function XC(e){let t=ps(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function QC(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function ps(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Nu(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function ZC(e,t){let n=new Map;for(let r of e){if(!ms(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();n.set(o,(n.get(o)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function eT(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function At(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(At):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,At(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Ph?t:`${t.slice(0,Ph-1)}\u2026`}function Hh(e){let t=C(e).trimEnd(),n=L(t);if(!Du(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
106
+ `}function Du(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Du(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Du(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Uh(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Lh(e){return e.toString("utf8").replace(/�$/g,"")}function tT(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function nT(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var IC,LC,$h,Ph,hs=g(()=>{"use strict";V();N();lh();un();fs();Ve();IC=8*1024,LC=2*1024,$h=1024,Ph=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>pT,formatCodexHookDecision:()=>ny,formatHookDecision:()=>ty,hookDecisionFromClaudePreExecJson:()=>wT,hookDecisionFromCodexPreExecJson:()=>_T,rewriteCommand:()=>Zh,rewriteTableFromCapabilities:()=>Qh,runClaudePreExecHook:()=>RT,runCodexPreExecHook:()=>kT});import{accessSync as uT,constants as lT,existsSync as dT,readFileSync as yi}from"node:fs";import{fileURLToPath as fT}from"node:url";function pT(){hi=void 0,Mu=!1}function mT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return uT(`${t}/rsp`,lT.X_OK),!0}catch{}return!1}function gT(e){return hi===void 0&&(hi=e()),hi}function hT(){Mu||(Mu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Qh(e){let t=new Map;for(let n of e)t.set(jT(n.command),["rsp",...n.wrapper]);return t}function Zh(e,t=us()){let n=PT(e);if(n)return n;let r=OT(e);if(!r)return gi(e,t);let s=r.tokens.map(u=>u.text);if(s.length>0&&qn(s[0]))return gi(e,t);let o=bT(r,t);if(o)return o;if(r.tokens.some(u=>u.quoted))return gi(e,t);let i=[...ws].sort((u,l)=>l.command.length-u.command.length).find(u=>AT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ay(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(Pt),...c].join(" "),capabilityId:i.id}}function bT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ay(e.redirectSuffix),o=t.map(Pt);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",Pt(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",Pt(n[1]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===4&&n[1]==="-n"&&/^[1-9][0-9]*$/.test(n[2])&&mi(n[3])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[2],Pt(n[3]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===3&&/^-[1-9][0-9]*$/.test(n[1])&&mi(n[2])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[1].slice(1),Pt(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function wT(e,t){return await ey(e,t)}async function _T(e,t){return await ey(e,t)}async function ey(e,t){return(await Fu(e,t,"pre-exec")).decision}async function Fu(e,t,n){let r=dy(e);if(!r.ok){let p={kind:"passthrough",reason:r.reason};return{decision:p,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:p,reason:r.reason})}}let s=r.payload,o=Ue(s,["cwd"])||Ue(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ST)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:Bu(s),decision:p,reason:"disabled"})}}let a=Bu(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"missing-command"})}}if(!gT(t.resolveBinary??mT)){hT();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Fe(o,process.env),f=t.rspInvocationPrefix??us(),d=l.proxyEnabled?IT(a,f):(t.rewrite??(p=>Zh(p,f)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:m})}}return await xT(o,t.wakeResident??ET),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function ty(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ny(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ry(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
107
107
  `,status:0}}async function RT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"claude-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;oy("claude-pre-exec",r);let s=ty(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),sy("claude-pre-exec",t,n)),iy("claude-pre-exec",n),0}}async function kT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"codex-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;oy("codex-pre-exec",r);let s=ny(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),sy("codex-pre-exec",t,n)),iy("codex-pre-exec",n),0}}function bi(e,t){ht(e,t).catch(()=>{})}function er(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:xe(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function sy(e,t,n){let r=dy(t),s=r.ok?Bu(r.payload):"";return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:xe(s),decision:"failed-open",reason:"hook-exception",error:ju(n)}}function ST(e){return Fe(e,process.env).enabled}async function ET(e){let t=Fe(e,process.env);if(!t.enabled||!TT(t))return;let n=Ke(e);await Ys(n,CT(t))}async function xT(e,t){try{await Promise.resolve(t(e))}catch(n){vT(n)}}function oy(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
108
108
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
109
109
  `)}}function iy(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ju(t)}
@@ -196,12 +196,12 @@ const timer = setInterval(() => {
196
196
  clearInterval(timer);
197
197
  process.exit(0);
198
198
  }, 500);
199
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of KP())try{process.kill(e,"SIGTERM")}catch{}}function KP(){if(process.platform==="win32")return[];let e="";try{e=CP("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),o=Number(r[2]),i=r[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function zP(e){if(e.collection!==Se)return e;let t=await Kb(e.raw_text,Yb(e.raw_bytes)),n=await Kb(e.emitted_text,Yb(e.emitted_bytes)),{raw_text:r,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Kb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=DP)try{return await nw((async()=>({tokens:(await YP())("cl100k_base").encode(e).length,estimated:!1}))(),NP,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function YP(){return zb??=import(LP(XP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await zb}function XP(){let e=Il(IP(import.meta.url)),n=[Ii(e,"..","node_modules","js-tiktoken","dist","index.js"),Ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>OP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Yb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Al(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function nw(e,t,n){let r;try{return await Promise.race([e,new Promise((s,o)=>{r=setTimeout(()=>o(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function QP(e){try{return JSON.parse(e)}catch{return e}}function ZP(e){return Xb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Xb(t)&&(t.collection===pe||t.collection===te||t.collection===Se||t.collection===Qe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Xb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function eI(e,t){_f(e,(n,r)=>t(n,r),(n,r,s)=>{s({id:r?.id??ar(),ok:!1,error:n instanceof Error?n.message:String(n)})})}async function tI(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,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:r};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await iu(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ho(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await au(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return rI(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await nI(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function nI(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await jb(s,t).request(n,r)}function rI(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var DP,NP,ew,MP,BP,FP,Pl,Vb,zb,sw=g(()=>{"use strict";Re();Zs();Js();at();Go();qb();Ge();je();DP=256*1024,NP=500,ew=2e3,MP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),BP="rsp-status-summary.json",FP=[pe,te,Se,Qe,Fr],Pl=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.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 n=await GP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)o.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 vc(this.opts.rootDir,async a=>{let c=Wn(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await jP(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof n.id=="string"&&n.id.trim()!==""?n.id:ar(),a={...await zP(n),id:i,created_at:s,expires_at:o};return await t.kv(n.collection).put(i,a),{collection:n.collection,key:i,created_at:s,expires_at:o,bytes:n.collection===pe?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===pe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Qe?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Qe,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:pe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Al(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?QP(n):n;return ZP(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Fr).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),o=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||o.length<n.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Vb=!1});ji();Ve();var Pd={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},G_={json:{kind:"boolean"}},H_={help:{kind:"boolean",aliases:["h"]}},U_={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Id(e){let{command:t,args:n}=Fi(e,W_);return t==="--version"?{kind:"version",json:lr(n,G_).values.json===!0}:q_(e)?{kind:"help"}:{kind:"command"}}var W_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function q_(e){return Ht(e,H_).values.help===!0}function Ld(e){let{values:t,rest:n}=V_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,U_).command,o=[...n],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:n[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var Ds=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:J_})}},J_=Object.keys(Pd).map(e=>`--${e}`);function V_(e){try{return Ht(e,Pd)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function $d(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Dd(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var K_={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:Rt},"ephemeral-ttl-hours":{kind:"value",coerce:Rt},"byte-budget":{kind:"value",coerce:Rt},"telemetry-ttl-days":{kind:"value",coerce:Rt},"telemetry-byte-budget":{kind:"value",coerce:Rt},"telemetry-drain-interval-ms":{kind:"value",coerce:Rt},"telemetry-drain-timeout-ms":{kind:"value",coerce:Rt},"idle-ms":{kind:"value",coerce:Rt}};function ua(e){return lr(e,K_).values}var Nd={since:{kind:"value",coerce:Y_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Nd).values.since??t}function Md(e){return lr(e,Nd).values.full===!0}var z_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Bd(e){let{values:t,rest:n}=Ht(e,z_),r=n[1];if(!r)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:r,params:s}}function Rt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function Y_(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:void 0}la();Ve();import{existsSync as sI}from"node:fs";import{fileURLToPath as oI}from"node:url";at();wr();V();ze();import{existsSync as hC}from"node:fs";import{fileURLToPath as yC}from"node:url";at();Ga();V();import{existsSync as xk}from"node:fs";import{fileURLToPath as vk}from"node:url";async function Pn(e,t){let n={stats:Ck(e.telemetryByteBudget),telemetry:Ja(t)};if(!e.storeUri.startsWith("file://"))return n;let r=vk(e.storeUri);if(!xk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:Ja(t)}}catch{return n}finally{await o.close()}}function Va(e,t=Ja(30),n=!1,r=Yf()){return`${J(Ka(e,t,n,r))}
199
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of KP())try{process.kill(e,"SIGTERM")}catch{}}function KP(){if(process.platform==="win32")return[];let e="";try{e=CP("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),o=Number(r[2]),i=r[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function zP(e){if(e.collection!==Se)return e;let t=await Kb(e.raw_text,Yb(e.raw_bytes)),n=await Kb(e.emitted_text,Yb(e.emitted_bytes)),{raw_text:r,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Kb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=DP)try{return await nw((async()=>({tokens:(await YP())("cl100k_base").encode(e).length,estimated:!1}))(),NP,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function YP(){return zb??=import(LP(XP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await zb}function XP(){let e=Il(IP(import.meta.url)),n=[Ii(e,"..","node_modules","js-tiktoken","dist","index.js"),Ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>OP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Yb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Al(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function nw(e,t,n){let r;try{return await Promise.race([e,new Promise((s,o)=>{r=setTimeout(()=>o(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function QP(e){try{return JSON.parse(e)}catch{return e}}function ZP(e){return Xb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Xb(t)&&(t.collection===pe||t.collection===te||t.collection===Se||t.collection===Qe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Xb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function eI(e,t){_f(e,(n,r)=>t(n,r),(n,r,s)=>{s({id:r?.id??ar(),ok:!1,error:n instanceof Error?n.message:String(n)})})}async function tI(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,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:r};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await iu(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ho(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await au(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return rI(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await nI(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function nI(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await jb(s,t).request(n,r)}function rI(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var DP,NP,ew,MP,BP,FP,Pl,Vb,zb,sw=g(()=>{"use strict";Re();Zs();Js();at();Go();qb();Ge();je();DP=256*1024,NP=500,ew=2e3,MP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),BP="rsp-status-summary.json",FP=[pe,te,Se,Qe,Fr],Pl=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.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 n=await GP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)o.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 vc(this.opts.rootDir,async a=>{let c=Wn(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await jP(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof n.id=="string"&&n.id.trim()!==""?n.id:ar(),a={...await zP(n),id:i,created_at:s,expires_at:o};return await t.kv(n.collection).put(i,a),{collection:n.collection,key:i,created_at:s,expires_at:o,bytes:n.collection===pe?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===pe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Qe?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Qe,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:pe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Al(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?QP(n):n;return ZP(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Fr).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),o=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||o.length<n.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Vb=!1});ji();Ve();var Pd={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},G_={json:{kind:"boolean"}},H_={help:{kind:"boolean",aliases:["h"]}},U_={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Id(e){let{command:t,args:n}=Fi(e,W_);return t==="--version"?{kind:"version",json:lr(n,G_).values.json===!0}:q_(e)?{kind:"help"}:{kind:"command"}}var W_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function q_(e){return Ht(e,H_).values.help===!0}function Ld(e){let{values:t,rest:n}=V_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,U_).command,o=[...n],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:n[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var Ds=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:J_})}},J_=Object.keys(Pd).map(e=>`--${e}`);function V_(e){try{return Ht(e,Pd)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function $d(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Dd(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var K_={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:Rt},"ephemeral-ttl-hours":{kind:"value",coerce:Rt},"byte-budget":{kind:"value",coerce:Rt},"telemetry-ttl-days":{kind:"value",coerce:Rt},"telemetry-byte-budget":{kind:"value",coerce:Rt},"telemetry-drain-interval-ms":{kind:"value",coerce:Rt},"telemetry-drain-timeout-ms":{kind:"value",coerce:Rt},"idle-ms":{kind:"value",coerce:Rt}};function ua(e){return lr(e,K_).values}var Nd={since:{kind:"value",coerce:Y_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Nd).values.since??t}function Md(e){return lr(e,Nd).values.full===!0}var z_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Bd(e){let{values:t,rest:n}=Ht(e,z_),r=n[1];if(!r)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:r,params:s}}function Rt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function Y_(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:void 0}la();Ve();import{existsSync as sI}from"node:fs";import{fileURLToPath as oI}from"node:url";at();wr();V();ze();import{existsSync as h0}from"node:fs";import{fileURLToPath as y0}from"node:url";at();Ga();V();import{existsSync as xk}from"node:fs";import{fileURLToPath as vk}from"node:url";async function Pn(e,t){let n={stats:Ck(e.telemetryByteBudget),telemetry:Ja(t)};if(!e.storeUri.startsWith("file://"))return n;let r=vk(e.storeUri);if(!xk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:Ja(t)}}catch{return n}finally{await o.close()}}function Va(e,t=Ja(30),n=!1,r=Yf()){return`${J(Ka(e,t,n,r))}
200
200
  `}function zf(e,t){return`${J({...e,overhead:Xf(t)})}
201
201
  `}function Yf(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:De,breaching_families:[],disabled_families:[],families:[]}}function Xf(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function Ka(e,t,n,r=Yf()){let s=t.savings.top_commands.slice(0,n?10:3),o=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??eo(),a=t.health.recent_failures.slice(0,n?20:5),c=t.decisions.top_pass_reasons.slice(0,n?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:Tk(t.savings),dollars_saved_estimate_usd_display:Ok(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Xf(r),health:{overhead_verdict:r.verdict,overhead_summary:r.summary,...t.health,degradation_rate_display:qa(t.health.degradation_rate),show_hit_rate_display:qa(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-a.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:qa(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:n?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:n?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Wa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Wa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Wa(t.latency.store_elapsed_ms_avg)}}}function Qf(e){return`${J(e)}
202
202
  `}function Ja(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:[],by_command_family:[]}}}function Ck(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:eo()}}function eo(){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 za(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
203
- `)}function Tk(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 Ok(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function qa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function nh(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([bC(e),Promise.resolve().then(()=>(xu(),Eu)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:kt(Ke(process.cwd()).rootDir,e.overhead)}}function rh(e){let t=Ka(e.stats,e.telemetry,!1,e.overhead),n=ma({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??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},wC(e));return`${J(n)}
204
- `}async function bC(e){if(!e.storeUri.startsWith("file://"))return[];let t=yC(e.storeUri);if(!hC(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Qt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function wC(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}at();V();Ve();import{existsSync as GT}from"node:fs";import{fileURLToPath as HT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function qh(e,t,n){let r=process.hrtime.bigint(),s=await Jh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return rT(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Jh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
203
+ `)}function Tk(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 Ok(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function qa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function nh(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([b0(e),Promise.resolve().then(()=>(xu(),Eu)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:kt(Ke(process.cwd()).rootDir,e.overhead)}}function rh(e){let t=Ka(e.stats,e.telemetry,!1,e.overhead),n=ma({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??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},w0(e));return`${J(n)}
204
+ `}async function b0(e){if(!e.storeUri.startsWith("file://"))return[];let t=y0(e.storeUri);if(!h0(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Qt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function w0(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}at();V();Ve();import{existsSync as GT}from"node:fs";import{fileURLToPath as HT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function qh(e,t,n){let r=process.hrtime.bigint(),s=await Jh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return rT(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Jh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
205
205
  `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(i,a)=>o({stdoutBytes:r,stderrBytes:s,status:i,signal:a}))})}function Vh(e){return e>0&&Math.random()<e}async function bs(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
206
206
  `);let s=await Xh(t);if(r){let o=sT(e,t,n),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ge(),os));fi(i(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:di(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),fi(i(r,{collection:c,ts:new Date().toISOString(),command:di(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Kh(e,t,n){let r=await Jh(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ge(),os)),a={ts:new Date().toISOString(),command:di(e),reason:"overhead-ceiling-self-disabled",wrapper_family:n.family,wrapper_exit_code:r.status??0,stderr_head:n.disabled_reason??n.reasons.join(",")};return fi(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:r.stdoutBytes+r.stderrBytes,emitted_bytes:r.stdoutBytes+r.stderrBytes,degradation_reason:a.reason,...a})),fi(s(t,{collection:i,accounting_recorded:!0,...a})),r.signal?(process.kill(process.pid,r.signal),128):r.status??0}async function zh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${pi()}, passing through
207
207
  `),await Xh(e)}function pi(){return"rsp is not enabled in this directory; run /red-setup"}function Yh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Ze(e){return di(e.positional)}function di(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function ys(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function rT(e,t,n,r,s){let o=n.stdoutBytes+n.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Ze(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:r};xt(e,{collection:"rsp_accounting_events_v1",...i}),xt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function sT(e,t,n){let r=t[0]??"unknown",s=oT(n)||e;return{reason:Wh(n)==="ENOENT"||Wh(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:aT(n)??1,stderrHead:iT(s,240)}}function oT(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function iT(e,t){let n=ys(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Wh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function aT(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function fi(e){e.catch(()=>{})}async function Xh(e){if(e[0]==="exec"||e[0]==="proxy")return await cT(e);let t=e[0];if(!t)return 2;let n=li(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reddb-io/red-skills",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
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",