@reddb-io/red-skills 3.0.4 → 3.1.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.
@@ -1,145 +1,152 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Hy=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)Hy(e,r,{get:t[r],enumerable:!0})};function Uy(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function Wy(e=rl){return Object.entries(e).map(([t,r])=>Uy(t,r)).sort((t,r)=>r.separator.length-t.separator.length)}function Jy(e){return/^-\d+(\.\d+)?$/.test(e)}function cr(e){return!(!e||e.startsWith("-")&&!Jy(e))}function ds(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function nl(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(r=>nl(r.trim())):e}function At(e,t){switch(t){case"boolean":return qy(e);case"number":return Vy(e);case"array":return e.split(",").map(r=>ds(r.trim()));case"string":default:return e}}function qy(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function Vy(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function dt(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function Ky(e,t={}){return e.map(r=>{let n=t[r.type];return n?n(r.value):r.value}).join("")}function L(e,t){return{type:e,value:t}}function zy(e){let t=[],r=Xy(e);if(t.push(L("section-header","Usage:"),L("text"," "),L("usage-text",r),L("newline",`
4
- `),L("newline",`
5
- `)),e.positional&&e.positional.length>0){t.push(L("section-header","Arguments:"),L("newline",`
6
- `));for(let n of e.positional)if(n.description){let s=n.variadic?`${n.name}...`:n.name;t.push(L("indent"," "),L("positional-name",`<${s}>`)),n.required||t.push(L("positional-optional"," (optional)")),t.push(L("newline",`
7
- `),L("indent"," "),L("option-description",n.description),L("newline",`
8
- `))}t.push(L("newline",`
9
- `))}if(e.options&&Object.keys(e.options).length>0){t.push(L("section-header","Options:"),L("newline",`
10
- `));let n=Zy(e.options);t.push(...n)}return t}function Yy(e,t){let r=zy(e);return Ky(r,t)}function Xy(e){let t=["[options]"];if(e.positional)for(let r of e.positional)r.variadic?t.push(r.required?`<${r.name}...>`:`[${r.name}...]`):t.push(r.required?`<${r.name}>`:`[${r.name}]`);return t.join(" ")}function Zy(e,t=!1){let r=[],n=[],s=t?"global-option-flag":"option-flag",o=t?"global-option-type":"option-type",i=t?"global-option-default":"option-default",a=t?"global-option-description":"option-description";for(let[u,l]of Object.entries(e)){if(l.hidden)continue;let p=[],d=w=>{p.includes(w)||p.push(w)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let w of l.aliases??[])w.length===1?d(`-${w}`):d(`--${w}`);let f=p.join(", "),m=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;n.push({flags:f,type:m,desc:l.description??"",default:l.default!==void 0?String(l.default):void 0})}let c=Math.max(...n.map(u=>u.flags.length+(u.type?u.type.length+1:0)),20);for(let u of n){let l=u.flags.length+(u.type?u.type.length+1:0),p=" ".repeat(c-l+2);r.push(L("indent"," ")),r.push(L(s,u.flags)),u.type&&(r.push(L("text"," ")),r.push(L(o,u.type))),r.push(L("text",p)),r.push(L(a,u.desc)),u.default!==void 0&&(r.push(L("text"," ")),r.push(L(i,`(default: ${u.default})`))),r.push(L("newline",`
11
- `))}return r}function sl(e){let t=ob(e.options??{},e.autoShort??!1),r=Wy(e.separators??rl);return{schema:e,parse(n){return Qy(n,e,t,r)},help(){return Yy(e,e.formatter)}}}function Qy(e,t,r,n){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(n.map(l=>l.to));for(let l of o)s[l]={};let i=0,a=t.positional??[],c=0,u=!1;for(;c<e.length;){let l=e[c];if(t.stopEarly&&i>0){s.rest=e.slice(c);break}if(l==="--"&&!u){u=!0,c++;continue}if(u){if(i<a.length){let d=a[i];if(d.variadic){let f=[];for(;c<e.length;){let m=e[c];f.push(d.type?At(m,d.type):m),c++}s.positional[d.name]=f,i++}else{let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=nb(l,c,e,s,r,t);continue}if(l.startsWith("-")&&l.length>1&&!lb(l)){c=sb(l,c,e,s,r,t);continue}let p=eb(l,n);if(p){let{key:d,value:f,config:m}=p,w=s,_=w[m.to]??(w[m.to]={});_[d]=m.typed?nl(f):dt(f),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let m=[];for(;c<e.length&&!e[c].startsWith("-");){let w=e[c];m.push(d.type?At(w,d.type):w),c++}s.positional[d.name]=m,i++;continue}let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return ab(s,t,r),cb(s,t,a),ub(s,t,r),s}function eb(e,t){if(Gy.test(e))return null;for(let r of t){if(r.prefix&&e.startsWith(r.separator)){let s=e.slice(r.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(tb(i))return{key:i,value:a,config:r}}continue}let n=e.indexOf(r.separator);if(n>0){let s=e.slice(0,n),o=e.slice(n+r.separator.length);if(rb(s,o,r))return{key:s,value:o,config:r}}}return null}function tb(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function rb(e,t,r){return e?r.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((r.separator==="="||r.separator===":=")&&e.includes("/")):!1}function nb(e,t,r,n,s,o){let i=e.slice(2);if(i.startsWith("no-")){let c=i.slice(3),u=s.get(c);if(u?.negatable!==!1&&u?.type==="boolean")return n.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return ps(u,l,t+1,n,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option --${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}return o.strict?n.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(n.options[i]=!0),t+1}function sb(e,t,r,n,s,o){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),c=i.slice(0,a),u=i.slice(a+1),l=gi(c,s);return l?ps(l.name,u,t+1,n,s,o):(o.strict?n.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(n.options[c]=ds(dt(u))),t+1)}if(i.length===1){let a=gi(i,s);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option -${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}if(o.strict)n.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=r[t+1];if(cr(c))return n.options[i]=ds(dt(c)),t+2;n.options[i]=!0}return t+1}for(let a of i){let c=gi(a,s);c?c.type==="boolean"?n.options[c.name]=!0:n.errors.push(`Option -${a} requires a value`):o.strict?n.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(n.options[a]=!0)}return t+1}function ps(e,t,r,n,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?At(dt(t),i.type):dt(t);if(!i.choices.includes(c))return n.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),r}let a=i.type?At(dt(t),i.type):dt(t);if(i.type==="array"){let c=n.options[e];Array.isArray(c)?c.push(...a):n.options[e]=a}else n.options[e]=a}else o.strict?n.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(n.options[e]=ds(dt(t)));return r}function ob(e,t=!1){let r=new Map,n=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of n)o.short&&s.add(o.short);for(let[o,i]of n){let a=i.short??"";t&&!a&&(a=ib(o,s),a&&s.add(a));let c={name:o,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};r.set(o,c);for(let u of c.aliases)r.set(u,c)}return r}function ib(e,t){for(let r of e){if(!/[a-zA-Z]/.test(r))continue;let n=r.toLowerCase();if(!t.has(n))return n;let s=r.toUpperCase();if(!t.has(s))return s}return""}function gi(e,t){for(let r of t.values())if(r.short===e||r.aliases.includes(e))return r}function ab(e,t,r){for(let n of r.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let s=process.env[n.env];e.options[n.name]=n.type?At(s,n.type):s}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of t.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function cb(e,t,r){if(t.options)for(let[n,s]of Object.entries(t.options))s.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of r)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function ub(e,t,r){for(let n of r.values()){let s=e.options[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}for(let n of t.positional??[]){let s=e.positional[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}}function lb(e){return/^-\d+(\.\d+)?$/.test(e)}var rl,Gy,ol=h(()=>{rl={"=":"data",":=":{to:"data",typed:!0},":":"meta"},Gy=/^[a-z][a-z0-9+.-]*:\/\//i});function db(e){let t={};for(let[r,n]of Object.entries(e))t[r]={type:n.kind==="boolean"?"boolean":"string",...r.length===1?{short:r}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return t}function pb(e,t){let r=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){r.set(s,s);for(let i of o.aliases??[])r.set(i,s)}let n=new Map;for(let s=0;s<e.length;s+=1){let o=e[s];if(o==="--")break;let i=o.match(/^--([^=]+)(?:=(.*))?$/)??o.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=r.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&cr(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=n.get(a)??[];u.push(c),n.set(a,u)}return n}function zr(e,t,r={}){let s=sl({options:db(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=pb(e,t),a=s.errors.find(c=>/^Option --?\S+ requires a value$/.test(c));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(s.errors.length>0)throw new Error(s.errors[0]);if(r.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new hi(u.length===1?`-${u}`:`--${u}`,Object.keys(t).map(l=>l.length===1?`-${l}`:`--${l}`))}for(let[c,u]of Object.entries(t)){let l=s.options[c];l!==void 0&&(u.kind==="boolean"?o[c]=l:u.type==="array"?o[c]=(i.get(c)??[]).map(p=>u.coerce(p)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function gb(e){let t=new Map;for(let[r,n]of Object.entries(e)){t.set(r,r);for(let s of n.aliases??[])t.set(s,r)}return t}function It(e,t,r={}){let n=gb(t),s=r.stopAtSeparator??!0,o={},i=[];for(let a=0;a<e.length;a+=1){let c=e[a];if(c==="--"&&s){i.push(...e.slice(a));break}let u=fb.exec(c)??mb.exec(c),l=u===null?void 0:n.get(u[1]),p=l===void 0?void 0:t[l];if(l===void 0||p===void 0){i.push(c);continue}if(p.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&cr(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(p.type==="array"){let f=o[l]??[];f.push(p.coerce(d)),o[l]=f}else o[l]=p.coerce(d)}return{values:o,rest:i}}function yi(e,t){let[r,...n]=e;if(r!==void 0){for(let[o,i]of Object.entries(t.commands))if(r===o||(i.aliases??[]).includes(r))return{command:o,args:n};if(t.errorOnUnknownCommand&&!r.startsWith("-"))throw new Kr(r,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:n}}var hi,fb,mb,Kr,bi=h(()=>{ol();hi=class extends Error{flag;known;constructor(t,r){super(`unknown flag '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=r}};fb=/^--([^=]+)(?:=([\s\S]*))?$/,mb=/^-([^-=])(?:=([\s\S]*))?$/;Kr=class extends Error{token;known;constructor(t,r){super(`unknown command '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=r}}});function al(e){return hb.test(e)}var hb,il,cl=h(()=>{hb=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,il="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});function S(e,t){return new Yr(e,t)}function A(e,t){return new Lt(e,t)}function ur(e){return e instanceof Lt?e:e instanceof Yr?new Lt(e.line,e.reason):new Lt(0,String(e&&e.message?e.message:e))}var Yr,Lt,Xr=h(()=>{Yr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Lt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function fs(e){let t=e.split(`
12
- `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function De(e){return S(e,"invalid quoted string")}function Ne(e,t){if(e==="")return"";if(e.startsWith('"'))return ul(e,t);if(e.includes('"'))throw De(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:yb(e)?Number(e):e}function Xe(e,t){let r=e.trim();if(r.startsWith('"'))return[ul(r,t),!0];if(r.includes('"')||/\s/.test(r))throw S(t,"expected non-empty field name");return[r,!1]}function ul(e,t){if(e[0]!=='"')throw De(t);let r="",n=1;for(;n<e.length;){let s=e[n];if(n+=1,s==='"'){if(e.slice(n).trim()==="")return r;throw De(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
13
- `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw De(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw De(t);r+=String.fromCharCode(a),n+=4;break}default:throw De(t)}continue}if(s<" "&&s!==" ")throw De(t);r+=s}throw De(t)}function $t(e,t,r){if(e==="")return[];let n=[],s=0,o=!1,i=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(i){i=!1;continue}c==="\\"&&o?i=!0:c==='"'?o=!o:c===t&&!o&&(n.push(e.slice(s,a).trim()),s=a+1)}if(o||i)throw De(r);return n.push(e.slice(s).trim()),n}function ae(e,t,r){let n=!1,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"&&n)s=!0;else if(i==='"')n=!n;else if(i===t&&!n)return o}if(n||s)throw De(r);return-1}function yb(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function bb(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function wb(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw S(0,"number is not representable in TOON");return String(e)}function Zr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Me(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return wb(e);if(typeof e=="string")return Rb(e,t);throw S(0,"not a primitive")}function _b(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Se(e){return _b(e)?e:ll(e)}function Rb(e,t){return kb(e,t)?ll(e):e}function kb(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||bb(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ll(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
- `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function lr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var N,wi=h(()=>{Xr();N=","});function Sb(e={}){return{indent:Math.max(1,e.indent??vi),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Eb(e,t){let r=[],n=!1;return fs(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw S(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function D(e,t){let r=Sb(t),n=Eb(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Oi(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw Ei(l,s.number);u=void 0}if(u!==void 0)return Cb(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Ne(s.content.trim(),s.number);let i={index:0},a=Ci(n,i,0,r),c=n[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Ci(e,t,r,n){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<r)break;if(o.depth>r)throw S(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=xb(e,t,r,n);fl(s,i,a,c,n,o.number)}return s}function xb(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw S(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let m;try{m=Ab(a)}catch(_){if(n.strict)throw Ei(_,s.number);t.index+=1;let g=_i(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(c.trim()!=="")throw S(s.number,"expected keyed map rows");let w=vb(m,e,t,r+1,n);return{key:m.key,quoted:m.keyQuoted,value:w}}if(u!==-1){let m;try{m=Oi(a,i)}catch(_){if(n.strict)throw Ei(_,s.number);t.index+=1;let g=_i(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(m.key===""&&!m.keyQuoted)throw S(s.number,"expected non-empty field name");let w=Ti(m,c,e,t,r,n);return{key:m.key,quoted:m.keyQuoted,value:w}}let[p,d]=Xe(a,s.number);if(p===""&&!d)throw S(s.number,"expected non-empty field name");t.index+=1;let f=_i(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function _i(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ne(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Ci(e,t,r+1,o):{}}function vb(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw S(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw S(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw S(i.number,"expected `key: value`");let[c,u]=Xe(i.content.slice(0,a),i.number);if(c===""&&!u)throw S(i.number,"expected non-empty field name");let l=$t(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw S(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,f)=>{Qr(p,d,Ne(l[f],i.number),s,i.number)}),fl(o,c,u,p,s,i.number),r.index+=1}return o}function Cb(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw S(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Ti(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Ti(e,t,r,n,s,o){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw S(i,"expected tabular rows");return Tb(e,e.fields,r,n,s+1,o)}if(a!==""){let c=$t(a,e.delimiter,i).map(u=>Ne(u,i));if(c.length!==e.len)throw S(i,"array length mismatch");return c}return Ob(e,r,n,s+1,o)}function Tb(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw ki(r,n.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw S(c.number,"blank line inside array");if(!dl(c.content,e.delimiter,c.number))break;let u=$t(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Qr(l,p,Ne(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw ki(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&dl(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return i}function dl(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Ob(e,t,r,n,s){let o=[];for(;o.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw ki(t,r.index);if(a.depth>n)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");o.push(Pb(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw S(i.number,"array length mismatch");return o}function Pb(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=Oi(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Ti(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return Ci(i,{index:0},r+1,n)}return t.index+=1,Ne(o,s.number)}function ki(e,t){let r=e[t]??e[e.length-1];return S(r===void 0?1:r.number,"array length mismatch")}function Oi(e,t){if(t===-1)throw S(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw S(0,"invalid array header");let s,o;try{[s,o]=Xe(r.slice(0,n),0)}catch{throw S(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw S(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw S(0,"invalid array header");let l=Number.parseInt(u,10),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw S(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=pl(d.slice(1,-1),p)}catch(m){throw S(0,m.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw S(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Ab(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw S(0,"invalid keyed map header");let r,n;try{[r,n]=Xe(e.slice(0,t),0)}catch{throw S(0,"invalid keyed map header")}if(r===""&&!n)throw S(0,"expected non-empty field name");let s;try{s=pl(e.slice(t+1,-1),N)}catch(o){throw S(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:N,fields:s}}function pl(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw S(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[p]=Xe(e.slice(l,n),0);if(p==="")throw S(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw S(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw S(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw S(0,"invalid array header")}if(u===0)throw S(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw S(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Ib(r[a],r[c])||Si(r[a],r[c])||Si(r[c],r[a]))throw S(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw S(0,"duplicate key");i.add(c)}return r}function Ib(e,t){return e.length===t.length&&Si(e,t)}function Si(e,t){return t.every((r,n)=>e[n]===r)}function Ei(e,t){return S(t,e.reason??String(e.message))}function fl(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Lb)){Qr(e,i,n,s,o);return}}Qr(e,[t],n,s,o)}function Qr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw S(s,"duplicate key");lr(e,o,r);return}if(i&&!dr(e[o])){if(n.strict)throw S(s,"path expansion conflict");lr(e,o,{})}else i||lr(e,o,{});Qr(e[o],t.slice(1),r,n,s)}function Lb(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Pi(n,void 0,e,0,!1,r):dr(e)?ml(n,e,0,r):n.push(Me(e,N)),n.join("")}function en(e,t){e.push(" ".repeat(t*vi))}function ml(e,t,r,n){for(let[s,o]of Object.entries(t))en(e,r),xi(e,s,o,r,n)}function xi(e,t,r,n,s){if(Array.isArray(r)){Pi(e,t,r,n,!1,s);return}if(dr(r)){let o=s.keyedMapCollapse?Db(r,s):void 0;if(o!==void 0){e.push(Se(t),"{",o.fields.map(Ai).join(N),`}:
15
- `);for(let[i,a]of Object.entries(r))en(e,n+1),e.push(Se(i),": ",o.paths.map(c=>Me(bl(a,c),N)).join(N),`
16
- `);return}e.push(Se(t),`:
17
- `),ml(e,r,n+1,s);return}e.push(Se(t),": ",Me(r,N),`
18
- `)}function Pi(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Se(t),`: []
3
+ var eb=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)eb(e,r,{get:t[r],enumerable:!0})};function rb(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function nb(e=il){return Object.entries(e).map(([t,r])=>rb(t,r)).sort((t,r)=>r.separator.length-t.separator.length)}function sb(e){return/^-\d+(\.\d+)?$/.test(e)}function cr(e){return!(!e||e.startsWith("-")&&!sb(e))}function ds(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function al(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(r=>al(r.trim())):e}function At(e,t){switch(t){case"boolean":return ob(e);case"number":return ib(e);case"array":return e.split(",").map(r=>ds(r.trim()));case"string":default:return e}}function ob(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function ib(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function dt(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function ab(e,t={}){return e.map(r=>{let n=t[r.type];return n?n(r.value):r.value}).join("")}function $(e,t){return{type:e,value:t}}function cb(e){let t=[],r=lb(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",r),$("newline",`
4
+ `),$("newline",`
5
+ `)),e.positional&&e.positional.length>0){t.push($("section-header","Arguments:"),$("newline",`
6
+ `));for(let n of e.positional)if(n.description){let s=n.variadic?`${n.name}...`:n.name;t.push($("indent"," "),$("positional-name",`<${s}>`)),n.required||t.push($("positional-optional"," (optional)")),t.push($("newline",`
7
+ `),$("indent"," "),$("option-description",n.description),$("newline",`
8
+ `))}t.push($("newline",`
9
+ `))}if(e.options&&Object.keys(e.options).length>0){t.push($("section-header","Options:"),$("newline",`
10
+ `));let n=db(e.options);t.push(...n)}return t}function ub(e,t){let r=cb(e);return ab(r,t)}function lb(e){let t=["[options]"];if(e.positional)for(let r of e.positional)r.variadic?t.push(r.required?`<${r.name}...>`:`[${r.name}...]`):t.push(r.required?`<${r.name}>`:`[${r.name}]`);return t.join(" ")}function db(e,t=!1){let r=[],n=[],s=t?"global-option-flag":"option-flag",o=t?"global-option-type":"option-type",i=t?"global-option-default":"option-default",a=t?"global-option-description":"option-description";for(let[u,l]of Object.entries(e)){if(l.hidden)continue;let p=[],d=w=>{p.includes(w)||p.push(w)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let w of l.aliases??[])w.length===1?d(`-${w}`):d(`--${w}`);let f=p.join(", "),m=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;n.push({flags:f,type:m,desc:l.description??"",default:l.default!==void 0?String(l.default):void 0})}let c=Math.max(...n.map(u=>u.flags.length+(u.type?u.type.length+1:0)),20);for(let u of n){let l=u.flags.length+(u.type?u.type.length+1:0),p=" ".repeat(c-l+2);r.push($("indent"," ")),r.push($(s,u.flags)),u.type&&(r.push($("text"," ")),r.push($(o,u.type))),r.push($("text",p)),r.push($(a,u.desc)),u.default!==void 0&&(r.push($("text"," ")),r.push($(i,`(default: ${u.default})`))),r.push($("newline",`
11
+ `))}return r}function cl(e){let t=bb(e.options??{},e.autoShort??!1),r=nb(e.separators??il);return{schema:e,parse(n){return pb(n,e,t,r)},help(){return ub(e,e.formatter)}}}function pb(e,t,r,n){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(n.map(l=>l.to));for(let l of o)s[l]={};let i=0,a=t.positional??[],c=0,u=!1;for(;c<e.length;){let l=e[c];if(t.stopEarly&&i>0){s.rest=e.slice(c);break}if(l==="--"&&!u){u=!0,c++;continue}if(u){if(i<a.length){let d=a[i];if(d.variadic){let f=[];for(;c<e.length;){let m=e[c];f.push(d.type?At(m,d.type):m),c++}s.positional[d.name]=f,i++}else{let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=hb(l,c,e,s,r,t);continue}if(l.startsWith("-")&&l.length>1&&!Sb(l)){c=yb(l,c,e,s,r,t);continue}let p=fb(l,n);if(p){let{key:d,value:f,config:m}=p,w=s,_=w[m.to]??(w[m.to]={});_[d]=m.typed?al(f):dt(f),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let m=[];for(;c<e.length&&!e[c].startsWith("-");){let w=e[c];m.push(d.type?At(w,d.type):w),c++}s.positional[d.name]=m,i++;continue}let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return _b(s,t,r),Rb(s,t,a),kb(s,t,r),s}function fb(e,t){if(tb.test(e))return null;for(let r of t){if(r.prefix&&e.startsWith(r.separator)){let s=e.slice(r.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(mb(i))return{key:i,value:a,config:r}}continue}let n=e.indexOf(r.separator);if(n>0){let s=e.slice(0,n),o=e.slice(n+r.separator.length);if(gb(s,o,r))return{key:s,value:o,config:r}}}return null}function mb(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function gb(e,t,r){return e?r.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((r.separator==="="||r.separator===":=")&&e.includes("/")):!1}function hb(e,t,r,n,s,o){let i=e.slice(2);if(i.startsWith("no-")){let c=i.slice(3),u=s.get(c);if(u?.negatable!==!1&&u?.type==="boolean")return n.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return ps(u,l,t+1,n,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option --${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}return o.strict?n.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(n.options[i]=!0),t+1}function yb(e,t,r,n,s,o){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),c=i.slice(0,a),u=i.slice(a+1),l=hi(c,s);return l?ps(l.name,u,t+1,n,s,o):(o.strict?n.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(n.options[c]=ds(dt(u))),t+1)}if(i.length===1){let a=hi(i,s);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option -${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}if(o.strict)n.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=r[t+1];if(cr(c))return n.options[i]=ds(dt(c)),t+2;n.options[i]=!0}return t+1}for(let a of i){let c=hi(a,s);c?c.type==="boolean"?n.options[c.name]=!0:n.errors.push(`Option -${a} requires a value`):o.strict?n.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(n.options[a]=!0)}return t+1}function ps(e,t,r,n,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?At(dt(t),i.type):dt(t);if(!i.choices.includes(c))return n.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),r}let a=i.type?At(dt(t),i.type):dt(t);if(i.type==="array"){let c=n.options[e];Array.isArray(c)?c.push(...a):n.options[e]=a}else n.options[e]=a}else o.strict?n.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(n.options[e]=ds(dt(t)));return r}function bb(e,t=!1){let r=new Map,n=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of n)o.short&&s.add(o.short);for(let[o,i]of n){let a=i.short??"";t&&!a&&(a=wb(o,s),a&&s.add(a));let c={name:o,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};r.set(o,c);for(let u of c.aliases)r.set(u,c)}return r}function wb(e,t){for(let r of e){if(!/[a-zA-Z]/.test(r))continue;let n=r.toLowerCase();if(!t.has(n))return n;let s=r.toUpperCase();if(!t.has(s))return s}return""}function hi(e,t){for(let r of t.values())if(r.short===e||r.aliases.includes(e))return r}function _b(e,t,r){for(let n of r.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let s=process.env[n.env];e.options[n.name]=n.type?At(s,n.type):s}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of t.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function Rb(e,t,r){if(t.options)for(let[n,s]of Object.entries(t.options))s.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of r)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function kb(e,t,r){for(let n of r.values()){let s=e.options[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}for(let n of t.positional??[]){let s=e.positional[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}}function Sb(e){return/^-\d+(\.\d+)?$/.test(e)}var il,tb,ul=h(()=>{il={"=":"data",":=":{to:"data",typed:!0},":":"meta"},tb=/^[a-z][a-z0-9+.-]*:\/\//i});function Eb(e){let t={};for(let[r,n]of Object.entries(e))t[r]={type:n.kind==="boolean"?"boolean":"string",...r.length===1?{short:r}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return t}function xb(e,t){let r=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){r.set(s,s);for(let i of o.aliases??[])r.set(i,s)}let n=new Map;for(let s=0;s<e.length;s+=1){let o=e[s];if(o==="--")break;let i=o.match(/^--([^=]+)(?:=(.*))?$/)??o.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=r.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&cr(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=n.get(a)??[];u.push(c),n.set(a,u)}return n}function zr(e,t,r={}){let s=cl({options:Eb(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=xb(e,t),a=s.errors.find(c=>/^Option --?\S+ requires a value$/.test(c));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(s.errors.length>0)throw new Error(s.errors[0]);if(r.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new yi(u.length===1?`-${u}`:`--${u}`,Object.keys(t).map(l=>l.length===1?`-${l}`:`--${l}`))}for(let[c,u]of Object.entries(t)){let l=s.options[c];l!==void 0&&(u.kind==="boolean"?o[c]=l:u.type==="array"?o[c]=(i.get(c)??[]).map(p=>u.coerce(p)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Tb(e){let t=new Map;for(let[r,n]of Object.entries(e)){t.set(r,r);for(let s of n.aliases??[])t.set(s,r)}return t}function It(e,t,r={}){let n=Tb(t),s=r.stopAtSeparator??!0,o={},i=[];for(let a=0;a<e.length;a+=1){let c=e[a];if(c==="--"&&s){i.push(...e.slice(a));break}let u=vb.exec(c)??Cb.exec(c),l=u===null?void 0:n.get(u[1]),p=l===void 0?void 0:t[l];if(l===void 0||p===void 0){i.push(c);continue}if(p.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&cr(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(p.type==="array"){let f=o[l]??[];f.push(p.coerce(d)),o[l]=f}else o[l]=p.coerce(d)}return{values:o,rest:i}}function bi(e,t){let[r,...n]=e;if(r!==void 0){for(let[o,i]of Object.entries(t.commands))if(r===o||(i.aliases??[]).includes(r))return{command:o,args:n};if(t.errorOnUnknownCommand&&!r.startsWith("-"))throw new Kr(r,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:n}}var yi,vb,Cb,Kr,wi=h(()=>{ul();yi=class extends Error{flag;known;constructor(t,r){super(`unknown flag '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=r}};vb=/^--([^=]+)(?:=([\s\S]*))?$/,Cb=/^-([^-=])(?:=([\s\S]*))?$/;Kr=class extends Error{token;known;constructor(t,r){super(`unknown command '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=r}}});function dl(e){return Ob.test(e)}var Ob,ll,pl=h(()=>{Ob=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,ll="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});function S(e,t){return new Yr(e,t)}function A(e,t){return new Lt(e,t)}function ur(e){return e instanceof Lt?e:e instanceof Yr?new Lt(e.line,e.reason):new Lt(0,String(e&&e.message?e.message:e))}var Yr,Lt,Xr=h(()=>{Yr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Lt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function fs(e){let t=e.split(`
12
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function De(e){return S(e,"invalid quoted string")}function Ne(e,t){if(e==="")return"";if(e.startsWith('"'))return fl(e,t);if(e.includes('"'))throw De(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Pb(e)?Number(e):e}function Xe(e,t){let r=e.trim();if(r.startsWith('"'))return[fl(r,t),!0];if(r.includes('"')||/\s/.test(r))throw S(t,"expected non-empty field name");return[r,!1]}function fl(e,t){if(e[0]!=='"')throw De(t);let r="",n=1;for(;n<e.length;){let s=e[n];if(n+=1,s==='"'){if(e.slice(n).trim()==="")return r;throw De(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
13
+ `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw De(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw De(t);r+=String.fromCharCode(a),n+=4;break}default:throw De(t)}continue}if(s<" "&&s!==" ")throw De(t);r+=s}throw De(t)}function $t(e,t,r){if(e==="")return[];let n=[],s=0,o=!1,i=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(i){i=!1;continue}c==="\\"&&o?i=!0:c==='"'?o=!o:c===t&&!o&&(n.push(e.slice(s,a).trim()),s=a+1)}if(o||i)throw De(r);return n.push(e.slice(s).trim()),n}function ae(e,t,r){let n=!1,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"&&n)s=!0;else if(i==='"')n=!n;else if(i===t&&!n)return o}if(n||s)throw De(r);return-1}function Pb(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ab(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ib(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw S(0,"number is not representable in TOON");return String(e)}function Zr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Me(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Ib(e);if(typeof e=="string")return $b(e,t);throw S(0,"not a primitive")}function Lb(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Ee(e){return Lb(e)?e:ml(e)}function $b(e,t){return Db(e,t)?ml(e):e}function Db(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ab(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ml(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
+ `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function lr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var M,_i=h(()=>{Xr();M=","});function Nb(e={}){return{indent:Math.max(1,e.indent??Ci),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Mb(e,t){let r=[],n=!1;return fs(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw S(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function L(e,t){let r=Nb(t),n=Mb(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Pi(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw xi(l,s.number);u=void 0}if(u!==void 0)return jb(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Ne(s.content.trim(),s.number);let i={index:0},a=Ti(n,i,0,r),c=n[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Ti(e,t,r,n){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<r)break;if(o.depth>r)throw S(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=Bb(e,t,r,n);yl(s,i,a,c,n,o.number)}return s}function Bb(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw S(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let m;try{m=Ub(a)}catch(_){if(n.strict)throw xi(_,s.number);t.index+=1;let g=Ri(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(c.trim()!=="")throw S(s.number,"expected keyed map rows");let w=Fb(m,e,t,r+1,n);return{key:m.key,quoted:m.keyQuoted,value:w}}if(u!==-1){let m;try{m=Pi(a,i)}catch(_){if(n.strict)throw xi(_,s.number);t.index+=1;let g=Ri(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(m.key===""&&!m.keyQuoted)throw S(s.number,"expected non-empty field name");let w=Oi(m,c,e,t,r,n);return{key:m.key,quoted:m.keyQuoted,value:w}}let[p,d]=Xe(a,s.number);if(p===""&&!d)throw S(s.number,"expected non-empty field name");t.index+=1;let f=Ri(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function Ri(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ne(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Ti(e,t,r+1,o):{}}function Fb(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw S(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw S(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw S(i.number,"expected `key: value`");let[c,u]=Xe(i.content.slice(0,a),i.number);if(c===""&&!u)throw S(i.number,"expected non-empty field name");let l=$t(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw S(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,f)=>{Qr(p,d,Ne(l[f],i.number),s,i.number)}),yl(o,c,u,p,s,i.number),r.index+=1}return o}function jb(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw S(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Oi(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Oi(e,t,r,n,s,o){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw S(i,"expected tabular rows");return Hb(e,e.fields,r,n,s+1,o)}if(a!==""){let c=$t(a,e.delimiter,i).map(u=>Ne(u,i));if(c.length!==e.len)throw S(i,"array length mismatch");return c}return Gb(e,r,n,s+1,o)}function Hb(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Si(r,n.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw S(c.number,"blank line inside array");if(!gl(c.content,e.delimiter,c.number))break;let u=$t(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Qr(l,p,Ne(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Si(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&gl(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return i}function gl(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Gb(e,t,r,n,s){let o=[];for(;o.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw Si(t,r.index);if(a.depth>n)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");o.push(Wb(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw S(i.number,"array length mismatch");return o}function Wb(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=Pi(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Oi(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return Ti(i,{index:0},r+1,n)}return t.index+=1,Ne(o,s.number)}function Si(e,t){let r=e[t]??e[e.length-1];return S(r===void 0?1:r.number,"array length mismatch")}function Pi(e,t){if(t===-1)throw S(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw S(0,"invalid array header");let s,o;try{[s,o]=Xe(r.slice(0,n),0)}catch{throw S(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw S(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw S(0,"invalid array header");let l=Number.parseInt(u,10),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw S(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=hl(d.slice(1,-1),p)}catch(m){throw S(0,m.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw S(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Ub(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw S(0,"invalid keyed map header");let r,n;try{[r,n]=Xe(e.slice(0,t),0)}catch{throw S(0,"invalid keyed map header")}if(r===""&&!n)throw S(0,"expected non-empty field name");let s;try{s=hl(e.slice(t+1,-1),M)}catch(o){throw S(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:M,fields:s}}function hl(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw S(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[p]=Xe(e.slice(l,n),0);if(p==="")throw S(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw S(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw S(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw S(0,"invalid array header")}if(u===0)throw S(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw S(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Jb(r[a],r[c])||Ei(r[a],r[c])||Ei(r[c],r[a]))throw S(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw S(0,"duplicate key");i.add(c)}return r}function Jb(e,t){return e.length===t.length&&Ei(e,t)}function Ei(e,t){return t.every((r,n)=>e[n]===r)}function xi(e,t){return S(t,e.reason??String(e.message))}function yl(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(qb)){Qr(e,i,n,s,o);return}}Qr(e,[t],n,s,o)}function Qr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw S(s,"duplicate key");lr(e,o,r);return}if(i&&!dr(e[o])){if(n.strict)throw S(s,"path expansion conflict");lr(e,o,{})}else i||lr(e,o,{});Qr(e[o],t.slice(1),r,n,s)}function qb(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Ai(n,void 0,e,0,!1,r):dr(e)?bl(n,e,0,r):n.push(Me(e,M)),n.join("")}function en(e,t){e.push(" ".repeat(t*Ci))}function bl(e,t,r,n){for(let[s,o]of Object.entries(t))en(e,r),vi(e,s,o,r,n)}function vi(e,t,r,n,s){if(Array.isArray(r)){Ai(e,t,r,n,!1,s);return}if(dr(r)){let o=s.keyedMapCollapse?Kb(r,s):void 0;if(o!==void 0){e.push(Ee(t),"{",o.fields.map(Ii).join(M),`}:
15
+ `);for(let[i,a]of Object.entries(r))en(e,n+1),e.push(Ee(i),": ",o.paths.map(c=>Me(kl(a,c),M)).join(M),`
16
+ `);return}e.push(Ee(t),`:
17
+ `),bl(e,r,n+1,s);return}e.push(Ee(t),": ",Me(r,M),`
18
+ `)}function Ai(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Ee(t),`: []
19
19
  `):s?e.push(`[0]:
20
20
  `):e.push(`[]
21
- `);return}if(r.every(Zr)){Ri(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Me(a,N)).join(N)),e.push(`
22
- `);return}let i=s?void 0:gl(r,o);if(i!==void 0){Ri(e,t,r.length,i.fields),e.push(`
23
- `);for(let a of r)en(e,n+1),e.push(i.paths.map(c=>Me(bl(a,c),N)).join(N)),e.push(`
24
- `);return}Ri(e,t,r.length,void 0),e.push(`
25
- `);for(let a of r)en(e,n+1),$b(e,a,n+1,o)}function $b(e,t,r,n){if(Array.isArray(t)){e.push("- "),Pi(e,void 0,t,r,!0,n);return}if(dr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
- `);return}e.push("- "),xi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))en(e,r+1),xi(e,o,i,r+1,n);return}e.push("- ",Me(t,N),`
27
- `)}function Ri(e,t,r,n){t!==void 0&&e.push(Se(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ai).join(N),"}"),e.push(":")}function gl(e,t){let r=hl(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:yl(r)}}function Db(e,t){let r=Object.values(e);if(!(r.length<2))return gl(r,t)}function hl(e,t){let r=e[0]?.value;if(!dr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!dr(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Zr(a)))continue;if(!t.nestedTabularHeaders)return;let i=hl(o,t);if(i===void 0)return;s.children=i}return n}}function yl(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:yl(r.children,n)})}function bl(e,t){let r=e;for(let n of t)r=r[n];return r}function Ai(e){return e.children===void 0?Se(e.key):`${Se(e.key)}{${e.children.map(Ai).join(N)}}`}var vi,tn=h(()=>{Xr();wi();vi=2});var wl=h(()=>{tn()});function Mb(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function Pl(e,t){if(!Ol.test(e))throw A(t,"invalid tag")}function Bb(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ol.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Fb(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Cl.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?N:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),Pl(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),p;try{p=$t(l,a,t).map(d=>Xe(d,t)[0])}catch(d){throw ur(d)}if(p.length===0||p.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function jb(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function _l(e,t,r,n){let s;try{s=$t(e,t,n)}catch(o){throw ur(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Ne(o,n)}catch(i){throw ur(i)}return s}function Hb(e,t,r){let n={};return e.forEach((s,o)=>{try{lr(n,s,Ne(t[o],r))}catch(i){throw ur(i)}}),n}function Gb(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=Mb(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=Fb(e,t);if(s!==null)return s.continuation?(jb(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Bb(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:_l(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:_l(e,r.delimiter,r.fields.length,t)}}function Ub(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,m){let w=o.at(-1);if(w!==void 0&&w.lane===f.lane&&w.delimiter===f.delimiter&&w.fieldText===f.fieldText){w.rows.push(m);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[m]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(f,m,w){let _=n.get(f);if(_===void 0){if(n.size>=Tl)throw A(w,"too many tagged lanes");_={segments:[],current:null},n.set(f,_),r.push(f)}else _.current!==null&&_.segments.push(_.current);_.current={lane:f,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[]},_.delimiter=m.delimiter,_.fields=m.fields,_.fieldText=m.fieldText}if(fs(e).forEach((f,m)=>{let w=m+1;if(f==="")return;let _=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},g=Gb(f,w,_);if(g.kind==="trailer"){l(),i=null;return}if(g.kind!=="continuation"){if(g.kind==="tag-header"){c=!0,p(g.header.tag,g.header,w);return}if(g.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:g.header.delimiter,fields:g.header.fields,fieldText:g.header.fieldText,rows:[]};return}if(g.kind==="tagged-row"){c=!0;let y=n.get(g.tag).current;y.rows.push(g.cells),u(y,g.cells);return}if(i===null)throw A(w,"row before header");i.rows.push(g.cells),u(i,g.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let m=n.get(f);d.push(...m.segments),m.current!==null&&d.push(m.current)}return t.preserveInterleaving===!0?o:d}function Dt(e){return Ub(e).flatMap(t=>t.rows.map(r=>Hb(t.fields,r,0)))}function Wb(e){if(!Cl.includes(e))throw A(0,"invalid header delimiter")}function Rl(e,t,r=!1){return`[${`${r?"~":""}${e===N?"":e}`}]{${t}}:
28
- `}function kl(e,t){return`[]<${e}>{${t}}:
29
- `}function Ii(e,t){return t.map(Se).join(e)}function Jb(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Xe(String(t),0)}catch(n){throw ur(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function Sl(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function El(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function qb(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function xl(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Zr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function Vb(e){return JSON.stringify([...e].sort())}function vl(e,t){let r=Vb(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Nt({delimiter:e=N,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Wb(e),El(r),El(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
30
- `,m=()=>qb(d,c,u)?(c=0,u=0,Rl(e,o,!0)):"",w=_=>{Pl(_,0);let g=l.get(_);if(g===void 0){if(l.size>=Tl)throw A(0,"too many tagged lanes");g={fields:null,fieldsByShape:new Map},l.set(_,g)}return g};return{push(_){if(p)throw A(0,"TOONL encoder is closed");let g=vl(xl(_),i),y="";(s===null||s.length!==g.length||s.some((T,B)=>T!==g[B]))&&(y+=f(),s=g,o=Ii(e,s),a=0,c=0,u=0,y+=Rl(e,o));let b=s.map(T=>Me(_[T],e));y+=m();let R=`${b.join(e)}
31
- `;return y+=R,a+=1,c+=1,u+=R.length,y},declareLane(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=Jb(g),b=Ii(N,y),R=w(_);return Sl(R.fields,y)?"":(R.fields=y,kl(_,b))},pushTagged(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=w(_),b=vl(xl(g),y.fieldsByShape),R=Ii(N,b),T=b.map(_e=>Me(g[_e],N)),B="";return Sl(y.fields,b)||(y.fields=b,B+=kl(_,R)),`${B}${_}:${T.join(N)}
32
- `},end(){return p?"":(p=!0,f())}}}var Cl,Tl,Ol,kP,SP,Al=h(()=>{Xr();tn();wi();Cl=[N,"|"," "],Tl=8,Ol=/^[A-Za-z0-9_-]+$/,kP=new TextEncoder,SP=new TextDecoder});var M=h(()=>{Xr();tn();tn();wl();Al()});function zb(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Li(e))}
33
- `)}function Li(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??zb(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Yb(e.diagnostics,3)),t}function Ee(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&al(s)?{command:e,category:"transient",error:rn(s)||"GitHub API rate limit exceeded",help:il,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:rn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:rn(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:rn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:rn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Il(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function rn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Yb(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
- `).trim()}var Be=h(()=>{"use strict";cl();M()});function hs(e){let t={app:e,version:aw(fr("__RED_BUILD_VERSION__",()=>"3.0.4")??"0.0.0-dev"),gitSha:fr("__RED_BUILD_GIT_SHA__",()=>"93051f3eda65f6e0cd40c92339034c3e119295e4")??"unknown",buildTime:fr("__RED_BUILD_TIME__",()=>"2026-07-31T00:19:51-03:00")??"unknown",bundleAsset:fr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=fr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=fr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function aw(e){return e.startsWith("v")?e.slice(1):e}function Hl(e){return`${e.app} ${e.version} ${e.gitSha}`}function fr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Di=h(()=>{});import{isAbsolute as cw,join as Ze,resolve as Ni}from"node:path";function dw(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Ul(e){return Ze(dw(e),Gl)}function Wl(e){return Ze(Ul(e),"state")}function Jl(e){return Ze(Ul(e),"tmp")}function U(e){return Ze(Wl(e),"rsp")}function pw(e){return Ze(Wl(e),"red-skills.rdb")}function fw(e){return Ze(Jl(e),"red-skills.rdb")}function Kl(e,t){let r=pw(e);if(t(r))return r;let n=fw(e);if(t(n))throw mw();return r}function mw(){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 zl(e){return Ze(Jl(e),"waits")}function Yl(e){let t=e.overrideEnvVars??Mi;for(let n of t){let s=e.env[n];if(s)return cw(s)?s:Ni(e.startDir,s)}let r=Ni(e.startDir);for(;;){if(e.exists(Ze(r,Gl)))return r;let n=Ze(r,".."),s=Ni(n);if(s===r)break;r=s}return e.startDir}var Gl,uw,lw,Mi,ql,Vl,fe=h(()=>{Gl=".red",uw="MEMORY_ROOT",lw="RED_BRAIN_ROOT",Mi=[uw,lw];ql=".red/state/red-skills.rdb";Vl=".red/tmp/red-skills.rdb"});function W(e){return C(e,{keyedMapCollapse:!0})}var gw,hw,sA,Qe=h(()=>{M();fe();gw=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],hw=[{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"}],sA=[...gw,...hw]});function nn(e){let{values:t,rest:r}=It(e,{query:Xl.query},Zl);return{argv:r,query:t.query?.trim()||void 0}}function Ql(e){let{values:t,rest:r}=It(e,Xl,Zl);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function yw(e,t){if(!t)return!0;let r=Bi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>yw(r,t)):[...e]}function et(e,t){return Fi(e,t,{includeLegacyHelp:!0})}function Fi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Bi(e){return Array.isArray(e)?e.map(Bi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Bi).join(" "):String(e??"")}var Xl,Zl,sn=h(()=>{"use strict";bi();Xl={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Zl={stopAtSeparator:!1}});var Es={};F(Es,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>ys,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>bs,DEFAULT_RSP_OVERHEAD_CEILING:()=>xe,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>_s,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Rs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ws,RSP_OVERHEAD_FAMILIES:()=>Ew,RSP_OVERHEAD_LEDGER_FILE:()=>rd,RSP_OVERHEAD_SCHEMA_VERSION:()=>nd,classifyOverheadSample:()=>Gi,noteChildProcessMs:()=>od,noteSelfStateBytesRead:()=>cn,overheadCounters:()=>un,overheadFamilyDisabled:()=>Wi,overheadHealth:()=>ft,overheadLedgerPath:()=>Ui,overheadMsOf:()=>sd,overheadTelemetryFields:()=>ks,readOverheadLedger:()=>on,readSelfStateFile:()=>Ss,readSelfStateFileSync:()=>Cw,recordOverheadSample:()=>an,resetOverheadCounters:()=>vw,resetOverheadLedger:()=>xw,startChildProcessTimer:()=>re});import{existsSync as bw,mkdirSync as ww,readFileSync as ed,renameSync as _w,writeFileSync as Rw}from"node:fs";import{readFile as kw}from"node:fs/promises";import{dirname as Sw,join as td}from"node:path";function sd(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Hi(t)):0}function Gi(e,t=xe){let r=sd(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function ks(e,t=xe){let r=Gi(e,t);return{wrapper_ms:Hi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Hi(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:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Ui(e){return td(U(e),rd)}function on(e){try{let t=ed(Ui(e),"utf8"),r=Aw(t);if(Iw(r))return r}catch{}return{version:1,families:{}}}function an(e,t,r=xe,n=Date.now()){let s=on(e),o=Gi(t,r),i=s.families[t.family]??Pw(t.family,n),a=Vi(i,n)?id(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(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=Tw(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,ad(e,s),u}function Wi(e,t,r=Date.now()){let n=on(e).families[t];return!n?.disabled||Vi(n,r)?null:n}function xw(e,t){let r=on(e);return t?delete r.families[t]:r.families={},ad(e,r),r}function ft(e,t=xe,r=Date.now()){let n=Object.values(on(e).families).map(a=>Vi(a,r)?id(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:nd,verdict:i,summary:Ow(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function cn(e){Number.isFinite(e)&&e>0&&(Ji+=e)}function od(e){Number.isFinite(e)&&e>0&&(qi+=e)}function un(){return{selfStateBytesRead:Ji,childMs:qi}}function vw(){Ji=0,qi=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,od(Number(process.hrtime.bigint()-e)/1e6))}}async function Ss(e){let t=await kw(e,"utf8");return cn(Buffer.byteLength(t)),t}function Cw(e){let t=ed(e,"utf8");return cn(Buffer.byteLength(t)),t}function Tw(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.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 Ow(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function Vi(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function id(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function Pw(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 ad(e,t){try{let r=Ui(e);if(!bw(td(e,".red")))return;ww(Sw(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;Rw(n,`${C(t)}
35
- `,{encoding:"utf8",mode:384}),_w(n,r)}catch{}}function Aw(e){try{return JSON.parse(e)}catch{return D(e)}}function Iw(e){return!ji(e)||e.version!==1||!ji(e.families)?!1:Object.values(e.families).every(Lw)}function Lw(e){return ji(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function ji(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var rd,nd,ys,bs,ws,_s,Rs,Ew,xe,Ji,qi,J=h(()=>{"use strict";fe();M();rd="overhead-budget.toon",nd="red.rsp.overhead.v1",ys=250,bs=1024*1024,ws=64*1024,_s=3,Rs=6*60*60*1e3,Ew=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],xe={maxOverheadMs:ys,maxSelfStateBytes:bs,netLossFloorBytes:ws,consecutiveBreaches:_s,cooldownMs:Rs};Ji=0,qi=0});import{createHash as $w}from"node:crypto";import{constants as Ki}from"node:fs";import{mkdir as Dw,open as Nw}from"node:fs/promises";import{createConnection as Mw}from"node:net";import{tmpdir as Bw}from"node:os";import{dirname as Fw,join as zi}from"node:path";async function cd(e,t,r="resident server"){let n=e.timeoutMs??1e3;return await new Promise((s,o)=>{let i=Mw(e.socketPath),a=!1,c="",u=setTimeout(()=>{l(()=>o(new Error(`${r} timed out`))),i.destroy()},n);function l(p){a||(a=!0,clearTimeout(u),p())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
36
- `)}),i.on("data",p=>{c+=p.toString("utf8");let d=c.indexOf(`
37
- `);if(d<0)return;let f=c.slice(0,d);l(()=>{try{s(JSON.parse(f))}catch(m){o(m)}}),i.end()}),i.on("error",p=>l(()=>o(p))),i.on("close",()=>{a||l(()=>o(new Error(`${r} closed without response`)))})})}async function ud(e){await Dw(Fw(e),{recursive:!0,mode:448});try{return await Nw(e,Ki.O_CREAT|Ki.O_EXCL|Ki.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Yi(e,t=1e3){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function ld(e){let t=e.env??process.env,r=$w("sha256").update(e.key).digest("hex").slice(0,20),n=t.XDG_RUNTIME_DIR;if(n){let o=zi(n,"red-skills",r);if(zi(o,e.socketFileName).length<jw)return o}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid");return zi(Bw(),`red-skills-${s}`,r)}var jw,Xi=h(()=>{jw=108});async function mr(e,t){return await cd(e,t,"resident rsp server")}var Zi=h(()=>{Xi()});var dd=h(()=>{"use strict";Zi()});import{existsSync as Hw,readdirSync as Gw}from"node:fs";import{homedir as Uw}from"node:os";import{basename as ea,dirname as Qi,join as me,resolve as xs}from"node:path";function Ww(e){return"command"in e}function vs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??Hw,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&Vw(i))return a(xs(i),"caller-entry");let c=[];for(let[u,l]of zw(i,t.rootDir,r,t.listDir??Qw))if(c.push(u),n(u))return a(u,l);return{diagnostic:tt,searched:c,...i?{callerEntry:xs(i)}:{}}}function fd(e={},t={}){let r=vs(e,t);if(Ww(r))return r;throw new gr(r)}function Vw(e){let t=ea(e);return t===Bt||ta.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:Kw(xs(e))}function Kw(e){let t=Qi(e);for(let r=0;r<4;r++){if(ea(t)==="rsp")return!0;let n=Qi(t);if(n===t)return!1;t=n}return!1}function*zw(e,t,r,n){if(e){let o=Qi(xs(e));yield[me(o,Bt),"caller-sibling-bundle"];let i=Jw.exec(ea(e));i&&(yield[me(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[me(o,"..","dist",Bt),"caller-sibling-bundle"]}for(let o of qw){let i=r[o];i&&(yield[me(i,"dist",Bt),"plugin-root-bundle"],yield[me(i,"..","..","dist",Bt),"plugin-root-bundle"])}t&&(yield[me(t,"dist",Bt),"repo-bundle"],yield[me(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[me(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=Yw(r);yield[me(s,Bt),"bundle-cache"];for(let o of Xw(s,n))yield[me(s,o),"bundle-cache"]}function Yw(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||me(e.HOME||Uw(),".cache");return me(t,"red-skills","bundles")}function Xw(e,t){return t(e).filter(r=>ta.test(r)).sort((r,n)=>Zw(pd(n),pd(r)))}function pd(e){return ta.exec(e)?.[1]??""}function Zw(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function Qw(e){try{return Gw(e)}catch{return[]}}var tt,gr,Bt,Jw,ta,qw,ra=h(()=>{tt="rsp-resident-entry-unresolved";gr=class extends Error{code=tt;searched;callerEntry;constructor(t){super(`${tt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
21
+ `);return}if(r.every(Zr)){ki(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Me(a,M)).join(M)),e.push(`
22
+ `);return}let i=s?void 0:wl(r,o);if(i!==void 0){ki(e,t,r.length,i.fields),e.push(`
23
+ `);for(let a of r)en(e,n+1),e.push(i.paths.map(c=>Me(kl(a,c),M)).join(M)),e.push(`
24
+ `);return}ki(e,t,r.length,void 0),e.push(`
25
+ `);for(let a of r)en(e,n+1),Vb(e,a,n+1,o)}function Vb(e,t,r,n){if(Array.isArray(t)){e.push("- "),Ai(e,void 0,t,r,!0,n);return}if(dr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
+ `);return}e.push("- "),vi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))en(e,r+1),vi(e,o,i,r+1,n);return}e.push("- ",Me(t,M),`
27
+ `)}function ki(e,t,r,n){t!==void 0&&e.push(Ee(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ii).join(M),"}"),e.push(":")}function wl(e,t){let r=_l(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Rl(r)}}function Kb(e,t){let r=Object.values(e);if(!(r.length<2))return wl(r,t)}function _l(e,t){let r=e[0]?.value;if(!dr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!dr(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Zr(a)))continue;if(!t.nestedTabularHeaders)return;let i=_l(o,t);if(i===void 0)return;s.children=i}return n}}function Rl(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Rl(r.children,n)})}function kl(e,t){let r=e;for(let n of t)r=r[n];return r}function Ii(e){return e.children===void 0?Ee(e.key):`${Ee(e.key)}{${e.children.map(Ii).join(M)}}`}var Ci,tn=h(()=>{Xr();_i();Ci=2});var Sl=h(()=>{tn()});function Yb(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function $l(e,t){if(!Ll.test(e))throw A(t,"invalid tag")}function Xb(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ll.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Zb(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Al.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?M:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),$l(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),p;try{p=$t(l,a,t).map(d=>Xe(d,t)[0])}catch(d){throw ur(d)}if(p.length===0||p.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Qb(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function El(e,t,r,n){let s;try{s=$t(e,t,n)}catch(o){throw ur(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Ne(o,n)}catch(i){throw ur(i)}return s}function ew(e,t,r){let n={};return e.forEach((s,o)=>{try{lr(n,s,Ne(t[o],r))}catch(i){throw ur(i)}}),n}function tw(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=Yb(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=Zb(e,t);if(s!==null)return s.continuation?(Qb(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Xb(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:El(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:El(e,r.delimiter,r.fields.length,t)}}function rw(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,m){let w=o.at(-1);if(w!==void 0&&w.lane===f.lane&&w.delimiter===f.delimiter&&w.fieldText===f.fieldText){w.rows.push(m);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[m]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(f,m,w){let _=n.get(f);if(_===void 0){if(n.size>=Il)throw A(w,"too many tagged lanes");_={segments:[],current:null},n.set(f,_),r.push(f)}else _.current!==null&&_.segments.push(_.current);_.current={lane:f,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[]},_.delimiter=m.delimiter,_.fields=m.fields,_.fieldText=m.fieldText}if(fs(e).forEach((f,m)=>{let w=m+1;if(f==="")return;let _=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},g=tw(f,w,_);if(g.kind==="trailer"){l(),i=null;return}if(g.kind!=="continuation"){if(g.kind==="tag-header"){c=!0,p(g.header.tag,g.header,w);return}if(g.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:g.header.delimiter,fields:g.header.fields,fieldText:g.header.fieldText,rows:[]};return}if(g.kind==="tagged-row"){c=!0;let y=n.get(g.tag).current;y.rows.push(g.cells),u(y,g.cells);return}if(i===null)throw A(w,"row before header");i.rows.push(g.cells),u(i,g.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let m=n.get(f);d.push(...m.segments),m.current!==null&&d.push(m.current)}return t.preserveInterleaving===!0?o:d}function Dt(e){return rw(e).flatMap(t=>t.rows.map(r=>ew(t.fields,r,0)))}function nw(e){if(!Al.includes(e))throw A(0,"invalid header delimiter")}function xl(e,t,r=!1){return`[${`${r?"~":""}${e===M?"":e}`}]{${t}}:
28
+ `}function vl(e,t){return`[]<${e}>{${t}}:
29
+ `}function Li(e,t){return t.map(Ee).join(e)}function sw(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Xe(String(t),0)}catch(n){throw ur(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function Cl(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Tl(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function ow(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Ol(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Zr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function iw(e){return JSON.stringify([...e].sort())}function Pl(e,t){let r=iw(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Nt({delimiter:e=M,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){nw(e),Tl(r),Tl(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
30
+ `,m=()=>ow(d,c,u)?(c=0,u=0,xl(e,o,!0)):"",w=_=>{$l(_,0);let g=l.get(_);if(g===void 0){if(l.size>=Il)throw A(0,"too many tagged lanes");g={fields:null,fieldsByShape:new Map},l.set(_,g)}return g};return{push(_){if(p)throw A(0,"TOONL encoder is closed");let g=Pl(Ol(_),i),y="";(s===null||s.length!==g.length||s.some((T,B)=>T!==g[B]))&&(y+=f(),s=g,o=Li(e,s),a=0,c=0,u=0,y+=xl(e,o));let b=s.map(T=>Me(_[T],e));y+=m();let R=`${b.join(e)}
31
+ `;return y+=R,a+=1,c+=1,u+=R.length,y},declareLane(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=sw(g),b=Li(M,y),R=w(_);return Cl(R.fields,y)?"":(R.fields=y,vl(_,b))},pushTagged(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=w(_),b=Pl(Ol(g),y.fieldsByShape),R=Li(M,b),T=b.map(Re=>Me(g[Re],M)),B="";return Cl(y.fields,b)||(y.fields=b,B+=vl(_,R)),`${B}${_}:${T.join(M)}
32
+ `},end(){return p?"":(p=!0,f())}}}var Al,Il,Ll,MP,BP,Dl=h(()=>{Xr();tn();_i();Al=[M,"|"," "],Il=8,Ll=/^[A-Za-z0-9_-]+$/,MP=new TextEncoder,BP=new TextDecoder});var N=h(()=>{Xr();tn();tn();Sl();Dl()});function cw(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C($i(e))}
33
+ `)}function $i(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??cw(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=uw(e.diagnostics,3)),t}function xe(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&dl(s)?{command:e,category:"transient",error:rn(s)||"GitHub API rate limit exceeded",help:ll,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:rn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:rn(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:rn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:rn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Nl(e,t,r,n){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function rn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function uw(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
+ `).trim()}var Be=h(()=>{"use strict";pl();N()});function hs(e){let t={app:e,version:_w(fr("__RED_BUILD_VERSION__",()=>"3.1.1")??"0.0.0-dev"),gitSha:fr("__RED_BUILD_GIT_SHA__",()=>"59ad8458c68e4e1ce174a830046cfc163bd2047c")??"unknown",buildTime:fr("__RED_BUILD_TIME__",()=>"2026-08-01T01:32:58Z")??"unknown",bundleAsset:fr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=fr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=fr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function _w(e){return e.startsWith("v")?e.slice(1):e}function Jl(e){return`${e.app} ${e.version} ${e.gitSha}`}function fr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Ni=h(()=>{});import{isAbsolute as Rw,join as Ze,resolve as Mi}from"node:path";function Ew(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Vl(e){return Ze(Ew(e),ql)}function Kl(e){return Ze(Vl(e),"state")}function zl(e){return Ze(Vl(e),"tmp")}function W(e){return Ze(Kl(e),"rsp")}function xw(e){return Ze(Kl(e),"red-skills.rdb")}function vw(e){return Ze(zl(e),"red-skills.rdb")}function Zl(e,t){let r=xw(e);if(t(r))return r;let n=vw(e);if(t(n))throw Cw();return r}function Cw(){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 Ql(e){return Ze(zl(e),"waits")}function ed(e){let t=e.overrideEnvVars??Bi;for(let n of t){let s=e.env[n];if(s)return Rw(s)?s:Mi(e.startDir,s)}let r=Mi(e.startDir);for(;;){if(e.exists(Ze(r,ql)))return r;let n=Ze(r,".."),s=Mi(n);if(s===r)break;r=s}return e.startDir}var ql,kw,Sw,Bi,Yl,Xl,me=h(()=>{ql=".red",kw="MEMORY_ROOT",Sw="RED_BRAIN_ROOT",Bi=[kw,Sw];Yl=".red/state/red-skills.rdb";Xl=".red/tmp/red-skills.rdb"});function U(e){return C(e,{keyedMapCollapse:!0})}var Tw,Ow,wA,Qe=h(()=>{N();me();Tw=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Ow=[{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"}],wA=[...Tw,...Ow]});function nn(e){let{values:t,rest:r}=It(e,{query:td.query},rd);return{argv:r,query:t.query?.trim()||void 0}}function nd(e){let{values:t,rest:r}=It(e,td,rd);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function Pw(e,t){if(!t)return!0;let r=Fi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>Pw(r,t)):[...e]}function et(e,t){return ji(e,t,{includeLegacyHelp:!0})}function ji(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Fi(e){return Array.isArray(e)?e.map(Fi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Fi).join(" "):String(e??"")}var td,rd,sn=h(()=>{"use strict";wi();td={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},rd={stopAtSeparator:!1}});var Es={};F(Es,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>ys,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>bs,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>_s,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Rs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ws,RSP_OVERHEAD_FAMILIES:()=>Mw,RSP_OVERHEAD_LEDGER_FILE:()=>id,RSP_OVERHEAD_SCHEMA_VERSION:()=>ad,classifyOverheadSample:()=>Wi,noteChildProcessMs:()=>ud,noteSelfStateBytesRead:()=>cn,overheadCounters:()=>un,overheadFamilyDisabled:()=>Ji,overheadHealth:()=>ft,overheadLedgerPath:()=>Ui,overheadMsOf:()=>cd,overheadTelemetryFields:()=>ks,readOverheadLedger:()=>on,readSelfStateFile:()=>Ss,readSelfStateFileSync:()=>jw,recordOverheadSample:()=>an,resetOverheadCounters:()=>Fw,resetOverheadLedger:()=>Bw,startChildProcessTimer:()=>re});import{existsSync as Aw,mkdirSync as Iw,readFileSync as sd,renameSync as Lw,writeFileSync as $w}from"node:fs";import{readFile as Dw}from"node:fs/promises";import{dirname as Nw,join as od}from"node:path";function cd(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Gi(t)):0}function Wi(e,t=ve){let r=cd(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function ks(e,t=ve){let r=Wi(e,t);return{wrapper_ms:Gi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Gi(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:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Ui(e){return od(W(e),id)}function on(e){try{let t=sd(Ui(e),"utf8"),r=Uw(t);if(Jw(r))return r}catch{}return{version:1,families:{}}}function an(e,t,r=ve,n=Date.now()){let s=on(e),o=Wi(t,r),i=s.families[t.family]??Ww(t.family,n),a=Ki(i,n)?ld(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(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=Hw(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,dd(e,s),u}function Ji(e,t,r=Date.now()){let n=on(e).families[t];return!n?.disabled||Ki(n,r)?null:n}function Bw(e,t){let r=on(e);return t?delete r.families[t]:r.families={},dd(e,r),r}function ft(e,t=ve,r=Date.now()){let n=Object.values(on(e).families).map(a=>Ki(a,r)?ld(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:ad,verdict:i,summary:Gw(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function cn(e){Number.isFinite(e)&&e>0&&(qi+=e)}function ud(e){Number.isFinite(e)&&e>0&&(Vi+=e)}function un(){return{selfStateBytesRead:qi,childMs:Vi}}function Fw(){qi=0,Vi=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,ud(Number(process.hrtime.bigint()-e)/1e6))}}async function Ss(e){let t=await Dw(e,"utf8");return cn(Buffer.byteLength(t)),t}function jw(e){let t=sd(e,"utf8");return cn(Buffer.byteLength(t)),t}function Hw(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.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 Gw(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function Ki(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function ld(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function Ww(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 dd(e,t){try{let r=Ui(e);if(!Aw(od(e,".red")))return;Iw(Nw(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;$w(n,`${C(t)}
35
+ `,{encoding:"utf8",mode:384}),Lw(n,r)}catch{}}function Uw(e){try{return JSON.parse(e)}catch{return L(e)}}function Jw(e){return!Hi(e)||e.version!==1||!Hi(e.families)?!1:Object.values(e.families).every(qw)}function qw(e){return Hi(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Hi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var id,ad,ys,bs,ws,_s,Rs,Mw,ve,qi,Vi,J=h(()=>{"use strict";me();N();id="overhead-budget.toon",ad="red.rsp.overhead.v1",ys=250,bs=1024*1024,ws=64*1024,_s=3,Rs=6*60*60*1e3,Mw=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:ys,maxSelfStateBytes:bs,netLossFloorBytes:ws,consecutiveBreaches:_s,cooldownMs:Rs};qi=0,Vi=0});function md(e){return e.trimStart().startsWith("{")?"json":"toon"}function Yi(e){let t=0;for(;e[t]===`
36
+ `||e[t]==="\r";)t+=1;let r=e.slice(t);if(r==="")return null;let n=md(r);if(n==="json"){let o=r.indexOf(`
37
+ `);return o<0?null:{frame:r.slice(0,o),dialect:n,rest:r.slice(o+1)}}let s=r.indexOf(`
38
+
39
+ `);return s<0?null:{frame:r.slice(0,s+1),dialect:n,rest:r.slice(s+2)}}function Xi(e){let t=md(e)==="json"?zi:pd,r=t===zi?pd:zi;try{return t(e)}catch(n){try{return r(e)}catch{throw n}}}function zi(e){return JSON.parse(e)}function pd(e){return L(e)}function Zi(e,t){if(t==="toon"){let r=Kw(e);if(r!==null)return r.endsWith(`
40
+ `)?`${r}
41
+ `:`${r}
42
+
43
+ `}return`${JSON.stringify(e)}
44
+ `}function Kw(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let r=C(JSON.parse(t));return r.trim()===""?null:r}catch{return null}}function gd(e,t){return!fd(e)||!fd(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function fd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yd(e){return hd.has(e)?"json":Vw}function bd(e){hd.add(e)}var Vw,hd,wd=h(()=>{N();Vw="toon";hd=new Set});import{createHash as zw}from"node:crypto";import{constants as Qi}from"node:fs";import{mkdir as Yw,open as Xw}from"node:fs/promises";import{createConnection as Zw}from"node:net";import{tmpdir as Qw}from"node:os";import{dirname as e_,join as ea}from"node:path";async function Rd(e,t,r="resident server"){let n=e.wire,s=n??yd(e.socketPath),o=await _d(e,t,r,s);return n||s==="json"||!gd(t,o)?o:(bd(e.socketPath),await _d(e,t,r,"json"))}async function _d(e,t,r,n){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=Zw(e.socketPath),c=!1,u="",l=setTimeout(()=>{p(()=>i(new Error(`${r} timed out`))),a.destroy()},s);function p(d){c||(c=!0,clearTimeout(l),d())}a.on("connect",()=>{a.write(Zi(t,n))}),a.on("data",d=>{u+=d.toString("utf8");let f=Yi(u);f&&(u=f.rest,p(()=>{try{o(Xi(f.frame))}catch(m){i(m)}}),a.end())}),a.on("error",d=>p(()=>i(d))),a.on("close",()=>{c||p(()=>i(new Error(`${r} closed without response`)))})})}function kd(e,t,r){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",s=>{n+=s;let o=Yi(n);if(!o)return;n=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(Zi(a,o.dialect))}catch{}};(async()=>{let a;try{a=Xi(o.frame),await t(a,i)}catch(c){r(c,a,i)}finally{e.end()}})()})}async function Sd(e){await Yw(e_(e),{recursive:!0,mode:448});try{return await Xw(e,Qi.O_CREAT|Qi.O_EXCL|Qi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ta(e,t=1e3){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function Ed(e){let t=e.env??process.env,r=zw("sha256").update(e.key).digest("hex").slice(0,20),n=t.XDG_RUNTIME_DIR;if(n){let o=ea(n,"red-skills",r);if(ea(o,e.socketFileName).length<t_)return o}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid");return ea(Qw(),`red-skills-${s}`,r)}var t_,xs=h(()=>{wd();t_=108});async function mr(e,t){return await Rd(e,t,"resident rsp server")}var ra=h(()=>{xs()});var xd=h(()=>{"use strict";ra()});import{existsSync as r_,readdirSync as n_}from"node:fs";import{homedir as s_}from"node:os";import{basename as sa,dirname as na,join as ge,resolve as vs}from"node:path";function o_(e){return"command"in e}function Cs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??r_,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&c_(i))return a(vs(i),"caller-entry");let c=[];for(let[u,l]of l_(i,t.rootDir,r,t.listDir??m_))if(c.push(u),n(u))return a(u,l);return{diagnostic:tt,searched:c,...i?{callerEntry:vs(i)}:{}}}function Cd(e={},t={}){let r=Cs(e,t);if(o_(r))return r;throw new gr(r)}function c_(e){let t=sa(e);return t===Bt||oa.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:u_(vs(e))}function u_(e){let t=na(e);for(let r=0;r<4;r++){if(sa(t)==="rsp")return!0;let n=na(t);if(n===t)return!1;t=n}return!1}function*l_(e,t,r,n){if(e){let o=na(vs(e));yield[ge(o,Bt),"caller-sibling-bundle"];let i=i_.exec(sa(e));i&&(yield[ge(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ge(o,"..","dist",Bt),"caller-sibling-bundle"]}for(let o of a_){let i=r[o];i&&(yield[ge(i,"dist",Bt),"plugin-root-bundle"],yield[ge(i,"..","..","dist",Bt),"plugin-root-bundle"])}t&&(yield[ge(t,"dist",Bt),"repo-bundle"],yield[ge(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ge(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=d_(r);yield[ge(s,Bt),"bundle-cache"];for(let o of p_(s,n))yield[ge(s,o),"bundle-cache"]}function d_(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ge(e.HOME||s_(),".cache");return ge(t,"red-skills","bundles")}function p_(e,t){return t(e).filter(r=>oa.test(r)).sort((r,n)=>f_(vd(n),vd(r)))}function vd(e){return oa.exec(e)?.[1]??""}function f_(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function m_(e){try{return n_(e)}catch{return[]}}var tt,gr,Bt,i_,oa,a_,ia=h(()=>{tt="rsp-resident-entry-unresolved";gr=class extends Error{code=tt;searched;callerEntry;constructor(t){super(`${tt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
38
45
  searched:
39
46
  ${t.searched.map(r=>` ${r}`).join(`
40
- `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Bt="rsp.bundle.min.mjs",Jw=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,ta=/^rsp-(.+)\.bundle\.min\.mjs$/,qw=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as bd}from"node:crypto";import{spawn as wd}from"node:child_process";import{readFileSync as e_}from"node:fs";import{mkdir as oa,readFile as _d,rename as t_,rm as Fe,stat as r_,writeFile as n_}from"node:fs/promises";import{dirname as Ft,join as rt,resolve as ia}from"node:path";import{fileURLToPath as s_}from"node:url";function je(e){let t=g_(e)??ia(e),r=m_(t),n=U(t);return{rootDir:t,socketPath:rt(r,"rsp.sock"),pidPath:rt(r,"rsp.pid"),lockPath:rt(r,"rsp.lock"),wakeLockPath:rt(t,".red","tmp","rsp","wake.lock"),summaryPath:rt(n,"rsp-status-summary.json"),registryPath:rt(n,"rsp-resident.pid.json")}}async function Cs(e,t){if(await oa(Ft(e.socketPath),{recursive:!0,mode:448}),await hd(e.socketPath,t))return;await gd(e,t);let r=await xd(e.lockPath);if(r)try{if(await hd(e.socketPath,t))return;await gd(e,t),await a_(e.socketPath);let n=c_(e,t);await md(e.socketPath,n);return}finally{await r.close(),await Fe(e.lockPath,{force:!0})}await md(e.socketPath)}async function jt(e,t=200){try{return await kd(e,t)!=null}catch{return!1}}async function kd(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:bd(),op:"ping"});return r.ok?Td(r.value)?{version:w_(r.value.version)}:{}:null}async function Ts(e,t){if(await oa(Ft(e.socketPath),{recursive:!0,mode:448}),await jt(e.socketPath,50))return!1;let r=await xd(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=vd(e,t);return wd(n,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Sd(e,t){try{await Cs(e,t)}finally{await Fe(e.wakeLockPath,{force:!0})}}async function dn(e){try{let t=d_(await _d(e,"utf8"));return __(t)?t:null}catch{return null}}async function Os(e,t){let r={version:Rd,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await oa(Ft(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await n_(n,`${C(r)}
41
- `,{encoding:"utf8",mode:384}),await t_(n,e)}async function Ps(e,t=process.pid){try{let r=await dn(e);if(r&&r.pid!==t)return;await Fe(e,{force:!0})}catch{}}async function ln(e){let t=await dn(e.registryPath);if(!t)try{return await _d(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await jt(t.socket_path,100);return r&&await f_(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function Ed(e){let t=await ln(e);return t.state==="registered-dead"||t.state==="invalid"?(await Fe(e.registryPath,{force:!0}),await ln(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Yi(t.entry.pid),await Fe(e.registryPath,{force:!0}),await Fe(t.entry.socket_path,{force:!0}),await ln(e)):t}async function md(e,t){let r=Date.now()+i_(),n;for(;Date.now()<r;){if(await jt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(na("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(na("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?na("resident rsp server did not start",t):"resident rsp server did not start")}function i_(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:o_}async function a_(e){await Fe(e,{force:!0})}function c_(e,t){let[r,n]=vd(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=wd(r,[...n,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=l_(`${i}${c}`,u_)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function na(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
47
+ `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Bt="rsp.bundle.min.mjs",i_=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,oa=/^rsp-(.+)\.bundle\.min\.mjs$/,a_=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as Id}from"node:crypto";import{spawn as Ld}from"node:child_process";import{readFileSync as g_}from"node:fs";import{mkdir as ua,readFile as $d,rename as h_,rm as Fe,stat as y_,writeFile as b_}from"node:fs/promises";import{dirname as Ft,join as rt,resolve as la}from"node:path";import{fileURLToPath as w_}from"node:url";function je(e){let t=P_(e)??la(e),r=O_(t),n=W(t);return{rootDir:t,socketPath:rt(r,"rsp.sock"),pidPath:rt(r,"rsp.pid"),lockPath:rt(r,"rsp.lock"),wakeLockPath:rt(t,".red","tmp","rsp","wake.lock"),summaryPath:rt(n,"rsp-status-summary.json"),registryPath:rt(n,"rsp-resident.pid.json")}}async function Ts(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await Pd(e.socketPath,t))return;await Od(e,t);let r=await Fd(e.lockPath);if(r)try{if(await Pd(e.socketPath,t))return;await Od(e,t),await k_(e.socketPath);let n=S_(e,t);await Td(e.socketPath,n);return}finally{await r.close(),await Fe(e.lockPath,{force:!0})}await Td(e.socketPath)}async function jt(e,t=200){try{return await Nd(e,t)!=null}catch{return!1}}async function Nd(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:Id(),op:"ping"});return r.ok?Gd(r.value)?{version:$_(r.value.version)}:{}:null}async function Os(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await jt(e.socketPath,50))return!1;let r=await Fd(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=jd(e,t);return Ld(n,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Md(e,t){try{await Ts(e,t)}finally{await Fe(e.wakeLockPath,{force:!0})}}async function dn(e){try{let t=v_(await $d(e,"utf8"));return D_(t)?t:null}catch{return null}}async function Ps(e,t){let r={version:Dd,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await ua(Ft(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await b_(n,`${C(r)}
48
+ `,{encoding:"utf8",mode:384}),await h_(n,e)}async function As(e,t=process.pid){try{let r=await dn(e);if(r&&r.pid!==t)return;await Fe(e,{force:!0})}catch{}}async function ln(e){let t=await dn(e.registryPath);if(!t)try{return await $d(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await jt(t.socket_path,100);return r&&await T_(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function Bd(e){let t=await ln(e);return t.state==="registered-dead"||t.state==="invalid"?(await Fe(e.registryPath,{force:!0}),await ln(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ta(t.entry.pid),await Fe(e.registryPath,{force:!0}),await Fe(t.entry.socket_path,{force:!0}),await ln(e)):t}async function Td(e,t){let r=Date.now()+R_(),n;for(;Date.now()<r;){if(await jt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(aa("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(aa("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?aa("resident rsp server did not start",t):"resident rsp server did not start")}function R_(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:__}async function k_(e){await Fe(e,{force:!0})}function S_(e,t){let[r,n]=jd(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Ld(r,[...n,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=x_(`${i}${c}`,E_)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function aa(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
42
49
  ${s}`),n.join(`
43
- `)}function l_(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function d_(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return D(t)}}async function gd(e,t){try{let r=await dn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Mt(r.pid)){await Fe(e.registryPath,{force:!0});return}if(await jt(r.socket_path,100))return;if(Cd(t.clientVersion,r.resident_version)&&(await p_(r.pid,1500),!Mt(r.pid))){await Fe(e.registryPath,{force:!0});return}await Yi(r.pid),await Fe(e.registryPath,{force:!0})}catch{}}async function p_(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}}async function f_(e){if(!e.startsWith("file://"))return!1;try{return await r_(s_(e)),!1}catch(t){return t.code==="ENOENT"}}function vd(e,t){let r=fd(t,{rootDir:e.rootDir});return[r.command,r.args]}function m_(e){return ld({key:e,socketFileName:"rsp.sock"})}function g_(e){let t=ia(e);for(let r=0;r<32;r++){try{let s=sa(rt(t,".git"));if(s!=null)return h_(t,s)??t;if(sa(rt(t,".git","HEAD"))!=null||sa(rt(t,".red","config.yaml"))!=null)return t}catch{}let n=Ft(t);if(n===t)return null;t=n}return null}function h_(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=ia(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Ft(Ft(Ft(n))):null}function sa(e){try{return e_(e,"utf8")}catch{return null}}async function hd(e,t){let r=await kd(e).catch(()=>null);return r?Cd(t.clientVersion,r.version)?(await y_(e,t.clientVersion),await R_(e),!1):!0:!1}async function y_(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:bd(),op:"handover",clientVersion:t})}catch{}}function Cd(e,t){return!e||!t?!1:b_(e,t)>0}function b_(e,t){let r=yd(e),n=yd(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function yd(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Td(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function w_(e){return typeof e=="string"&&e.length>0?e:void 0}function __(e){return Td(e)&&e.version===Rd&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function R_(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await jt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Rd,o_,xd,u_,As=h(()=>{M();fe();Xi();Zi();ra();ra();Rd=1,o_=5e3;xd=ud;u_=8*1024});var Ht={};F(Ht,{RSP_ENTRY_UNRESOLVED:()=>tt,ResidentRspElisionStore:()=>pn,RspResidentEntryError:()=>gr,ensureResidentServer:()=>Cs,kickResidentServer:()=>Ts,pingResident:()=>jt,readResidentRegistry:()=>dn,removeResidentRegistry:()=>Ps,residentRegistryStatus:()=>ln,resolveResidentPaths:()=>je,resolveRspEntry:()=>vs,sweepResidentRegistry:()=>Ed,warmResidentServer:()=>Sd,writeResidentRegistry:()=>Os});import{randomUUID as k_}from"node:crypto";function Od(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pn,He=h(()=>{"use strict";dd();As();pn=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?Od(r)&&r.status==="expired"?r:!Od(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Cs(this.paths,this.config);let r=await mr(this.paths,{...t,id:k_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function ca(e,t,r=Pd){let n=Math.max(0,Math.floor(e)),s=r in Ad?r:Pd,o=Ad[s],i=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:aa(n,o),dollars_saved_low_usd:i==null?null:aa(i,o),dollars_saved_high_usd:a==null?null:aa(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:S_}}function aa(e,t){return E_(Math.max(0,e)/1e6*t)}function fn(e){return`$${e.toFixed(6)}`}function E_(e){return Math.round(e*1e6)/1e6}var Pd,Ad,S_,ua=h(()=>{"use strict";Pd="gpt-5",Ad={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},S_="estimate derived from byte-based token estimate when token counts are estimated"});var mn={};F(mn,{isResidentEntryUnresolved:()=>$d,reportResidentEntryDiagnostic:()=>da,residentConfigFor:()=>Ld,residentElisionStore:()=>la});function Ld(e,t){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs,...t?{clientVersion:t}:{}}}function la(e,t,r={}){let n=r.paths??je(e);return new pn(n,Ld(t,hs("rsp").version),{ensureResident:r.ensureResident})}function da(e){return $d(e)?(Id||(Id=!0,process.stderr.write(`rsp: ${tt} \u2014 elision is off until an rsp entry is installed
50
+ `)}function x_(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function v_(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Od(e,t){try{let r=await dn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Mt(r.pid)){await Fe(e.registryPath,{force:!0});return}if(await jt(r.socket_path,100))return;if(Hd(t.clientVersion,r.resident_version)&&(await C_(r.pid,1500),!Mt(r.pid))){await Fe(e.registryPath,{force:!0});return}await ta(r.pid),await Fe(e.registryPath,{force:!0})}catch{}}async function C_(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}}async function T_(e){if(!e.startsWith("file://"))return!1;try{return await y_(w_(e)),!1}catch(t){return t.code==="ENOENT"}}function jd(e,t){let r=Cd(t,{rootDir:e.rootDir});return[r.command,r.args]}function O_(e){return Ed({key:e,socketFileName:"rsp.sock"})}function P_(e){let t=la(e);for(let r=0;r<32;r++){try{let s=ca(rt(t,".git"));if(s!=null)return A_(t,s)??t;if(ca(rt(t,".git","HEAD"))!=null||ca(rt(t,".red","config.yaml"))!=null)return t}catch{}let n=Ft(t);if(n===t)return null;t=n}return null}function A_(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=la(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Ft(Ft(Ft(n))):null}function ca(e){try{return g_(e,"utf8")}catch{return null}}async function Pd(e,t){let r=await Nd(e).catch(()=>null);return r?Hd(t.clientVersion,r.version)?(await I_(e,t.clientVersion),await N_(e),!1):!0:!1}async function I_(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:Id(),op:"handover",clientVersion:t})}catch{}}function Hd(e,t){return!e||!t?!1:L_(e,t)>0}function L_(e,t){let r=Ad(e),n=Ad(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ad(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Gd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $_(e){return typeof e=="string"&&e.length>0?e:void 0}function D_(e){return Gd(e)&&e.version===Dd&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function N_(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await jt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Dd,__,Fd,E_,Is=h(()=>{N();me();xs();ra();ia();ia();Dd=1,__=5e3;Fd=Sd;E_=8*1024});var Ht={};F(Ht,{RSP_ENTRY_UNRESOLVED:()=>tt,ResidentRspElisionStore:()=>pn,RspResidentEntryError:()=>gr,ensureResidentServer:()=>Ts,kickResidentServer:()=>Os,pingResident:()=>jt,readResidentRegistry:()=>dn,removeResidentRegistry:()=>As,residentRegistryStatus:()=>ln,resolveResidentPaths:()=>je,resolveRspEntry:()=>Cs,sweepResidentRegistry:()=>Bd,warmResidentServer:()=>Md,writeResidentRegistry:()=>Ps});import{randomUUID as M_}from"node:crypto";function Wd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pn,He=h(()=>{"use strict";xd();Is();pn=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?Wd(r)&&r.status==="expired"?r:!Wd(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Ts(this.paths,this.config);let r=await mr(this.paths,{...t,id:M_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function pa(e,t,r=Ud){let n=Math.max(0,Math.floor(e)),s=r in Jd?r:Ud,o=Jd[s],i=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:da(n,o),dollars_saved_low_usd:i==null?null:da(i,o),dollars_saved_high_usd:a==null?null:da(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:B_}}function da(e,t){return F_(Math.max(0,e)/1e6*t)}function fn(e){return`$${e.toFixed(6)}`}function F_(e){return Math.round(e*1e6)/1e6}var Ud,Jd,B_,fa=h(()=>{"use strict";Ud="gpt-5",Jd={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},B_="estimate derived from byte-based token estimate when token counts are estimated"});var mn={};F(mn,{isResidentEntryUnresolved:()=>Kd,reportResidentEntryDiagnostic:()=>ga,residentConfigFor:()=>Vd,residentElisionStore:()=>ma});function Vd(e,t){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs,...t?{clientVersion:t}:{}}}function ma(e,t,r={}){let n=r.paths??je(e);return new pn(n,Vd(t,hs("rsp").version),{ensureResident:r.ensureResident})}function ga(e){return Kd(e)?(qd||(qd=!0,process.stderr.write(`rsp: ${tt} \u2014 elision is off until an rsp entry is installed
44
51
  `),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
45
- `)),!0):!1}function $d(e){return typeof e=="object"&&e!==null&&e.code===tt}var Id,Gt=h(()=>{"use strict";Di();He();Id=!1});function _a(e){return e==="success"?0:e==="failure"?1:2}function Ra(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function nt(e,t,r){return{status:e,exitCode:_a(e),summary:t,...r?{details:r}:{}}}function z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Fd,jd,Hd,ba,Gd,Ud,Wd,Jd,wa,Ut=h(()=>{"use strict";Fd="rsp.wait.result",jd="rsp.wait.registry",Hd="rsp.wait.list",ba={cmd:18e5,pr:27e5,run:27e5,release:72e5},Gd=16*1024,Ud=1e4,Wd=2e3,Jd=6e4,wa={cmd:"local-cmd:event-driven",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});import{readdir as P_,readFile as A_}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await $s(r),s=[r,...n];if(s.every(c=>!Wt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(qd(e,"SIGTERM"),Ls(n,"SIGTERM"),await Vd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await $s(r)])];qd(e,"SIGKILL"),Ls(o,"SIGKILL");let i=Math.max(1e3,t);await I_(e,i);let a=await Vd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Wt)}}function qd(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function Ls(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function I_(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function Vd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Wt(n)))return!0;await L_(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Wt(n))}async function $s(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await P_("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await Kd(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function gn(e){return(await Kd(e))?.[19]}async function wr(e,t){if(!Wt(e))return!1;if(!t)return!0;let r=await gn(e);return r===void 0?process.platform!=="linux":r===t}function Wt(e){try{return process.kill(e,0),!0}catch{return!1}}async function Kd(e){if(process.platform!=="linux")return null;try{let t=await A_(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function L_(e){await new Promise(t=>setTimeout(t,e))}var st=h(()=>{"use strict"});import{constants as $_}from"node:os";async function zd(e){let t=e[1],r={timeoutMs:ba.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Ud,terminateGraceMs:Wd,probeTimeoutMs:Jd,format:"toon",captureBytes:Gd},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};t!=="ls"&&(r.timeoutMs=ba[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=hn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=M_(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=hn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=hn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=hn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=N_(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await D_(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function D_(e){if(!(e.signal in $_.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Wt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await gn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function hn(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function yn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return hn(n)}catch{return t}}function N_(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function M_(e){return e.startsWith("SIG")?e:`SIG${e}`}var Yd=h(()=>{"use strict";Ut();st()});import{existsSync as ka,readFileSync as B_,statSync as F_}from"node:fs";import{basename as Xd,dirname as Ds,isAbsolute as j_,join as Zd,resolve as bn}from"node:path";function Ns(e,t=process.env){let r=bn(e);if(Mi.map(i=>t[i]).find(Boolean))return Yl({startDir:r,env:t,exists:ka});let s=G_(r),o=H_(r,s);return o||(s??r)}function H_(e,t){let r=e;for(;;){if(ka(Zd(r,".red")))return r;if(t&&r===t)return null;let n=bn(r,"..");if(n===r)return null;r=n}}function G_(e){let t=e;for(;;){let r=Zd(t,".git");if(ka(r))return J_(r)?t:U_(r)??t;let n=bn(t,"..");if(n===t)return null;t=n}}function U_(e){let t=W_(e);if(!t)return null;let r=Ds(t),n=Ds(r);return Xd(r)!=="worktrees"||Xd(n)!==".git"?null:Ds(n)}function W_(e){let t;try{t=B_(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return j_(n)?bn(n):bn(Ds(e),n)}function J_(e){try{return F_(e).isDirectory()}catch{return!1}}var Sa=h(()=>{fe()});import{join as q_}from"node:path";function K_(e,t=process.env){return Ns(e,t)}function _r(e,t=process.env){return zl(K_(e,t))}function Qd(e,t=process.env){return q_(_r(e,t),V_)}var V_,Ea=h(()=>{"use strict";fe();Sa();V_="spool"});import{randomUUID as z_}from"node:crypto";import{existsSync as Y_}from"node:fs";import{mkdir as X_,readdir as Z_,readFile as Q_,rename as eR,rm as xa,writeFile as tR}from"node:fs/promises";import{dirname as rR,join as tp}from"node:path";function rp(e,t,r=process.env){return tp(_r(e,r),`${t}${nR}`)}async function Rr(e,t){await va(e,`${W(t)}
46
- `)}async function Ms(e,t,r){t.status=r,await Rr(e,t)}async function Bs(e,t=process.env){let r=_r(e,t);if(!Y_(r))return[];let n=await Z_(r).catch(()=>[]),s=[];for(let o of n.filter(i=>sR.some(a=>i.endsWith(a)))){let i=tp(r,o),a=await oR(i);if(!a){await xa(i,{force:!0});continue}if(!await iR(a)){await xa(i,{force:!0});continue}s.push(a)}return s}async function oR(e){let t;try{t=await Q_(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=aR(r);return n&&Object.keys(n).length>0?n:null}async function iR(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await wr(t,r)}function aR(e){try{let t=D(e);if(ep(t))return t}catch{}try{let t=JSON.parse(e);if(ep(t))return t}catch{}return null}async function va(e,t){await X_(rR(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${z_()}`;try{await tR(r,t,"utf8"),await eR(r,e)}finally{await xa(r,{force:!0})}}function Ca(e){return{schema:jd,version:1,...e}}function ep(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var nR,sR,_n=h(()=>{"use strict";M();Qe();Ut();Ea();st();nR=".toon",sR=[".toon",".json"]});function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ge(e){return kr(e)?e:{}}function Jt(e){return Array.isArray(e)?e.filter(kr):[]}function Y(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function Ta(e){let t=JSON.parse(e);if(!kr(t))throw new Error("expected JSON object");return t}function Fs(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var js=h(()=>{"use strict"});import{spawn as cR}from"node:child_process";import{resolve as uR}from"node:path";async function np(e,t,r){let n=[];if(e.signalPid){let s=await lR(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await dR(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function lR(e){let t=e.signalPid;if(!await wr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:sp(r),pid:t,signal:e.signal}}}async function dR(e,t,r){let n=Ge(t.wait),s=Ge(t.verdict);return await pR(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?uR(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function pR(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=cR(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:sp(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function sp(e){return e instanceof Error?e.message:String(e)}var op=h(()=>{"use strict";js();st()});import{resolve as fR}from"node:path";async function ip(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=mR(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=Rn(t,r,o,{status:"pending"},i);await kn(n.resultFile,a,n.format);let c=await np(n,a,s),u=Rn(t,r,o,c,i);return await kn(n.resultFile,u,n.format),{result:u,exitCode:ap(o,c)}}function ap(e,t){return t.status!=="success"||e.status==="running"?2:_a(e.status)}function mR(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function Rn(e,t,r,n,s){return{schema:Fd,version:1,wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:ap(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function kn(e,t,r){e&&await va(fR(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
47
- `:`${W(e)}
48
- `}var cp=h(()=>{"use strict";Qe();Ut();_n();op()});import{createWriteStream as gR,mkdirSync as hR}from"node:fs";import{readFile as yR,rm as bR}from"node:fs/promises";import{dirname as wR}from"node:path";import{join as up}from"node:path";function lp(e,t,r){return{stdout:new Hs(r,up(e,`${t}.stdout.bin`)),stderr:new Hs(r,up(e,`${t}.stderr.bin`))}}function _R(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!RR(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function RR(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Hs,dp=h(()=>{"use strict";Hs=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,..._R(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await yR(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{hR(wR(this.spoolPath),{recursive:!0}),t=gR(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await bR(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as kR,readFileSync as GI}from"node:fs";import{dirname as SR,join as ER}from"node:path";function pp(e,t){let r=e;for(let n=0;n<16;n++){let s=ER(r,t);if(kR(s))return s;let o=SR(r);if(o===r)break;r=o}return null}function xR(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Gs(e,t){let r=[];for(let n of e.split(`
49
- `)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(p=>p.key).join(".")===t)return xR(u)}}var fp=h(()=>{});var Sp={};F(Sp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>vr,GH_ETAG_CACHE_DIR_NAME:()=>yp,LEGACY_GH_ETAG_CACHE_FILE:()=>bp,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>wp,enforceGhEtagCacheCeiling:()=>$a,ghEtagCacheDir:()=>Us,ghEtagEntryPath:()=>Ws,isCacheEntry:()=>qs,legacyGhEtagCachePaths:()=>Aa,migrateLegacyGhEtagCache:()=>Na,readGhEtagCache:()=>Js,readGhEtagEntry:()=>Ia,resetGhEtagCacheMigrationMemo:()=>IR,sweepGhEtagCache:()=>Da,writeGhEtagEntry:()=>La});import{existsSync as vR}from"node:fs";import{mkdir as CR,readdir as TR,rename as OR,rm as mp,stat as gp,unlink as hp,writeFile as PR}from"node:fs/promises";import{dirname as AR,join as xr}from"node:path";function Us(e){return xr(U(e),yp)}function Ws(e,t){return xr(Us(e),`${NR(t)}.toon`)}function Aa(e){let t=U(e);return[xr(t,bp),xr(t,wp)]}async function Ia(e,t){await Na(e);try{let r=kp(await Ss(Ws(e,t)));return qs(r)?r:void 0}catch{return}}async function La(e,t,r={}){return await Rp(Ws(e,t.key),t),await $a(e,r.maxBytes??vr)}async function $a(e,t=vr){let r=await $R(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await hp(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function Da(e,t={}){let r=await Na(e,{force:!0}),n=await LR(e);return{...await $a(e,t.maxBytes??vr),reclaimedTmp:n,migratedEntries:r}}async function Js(e){for(let t of Aa(e))try{let r=kp(await Ss(t));if(MR(r))return r}catch{}return{version:1,entries:{}}}async function Na(e,t={}){if(!t.force&&Oa.has(e))return 0;Oa.add(e);let r=Aa(e).filter(o=>vR(o));if(r.length===0)return 0;let n=await Js(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!qs(i))continue;let a=Ws(e,o);await DR(a)||(await Rp(a,{...i,key:o}),s+=1)}for(let o of r)await mp(o,{force:!0});return s}function IR(){Oa.clear()}async function LR(e){let t=0;for(let r of[U(e),Us(e)])for(let n of await _p(r))if(n.endsWith(".tmp"))try{await hp(xr(r,n)),t+=1}catch{}return t}async function $R(e){let t=Us(e),r=[];for(let n of await _p(t)){if(!n.endsWith(".toon"))continue;let s=xr(t,n);try{let o=await gp(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function _p(e){try{return await TR(e)}catch{return[]}}async function DR(e){try{return await gp(e),!0}catch{return!1}}async function Rp(e,t){await CR(AR(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await PR(r,`${C(t)}
50
- `,{encoding:"utf8",mode:384}),await OR(r,e)}catch(n){throw await mp(r,{force:!0}),n}}function NR(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function kp(e){try{return JSON.parse(e)}catch{return D(e)}}function MR(e){return Pa(e)&&e.version===1&&Pa(e.entries)&&Object.values(e.entries).every(qs)}function qs(e){return Pa(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Pa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var yp,bp,wp,vr,Oa,Sn=h(()=>{"use strict";fe();M();J();yp="gh-etag",bp="gh-etag-cache.toon",wp="gh-etag-cache.json",vr=4*1024*1024;Oa=new Set});var Op={};F(Op,{DEFAULT_RSP_BYTE_BUDGET:()=>Te,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ce,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,DEFAULT_RSP_IDLE_MS:()=>zs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Tp,DEFAULT_RSP_STORE_PATH:()=>Ma,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Ks,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>xp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>vp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Vs,DEFAULT_RSP_TTL_DAYS:()=>ve,MIN_RSP_IDLE_MS:()=>Cp,resolveRspConfig:()=>Oe});import{existsSync as BR,readFileSync as FR}from"node:fs";import{join as jR,resolve as Ep}from"node:path";function Oe(e,t,r){let n=pp(Ep(e),jR(".red","config.yaml")),s=n?FR(n,"utf8"):"",o=Gs(s,"rsp.enabled")==="true",i=Gs(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(q(s,"rsp.ttlDays"),ve),u=ne(Ue(t.RSP_EPHEMERAL_TTL_HOURS)??q(s,"rsp.ephemeralTtlHours"),Ce),l=ne(q(s,"rsp.byteBudget"),Te),p=ne(q(s,"rsp.telemetryTtlDays"),Vs),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),Ks),f=ne(Ue(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??q(s,"rsp.telemetryDrainIntervalMs"),xp),m=ne(Ue(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??q(s,"rsp.telemetryDrainTimeoutMs"),vp),w=HR(Ue(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),zs,Cp),_=ne(Ue(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=GR(Ue(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??q(s,"rsp.measurement.holdoutShare"),Tp),y=ne(Ue(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??q(s,"rsp.ghEtagCacheMaxBytes"),vr),b={maxOverheadMs:ne(Ue(t.RSP_MAX_OVERHEAD_MS)??q(s,"rsp.overhead.maxOverheadMs"),ys),maxSelfStateBytes:ne(Ue(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),bs),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),ws),consecutiveBreaches:ne(Ue(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),_s),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),Rs)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Kl(Ep(R),BR)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:m,idleMs:w,heavyGitByteThreshold:_,measurementHoldoutShare:g,ghEtagCacheMaxBytes:y,overhead:b}}function q(e,t){let r=Gs(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function HR(e,t,r){let n=ne(e,t);return Math.max(n,r)}function GR(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Ue(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ot,Ma,ve,Ce,Te,Vs,Ks,xp,vp,zs,Cp,Tp,Pe=h(()=>{"use strict";fp();fe();As();J();Sn();ot=8*1024,Ma=ql,ve=7,Ce=6,Te=64*1024*1024,Vs=90,Ks=4*1024*1024,xp=3e4,vp=2e3,zs=5*6e4,Cp=5e3,Tp=0});function Pp(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(e,Oe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Ap=h(()=>{"use strict";Pe()});import{spawn as UR}from"node:child_process";async function Lp(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:z("missing command line")};let a=e.store??Pp(n),c=lp(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async g=>{l||(l=!0,i.removeEventListener("abort",w),await Ms(s,o,g.verdict.status).catch(()=>{}),u(g))},f=UR(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",g=>c.stdout.write(Buffer.from(g))),f.stderr?.on("data",g=>c.stderr.write(Buffer.from(g)));let m=async(g,y)=>{if(l||p)return;p=!0,clearTimeout(_);let b=await br(f,r.terminateGraceMs),R=await Ip(null,null,c,a,t);await d({verdict:{status:g,exitCode:2,summary:y,details:R},cleanupProven:b.cleaned,survivors:b.survivors})},w=()=>void m("indeterminate","command interrupted");i.addEventListener("abort",w,{once:!0});let _=setTimeout(()=>{m("timeout",`command timed out after ${$p(r.timeoutMs)}`)},r.timeoutMs);f.once("error",g=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:g.message}})}),f.once("close",(g,y)=>{if(clearTimeout(_),l||p)return;let b=g===0;Ip(g,y,c,a,t).then(R=>d({verdict:{status:b?"success":"failure",exitCode:b?0:1,summary:b?"command exited successfully":`command exited with ${y??g??"unknown"}`,details:R}}))}),i.aborted&&w()})}async function Ys(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:WR(u,c,o.last_poll_at)};let l;try{l=await t()}catch(w){l=z(w instanceof Error?w.message:String(w))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ba(l),await Rr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Ms(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),m=e.makeWakeSignal?.();await JR(f,i,m)}return await Ms(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${$p(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ba(u)}:{attempts:c}}}}async function Ip(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function Ba(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function WR(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ba(e)}:{}})}async function JR(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function $p(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Dp=h(()=>{"use strict";dp();Ap();Ut();st();_n()});var Fa,ja,Ha,ce,X,ge,We,En,Xs=h(()=>{"use strict";Fa="rsp-telemetry.spool.toonl",ja="rsp-telemetry.spool.jsonl",Ha="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",X="rsp_decisions_v1",ge="rsp_telemetry_invocations_v1",We="rsp_telemetry_degradations_v1",En="rsp_telemetry_index_v1"});function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function he(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Ga=h(()=>{"use strict"});import{randomUUID as Wa,createHash as qR}from"node:crypto";import{appendFileSync as jp,existsSync as VR,mkdirSync as Hp}from"node:fs";import{mkdir as Gp,readdir as KR,readFile as Up,rename as zR,rm as Wp,writeFile as Ja}from"node:fs/promises";import{basename as Ua,dirname as xn,join as Tr,resolve as Np}from"node:path";function Qs(e){if(!e)return null;let t=Np(e);for(;;){if(VR(Tr(t,".red")))return t;let r=Np(Tr(t,".."));if(r===t)break;t=r}return null}function it(e){return Tr(U(e),Fa)}function eo(e){return Tr(U(e),ja)}function Va(e){return Tr(U(e),Ha)}async function at(e,t){gt(e,t)}function gt(e,t){try{let r=Qs(e);if(!r)return;let n=it(r);Hp(xn(n),{recursive:!0}),jp(n,tk({spool_id:Wa(),event:XR(t)}),{encoding:"utf8",mode:384})}catch{}}function XR(e){return Mp(Mp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Mp(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=YR)return e;let o={...e};return delete o[t],he(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function ZR(e){let t=Qs(e);if(!t)return[];let r=it(t);await Gp(xn(r),{recursive:!0}).catch(()=>{});let n=await Vp(t),s=[...await Kp(t),...await nk(n)];return await Promise.all(n.map(o=>Wp(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Ka(e,t){let r=Qs(e);if(!r)return;let n=it(r);await Gp(xn(n),{recursive:!0}).catch(()=>{}),await rk(r);for(let s of await QR(r))await Bp(r,s,t);for(let s of await Kp(r))await Jp(r,s,t,!0);for(let s of await Vp(r))await Bp(r,s,t)}async function QR(e){let t=[it(e),eo(e)],r=xn(t[0]);return(await KR(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Ua(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Ua(c)}.`));if(!o)return!1;let i=`${Ua(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&ek(a))}).sort().map(s=>Tr(r,s))}function ek(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Bp(e,t,r){try{let n=await qp(t);for(let s of zp(n))await Jp(e,s,r,!1)}finally{await Wp(t,{force:!0})}}async function Jp(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Fp(e,{correction_id:Wa(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Fp(e,{correction_id:Wa(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function qp(e){let t="";for(let r=0;r<5;r++){let n=await Up(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Or(e){try{let t=JSON.parse(e);return!Cr(t)||t.collection!==ce&&t.collection!==X&&t.collection!==ge&&t.collection!==We?null:t}catch{return null}}function tk(e){return Nt().push(ik(e))}function Fp(e,t){try{let r=Qs(e);if(!r)return;let n=Va(r);Hp(xn(n),{recursive:!0});let s=Nt();jp(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function Vp(e){let t=[it(e),eo(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await zR(n,s),await Ja(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function rk(e){await Promise.all([Ja(it(e),"",{flag:"a"}),Ja(eo(e),"",{flag:"a"})]).catch(()=>{})}async function nk(e){let t=[];for(let r of e)t.push(...zp(await qp(r)));return t}async function Kp(e){let t=await Up(Va(e),"utf8").catch(()=>""),r=new Map;for(let n of sk(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Or(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function zp(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(Cr(o)){let i=Or(JSON.stringify(o));t.push(i?{spool_id:Zs(JSON.stringify(o)),event:i}:{spool_id:Zs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Zs(s),raw_line:s});continue}try{for(let o of Dt(`${r}
52
+ `)),!0):!1}function Kd(e){return typeof e=="object"&&e!==null&&e.code===tt}var qd,Gt=h(()=>{"use strict";Ni();He();qd=!1});function Ea(e){return e==="success"?0:e==="failure"?1:2}function xa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function nt(e,t,r){return{status:e,exitCode:Ea(e),summary:t,...r?{details:r}:{}}}function z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Qd,ep,tp,ka,rp,np,sp,op,Sa,Wt=h(()=>{"use strict";Qd="rsp.wait.result",ep="rsp.wait.registry",tp="rsp.wait.list",ka={cmd:18e5,pr:27e5,run:27e5,release:72e5},rp=16*1024,np=1e4,sp=2e3,op=6e4,Sa={cmd:"local-cmd:event-driven",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});import{readdir as J_,readFile as q_}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await Ds(r),s=[r,...n];if(s.every(c=>!Ut(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ip(e,"SIGTERM"),$s(n,"SIGTERM"),await ap(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await Ds(r)])];ip(e,"SIGKILL"),$s(o,"SIGKILL");let i=Math.max(1e3,t);await V_(e,i);let a=await ap(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Ut)}}function ip(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function $s(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function V_(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function ap(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Ut(n)))return!0;await K_(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Ut(n))}async function Ds(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await J_("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await cp(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function gn(e){return(await cp(e))?.[19]}async function wr(e,t){if(!Ut(e))return!1;if(!t)return!0;let r=await gn(e);return r===void 0?process.platform!=="linux":r===t}function Ut(e){try{return process.kill(e,0),!0}catch{return!1}}async function cp(e){if(process.platform!=="linux")return null;try{let t=await q_(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function K_(e){await new Promise(t=>setTimeout(t,e))}var st=h(()=>{"use strict"});import{constants as z_}from"node:os";async function up(e){let t=e[1],r={timeoutMs:ka.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:np,terminateGraceMs:sp,probeTimeoutMs:op,format:"toon",captureBytes:rp},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};t!=="ls"&&(r.timeoutMs=ka[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=hn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Z_(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=hn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=hn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=hn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=X_(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await Y_(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Y_(e){if(!(e.signal in z_.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Ut(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await gn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function hn(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function yn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return hn(n)}catch{return t}}function X_(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Z_(e){return e.startsWith("SIG")?e:`SIG${e}`}var lp=h(()=>{"use strict";Wt();st()});import{existsSync as va,readFileSync as Q_,statSync as eR}from"node:fs";import{basename as dp,dirname as Ns,isAbsolute as tR,join as pp,resolve as bn}from"node:path";function Ms(e,t=process.env){let r=bn(e);if(Bi.map(i=>t[i]).find(Boolean))return ed({startDir:r,env:t,exists:va});let s=nR(r),o=rR(r,s);return o||(s??r)}function rR(e,t){let r=e;for(;;){if(va(pp(r,".red")))return r;if(t&&r===t)return null;let n=bn(r,"..");if(n===r)return null;r=n}}function nR(e){let t=e;for(;;){let r=pp(t,".git");if(va(r))return iR(r)?t:sR(r)??t;let n=bn(t,"..");if(n===t)return null;t=n}}function sR(e){let t=oR(e);if(!t)return null;let r=Ns(t),n=Ns(r);return dp(r)!=="worktrees"||dp(n)!==".git"?null:Ns(n)}function oR(e){let t;try{t=Q_(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return tR(n)?bn(n):bn(Ns(e),n)}function iR(e){try{return eR(e).isDirectory()}catch{return!1}}var Ca=h(()=>{me()});import{join as aR}from"node:path";function uR(e,t=process.env){return Ms(e,t)}function _r(e,t=process.env){return Ql(uR(e,t))}function fp(e,t=process.env){return aR(_r(e,t),cR)}var cR,Ta=h(()=>{"use strict";me();Ca();cR="spool"});import{randomUUID as lR}from"node:crypto";import{existsSync as dR}from"node:fs";import{mkdir as pR,readdir as fR,readFile as mR,rename as gR,rm as Oa,writeFile as hR}from"node:fs/promises";import{dirname as yR,join as gp}from"node:path";function hp(e,t,r=process.env){return gp(_r(e,r),`${t}${bR}`)}async function Rr(e,t){await Pa(e,`${U(t)}
53
+ `)}async function Bs(e,t,r){t.status=r,await Rr(e,t)}async function Fs(e,t=process.env){let r=_r(e,t);if(!dR(r))return[];let n=await fR(r).catch(()=>[]),s=[];for(let o of n.filter(i=>wR.some(a=>i.endsWith(a)))){let i=gp(r,o),a=await _R(i);if(!a){await Oa(i,{force:!0});continue}if(!await RR(a)){await Oa(i,{force:!0});continue}s.push(a)}return s}async function _R(e){let t;try{t=await mR(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=kR(r);return n&&Object.keys(n).length>0?n:null}async function RR(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await wr(t,r)}function kR(e){try{let t=L(e);if(mp(t))return t}catch{}try{let t=JSON.parse(e);if(mp(t))return t}catch{}return null}async function Pa(e,t){await pR(yR(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${lR()}`;try{await hR(r,t,"utf8"),await gR(r,e)}finally{await Oa(r,{force:!0})}}function Aa(e){return{schema:ep,version:1,...e}}function mp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bR,wR,_n=h(()=>{"use strict";N();Qe();Wt();Ta();st();bR=".toon",wR=[".toon",".json"]});function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ge(e){return kr(e)?e:{}}function Jt(e){return Array.isArray(e)?e.filter(kr):[]}function Y(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function Ia(e){let t=JSON.parse(e);if(!kr(t))throw new Error("expected JSON object");return t}function js(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Hs=h(()=>{"use strict"});import{spawn as SR}from"node:child_process";import{resolve as ER}from"node:path";async function yp(e,t,r){let n=[];if(e.signalPid){let s=await xR(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await vR(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function xR(e){let t=e.signalPid;if(!await wr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:bp(r),pid:t,signal:e.signal}}}async function vR(e,t,r){let n=Ge(t.wait),s=Ge(t.verdict);return await CR(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?ER(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function CR(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=SR(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:bp(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function bp(e){return e instanceof Error?e.message:String(e)}var wp=h(()=>{"use strict";Hs();st()});import{resolve as TR}from"node:path";async function _p(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=OR(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=Rn(t,r,o,{status:"pending"},i);await kn(n.resultFile,a,n.format);let c=await yp(n,a,s),u=Rn(t,r,o,c,i);return await kn(n.resultFile,u,n.format),{result:u,exitCode:Rp(o,c)}}function Rp(e,t){return t.status!=="success"||e.status==="running"?2:Ea(e.status)}function OR(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function Rn(e,t,r,n,s){return{schema:Qd,version:1,wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:Rp(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function kn(e,t,r){e&&await Pa(TR(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
54
+ `:`${U(e)}
55
+ `}var kp=h(()=>{"use strict";Qe();Wt();_n();wp()});import{createWriteStream as PR,mkdirSync as AR}from"node:fs";import{readFile as IR,rm as LR}from"node:fs/promises";import{dirname as $R}from"node:path";import{join as Sp}from"node:path";function Ep(e,t,r){return{stdout:new Gs(r,Sp(e,`${t}.stdout.bin`)),stderr:new Gs(r,Sp(e,`${t}.stderr.bin`))}}function DR(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!NR(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function NR(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Gs,xp=h(()=>{"use strict";Gs=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...DR(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await IR(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{AR($R(this.spoolPath),{recursive:!0}),t=PR(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await LR(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as MR,readFileSync as iL}from"node:fs";import{dirname as BR,join as FR}from"node:path";function vp(e,t){let r=e;for(let n=0;n<16;n++){let s=FR(r,t);if(MR(s))return s;let o=BR(r);if(o===r)break;r=o}return null}function jR(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ws(e,t){let r=[];for(let n of e.split(`
56
+ `)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(p=>p.key).join(".")===t)return jR(u)}}var Cp=h(()=>{});var Mp={};F(Mp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>vr,GH_ETAG_CACHE_DIR_NAME:()=>Ap,LEGACY_GH_ETAG_CACHE_FILE:()=>Ip,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Lp,enforceGhEtagCacheCeiling:()=>Ba,ghEtagCacheDir:()=>Us,ghEtagEntryPath:()=>Js,isCacheEntry:()=>Vs,legacyGhEtagCachePaths:()=>Da,migrateLegacyGhEtagCache:()=>ja,readGhEtagCache:()=>qs,readGhEtagEntry:()=>Na,resetGhEtagCacheMigrationMemo:()=>VR,sweepGhEtagCache:()=>Fa,writeGhEtagEntry:()=>Ma});import{existsSync as HR}from"node:fs";import{mkdir as GR,readdir as WR,rename as UR,rm as Tp,stat as Op,unlink as Pp,writeFile as JR}from"node:fs/promises";import{dirname as qR,join as xr}from"node:path";function Us(e){return xr(W(e),Ap)}function Js(e,t){return xr(Us(e),`${XR(t)}.toon`)}function Da(e){let t=W(e);return[xr(t,Ip),xr(t,Lp)]}async function Na(e,t){await ja(e);try{let r=Np(await Ss(Js(e,t)));return Vs(r)?r:void 0}catch{return}}async function Ma(e,t,r={}){return await Dp(Js(e,t.key),t),await Ba(e,r.maxBytes??vr)}async function Ba(e,t=vr){let r=await zR(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await Pp(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function Fa(e,t={}){let r=await ja(e,{force:!0}),n=await KR(e);return{...await Ba(e,t.maxBytes??vr),reclaimedTmp:n,migratedEntries:r}}async function qs(e){for(let t of Da(e))try{let r=Np(await Ss(t));if(ZR(r))return r}catch{}return{version:1,entries:{}}}async function ja(e,t={}){if(!t.force&&La.has(e))return 0;La.add(e);let r=Da(e).filter(o=>HR(o));if(r.length===0)return 0;let n=await qs(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Vs(i))continue;let a=Js(e,o);await YR(a)||(await Dp(a,{...i,key:o}),s+=1)}for(let o of r)await Tp(o,{force:!0});return s}function VR(){La.clear()}async function KR(e){let t=0;for(let r of[W(e),Us(e)])for(let n of await $p(r))if(n.endsWith(".tmp"))try{await Pp(xr(r,n)),t+=1}catch{}return t}async function zR(e){let t=Us(e),r=[];for(let n of await $p(t)){if(!n.endsWith(".toon"))continue;let s=xr(t,n);try{let o=await Op(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function $p(e){try{return await WR(e)}catch{return[]}}async function YR(e){try{return await Op(e),!0}catch{return!1}}async function Dp(e,t){await GR(qR(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await JR(r,`${C(t)}
57
+ `,{encoding:"utf8",mode:384}),await UR(r,e)}catch(n){throw await Tp(r,{force:!0}),n}}function XR(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Np(e){try{return JSON.parse(e)}catch{return L(e)}}function ZR(e){return $a(e)&&e.version===1&&$a(e.entries)&&Object.values(e.entries).every(Vs)}function Vs(e){return $a(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ap,Ip,Lp,vr,La,Sn=h(()=>{"use strict";me();N();J();Ap="gh-etag",Ip="gh-etag-cache.toon",Lp="gh-etag-cache.json",vr=4*1024*1024;La=new Set});var Wp={};F(Wp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,DEFAULT_RSP_IDLE_MS:()=>Ys,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Gp,DEFAULT_RSP_STORE_PATH:()=>Ha,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>zs,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Ks,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>Hp,resolveRspConfig:()=>Pe});import{existsSync as QR,readFileSync as ek}from"node:fs";import{join as tk,resolve as Bp}from"node:path";function Pe(e,t,r){let n=vp(Bp(e),tk(".red","config.yaml")),s=n?ek(n,"utf8"):"",o=Ws(s,"rsp.enabled")==="true",i=Ws(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(q(s,"rsp.ttlDays"),Ce),u=ne(We(t.RSP_EPHEMERAL_TTL_HOURS)??q(s,"rsp.ephemeralTtlHours"),Te),l=ne(q(s,"rsp.byteBudget"),Oe),p=ne(q(s,"rsp.telemetryTtlDays"),Ks),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),zs),f=ne(We(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??q(s,"rsp.telemetryDrainIntervalMs"),Fp),m=ne(We(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??q(s,"rsp.telemetryDrainTimeoutMs"),jp),w=rk(We(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),Ys,Hp),_=ne(We(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=nk(We(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??q(s,"rsp.measurement.holdoutShare"),Gp),y=ne(We(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??q(s,"rsp.ghEtagCacheMaxBytes"),vr),b={maxOverheadMs:ne(We(t.RSP_MAX_OVERHEAD_MS)??q(s,"rsp.overhead.maxOverheadMs"),ys),maxSelfStateBytes:ne(We(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),bs),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),ws),consecutiveBreaches:ne(We(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),_s),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),Rs)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Zl(Bp(R),QR)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:m,idleMs:w,heavyGitByteThreshold:_,measurementHoldoutShare:g,ghEtagCacheMaxBytes:y,overhead:b}}function q(e,t){let r=Ws(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function rk(e,t,r){let n=ne(e,t);return Math.max(n,r)}function nk(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function We(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ot,Ha,Ce,Te,Oe,Ks,zs,Fp,jp,Ys,Hp,Gp,Ae=h(()=>{"use strict";Cp();me();Is();J();Sn();ot=8*1024,Ha=Yl,Ce=7,Te=6,Oe=64*1024*1024,Ks=90,zs=4*1024*1024,Fp=3e4,jp=2e3,Ys=5*6e4,Hp=5e3,Gp=0});function Up(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Jp=h(()=>{"use strict";Ae()});import{spawn as sk}from"node:child_process";async function Vp(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:z("missing command line")};let a=e.store??Up(n),c=Ep(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async g=>{l||(l=!0,i.removeEventListener("abort",w),await Bs(s,o,g.verdict.status).catch(()=>{}),u(g))},f=sk(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",g=>c.stdout.write(Buffer.from(g))),f.stderr?.on("data",g=>c.stderr.write(Buffer.from(g)));let m=async(g,y)=>{if(l||p)return;p=!0,clearTimeout(_);let b=await br(f,r.terminateGraceMs),R=await qp(null,null,c,a,t);await d({verdict:{status:g,exitCode:2,summary:y,details:R},cleanupProven:b.cleaned,survivors:b.survivors})},w=()=>void m("indeterminate","command interrupted");i.addEventListener("abort",w,{once:!0});let _=setTimeout(()=>{m("timeout",`command timed out after ${Kp(r.timeoutMs)}`)},r.timeoutMs);f.once("error",g=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:g.message}})}),f.once("close",(g,y)=>{if(clearTimeout(_),l||p)return;let b=g===0;qp(g,y,c,a,t).then(R=>d({verdict:{status:b?"success":"failure",exitCode:b?0:1,summary:b?"command exited successfully":`command exited with ${y??g??"unknown"}`,details:R}}))}),i.aborted&&w()})}async function Xs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:ok(u,c,o.last_poll_at)};let l;try{l=await t()}catch(w){l=z(w instanceof Error?w.message:String(w))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ga(l),await Rr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Bs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),m=e.makeWakeSignal?.();await ik(f,i,m)}return await Bs(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kp(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ga(u)}:{attempts:c}}}}async function qp(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function Ga(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function ok(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ga(e)}:{}})}async function ik(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function Kp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var zp=h(()=>{"use strict";xp();Jp();Wt();st();_n()});var Wa,Ua,Ja,ce,X,he,Ue,En,Zs=h(()=>{"use strict";Wa="rsp-telemetry.spool.toonl",Ua="rsp-telemetry.spool.jsonl",Ja="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",X="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",Ue="rsp_telemetry_degradations_v1",En="rsp_telemetry_index_v1"});function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var qa=h(()=>{"use strict"});import{randomUUID as Ka,createHash as ak}from"node:crypto";import{appendFileSync as ef,existsSync as ck,mkdirSync as tf}from"node:fs";import{mkdir as rf,readdir as uk,readFile as nf,rename as lk,rm as sf,writeFile as za}from"node:fs/promises";import{basename as Va,dirname as xn,join as Tr,resolve as Yp}from"node:path";function eo(e){if(!e)return null;let t=Yp(e);for(;;){if(ck(Tr(t,".red")))return t;let r=Yp(Tr(t,".."));if(r===t)break;t=r}return null}function it(e){return Tr(W(e),Wa)}function to(e){return Tr(W(e),Ua)}function Xa(e){return Tr(W(e),Ja)}async function at(e,t){gt(e,t)}function gt(e,t){try{let r=eo(e);if(!r)return;let n=it(r);tf(xn(n),{recursive:!0}),ef(n,hk({spool_id:Ka(),event:pk(t)}),{encoding:"utf8",mode:384})}catch{}}function pk(e){return Xp(Xp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xp(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=dk)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function fk(e){let t=eo(e);if(!t)return[];let r=it(t);await rf(xn(r),{recursive:!0}).catch(()=>{});let n=await cf(t),s=[...await uf(t),...await bk(n)];return await Promise.all(n.map(o=>sf(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Za(e,t){let r=eo(e);if(!r)return;let n=it(r);await rf(xn(n),{recursive:!0}).catch(()=>{}),await yk(r);for(let s of await mk(r))await Zp(r,s,t);for(let s of await uf(r))await of(r,s,t,!0);for(let s of await cf(r))await Zp(r,s,t)}async function mk(e){let t=[it(e),to(e)],r=xn(t[0]);return(await uk(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Va(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Va(c)}.`));if(!o)return!1;let i=`${Va(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&gk(a))}).sort().map(s=>Tr(r,s))}function gk(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Zp(e,t,r){try{let n=await af(t);for(let s of lf(n))await of(e,s,r,!1)}finally{await sf(t,{force:!0})}}async function of(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function af(e){let t="";for(let r=0;r<5;r++){let n=await nf(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Or(e){try{let t=JSON.parse(e);return!Cr(t)||t.collection!==ce&&t.collection!==X&&t.collection!==he&&t.collection!==Ue?null:t}catch{return null}}function hk(e){return Nt().push(Rk(e))}function Qp(e,t){try{let r=eo(e);if(!r)return;let n=Xa(r);tf(xn(n),{recursive:!0});let s=Nt();ef(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function cf(e){let t=[it(e),to(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await lk(n,s),await za(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function yk(e){await Promise.all([za(it(e),"",{flag:"a"}),za(to(e),"",{flag:"a"})]).catch(()=>{})}async function bk(e){let t=[];for(let r of e)t.push(...lf(await af(r)));return t}async function uf(e){let t=await nf(Xa(e),"utf8").catch(()=>""),r=new Map;for(let n of wk(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Or(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function lf(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(Cr(o)){let i=Or(JSON.stringify(o));t.push(i?{spool_id:Qs(JSON.stringify(o)),event:i}:{spool_id:Qs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Qs(s),raw_line:s});continue}try{for(let o of Dt(`${r}
51
58
  ${s}
52
- `))qa(o)&&ak(o)&&t.push({spool_id:o.spool_id,event:Yp(o)})}catch{s.startsWith("{")&&t.push({spool_id:Zs(s),raw_line:s})}}}return t}function sk(e){return ok(e).map(ck).filter(t=>t!==null)}function ok(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);qa(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Dt(`${r}
59
+ `))Ya(o)&&kk(o)&&t.push({spool_id:o.spool_id,event:df(o)})}catch{s.startsWith("{")&&t.push({spool_id:Qs(s),raw_line:s})}}}return t}function wk(e){return _k(e).map(Sk).filter(t=>t!==null)}function _k(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Ya(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Dt(`${r}
53
60
  ${s}
54
- `))qa(o)&&t.push(o)}catch{}}}return t}function Zs(e){return`legacy:${qR("sha256").update(e).digest("hex").slice(0,24)}`}function ik(e){let t={spool_id:e.spool_id};for(let[r,n]of Object.entries(e.event??{}))r!=="spool_id"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null?t[r]=n:n!==void 0&&(t[r]=JSON.stringify(n)));return t}function Yp(e){let{spool_id:t,...r}=e;return Or(JSON.stringify(r))}function ak(e){return typeof e.spool_id=="string"&&Yp(e)!==null}function ck(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function qa(e){return Cr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var YR,Xp=h(()=>{"use strict";fe();M();Xs();Ga();YR=64*1024});function to(e){return e.trim().split(/\s+/).filter(Boolean)}function vn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Cn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ye(e){let t=to(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:qt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:qt(t)&&t[1]?`gh ${t[1]} json-jq`:qt(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function qt(e){return e[0]==="gh"&&e.some(uk)}function uk(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Pr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Tn=h(()=>{"use strict"});var V,ro=h(()=>{"use strict";Pe();V="rsp_elisions_v1"});import{spawnSync as An}from"node:child_process";import{createHash as Xa}from"node:crypto";import{existsSync as lk}from"node:fs";import{mkdir as dk,readFile as pk,readdir as Zp,rename as fk,writeFile as mk}from"node:fs/promises";import{homedir as gk}from"node:os";import{basename as hk,dirname as yk,join as On}from"node:path";import{fileURLToPath as bk}from"node:url";import{gunzipSync as wk,gzipSync as _k}from"node:zlib";function In(e,t){return`el:${Xa("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function ht(e){return`record:${e.slice(3)}`}function Kt(e){return`expired:${e.slice(3)}`}function oo(){return"index:v1"}function Rk(e){return`blob:${e}`}function Qp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ct(e){let t=to(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":io(t)?"re-executable":"ephemeral"}return"ephemeral"}function Ln(e){return lo(e.storage_class)?e.storage_class:ct(e.command)}function ef(e){return lo(e.storage_class)?e.storage_class:ct(e.command)}function Za(e){let t=Ek(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=ef(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function Qa(e,t,r){let n=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let o=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:o,age_display:kk(o),storage_class:ef(s),recover:`rsp show ${s.handle}`}})}function kk(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function ec(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function zt(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function tc(e,t){let r=process.cwd(),n=An("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=An("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:Sk(r),original_bytes:e.length}:null}function Sk(e){let t=za(e,["rev-parse","HEAD"])||"unborn",r=za(e,["write-tree"])||"no-index",n=za(e,["status","--porcelain=v1","-z"])||"";return Xa("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function za(e,t){let r=An("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function rc(e,t){let r=to(t);if(!io(r))return null;let n=sf(process.cwd(),r,e.length);return!n||Vt(n)!==Vt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Vt(e)}}function io(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Vt(e){return Xa("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function nc(e,t,r,n){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):r?Buffer.byteLength(JSON.stringify(r),"utf8"):n?n.stored_bytes:e.length}function sc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function oc(e,t,r){let n=_k(e);return{key:Rk(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function tf(e){try{let t=wk(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function rf(e){let t=e.object_ids[0];if(!t)return null;let r=An("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function nf(e){if(!io(e.argv))return null;let t=sf(e.cwd,e.argv,e.original_bytes);return t?Vt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
55
- `,"utf8"),t]):null}function sf(e,t,r){let n=t[0];if(!n)return null;let s=An(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function Ek(){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 $n(e){return/^el:[a-f0-9]{12}$/.test(e)}function so(e){return/^blob:[a-f0-9]{64}$/.test(e)}function of(e){if(!Pn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:Pn(e.scope)?e.scope:void 0,ranking:Pn(e.ranking)?e.ranking:void 0}}}function af(e){if(!Pn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function Pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function cf(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function o(i){if(n.length>=t)return;let a=await Zp(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=On(i,c.name);c.isDirectory()?await o(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await o(e),n}function uf(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Pn(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function ao(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Dn(e){if(!be(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=vk(e.derivation_recipe),n=Ck(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&so(s);return e.collection===V&&typeof e.handle=="string"&&$n(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ac(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&so(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&xk(e.loss)&&(e.storage_class===void 0||lo(e.storage_class))}function ic(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!be(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&$n(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||lo(t.storage_class))&&(r===void 0||typeof r=="string"&&so(r))})}function co(e){return be(e)&&typeof e.key=="string"&&so(e.key)&&ac(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function uo(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function xk(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function lo(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function vk(e){return be(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function Ck(e){return be(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&io(e.argv)&&typeof e.original_bytes=="number"&&ac(e.content_hash)}function ac(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function lf(e){try{let n=(await pk(e,"utf8")).trim();if(n==="")return no();let s;try{s=JSON.parse(n)}catch{s=D(n)}if(Tk(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=no();return await Ar(e,s),s}let n=no();return await Ar(e,n),n}let t=no();return await Ar(e,t),t}async function df(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function pf(e){return hk(e)==="red-skills.rdb"}async function po(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?On(process.env.XDG_CACHE_HOME,"red-skills","bundles"):On(gk(),".cache","red-skills","bundles")),t=On(e,"reddb"),r;try{r=await Zp(t)}catch{return}r.sort().reverse();for(let n of r){let s=On(t,n,process.platform==="win32"?"red.exe":"red");if(lk(s)){process.env.REDDB_BIN=s;return}}}async function Ar(e,t){await dk(yk(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await mk(r,`${C(Ya(t))}
56
- `,"utf8"),await fk(r,e)}function Ya(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>Ya(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Ya(n));return t}return String(e)}function no(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Tk(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(Dn)&&(e.blobs===void 0||be(e.blobs)&&Object.values(e.blobs).every(co))&&be(e.tombstones)&&Object.values(e.tombstones).every(uo)&&ic(e.index)}function ff(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return bk(e)}var fo=h(()=>{"use strict";M();Tn();ro()});async function mf(e,t){return Ok?Ik(e,t):Pk?$k(e,t):Ak(e,t)}async function Ak(e,t){let{spawn:r}=await import("node:child_process"),n=r(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{n.stdin.write(s,a=>a?i(a):o())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",o=>s(o??0))})}}}function Ik(e,t){let r=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),n=r.stdin.getWriter?r.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){n?await n.write(s):(r.stdin.write(s),await r.stdin.flush())},end(){n?n.close():r.stdin.end()}},stdout:Lk(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Lk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}async function $k(e,t){let n=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=n.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:Dk(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Dk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Ok,Pk,gf=h(()=>{Ok=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Pk=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Nk}from"node:fs";import{join as Mk}from"node:path";function hf(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:r,envVar:n}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[n];if(typeof s=="string"&&s!=="")return s;let o=Mk(r,"bin",t);if(Nk(o))return o;throw new Error(`reddb: binary "${t}" not found.
61
+ `))Ya(o)&&t.push(o)}catch{}}}return t}function Qs(e){return`legacy:${ak("sha256").update(e).digest("hex").slice(0,24)}`}function Rk(e){let t={spool_id:e.spool_id};for(let[r,n]of Object.entries(e.event??{}))r!=="spool_id"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null?t[r]=n:n!==void 0&&(t[r]=JSON.stringify(n)));return t}function df(e){let{spool_id:t,...r}=e;return Or(JSON.stringify(r))}function kk(e){return typeof e.spool_id=="string"&&df(e)!==null}function Sk(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function Ya(e){return Cr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var dk,pf=h(()=>{"use strict";me();N();Zs();qa();dk=64*1024});function ro(e){return e.trim().split(/\s+/).filter(Boolean)}function vn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Cn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function be(e){let t=ro(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:qt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:qt(t)&&t[1]?`gh ${t[1]} json-jq`:qt(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function qt(e){return e[0]==="gh"&&e.some(Ek)}function Ek(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Pr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Tn=h(()=>{"use strict"});var V,no=h(()=>{"use strict";Ae();V="rsp_elisions_v1"});import{spawnSync as An}from"node:child_process";import{createHash as tc}from"node:crypto";import{existsSync as xk}from"node:fs";import{mkdir as vk,readFile as Ck,readdir as ff,rename as Tk,writeFile as Ok}from"node:fs/promises";import{homedir as Pk}from"node:os";import{basename as Ak,dirname as Ik,join as On}from"node:path";import{fileURLToPath as Lk}from"node:url";import{gunzipSync as $k,gzipSync as Dk}from"node:zlib";function In(e,t){return`el:${tc("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function ht(e){return`record:${e.slice(3)}`}function Kt(e){return`expired:${e.slice(3)}`}function io(){return"index:v1"}function Nk(e){return`blob:${e}`}function mf(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ct(e){let t=ro(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":ao(t)?"re-executable":"ephemeral"}return"ephemeral"}function Ln(e){return po(e.storage_class)?e.storage_class:ct(e.command)}function gf(e){return po(e.storage_class)?e.storage_class:ct(e.command)}function rc(e){let t=Fk(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=gf(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function nc(e,t,r){let n=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let o=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:o,age_display:Mk(o),storage_class:gf(s),recover:`rsp show ${s.handle}`}})}function Mk(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function sc(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function zt(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function oc(e,t){let r=process.cwd(),n=An("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=An("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:Bk(r),original_bytes:e.length}:null}function Bk(e){let t=Qa(e,["rev-parse","HEAD"])||"unborn",r=Qa(e,["write-tree"])||"no-index",n=Qa(e,["status","--porcelain=v1","-z"])||"";return tc("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Qa(e,t){let r=An("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ic(e,t){let r=ro(t);if(!ao(r))return null;let n=wf(process.cwd(),r,e.length);return!n||Vt(n)!==Vt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Vt(e)}}function ao(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Vt(e){return tc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ac(e,t,r,n){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):r?Buffer.byteLength(JSON.stringify(r),"utf8"):n?n.stored_bytes:e.length}function cc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function uc(e,t,r){let n=Dk(e);return{key:Nk(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function hf(e){try{let t=$k(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yf(e){let t=e.object_ids[0];if(!t)return null;let r=An("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function bf(e){if(!ao(e.argv))return null;let t=wf(e.cwd,e.argv,e.original_bytes);return t?Vt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
62
+ `,"utf8"),t]):null}function wf(e,t,r){let n=t[0];if(!n)return null;let s=An(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function Fk(){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 $n(e){return/^el:[a-f0-9]{12}$/.test(e)}function oo(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _f(e){if(!Pn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:Pn(e.scope)?e.scope:void 0,ranking:Pn(e.ranking)?e.ranking:void 0}}}function Rf(e){if(!Pn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function Pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function kf(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function o(i){if(n.length>=t)return;let a=await ff(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=On(i,c.name);c.isDirectory()?await o(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await o(e),n}function Sf(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Pn(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function co(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Dn(e){if(!we(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Hk(e.derivation_recipe),n=Gk(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&oo(s);return e.collection===V&&typeof e.handle=="string"&&$n(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||dc(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&oo(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&jk(e.loss)&&(e.storage_class===void 0||po(e.storage_class))}function lc(e){return!we(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!we(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&$n(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||po(t.storage_class))&&(r===void 0||typeof r=="string"&&oo(r))})}function uo(e){return we(e)&&typeof e.key=="string"&&oo(e.key)&&dc(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function lo(e){return we(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function jk(e){return we(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function po(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Hk(e){return we(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function Gk(e){return we(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&ao(e.argv)&&typeof e.original_bytes=="number"&&dc(e.content_hash)}function dc(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function we(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ef(e){try{let n=(await Ck(e,"utf8")).trim();if(n==="")return so();let s;try{s=JSON.parse(n)}catch{s=L(n)}if(Wk(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=so();return await Ar(e,s),s}let n=so();return await Ar(e,n),n}let t=so();return await Ar(e,t),t}async function xf(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function vf(e){return Ak(e)==="red-skills.rdb"}async function fo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?On(process.env.XDG_CACHE_HOME,"red-skills","bundles"):On(Pk(),".cache","red-skills","bundles")),t=On(e,"reddb"),r;try{r=await ff(t)}catch{return}r.sort().reverse();for(let n of r){let s=On(t,n,process.platform==="win32"?"red.exe":"red");if(xk(s)){process.env.REDDB_BIN=s;return}}}async function Ar(e,t){await vk(Ik(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Ok(r,`${C(ec(t))}
63
+ `,"utf8"),await Tk(r,e)}function ec(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>ec(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=ec(n));return t}return String(e)}function so(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Wk(e){return we(e)&&e.version===1&&we(e.records)&&Object.values(e.records).every(Dn)&&(e.blobs===void 0||we(e.blobs)&&Object.values(e.blobs).every(uo))&&we(e.tombstones)&&Object.values(e.tombstones).every(lo)&&lc(e.index)}function Cf(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Lk(e)}var mo=h(()=>{"use strict";N();Tn();no()});async function Tf(e,t){return Uk?Vk(e,t):Jk?zk(e,t):qk(e,t)}async function qk(e,t){let{spawn:r}=await import("node:child_process"),n=r(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{n.stdin.write(s,a=>a?i(a):o())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",o=>s(o??0))})}}}function Vk(e,t){let r=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),n=r.stdin.getWriter?r.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){n?await n.write(s):(r.stdin.write(s),await r.stdin.flush())},end(){n?n.close():r.stdin.end()}},stdout:Kk(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Kk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}async function zk(e,t){let n=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=n.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:Yk(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Yk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Uk,Jk,Of=h(()=>{Uk=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Jk=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Xk}from"node:fs";import{join as Zk}from"node:path";function Pf(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:r,envVar:n}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[n];if(typeof s=="string"&&s!=="")return s;let o=Zk(r,"bin",t);if(Xk(o))return o;throw new Error(`reddb: binary "${t}" not found.
57
64
  expected at: ${o}
58
65
  override: set ${n}=/path/to/${t}
59
66
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
60
- or check the postinstall log for a download error.`)}var yf=h(()=>{});import{fileURLToPath as Bk}from"node:url";import{dirname as Fk,resolve as jk,join as qL}from"node:path";function Uk(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function bf(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:hf({name:Uk(),packageRoot:Gk,envVar:"REDDB_BIN"})}var Hk,Gk,wf=h(()=>{yf();Hk=Fk(Bk(import.meta.url)),Gk=jk(Hk,"..")});var Wk,Jk,v,mo,yt=h(()=>{Wk=new TextEncoder,Jk=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},mo=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(Wk.encode(s+`
61
- `)).catch(a=>{this.pending.delete(n),i(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(Jk.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new v(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function uc(e){if(typeof e!="string"||e.length===0)throw new TypeError("connect() requires a URI string (e.g. 'red://localhost:5050' or 'red:///data.rdb')");return e.startsWith("red://")||e==="red:"||e==="red:/"?qk(e):Vk(e)}function qk(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let r;try{r=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=Kk(s),a=r.port?Number(r.port):cc(i),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:i,host:r.hostname,port:a,path:o||void 0,username:c,password:u,token:n.get("token")??void 0,apiKey:n.get("apiKey")??n.get("api_key")??void 0,loginUrl:n.get("loginUrl")??n.get("login_url")??void 0,params:n,originalUri:e}}function Vk(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):cc(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):cc(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Kk(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function cc(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var lc=h(()=>{yt()});function Yk(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return _f(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return _f(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function _f(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function Xk(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}var zk,Nn,dc=h(()=>{yt();zk=new Set(["embedded"]),Nn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&zk.has(this._transport))throw new v("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:Xk(n.value)}async put(t,r,n,s={}){this._guard("put");let o=Yk(n);await this._client.call("cache.put",{namespace:t,key:r,value:o,...s})}async exists(t,r){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:r}))?.status??"maybe"}async invalidate(t,r){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:r})}async invalidatePrefix(t,r){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:r}))?.removed??0}async invalidateTags(t,r){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:r}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function pc(e,t){return`${fc(e)}.${Zk(t)}`}function fc(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Zk(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Qk(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function Rf(e){return`'${String(e).replace(/'/g,"''")}'`}var Ir,mc=h(()=>{yt();Ir=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Rf).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${pc(s,t)} = ${Qk(r)}${i}${o}`})}set(t,r,n={}){return this.put(t,r,n)}async get(t,r={}){let n=r.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${pc(n,t)}`}))?.rows?.[0]?.value??null}async getMany(t,r={}){let n=[];for(let s of t)n.push(await this.get(s,r));return n}async exists(t,r={}){return{exists:await this.get(t,r)!==null}}async delete(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${pc(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${fc(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Rf).join(", ")}] FROM ${fc(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
67
+ or check the postinstall log for a download error.`)}var Af=h(()=>{});import{fileURLToPath as Qk}from"node:url";import{dirname as eS,resolve as tS,join as l$}from"node:path";function sS(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function If(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Pf({name:sS(),packageRoot:nS,envVar:"REDDB_BIN"})}var rS,nS,Lf=h(()=>{Af();rS=eS(Qk(import.meta.url)),nS=tS(rS,"..")});var oS,iS,v,go,yt=h(()=>{oS=new TextEncoder,iS=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},go=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(oS.encode(s+`
68
+ `)).catch(a=>{this.pending.delete(n),i(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(iS.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new v(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function fc(e){if(typeof e!="string"||e.length===0)throw new TypeError("connect() requires a URI string (e.g. 'red://localhost:5050' or 'red:///data.rdb')");return e.startsWith("red://")||e==="red:"||e==="red:/"?aS(e):cS(e)}function aS(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let r;try{r=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=uS(s),a=r.port?Number(r.port):pc(i),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:i,host:r.hostname,port:a,path:o||void 0,username:c,password:u,token:n.get("token")??void 0,apiKey:n.get("apiKey")??n.get("api_key")??void 0,loginUrl:n.get("loginUrl")??n.get("login_url")??void 0,params:n,originalUri:e}}function cS(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):pc(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):pc(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function uS(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function pc(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var mc=h(()=>{yt()});function dS(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $f(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $f(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $f(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function pS(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}var lS,Nn,gc=h(()=>{yt();lS=new Set(["embedded"]),Nn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&lS.has(this._transport))throw new v("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:pS(n.value)}async put(t,r,n,s={}){this._guard("put");let o=dS(n);await this._client.call("cache.put",{namespace:t,key:r,value:o,...s})}async exists(t,r){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:r}))?.status??"maybe"}async invalidate(t,r){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:r})}async invalidatePrefix(t,r){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:r}))?.removed??0}async invalidateTags(t,r){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:r}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function hc(e,t){return`${yc(e)}.${fS(t)}`}function yc(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function fS(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function mS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function Df(e){return`'${String(e).replace(/'/g,"''")}'`}var Ir,bc=h(()=>{yt();Ir=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Df).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${hc(s,t)} = ${mS(r)}${i}${o}`})}set(t,r,n={}){return this.put(t,r,n)}async get(t,r={}){let n=r.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${hc(n,t)}`}))?.rows?.[0]?.value??null}async getMany(t,r={}){let n=[];for(let s of t)n.push(await this.get(s,r));return n}async exists(t,r={}){return{exists:await this.get(t,r)!==null}}async delete(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${hc(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${yc(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Df).join(", ")}] FROM ${yc(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
62
69
 
63
70
  `)){let l=u.split(`
64
- `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function eS(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=ut(e),a=ut(t),c=s!=null?` GROUP ${ut(s)}`:"",u=o!=null?hc(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ut(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function hc(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function tS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function rS(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${tS(e.priority)}`),e.key!=null&&(t+=` KEY ${yc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${yc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function nS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?yc(e):JSON.stringify(e)}function yc(e){return`'${String(e).replace(/'/g,"''")}'`}function gc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Mn,bc=h(()=>{yt();Mn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ut(t)}`})}push(t,r,n={}){let s=rS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${nS(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ut(t)}${hc(r)}`});return gc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ut(t)}${hc(r)}`});return gc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ut(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ut(t)}`})}async readWait(t,r,n={}){let s=eS(t,r,n),o=await this.client.call("query",{sql:s});return gc(o)}}});function kf(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function sS(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function go(e){return String(e).split(".").map(Sf).join(".")}function Sf(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function oS(e){return Ef(JSON.stringify(e))}function iS(e){return JSON.stringify(e)}function aS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?oS(e):Ef(e)}function Ef(e){return`'${String(e).replace(/'/g,"''")}'`}var Bn,wc=h(()=>{yt();Bn=class{constructor(t){this.db=t}async insert(t,r){kf(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${go(t)} DOCUMENT VALUES (${iS(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=sS(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${go(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){kf(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Sf(c)} = ${aS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${go(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${go(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function cS(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return lS(e)}function uS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function bt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function lS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):xf(e)}function xf(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,_c=h(()=>{Fn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){uS(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(xf).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${bt(s)} ${bt(t)} = ${cS(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${bt(n)} ${bt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${bt(n)} ${bt(t)}`})}}});function dS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Lr(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function pS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):vf(e)}function vf(e){return`'${String(e).replace(/'/g,"''")}'`}var jn,Rc=h(()=>{jn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){dS(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(vf).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Lr(s)}.${Lr(t)} = ${pS(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Lr(n)}.${Lr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Lr(n)}.${Lr(t)}`})}}});async function Tf(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fS)}async function Of(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gS(t)}`)).rows??[]).some(n=>n.name===String(t))}function fS(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Cf(e){return String(e).split(".").map(mS).join(".")}function mS(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function gS(e){return`'${String(e).replace(/'/g,"''")}'`}var Hn,kc=h(()=>{yt();Hn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Cf).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Cf(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function bo(e,t={}){let r=uc(e);if(xS(r),r.kind==="embedded"){let n=ES(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=SS(r),o=t.binary??bf(),i=await mf(o,s),a=new mo(i);return await a.call("version",{}),new Ec(a,{transport:"embedded"})}}function Af(e){return bS(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:_S(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&kS(e)?{$uuid:e}:e}function bS(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function wS(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Af):e.map(Af)}function _S(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function RS(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function kS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function ho(e){if(Array.isArray(e))return e.map(ho);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return RS(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=ho(s);return r}return e}function SS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function ES(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");r.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");r.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");r.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function xS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",hS)}function xc(){return new v(Pf,`${Pf}: nested transactions are not supported on one connection`)}function Lf(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vS(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${If} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function CS(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${If} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var hS,yS,If,Pf,yo,Sc,Ec,$f=h(()=>{gf();wf();yt();lc();dc();mc();bc();wc();_c();Rc();kc();dc();mc();bc();wc();_c();Rc();kc();lc();hS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yS="1.0",If="1.0.9",Pf="NESTED_TX_NOT_SUPPORTED";yo=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw xc()}},Sc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw xc();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new yo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Lf(r,n)}throw r}}},Ec=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=yS,this.cache=new Nn(t,this.transport),this.queue=new Mn(t),this.queues=this.queue,this.documents=new Bn(this);let n=new Ir(t);this.kv=Object.assign((s="kv_default")=>new Ir(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new Fn(t,s),this.vault=(s="red.vault")=>new jn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=wS(r);return n==null?this.client.call("query",{sql:t}).then(ho):this.client.call("query",{sql:t,params:n}).then(ho)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return vS(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return CS(n,r.length)}tx(){return new Sc(this)}async transaction(t){if(this.inTransaction)throw xc();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new yo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Lf(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Of(this,t)}list(){return Tf(this)}from(t){return new Hn(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as TS}from"node:crypto";import{existsSync as Df}from"node:fs";import{mkdir as OS,readFile as PS,rename as vc,rm as Gn,stat as Cc}from"node:fs/promises";import{basename as AS,dirname as IS}from"node:path";async function Nf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Mf=h(()=>{"use strict";$f();ro();fo();Yt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=ff(t.uri),n=await df(r),s=new e(n,{uri:t.uri,ttlDays:ao(t.ttlDays,ve),ephemeralTtlHours:ao(t.ephemeralTtlHours,Ce),byteBudget:ao(t.byteBudget,Te),now:t.now??(()=>new Date)});return pf(n)?(await po(),await OS(IS(n),{recursive:!0}),s.db=await bo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await lf(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?tc(n,r.command):null,l=c==="re-executable"?rc(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ec(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?oc(n,f,o):null,w=nc(n,u,l,m);m&&!this.document.blobs[m.key]&&(this.document.blobs[m.key]=m,this.dirty=!0);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};return delete this.document.tombstones[Kt(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!$n(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:ht(n.handle),bytes:sc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:zt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Za(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Qa(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=zt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=zt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[Kt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Kt(t)];return uo(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return rf(t.derivation_recipe);if(t.reexecution_recipe)return nf(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return co(r)?tf(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Ar(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Cc(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},i=Buffer.byteLength(`${JSON.stringify(o)}
65
- `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Ar(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(V)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===V);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${V}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${V}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${V}`),await this.db.query(`CREATE KV IF NOT EXISTS ${V}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?tc(n,r.command):null,l=c==="re-executable"?rc(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ec(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?oc(n,f,o):null,w=nc(n,u,l,m);m&&!co(await this.kvGet(m.key))&&await this.kv().put(m.key,m);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};await this.kv().delete(Kt(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(b=>b.handle!==i);return y.push({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,w),i}async getRedDb(t){if(!$n(t))return null;let r=await this.kvGet(Kt(t));if(uo(r))return r;let n=await this.kvGet(ht(t));if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:ht(n.handle),bytes:sc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:zt(t.records),oldest:t.records.reduce((r,n)=>r==null||n.created_at<r?n.created_at:r,null),budget:this.opts.byteBudget,storage_classes:Za(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Qa(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=of(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=af(r);return await this.memoryIngestRedDb(n)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await cf(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await PS(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=AS(s),c=TS("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},p=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(p.rows[0]?.red_entity_id??p.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>uf(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
66
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(oo());return ic(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(oo(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=zt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=zt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Cc(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await Gn(o,{force:!0}),await Gn(i,{force:!0});let a=await bo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${Qp(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Cc(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Gn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await vc(this.path,i),await vc(o,this.path),await Gn(i,{force:!0})}catch(u){throw!Df(this.path)&&Df(i)&&await vc(i,this.path),await Gn(o,{force:!0}),u}finally{this.db=await bo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===V){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:oo(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:V,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Kt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(ht(t));if(!Dn(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Bf={};F(Bf,{DEFAULT_RSP_BYTE_BUDGET:()=>Te,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ce,DEFAULT_RSP_TTL_DAYS:()=>ve,RSP_ELISION_COLLECTION:()=>V,RspElisionStore:()=>Yt,contentHandle:()=>In,ensureReddbBinaryFromWarmCache:()=>po,provisionElisionStore:()=>Nf,storageClassForCommand:()=>ct});var wo=h(()=>{"use strict";ro();fo();fo();Mf()});async function _o(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await Hf(e,s),i=(await Un(e,X)).filter(E=>Dr(E)>=s),a=o.filter(E=>P(E.event_type)!=="show"&&P(E.degradation_reason)===""),c=o.filter(E=>P(E.event_type)==="show"),u=o.filter(E=>P(E.degradation_reason)!==""),l=0,p=0,d=0,f=0,m=!1,w=new Map,_=new Map,g=[],y=0,b=0,R=0;for(let E of a){E.elided===!0&&l++;let I=he(E.raw_bytes),Ye=he(E.emitted_bytes),Tt=Math.max(0,I-Ye),ir=Nr(E,"raw"),k=Nr(E,"emitted"),O=Math.max(0,ir.tokens-k.tokens);m||=(E.estimated===!0||ir.estimated||k.estimated)&&O>0,p+=I,d+=Ye,f+=O;let Ot=Xt(E).slice(0,10);Ot&&w.set(Ot,(w.get(Ot)??0)+O);let Pt=P(E.command)||"unknown",Re=_.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};Re.invocations++,Re.bytes_saved+=Tt,Re.tokens_saved+=O,_.set(Pt,Re);let ke=mt(E.wrapper_ms);ke!=null&&g.push(ke),y+=he(E.store_open_count);let ar=mt(E.store_elapsed_ms);ar!=null&&(b+=ar,R++)}let T=new Map,B=new Map,_e=[],$e=null;for(let E of u){let I=P(E.degradation_reason)||P(E.reason)||"unknown",Ye=P(E.wrapper_family)||ye(P(E.command));T.set(I,(T.get(I)??0)+1),B.set(Ye,(B.get(Ye)??0)+1);let Tt=Xt(E);_e.push({timestamp:Tt,family:Ye,command:P(E.command)||"unknown",reason:I,exit_code:mt(E.wrapper_exit_code),stderr_head:P(E.stderr_head)||null}),(!$e||Tt>$e.timestamp)&&($e={timestamp:Tt,reason:I,command:P(E.command)||"unknown"})}let oe=a.length+u.length,lt=c.filter(E=>E.hit===!0).length,ie=ca(f,m),Vr=LS(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[...w.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:lt,show_misses:Math.max(0,c.length-lt),show_hit_rate:c.length===0?0:Z(lt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...B.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:_e.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:$e},latency:{wrapper_ms_p50:$r(g,.5),wrapper_ms_p95:$r(g,.95),store_open_count_sum:y,store_elapsed_ms_sum:Z(b),store_elapsed_ms_avg:R===0?null:Z(b/R)},decisions:Vr}}function LS(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,he(a.saved_units))),c!=="contributed"){let p=P(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function Tc(e,t,r=new Date){let s=(await Un(e,ce)).filter(o=>Dr(o)<=r.getTime()||Xt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Xt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:GS(s)}}async function Oc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await Hf(e,i),c=a.filter(k=>P(k.event_type)!=="show"&&P(k.event_type)!=="control_holdout"&&k.control_holdout!==!0&&P(k.degradation_reason)===""),u=a.filter(k=>P(k.event_type)==="control_holdout"||k.control_holdout===!0),l=a.filter(k=>P(k.event_type)==="show"),p=a.filter(k=>P(k.degradation_reason)!==""),d=[...c,...p].map(Dr).filter(k=>Number.isFinite(k)&&k>0),f=d.length===0?null:Math.min(...d),m=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/XS()))),w=[],_=new Map,g=new Map,y=new Map,b=new Map,R=new Map,T=new Map,B=0,_e=!1,$e=0,oe=null,lt=0,ie=0;for(let k of c){let O=Xt(k),Ot=O.slice(0,10),Pt=O.slice(0,16),Re=ye(P(k.command)),ke=Math.max(0,Nr(k,"raw").tokens-Nr(k,"emitted").tokens);B+=ke,_e||=k.estimated===!0&&ke>0;let ar=Math.max(0,he(k.raw_bytes)-he(k.emitted_bytes)),pi=mt(k.wrapper_ms);if(pi!=null){w.push(pi);let tl=_.get(Re)??[];tl.push(pi),_.set(Re,tl)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let fi=qS(O);fi&&b.set(fi,(b.get(fi)??0)+1);let mi=zS(O);mi&&R.set(mi,(R.get(mi)??0)+ke);let ls=T.get(Re)??{command_family:Re,invocations:0,tokens_saved:0,bytes_saved:0};ls.invocations++,ls.tokens_saved+=ke,ls.bytes_saved+=ar,T.set(Re,ls),k.elided===!0&&$e++,(k.store_open_count!=null||k.store_elapsed_ms!=null)&&(lt++,he(k.store_open_count)>0&&ie++),ke>0&&(!oe||ke>oe.tokens_saved||ke===oe.tokens_saved&&ar>oe.bytes_saved)&&(oe={timestamp:O,command_family:Re,tokens_saved:ke,bytes_saved:ar})}let Vr=p.map(k=>({timestamp:Xt(k),command_family:ye(P(k.command)),reason:P(k.degradation_reason)||P(k.reason)||"unknown"})).sort((k,O)=>k.timestamp.localeCompare(O.timestamp)),E=new Map;for(let k of Vr)E.set(k.reason,(E.get(k.reason)??0)+1);let I=MS(Vr),Ye=NS(l),Tt=FS([...T.values()],Ye,I),ir=[...y.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:m,since:o,until:s,label:`window: ${n}d, data: ${m}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:jf(w),by_command_family:[..._.entries()].sort((k,O)=>O[1].length-k[1].length||k[0].localeCompare(O[0])).map(([k,O])=>({command_family:k,count:O.length,...jf(O)}))},throughput:{requests_per_day:[...g.entries()].sort(([k],[O])=>k.localeCompare(O)).map(([k,O])=>({date:k,requests:O})),active_minute_avg:y.size===0?null:Z([...y.values()].reduce((k,O)=>k+O,0)/y.size),peak_minute:ir?{minute:ir[0],requests:ir[1]}:null,hour_weekday_heatmap:VS(b)},savings:{tokens:ca(B,_e),measured_control_holdout:$S(c,u),weekly_tokens_saved:YS(R),elision_rate:c.length===0?0:Z($e/c.length),top_commands_by_tokens_saved:[...T.values()].sort((k,O)=>O.tokens_saved-k.tokens_saved||O.bytes_saved-k.bytes_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((k,O)=>O.invocations-k.invocations||O.tokens_saved-k.tokens_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Vr,degradations_by_reason:[...E.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0])).map(([k,O])=>({reason:k,count:O})),cold_boots:lt===0?null:ie,warm_hits:lt===0?null:Math.max(0,lt-ie)},mining:{recovery_usage_by_family:Ye,degradation_clusters:I,threshold_tuning_suggestions:Tt}}}async function Hf(e,t){let r=(await Un(e,ce)).filter(i=>Dr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await Un(e,ge)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await Un(e,We)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function Nr(e,t){let r=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=he(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function $S(e,t){let r=HS(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(Ff).filter(a=>a!=null),s=t.map(Ff).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(jS(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:DS(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Ff(e){let t=Nr(e,"raw").tokens;if(t<=0)return null;let r=Nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function DS(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function NS(e){let t=new Map;for(let r of e){let n=ye(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function MS(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:BS(r)}))}function BS(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function FS(e,t,r){let n=[];for(let s of t.filter(o=>o.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(o=>o.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function jS(e){return e.reduce((t,r)=>t+r,0)/e.length}function HS(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function GS(e){let t=WS();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=US(r.storage_class)??ct(P(r.command));t[n].records+=1;let s=he(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function US(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function WS(){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}}}async function Un(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>JS(n.value)).filter(n=>Cr(n))}function JS(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dr(e){let t=Date.parse(Xt(e));return Number.isFinite(t)?t:0}function Xt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function $r(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function jf(e){return{wrapper_ms_p50:$r(e,.5),wrapper_ms_p90:$r(e,.9),wrapper_ms_p95:$r(e,.95),wrapper_ms_p99:$r(e,.99)}}function Z(e){return Math.round(e*100)/100}function qS(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${KS(t.getUTCDay())}:${t.getUTCHours()}`:null}function VS(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function KS(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function zS(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function YS(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function XS(){return 24*60*60*1e3}var Gf=h(()=>{"use strict";Tn();wo();ua();Xs();Ga()});var Wn={};F(Wn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>We,RSP_TELEMETRY_INDEX_COLLECTION:()=>En,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ge,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>ja,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ha,RSP_TELEMETRY_SPOOL_FILE:()=>Fa,appendTelemetryEvent:()=>at,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Ka,parseTelemetryEvent:()=>Or,readAccountingLaneStats:()=>Tc,readTelemetryGainsReport:()=>Oc,readTelemetryStats:()=>_o,takeTelemetrySpool:()=>ZR,telemetryLegacySpoolPath:()=>eo,telemetrySpoolCorrectionsPath:()=>Va,telemetrySpoolPath:()=>it});var Ae=h(()=>{"use strict";Xs();Xp();Gf()});var Wf={};F(Wf,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Js,sweepGhEtagCache:()=>Da});import{spawn as ZS}from"node:child_process";import{createHash as QS,randomUUID as eE}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??xe,o=tE(e.path,e.params),i=rE(o),c=Wi(r,"gh-api-json")?void 0:await Ia(r,i),u=["api","--include","--method","GET",e.path];for(let[m,w]of Uf(e.params))u.push("-f",`${m}=${String(w)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await nE(u,t,e.env,e.signal),p=m=>{let w=un();an(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:w.childMs,selfStateBytesRead:w.selfStateBytesRead,bytesSaved:m},s)},d=sE(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await Pc(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let m=d.headers.get("etag");return m&&await La(r,{key:i,request:o,etag:m,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await Pc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:m??void 0,quotaFree:!1}}return p(0),await Pc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function Uf(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function tE(e,t){return JSON.stringify({method:"GET",path:e,params:Uf(t)})}function rE(e){return QS("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function nE(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=ZS("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],p=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>p.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(p).toString("utf8").trim()})})})}function sE(e){let t=e.replace(/\r\n/g,`
71
+ `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function gS(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=ut(e),a=ut(t),c=s!=null?` GROUP ${ut(s)}`:"",u=o!=null?_c(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ut(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function _c(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function hS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function yS(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${hS(e.priority)}`),e.key!=null&&(t+=` KEY ${Rc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Rc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function bS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Rc(e):JSON.stringify(e)}function Rc(e){return`'${String(e).replace(/'/g,"''")}'`}function wc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Mn,kc=h(()=>{yt();Mn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ut(t)}`})}push(t,r,n={}){let s=yS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${bS(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ut(t)}${_c(r)}`});return wc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ut(t)}${_c(r)}`});return wc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ut(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ut(t)}`})}async readWait(t,r,n={}){let s=gS(t,r,n),o=await this.client.call("query",{sql:s});return wc(o)}}});function Nf(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function wS(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function ho(e){return String(e).split(".").map(Mf).join(".")}function Mf(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function _S(e){return Bf(JSON.stringify(e))}function RS(e){return JSON.stringify(e)}function kS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?_S(e):Bf(e)}function Bf(e){return`'${String(e).replace(/'/g,"''")}'`}var Bn,Sc=h(()=>{yt();Bn=class{constructor(t){this.db=t}async insert(t,r){Nf(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${ho(t)} DOCUMENT VALUES (${RS(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=wS(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${ho(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Nf(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Mf(c)} = ${kS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${ho(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${ho(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function SS(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return xS(e)}function ES(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function bt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function xS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ff(e)}function Ff(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,Ec=h(()=>{Fn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ES(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ff).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${bt(s)} ${bt(t)} = ${SS(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${bt(n)} ${bt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${bt(n)} ${bt(t)}`})}}});function vS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Lr(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function CS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):jf(e)}function jf(e){return`'${String(e).replace(/'/g,"''")}'`}var jn,xc=h(()=>{jn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){vS(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(jf).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Lr(s)}.${Lr(t)} = ${CS(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Lr(n)}.${Lr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Lr(n)}.${Lr(t)}`})}}});async function Gf(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(TS)}async function Wf(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${PS(t)}`)).rows??[]).some(n=>n.name===String(t))}function TS(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Hf(e){return String(e).split(".").map(OS).join(".")}function OS(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function PS(e){return`'${String(e).replace(/'/g,"''")}'`}var Hn,vc=h(()=>{yt();Hn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Hf).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Hf(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function wo(e,t={}){let r=fc(e);if(jS(r),r.kind==="embedded"){let n=FS(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=BS(r),o=t.binary??If(),i=await Tf(o,s),a=new go(i);return await a.call("version",{}),new Tc(a,{transport:"embedded"})}}function Jf(e){return LS(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:DS(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&MS(e)?{$uuid:e}:e}function LS(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function $S(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jf):e.map(Jf)}function DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function NS(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function MS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function yo(e){if(Array.isArray(e))return e.map(yo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return NS(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=yo(s);return r}return e}function BS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function FS(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");r.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");r.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");r.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function jS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",AS)}function Oc(){return new v(Uf,`${Uf}: nested transactions are not supported on one connection`)}function Vf(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function HS(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qf} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function GS(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${qf} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var AS,IS,qf,Uf,bo,Cc,Tc,Kf=h(()=>{Of();Lf();yt();mc();gc();bc();kc();Sc();Ec();xc();vc();gc();bc();kc();Sc();Ec();xc();vc();mc();AS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",IS="1.0",qf="1.0.9",Uf="NESTED_TX_NOT_SUPPORTED";bo=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw Oc()}},Cc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Oc();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new bo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Vf(r,n)}throw r}}},Tc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=IS,this.cache=new Nn(t,this.transport),this.queue=new Mn(t),this.queues=this.queue,this.documents=new Bn(this);let n=new Ir(t);this.kv=Object.assign((s="kv_default")=>new Ir(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new Fn(t,s),this.vault=(s="red.vault")=>new jn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=$S(r);return n==null?this.client.call("query",{sql:t}).then(yo):this.client.call("query",{sql:t,params:n}).then(yo)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return HS(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return GS(n,r.length)}tx(){return new Cc(this)}async transaction(t){if(this.inTransaction)throw Oc();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new bo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Vf(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Wf(this,t)}list(){return Gf(this)}from(t){return new Hn(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as WS}from"node:crypto";import{existsSync as zf}from"node:fs";import{mkdir as US,readFile as JS,rename as Pc,rm as Gn,stat as Ac}from"node:fs/promises";import{basename as qS,dirname as VS}from"node:path";async function Yf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Xf=h(()=>{"use strict";Kf();no();mo();Yt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=Cf(t.uri),n=await xf(r),s=new e(n,{uri:t.uri,ttlDays:co(t.ttlDays,Ce),ephemeralTtlHours:co(t.ephemeralTtlHours,Te),byteBudget:co(t.byteBudget,Oe),now:t.now??(()=>new Date)});return vf(n)?(await fo(),await US(VS(n),{recursive:!0}),s.db=await wo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Ef(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!this.document.blobs[m.key]&&(this.document.blobs[m.key]=m,this.dirty=!0);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};return delete this.document.tombstones[Kt(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!$n(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:zt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:rc(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),nc(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=zt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=zt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[Kt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Kt(t)];return lo(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yf(t.derivation_recipe);if(t.reexecution_recipe)return bf(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return uo(r)?hf(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Ar(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ac(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},i=Buffer.byteLength(`${JSON.stringify(o)}
72
+ `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Ar(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(V)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===V);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${V}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${V}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${V}`),await this.db.query(`CREATE KV IF NOT EXISTS ${V}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!uo(await this.kvGet(m.key))&&await this.kv().put(m.key,m);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};await this.kv().delete(Kt(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(b=>b.handle!==i);return y.push({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,w),i}async getRedDb(t){if(!$n(t))return null;let r=await this.kvGet(Kt(t));if(lo(r))return r;let n=await this.kvGet(ht(t));if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:zt(t.records),oldest:t.records.reduce((r,n)=>r==null||n.created_at<r?n.created_at:r,null),budget:this.opts.byteBudget,storage_classes:rc(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return nc(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=_f(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Rf(r);return await this.memoryIngestRedDb(n)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await kf(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await JS(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=qS(s),c=WS("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},p=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(p.rows[0]?.red_entity_id??p.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>Sf(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
73
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(io());return lc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(io(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=zt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=zt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Ac(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await Gn(o,{force:!0}),await Gn(i,{force:!0});let a=await wo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${mf(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Ac(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Gn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Pc(this.path,i),await Pc(o,this.path),await Gn(i,{force:!0})}catch(u){throw!zf(this.path)&&zf(i)&&await Pc(i,this.path),await Gn(o,{force:!0}),u}finally{this.db=await wo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===V){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:io(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:V,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Kt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(ht(t));if(!Dn(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Zf={};F(Zf,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>V,RspElisionStore:()=>Yt,contentHandle:()=>In,ensureReddbBinaryFromWarmCache:()=>fo,provisionElisionStore:()=>Yf,storageClassForCommand:()=>ct});var _o=h(()=>{"use strict";no();mo();mo();Xf()});async function Ro(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await tm(e,s),i=(await Wn(e,X)).filter(E=>Dr(E)>=s),a=o.filter(E=>P(E.event_type)!=="show"&&P(E.degradation_reason)===""),c=o.filter(E=>P(E.event_type)==="show"),u=o.filter(E=>P(E.degradation_reason)!==""),l=0,p=0,d=0,f=0,m=!1,w=new Map,_=new Map,g=[],y=0,b=0,R=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Ye=ye(E.emitted_bytes),Tt=Math.max(0,I-Ye),ir=Nr(E,"raw"),k=Nr(E,"emitted"),O=Math.max(0,ir.tokens-k.tokens);m||=(E.estimated===!0||ir.estimated||k.estimated)&&O>0,p+=I,d+=Ye,f+=O;let Ot=Xt(E).slice(0,10);Ot&&w.set(Ot,(w.get(Ot)??0)+O);let Pt=P(E.command)||"unknown",ke=_.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=Tt,ke.tokens_saved+=O,_.set(Pt,ke);let Se=mt(E.wrapper_ms);Se!=null&&g.push(Se),y+=ye(E.store_open_count);let ar=mt(E.store_elapsed_ms);ar!=null&&(b+=ar,R++)}let T=new Map,B=new Map,Re=[],fe=null;for(let E of u){let I=P(E.degradation_reason)||P(E.reason)||"unknown",Ye=P(E.wrapper_family)||be(P(E.command));T.set(I,(T.get(I)??0)+1),B.set(Ye,(B.get(Ye)??0)+1);let Tt=Xt(E);Re.push({timestamp:Tt,family:Ye,command:P(E.command)||"unknown",reason:I,exit_code:mt(E.wrapper_exit_code),stderr_head:P(E.stderr_head)||null}),(!fe||Tt>fe.timestamp)&&(fe={timestamp:Tt,reason:I,command:P(E.command)||"unknown"})}let oe=a.length+u.length,lt=c.filter(E=>E.hit===!0).length,ie=pa(f,m),Vr=KS(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[...w.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:lt,show_misses:Math.max(0,c.length-lt),show_hit_rate:c.length===0?0:Z(lt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...B.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Re.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:fe},latency:{wrapper_ms_p50:$r(g,.5),wrapper_ms_p95:$r(g,.95),store_open_count_sum:y,store_elapsed_ms_sum:Z(b),store_elapsed_ms_avg:R===0?null:Z(b/R)},decisions:Vr}}function KS(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let p=P(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function Ic(e,t,r=new Date){let s=(await Wn(e,ce)).filter(o=>Dr(o)<=r.getTime()||Xt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Xt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:nE(s)}}async function Lc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await tm(e,i),c=a.filter(k=>P(k.event_type)!=="show"&&P(k.event_type)!=="control_holdout"&&k.control_holdout!==!0&&P(k.degradation_reason)===""),u=a.filter(k=>P(k.event_type)==="control_holdout"||k.control_holdout===!0),l=a.filter(k=>P(k.event_type)==="show"),p=a.filter(k=>P(k.degradation_reason)!==""),d=[...c,...p].map(Dr).filter(k=>Number.isFinite(k)&&k>0),f=d.length===0?null:Math.min(...d),m=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/pE()))),w=[],_=new Map,g=new Map,y=new Map,b=new Map,R=new Map,T=new Map,B=0,Re=!1,fe=0,oe=null,lt=0,ie=0;for(let k of c){let O=Xt(k),Ot=O.slice(0,10),Pt=O.slice(0,16),ke=be(P(k.command)),Se=Math.max(0,Nr(k,"raw").tokens-Nr(k,"emitted").tokens);B+=Se,Re||=k.estimated===!0&&Se>0;let ar=Math.max(0,ye(k.raw_bytes)-ye(k.emitted_bytes)),fi=mt(k.wrapper_ms);if(fi!=null){w.push(fi);let ol=_.get(ke)??[];ol.push(fi),_.set(ke,ol)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let mi=aE(O);mi&&b.set(mi,(b.get(mi)??0)+1);let gi=lE(O);gi&&R.set(gi,(R.get(gi)??0)+Se);let ls=T.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ls.invocations++,ls.tokens_saved+=Se,ls.bytes_saved+=ar,T.set(ke,ls),k.elided===!0&&fe++,(k.store_open_count!=null||k.store_elapsed_ms!=null)&&(lt++,ye(k.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&ar>oe.bytes_saved)&&(oe={timestamp:O,command_family:ke,tokens_saved:Se,bytes_saved:ar})}let Vr=p.map(k=>({timestamp:Xt(k),command_family:be(P(k.command)),reason:P(k.degradation_reason)||P(k.reason)||"unknown"})).sort((k,O)=>k.timestamp.localeCompare(O.timestamp)),E=new Map;for(let k of Vr)E.set(k.reason,(E.get(k.reason)??0)+1);let I=ZS(Vr),Ye=XS(l),Tt=eE([...T.values()],Ye,I),ir=[...y.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:m,since:o,until:s,label:`window: ${n}d, data: ${m}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:em(w),by_command_family:[..._.entries()].sort((k,O)=>O[1].length-k[1].length||k[0].localeCompare(O[0])).map(([k,O])=>({command_family:k,count:O.length,...em(O)}))},throughput:{requests_per_day:[...g.entries()].sort(([k],[O])=>k.localeCompare(O)).map(([k,O])=>({date:k,requests:O})),active_minute_avg:y.size===0?null:Z([...y.values()].reduce((k,O)=>k+O,0)/y.size),peak_minute:ir?{minute:ir[0],requests:ir[1]}:null,hour_weekday_heatmap:cE(b)},savings:{tokens:pa(B,Re),measured_control_holdout:zS(c,u),weekly_tokens_saved:dE(R),elision_rate:c.length===0?0:Z(fe/c.length),top_commands_by_tokens_saved:[...T.values()].sort((k,O)=>O.tokens_saved-k.tokens_saved||O.bytes_saved-k.bytes_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((k,O)=>O.invocations-k.invocations||O.tokens_saved-k.tokens_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Vr,degradations_by_reason:[...E.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0])).map(([k,O])=>({reason:k,count:O})),cold_boots:lt===0?null:ie,warm_hits:lt===0?null:Math.max(0,lt-ie)},mining:{recovery_usage_by_family:Ye,degradation_clusters:I,threshold_tuning_suggestions:Tt}}}async function tm(e,t){let r=(await Wn(e,ce)).filter(i=>Dr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await Wn(e,he)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await Wn(e,Ue)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function Nr(e,t){let r=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function zS(e,t){let r=rE(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(Qf).filter(a=>a!=null),s=t.map(Qf).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(tE(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:YS(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qf(e){let t=Nr(e,"raw").tokens;if(t<=0)return null;let r=Nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function YS(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function XS(e){let t=new Map;for(let r of e){let n=be(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function ZS(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:QS(r)}))}function QS(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function eE(e,t,r){let n=[];for(let s of t.filter(o=>o.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(o=>o.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function tE(e){return e.reduce((t,r)=>t+r,0)/e.length}function rE(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function nE(e){let t=oE();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=sE(r.storage_class)??ct(P(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function sE(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function oE(){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}}}async function Wn(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>iE(n.value)).filter(n=>Cr(n))}function iE(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dr(e){let t=Date.parse(Xt(e));return Number.isFinite(t)?t:0}function Xt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function $r(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function em(e){return{wrapper_ms_p50:$r(e,.5),wrapper_ms_p90:$r(e,.9),wrapper_ms_p95:$r(e,.95),wrapper_ms_p99:$r(e,.99)}}function Z(e){return Math.round(e*100)/100}function aE(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${uE(t.getUTCDay())}:${t.getUTCHours()}`:null}function cE(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function uE(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function lE(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function dE(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function pE(){return 24*60*60*1e3}var rm=h(()=>{"use strict";Tn();_o();fa();Zs();qa()});var Un={};F(Un,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ue,RSP_TELEMETRY_INDEX_COLLECTION:()=>En,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ua,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ja,RSP_TELEMETRY_SPOOL_FILE:()=>Wa,appendTelemetryEvent:()=>at,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Za,parseTelemetryEvent:()=>Or,readAccountingLaneStats:()=>Ic,readTelemetryGainsReport:()=>Lc,readTelemetryStats:()=>Ro,takeTelemetrySpool:()=>fk,telemetryLegacySpoolPath:()=>to,telemetrySpoolCorrectionsPath:()=>Xa,telemetrySpoolPath:()=>it});var Ie=h(()=>{"use strict";Zs();pf();rm()});var sm={};F(sm,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>qs,sweepGhEtagCache:()=>Fa});import{spawn as fE}from"node:child_process";import{createHash as mE,randomUUID as gE}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??ve,o=hE(e.path,e.params),i=yE(o),c=Ji(r,"gh-api-json")?void 0:await Na(r,i),u=["api","--include","--method","GET",e.path];for(let[m,w]of nm(e.params))u.push("-f",`${m}=${String(w)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await bE(u,t,e.env,e.signal),p=m=>{let w=un();an(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:w.childMs,selfStateBytesRead:w.selfStateBytesRead,bytesSaved:m},s)},d=wE(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await $c(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let m=d.headers.get("etag");return m&&await Ma(r,{key:i,request:o,etag:m,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:m??void 0,quotaFree:!1}}return p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function nm(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function hE(e,t){return JSON.stringify({method:"GET",path:e,params:nm(t)})}function yE(e){return mE("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function bE(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=fE("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],p=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>p.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(p).toString("utf8").trim()})})})}function wE(e){let t=e.replace(/\r\n/g,`
67
74
  `),r=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(r.length===0)return{statusCode:0,headers:new Map,body:e};let n=r[r.length-1],s=Number(n[1]),o=n.index+n[0].length,i=t.indexOf(`
68
75
 
69
76
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
70
- `)){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 Pc(e,t,r){await at(e,{collection:X,id:eE(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}var Ro=h(()=>{"use strict";Sn();Sn();J();Ae()});import{spawn as oE}from"node:child_process";async function Jn(e,t){return await iE(t,async r=>{let n=await cE(e,t.cwd,r);return n||await aE(e,t.cwd,r)})}async function iE(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let r=new AbortController,n=setTimeout(()=>r.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,r.signal]);try{let o=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(n)}}async function aE(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,o=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},i=oE("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&$s(l).then(p=>Ls(p,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.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 cE(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await uE(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Sr(s,"database_id")||Sr(s,"id"),status:Y(s,"status").toUpperCase(),conclusion:Y(s,"conclusion").toUpperCase(),workflowName:Y(s,"workflow_name")||Y(s,"name"),headBranch:Y(s,"head_branch"),url:Y(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Fs(e,"--branch"),s=Fs(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Jt(Ge(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Sr(a,"database_id")||Sr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Fs(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Jt(JSON.parse(s.stdout)).map(i=>({tagName:Y(i,"tag_name"),publishedAt:Y(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function uE(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=Y(Ge(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Jt(Ge(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Jt(Ge(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
71
- `),stdout:JSON.stringify({number:Sr(s,"number"),state:Y(s,"state").toUpperCase(),mergeable:lE(s),statusCheckRollup:[...c.map(l=>({conclusion:Y(l,"state").toUpperCase()})),...u.map(l=>({status:Y(l,"status").toUpperCase(),conclusion:Y(l,"conclusion").toUpperCase()}))],url:Y(s,"html_url")})}}function lE(e){let t=Y(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Jf=h(()=>{"use strict";Ro();js();st()});function Vf(e,t,r){let n=Date.now();return()=>dE(e,t,r,n)}async function dE(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return z("missing PR number");let s=await Jn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return z(s.stderr||"gh pr view failed");let o=Ta(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(pE),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return nt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return nt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return nt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return yr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||p<r.emptyChecksGraceMs?yr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):nt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?yr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Kf(e,t){if(!e)return z("missing run id");let r=await Jn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return z(r.stderr||"gh run view failed");let n=Ta(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?yr(`run ${e} is ${s||"pending"}`):o==="success"?nt("success",`run ${e} succeeded`,qf(n)):nt("failure",`run ${e} concluded ${o||"unknown"}`,qf(n))}async function zf(e,t){let r=await Jn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return kr(s)&&s.databaseId!=null?String(s.databaseId):""}async function Yf(e,t,r){let n=await Jn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return z(n.stderr||"gh release list failed");let o=Jt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||fE(e,a))&&c>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):yr("no matching release is published yet")}function pE(e){let t=kr(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function qf(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 fE(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Xf=h(()=>{"use strict";Ut();Jf();js()});function qn(){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(`
72
- `)}var Ac=h(()=>{"use strict"});var Zf=h(()=>{"use strict";M()});var Qf=h(()=>{"use strict"});function mE(e){return Object.keys(e)}function Mr(e){return{...e,fields:mE(e.fields)}}var em,tm,rm,gE,hE,yE,nm,Ic=h(()=>{"use strict";em="red.castle.lane.v1",tm="red.castle.state.v1",rm="red.castle.history.v1",gE="red.castle.validation.v2",hE="red.castle.envelope.v1",yE="red.castle.hitl-card.v1",nm=[Mr({schemaId:em,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}}),Mr({schemaId:tm,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}}),Mr({schemaId:rm,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}}),Mr({schemaId:gE,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}}),Mr({schemaId:hE,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}}),Mr({schemaId:yE,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 _D,ko=h(()=>{"use strict";M();Ic();_D=new Map(nm.map(e=>[e.schemaId,new Set(e.fields)]))});var sm=h(()=>{"use strict";Qf();ko()});var om=h(()=>{"use strict"});var So=h(()=>{"use strict"});var Lc=h(()=>{"use strict";So()});var Eo=h(()=>{"use strict"});import{appendFile as _E,mkdir as RE,readFile as kE}from"node:fs/promises";import{dirname as SE,join as EE}from"node:path";function $c(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function im(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}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:$c(t.at,"at"),singleton:$c(t.singleton,"singleton"),kind:$c(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function xE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function vE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function CE(e){return EE(e.castleStateRoot,"singleton-events.toonl")}function Dc(e,t={}){let r=t.fs??{appendFile:_E,mkdir:RE,readFile:kE},n=t.clock??(()=>new Date().toISOString()),s=CE(e);return{path:s,async append(o){let i=im({at:o.at??n(),...o});return await r.mkdir(SE(s),{recursive:!0}),await r.appendFile(s,Nt().push(xE(i)),"utf8"),i},async read(o={}){vE(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Dt(i).map(im);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var Nc=h(()=>{"use strict";M()});var xo=h(()=>{"use strict";M();Eo();Nc()});var am=h(()=>{"use strict";So();Lc();xo()});var cm=h(()=>{"use strict"});var sN,um=h(()=>{"use strict";M();sN=24*60*60*1e3});var lm=h(()=>{"use strict";ko()});var cN,uN,dm=h(()=>{"use strict";cN=15*6e4,uN=30*6e4});var pm=h(()=>{"use strict"});var OE,PE,pN,fN,fm=h(()=>{"use strict";OE=["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"],PE={pre_worktree:["cargo","gradle"]},pN=Object.values(PE).flat(),fN=new Set(OE)});var mm=h(()=>{"use strict"});var gm=h(()=>{"use strict";xo()});var hm=h(()=>{"use strict"});var ym=h(()=>{"use strict"});var bm=h(()=>{"use strict"});var Mc=h(()=>{"use strict"});var wm=h(()=>{"use strict";M();Mc()});var _m=h(()=>{"use strict";M()});var Bc=h(()=>{"use strict"});var Fc=h(()=>{"use strict"});import{resolve as Q}from"node:path";function Rm(e){let t=Q(e),r=Q(t,"state"),n=Q(r,"castle"),s=Q(t,"tmp"),o=Q(s,"supervisors"),i=Q(s,"workers"),a=Q(s,"monitors"),c=Q(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:Q(n,"history.toonl"),castleValidation:Q(n,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>Q(o,u),projectSupervisor:Q(o,AE),workersRoot:i,worker:u=>Q(i,u),workerSteerFile:u=>Q(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>Q(a,u),worktreesRoot:c,worktreeLane:u=>Q(c,u)}}var AE,km=h(()=>{"use strict";AE="default"});var Sm=h(()=>{"use strict";Eo()});var Em=h(()=>{"use strict"});var xm=h(()=>{"use strict";Bc();Fc()});import{mkdir as IE,readFile as LE,rename as $E,rm as DE,writeFile as NE}from"node:fs/promises";import{dirname as ME,join as BE}from"node:path";function jE(e){if(!FE.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function HE(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function GE(e){return e.code==="ENOENT"}function UE(e){return e.code==="EEXIST"}function WE(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 r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function jc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function vo(e,t){return jE(t),BE(e.castleStateRoot,"singletons",t,"lease.toon")}function vm(e,t={}){let r=t.fs??{mkdir:IE,readFile:LE,rename:$E,rm:DE,writeFile:NE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??HE;async function o(a){try{return WE(D(await r.readFile(a,"utf8")))}catch(c){if(GE(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(vo(e,a))},async acquire(a,c){let u=vo(e,a);await r.mkdir(ME(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(m){if(!UE(m))throw m}let f=await o(u);if(f){if(jc(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=vo(e,a),l=await o(u);if(!l||!jc(l,c))throw new Co(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=vo(e,a),l=await o(u);if(!l)return!1;if(!jc(l,c))throw new Co(a);return await r.rm(u,{force:!0}),!0}}}var Co,FE,Cm=h(()=>{"use strict";M();Co=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},FE=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Hc=h(()=>{"use strict"});var Tm=h(()=>{"use strict"});var JE,qE,VE,XN,Om=h(()=>{"use strict";JE={refreshCadenceS:270,tolerance:3},qE=270,VE=2700,XN={...JE,claimGraceS:qE,recentCommitProtectionS:VE}});var Pm=h(()=>{"use strict"});import{execFile as XE}from"node:child_process";import{promisify as ZE}from"node:util";var rM,Am=h(()=>{"use strict";Hc();rM=ZE(XE)});var Im=h(()=>{"use strict";Zf();sm();om();So();am();cm();um();lm();ko();dm();pm();fm();mm();Lc();gm();hm();ym();bm();xo();wm();_m();Ic();Bc();Fc();km();Sm();Em();xm();Eo();Mc();Nc();Cm();Hc();Tm();Om();Pm();Am()});import{EventEmitter as QE}from"node:events";import{spawn as ex}from"node:child_process";function Oo(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Po(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Vn,Gc,tx,rx,nx,sx,To,Uc=h(()=>{Vn="github-webhook",Gc="github.webhook.delivery";tx="pull_request,pull_request_review,check_run,check_suite,workflow_run",rx=3,nx=1e3,sx=/no extension matched|unknown command|command not found/i,To=class extends QE{constructor(r,n){super();this.opts=r;this.terminate=n}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 r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,nx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Oo(c,n):Po(c,n))&&(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 r=this.opts.ghBin??"gh",n;try{n=ex(r,["webhook","forward",`--events=${tx}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
73
- `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");sx.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{this.emit("malformed-delivery",r);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=rx)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Ao,Lm=h(()=>{"use strict";Uc();Uc();st();Ao=class extends To{constructor(t){super(t,br)}}});import{EventEmitter as ox}from"node:events";import{join as ix}from"node:path";function Jc(e){let t=Ns(e.cwd),r=Rm(ix(t,".red"));return new Wc({...e,leases:e.leases??vm(r),lane:e.lane??Dc(r),makeForwarder:e.makeForwarder??((n,s)=>new Ao({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>wr(n.pid,n.start_time))})}var Wc,$m=h(()=>{"use strict";Im();Lm();st();Sa();Wc=class extends ox{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Vn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.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(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?Oo(a,n):Po(a,n))&&(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",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),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 r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Vn&&o.kind===Gc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Vn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var qc={};F(qc,{listWaits:()=>Bs,renderWaitHelp:()=>qn,runWait:()=>ux});import{randomUUID as Dm}from"node:crypto";import{mkdir as ax,rm as cx}from"node:fs/promises";async function ux(e,t=process.cwd()){let r;try{r=await zd(e)}catch(n){return await mx(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(qn()),0;if(r.kind==="ls"){let n={schema:Hd,version:1,waits:await Bs(t)};return process.stdout.write(Er(n,r.options.format)),0}return Ra(r.kind)?await lx({...r,kind:r.kind},t):(process.stdout.write(qn()),2)}async function lx(e,t){let r=e.kind,n=Ca({id:Dm(),kind:r,target:fx(e),reason:e.options.reason,pid:process.pid,pid_start_time:await gn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:wa[r],status:"running",attempts:0}),s=rp(t,n.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 ax(_r(t),{recursive:!0}),await Rr(s,n);let l=await dx(e,t,s,n,o.signal);i&&(l={...l,verdict:z(`wait interrupted by ${i}`,l.verdict.details)});let p=await ip({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Er(p.result,e.options.format)),p.exitCode}catch(l){let p=z(l instanceof Error?l.message:String(l)),d=Rn(r,n,p,{status:"success"},new Date().toISOString());return await kn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Er(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await cx(s,{force:!0}).catch(()=>{})}}async function dx(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Lp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:Qd(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:z("missing PR number")};n.webhook_mode="polling";let a=Jc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ys({probe:Vf(i,o,{emptyChecksGraceMs:yn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await px(e,o,r,n);if(!i.ok)return{verdict:z(i.reason)};n.webhook_mode="polling";let a=Jc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ys({probe:()=>Kf(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Ys({probe:()=>Yf(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function px(e,t,r,n){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await zf(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await Rr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function fx(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 mx(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=Ra(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Ca({id:Dm(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:wa[o],status:"indeterminate",attempts:0}),c=Rn(o,a,z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await kn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Vc=h(()=>{"use strict";Yd();cp();Dp();Ut();Ea();Xf();st();_n();Ac();$m();_n();Ac()});import{existsSync as wx}from"node:fs";import{join as _x}from"node:path";function Rx(){for(let e of(process.env.PATH??"").split(":"))if(e&&wx(_x(e,"rsp")))return!0;return!1}function Kn(){return Rx()?["rsp"]:[process.execPath,process.argv[1]]}var Kc=h(()=>{"use strict"});var Io={};F(Io,{parseProxyCommandLine:()=>jm,rewriteProxyCommandLine:()=>Fm,runProxy:()=>Ex});import{spawn as kx}from"node:child_process";function Sx(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function Ex(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=jm(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Fm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await xx(t.telemetryRoot,r,c),await Bm(r);throw c}for(let c of s)await vx(t.telemetryRoot,c);let i=await Bm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await at(t.telemetryRoot,{collection:ge,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function Fm(e,t="lossless",r=Kn()){let n=Ix(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||Ax(n,a)==="|")return i.text;let c=Cx(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function jm(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp proxy -- <command line>");return n}async function xx(e,t,r){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:ye(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function vx(e,t){await at(e,{collection:X,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 Bm(e){let t=kx(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
74
- `),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function Cx(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=$x(o);if(!i)return null;let a=Px(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(m=>m.value);if(qt(u))return{text:e,match:{command:c.map(m=>m.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Tx(c);if(!l)return null;let p=i.slice(0,a).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...p,...r.map(Sx),...d,...l.wrapperWords].join(" ");return{text:`${n}${f}${s}`,match:{command:c.map(m=>m.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Tx(e){let t=e.map(n=>n.value),r=e.map(n=>n.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:r}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:r}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:r}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:r}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:r}:Ox(t,r)}function Ox(e,t){return e[0]==="cat"&&e.length===2&&zc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&zc(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])&&zc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function zc(e){return!!e&&!e.startsWith("-")}function Px(e){let t=0;for(;t<e.length&&Pr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Pr(e[t].value);)t+=1;return t}function Ax(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Ix(e){let t=[],r=0,n,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(n){i===n&&(n=void 0);continue}if(i==="'"||i==='"'){n=i;continue}let a=Lx(e,o);a&&(o>r&&t.push({kind:"segment",text:e.slice(r,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,r=o+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function Lx(e,t){let r=e.slice(t,t+2);if(r==="&&"||r==="||")return r;let n=e[t];return n===";"||n==="|"?n:void 0}function $x(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var Lo=h(()=>{"use strict";J();Tn();Kc();Ae()});function Um(e,t={}){let r=Dx(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let f of new Set(d.tokens))n.set(f,(n.get(f)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Yc(o),u=Yc(i),l=Yc(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>Hx(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:Xc(d.length,c)+Xc(d.tokens.length,u)+Xc(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+Fx(d.tokens,n,r.length)+jx(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Dx(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(Hm(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(Hm(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Hm(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Nx(n),tokens:Mx(n),numbers:Bx(n),length:n.length}}function Nx(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 Mx(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Bx(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function Fx(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(o=>Math.log2(r/Math.max(1,t.get(o)??r))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function jx(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Yc(e){let t=Gm(e),r=Gm(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Xc(e,t){return Math.abs(e-t.median)/t.mad}function Gm(e){let t=[...e].sort((n,s)=>n-s),r=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[r]:((t[r-1]??0)+(t[r]??0))/2}function Hx(e,t,r,n){return e<n&&r<t}var Wm=h(()=>{"use strict"});var Zc={};F(Zc,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,GIT_LOG_MACHINE_FIELDS:()=>qm,StructuredUsageError:()=>$o,cleanStatusPayload:()=>Ym,recoveryInstruction:()=>Ie,renderGitContract:()=>Vm,runGitWrapper:()=>Ux});import{spawn as Gx}from"node:child_process";async function Ux(e,t){let r=Km(e),n=zm(r.argv),s=await Vx(n,r.argv.slice(1));return Vm(e,s,t)}async function Vm(e,t,r){let n=Km(e);if((t.status??0)!==0||t.signal){let p=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=zm(n.argv),o;try{o=Kx(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof Do)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=C(o);if(Wx(s,i,n.full,r))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=pv(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 r.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 ${Ie(u)}
77
+ `)){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 $c(e,t,r){await at(e,{collection:X,id:gE(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}var ko=h(()=>{"use strict";Sn();Sn();J();Ie()});import{spawn as _E}from"node:child_process";async function Jn(e,t){return await RE(t,async r=>{let n=await SE(e,t.cwd,r);return n||await kE(e,t.cwd,r)})}async function RE(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let r=new AbortController,n=setTimeout(()=>r.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,r.signal]);try{let o=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(n)}}async function kE(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,o=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},i=_E("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&Ds(l).then(p=>$s(p,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.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 SE(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await EE(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Sr(s,"database_id")||Sr(s,"id"),status:Y(s,"status").toUpperCase(),conclusion:Y(s,"conclusion").toUpperCase(),workflowName:Y(s,"workflow_name")||Y(s,"name"),headBranch:Y(s,"head_branch"),url:Y(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=js(e,"--branch"),s=js(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Jt(Ge(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Sr(a,"database_id")||Sr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=js(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Jt(JSON.parse(s.stdout)).map(i=>({tagName:Y(i,"tag_name"),publishedAt:Y(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function EE(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=Y(Ge(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Jt(Ge(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Jt(Ge(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
78
+ `),stdout:JSON.stringify({number:Sr(s,"number"),state:Y(s,"state").toUpperCase(),mergeable:xE(s),statusCheckRollup:[...c.map(l=>({conclusion:Y(l,"state").toUpperCase()})),...u.map(l=>({status:Y(l,"status").toUpperCase(),conclusion:Y(l,"conclusion").toUpperCase()}))],url:Y(s,"html_url")})}}function xE(e){let t=Y(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var om=h(()=>{"use strict";ko();Hs();st()});function am(e,t,r){let n=Date.now();return()=>vE(e,t,r,n)}async function vE(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return z("missing PR number");let s=await Jn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return z(s.stderr||"gh pr view failed");let o=Ia(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(CE),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return nt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return nt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return nt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return yr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||p<r.emptyChecksGraceMs?yr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):nt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?yr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function cm(e,t){if(!e)return z("missing run id");let r=await Jn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return z(r.stderr||"gh run view failed");let n=Ia(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?yr(`run ${e} is ${s||"pending"}`):o==="success"?nt("success",`run ${e} succeeded`,im(n)):nt("failure",`run ${e} concluded ${o||"unknown"}`,im(n))}async function um(e,t){let r=await Jn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return kr(s)&&s.databaseId!=null?String(s.databaseId):""}async function lm(e,t,r){let n=await Jn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return z(n.stderr||"gh release list failed");let o=Jt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||TE(e,a))&&c>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):yr("no matching release is published yet")}function CE(e){let t=kr(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function im(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 TE(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var dm=h(()=>{"use strict";Wt();om();Hs()});function qn(){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(`
79
+ `)}var Dc=h(()=>{"use strict"});var pm=h(()=>{"use strict";N()});var fm=h(()=>{"use strict"});function OE(e){return Object.keys(e)}function Mr(e){return{...e,fields:OE(e.fields)}}var mm,gm,hm,PE,AE,IE,ym,Nc=h(()=>{"use strict";mm="red.castle.lane.v1",gm="red.castle.state.v1",hm="red.castle.history.v1",PE="red.castle.validation.v2",AE="red.castle.envelope.v1",IE="red.castle.hitl-card.v1",ym=[Mr({schemaId:mm,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}}),Mr({schemaId:gm,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}}),Mr({schemaId:hm,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}}),Mr({schemaId:PE,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}}),Mr({schemaId:AE,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}}),Mr({schemaId:IE,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 BD,So=h(()=>{"use strict";N();Nc();BD=new Map(ym.map(e=>[e.schemaId,new Set(e.fields)]))});var bm=h(()=>{"use strict";fm();So()});var wm=h(()=>{"use strict"});var Eo=h(()=>{"use strict"});var Mc=h(()=>{"use strict";Eo()});var xo=h(()=>{"use strict"});import{appendFile as DE,mkdir as NE,readFile as ME}from"node:fs/promises";import{dirname as BE,join as FE}from"node:path";function Bc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function _m(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}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:Bc(t.at,"at"),singleton:Bc(t.singleton,"singleton"),kind:Bc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function jE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function HE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function GE(e){return FE(e.castleStateRoot,"singleton-events.toonl")}function Fc(e,t={}){let r=t.fs??{appendFile:DE,mkdir:NE,readFile:ME},n=t.clock??(()=>new Date().toISOString()),s=GE(e);return{path:s,async append(o){let i=_m({at:o.at??n(),...o});return await r.mkdir(BE(s),{recursive:!0}),await r.appendFile(s,Nt().push(jE(i)),"utf8"),i},async read(o={}){HE(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Dt(i).map(_m);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var jc=h(()=>{"use strict";N()});var vo=h(()=>{"use strict";N();xo();jc()});var Rm=h(()=>{"use strict";Eo();Mc();vo()});var km=h(()=>{"use strict"});var kN,Sm=h(()=>{"use strict";N();kN=24*60*60*1e3});var Em=h(()=>{"use strict";So()});var vN,CN,xm=h(()=>{"use strict";vN=15*6e4,CN=30*6e4});var vm=h(()=>{"use strict"});var UE,JE,PN,AN,Cm=h(()=>{"use strict";UE=["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"],JE={pre_worktree:["cargo","gradle"]},PN=Object.values(JE).flat(),AN=new Set(UE)});var Tm=h(()=>{"use strict"});var Om=h(()=>{"use strict";vo()});var Pm=h(()=>{"use strict"});var Am=h(()=>{"use strict"});var Im=h(()=>{"use strict"});var Hc=h(()=>{"use strict"});var Lm=h(()=>{"use strict";N();Hc()});var $m=h(()=>{"use strict";N()});var Gc=h(()=>{"use strict"});var Wc=h(()=>{"use strict"});import{resolve as Q}from"node:path";function Dm(e){let t=Q(e),r=Q(t,"state"),n=Q(r,"castle"),s=Q(t,"tmp"),o=Q(s,"supervisors"),i=Q(s,"workers"),a=Q(s,"monitors"),c=Q(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:Q(n,"history.toonl"),castleValidation:Q(n,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>Q(o,u),projectSupervisor:Q(o,qE),workersRoot:i,worker:u=>Q(i,u),workerSteerFile:u=>Q(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>Q(a,u),worktreesRoot:c,worktreeLane:u=>Q(c,u)}}var qE,Nm=h(()=>{"use strict";qE="default"});var Mm=h(()=>{"use strict";xo()});var Bm=h(()=>{"use strict"});var Fm=h(()=>{"use strict";Gc();Wc()});import{mkdir as VE,readFile as KE,rename as zE,rm as YE,writeFile as XE}from"node:fs/promises";import{dirname as ZE,join as QE}from"node:path";function tx(e){if(!ex.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function rx(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function nx(e){return e.code==="ENOENT"}function sx(e){return e.code==="EEXIST"}function ox(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 r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Uc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Co(e,t){return tx(t),QE(e.castleStateRoot,"singletons",t,"lease.toon")}function jm(e,t={}){let r=t.fs??{mkdir:VE,readFile:KE,rename:zE,rm:YE,writeFile:XE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??rx;async function o(a){try{return ox(L(await r.readFile(a,"utf8")))}catch(c){if(nx(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(Co(e,a))},async acquire(a,c){let u=Co(e,a);await r.mkdir(ZE(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(m){if(!sx(m))throw m}let f=await o(u);if(f){if(Uc(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Co(e,a),l=await o(u);if(!l||!Uc(l,c))throw new To(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=Co(e,a),l=await o(u);if(!l)return!1;if(!Uc(l,c))throw new To(a);return await r.rm(u,{force:!0}),!0}}}var To,ex,Hm=h(()=>{"use strict";N();To=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ex=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Jc=h(()=>{"use strict"});var Gm=h(()=>{"use strict"});var ix,ax,cx,gM,Wm=h(()=>{"use strict";ix={refreshCadenceS:270,tolerance:3},ax=270,cx=2700,gM={...ix,claimGraceS:ax,recentCommitProtectionS:cx}});var Um=h(()=>{"use strict"});import{execFile as px}from"node:child_process";import{promisify as fx}from"node:util";var _M,Jm=h(()=>{"use strict";Jc();_M=fx(px)});var qm=h(()=>{"use strict";pm();bm();wm();Eo();Rm();km();Sm();Em();So();xm();vm();Cm();Tm();Mc();Om();Pm();Am();Im();vo();Lm();$m();Nc();Gc();Wc();Nm();Mm();Bm();Fm();xo();Hc();jc();Hm();Jc();Gm();Wm();Um();Jm()});import{EventEmitter as mx}from"node:events";import{spawn as gx}from"node:child_process";function Po(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Ao(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Vn,qc,hx,yx,bx,wx,Oo,Vc=h(()=>{Vn="github-webhook",qc="github.webhook.delivery";hx="pull_request,pull_request_review,check_run,check_suite,workflow_run",yx=3,bx=1e3,wx=/no extension matched|unknown command|command not found/i,Oo=class extends mx{constructor(r,n){super();this.opts=r;this.terminate=n}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 r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,bx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Po(c,n):Ao(c,n))&&(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 r=this.opts.ghBin??"gh",n;try{n=gx(r,["webhook","forward",`--events=${hx}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
80
+ `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");wx.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{this.emit("malformed-delivery",r);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=yx)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Io,Vm=h(()=>{"use strict";Vc();Vc();st();Io=class extends Oo{constructor(t){super(t,br)}}});import{EventEmitter as _x}from"node:events";import{join as Rx}from"node:path";function zc(e){let t=Ms(e.cwd),r=Dm(Rx(t,".red"));return new Kc({...e,leases:e.leases??jm(r),lane:e.lane??Fc(r),makeForwarder:e.makeForwarder??((n,s)=>new Io({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>wr(n.pid,n.start_time))})}var Kc,Km=h(()=>{"use strict";qm();Vm();st();Ca();Kc=class extends _x{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Vn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.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(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?Po(a,n):Ao(a,n))&&(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",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),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 r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Vn&&o.kind===qc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Vn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Yc={};F(Yc,{listWaits:()=>Fs,renderWaitHelp:()=>qn,runWait:()=>Ex});import{randomUUID as zm}from"node:crypto";import{mkdir as kx,rm as Sx}from"node:fs/promises";async function Ex(e,t=process.cwd()){let r;try{r=await up(e)}catch(n){return await Ox(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(qn()),0;if(r.kind==="ls"){let n={schema:tp,version:1,waits:await Fs(t)};return process.stdout.write(Er(n,r.options.format)),0}return xa(r.kind)?await xx({...r,kind:r.kind},t):(process.stdout.write(qn()),2)}async function xx(e,t){let r=e.kind,n=Aa({id:zm(),kind:r,target:Tx(e),reason:e.options.reason,pid:process.pid,pid_start_time:await gn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Sa[r],status:"running",attempts:0}),s=hp(t,n.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 kx(_r(t),{recursive:!0}),await Rr(s,n);let l=await vx(e,t,s,n,o.signal);i&&(l={...l,verdict:z(`wait interrupted by ${i}`,l.verdict.details)});let p=await _p({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Er(p.result,e.options.format)),p.exitCode}catch(l){let p=z(l instanceof Error?l.message:String(l)),d=Rn(r,n,p,{status:"success"},new Date().toISOString());return await kn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Er(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Sx(s,{force:!0}).catch(()=>{})}}async function vx(e,t,r,n,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:fp(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:z("missing PR number")};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Xs({probe:am(i,o,{emptyChecksGraceMs:yn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await Cx(e,o,r,n);if(!i.ok)return{verdict:z(i.reason)};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Xs({probe:()=>cm(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Xs({probe:()=>lm(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Cx(e,t,r,n){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await um(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await Rr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Tx(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 Ox(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=xa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Aa({id:zm(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Sa[o],status:"indeterminate",attempts:0}),c=Rn(o,a,z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await kn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Xc=h(()=>{"use strict";lp();kp();zp();Wt();Ta();dm();st();_n();Dc();Km();_n();Dc()});import{existsSync as $x}from"node:fs";import{join as Dx}from"node:path";function Nx(){for(let e of(process.env.PATH??"").split(":"))if(e&&$x(Dx(e,"rsp")))return!0;return!1}function Kn(){return Nx()?["rsp"]:[process.execPath,process.argv[1]]}var Zc=h(()=>{"use strict"});var Lo={};F(Lo,{parseProxyCommandLine:()=>eg,rewriteProxyCommandLine:()=>Qm,runProxy:()=>Fx});import{spawn as Mx}from"node:child_process";function Bx(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function Fx(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=eg(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Qm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await jx(t.telemetryRoot,r,c),await Zm(r);throw c}for(let c of s)await Hx(t.telemetryRoot,c);let i=await Zm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await at(t.telemetryRoot,{collection:he,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function Qm(e,t="lossless",r=Kn()){let n=Vx(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||qx(n,a)==="|")return i.text;let c=Gx(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function eg(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp proxy -- <command line>");return n}async function jx(e,t,r){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:be(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Hx(e,t){await at(e,{collection:X,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 Zm(e){let t=Mx(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
81
+ `),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function Gx(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=zx(o);if(!i)return null;let a=Jx(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(m=>m.value);if(qt(u))return{text:e,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Wx(c);if(!l)return null;let p=i.slice(0,a).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...p,...r.map(Bx),...d,...l.wrapperWords].join(" ");return{text:`${n}${f}${s}`,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Wx(e){let t=e.map(n=>n.value),r=e.map(n=>n.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:r}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:r}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:r}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:r}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:r}:Ux(t,r)}function Ux(e,t){return e[0]==="cat"&&e.length===2&&Qc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Qc(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])&&Qc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Qc(e){return!!e&&!e.startsWith("-")}function Jx(e){let t=0;for(;t<e.length&&Pr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Pr(e[t].value);)t+=1;return t}function qx(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Vx(e){let t=[],r=0,n,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(n){i===n&&(n=void 0);continue}if(i==="'"||i==='"'){n=i;continue}let a=Kx(e,o);a&&(o>r&&t.push({kind:"segment",text:e.slice(r,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,r=o+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function Kx(e,t){let r=e.slice(t,t+2);if(r==="&&"||r==="||")return r;let n=e[t];return n===";"||n==="|"?n:void 0}function zx(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var $o=h(()=>{"use strict";J();Tn();Zc();Ie()});function ng(e,t={}){let r=Yx(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let f of new Set(d.tokens))n.set(f,(n.get(f)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=eu(o),u=eu(i),l=eu(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>rv(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:tu(d.length,c)+tu(d.tokens.length,u)+tu(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+ev(d.tokens,n,r.length)+tv(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Yx(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(tg(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(tg(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function tg(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Xx(n),tokens:Zx(n),numbers:Qx(n),length:n.length}}function Xx(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 Zx(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Qx(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function ev(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(o=>Math.log2(r/Math.max(1,t.get(o)??r))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function tv(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function eu(e){let t=rg(e),r=rg(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function tu(e,t){return Math.abs(e-t.median)/t.mad}function rg(e){let t=[...e].sort((n,s)=>n-s),r=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[r]:((t[r-1]??0)+(t[r]??0))/2}function rv(e,t,r,n){return e<n&&r<t}var sg=h(()=>{"use strict"});var ru={};F(ru,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,GIT_LOG_MACHINE_FIELDS:()=>ig,StructuredUsageError:()=>Do,cleanStatusPayload:()=>lg,recoveryInstruction:()=>Le,renderGitContract:()=>ag,runGitWrapper:()=>sv});import{spawn as nv}from"node:child_process";async function sv(e,t){let r=cg(e),n=ug(r.argv),s=await cv(n,r.argv.slice(1));return ag(e,s,t)}async function ag(e,t,r){let n=cg(e);if((t.status??0)!==0||t.signal){let p=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=ug(n.argv),o;try{o=uv(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof No)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=C(o);if(ov(s,i,n.full,r))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=Cv(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 r.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 ${Le(u)}
75
82
  `;return{stdout:Buffer.from(`${C(a.payload)}
76
- ${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 Ie(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Km(e){let{argv:t,query:r,full:n}=Ql(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new $o(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:r,full:n}}function Wx(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!Jx(e)||n.level!=="lossless")return!0;let s=dv(n.heavyGitByteThreshold,ot);return Buffer.byteLength(t)<=s}function Jx(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function zm(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 qx(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${qm.join("%x1f")}`,"-z",...r];case"diff":return["diff","--numstat","-z",...r];case"commit":return["commit",...r];case"push":return["push","--porcelain",...r];case"blame":return["blame","--line-porcelain",...r];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...r];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...r]}}async function Vx(e,t){let r=Gx("git",qx(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function Kx(e,t,r,n){switch(e){case"status":return zx(t,r,n);case"log":return nv(t,r,n);case"diff":return sv(t,r,n);case"commit":return wt(ov(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return wt(iv(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return av(t,r,n);case"branch":return cv(t,r,n);case"show":return uv(t,r,n)}}function zx(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of Yx(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){n=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){n=Qx(u),o=!0;continue}let l=Xx(u);if(l){o=!0,s.push(l);continue}let p=Zx(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return Ym(e.join(" "),n);throw new Do("git-status-unparseable")}let a=te(s,r),c=Xm(a,"state");return wt({command:e.join(" "),branch:n,rows:a,summary:rv(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Yx(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Xx(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return zn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(10).join(" "),r)}return e.startsWith("? ")?zn(e.slice(2),"??"):null}function Zx(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?zn(ev(e.slice(3),t),t):null}function zn(e,t){let r=Jm(t[0]??"."),n=Jm(t[1]??".");return{path:tv(e),index:r,worktree:n,state:lv(`${r}${n}`)}}function Jm(e){return e===" "?".":e}function Qx(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function ev(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function tv(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function rv(e,t,r,n){let s=[];return r.renamed&&s.push(`${r.renamed} renamed`),r.untracked&&s.push(`${r.untracked} untracked`),r.changed&&s.push(`${r.changed} changed`),`${n?`${e}/${t}`:e} changes: ${r.added??0} added, ${r.modified??0} modified, ${r.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function Ym(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 nv(e,t,r){let n=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=te(n,r);return wt({command:e.join(" "),commits:s,summary:`${r?`${s.length}/${n.length}`:s.length} commits`},r,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function sv(e,t,r){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=te(s,r),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 wt({command:e.join(" "),files:o,summary:`${r?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function ov(e,t){let r=t.split(`
77
- `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function iv(e,t){let r=t.split(`
78
- `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),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:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function av(e,t,r){let n=t.split(`
79
- `),s=[],o=null;for(let c of n){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),p=o.commit.slice(0,12);l&&l.commit===p&&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:p,path:o.path}),o=null}let i=te(s,r),a=Xm(i,"author");return wt({command:e.join(" "),ranges:i,authors:a,summary:`${r?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function cv(e,t,r){let n=t.split(`
80
- `).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return wt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${o?`, current ${o}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function uv(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,p,d=""]=o.split(""),f=[];for(let y of i.split(`
83
+ ${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 Le(e){return e.startsWith("el:")?`rsp show ${e}`:e}function cg(e){let{argv:t,query:r,full:n}=nd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new Do(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:r,full:n}}function ov(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!iv(e)||n.level!=="lossless")return!0;let s=vv(n.heavyGitByteThreshold,ot);return Buffer.byteLength(t)<=s}function iv(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function ug(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 av(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${ig.join("%x1f")}`,"-z",...r];case"diff":return["diff","--numstat","-z",...r];case"commit":return["commit",...r];case"push":return["push","--porcelain",...r];case"blame":return["blame","--line-porcelain",...r];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...r];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...r]}}async function cv(e,t){let r=nv("git",av(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function uv(e,t,r,n){switch(e){case"status":return lv(t,r,n);case"log":return bv(t,r,n);case"diff":return wv(t,r,n);case"commit":return wt(_v(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return wt(Rv(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return kv(t,r,n);case"branch":return Sv(t,r,n);case"show":return Ev(t,r,n)}}function lv(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of dv(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){n=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){n=mv(u),o=!0;continue}let l=pv(u);if(l){o=!0,s.push(l);continue}let p=fv(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return lg(e.join(" "),n);throw new No("git-status-unparseable")}let a=te(s,r),c=dg(a,"state");return wt({command:e.join(" "),branch:n,rows:a,summary:yv(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function dv(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function pv(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return zn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(10).join(" "),r)}return e.startsWith("? ")?zn(e.slice(2),"??"):null}function fv(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?zn(gv(e.slice(3),t),t):null}function zn(e,t){let r=og(t[0]??"."),n=og(t[1]??".");return{path:hv(e),index:r,worktree:n,state:xv(`${r}${n}`)}}function og(e){return e===" "?".":e}function mv(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function gv(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function hv(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function yv(e,t,r,n){let s=[];return r.renamed&&s.push(`${r.renamed} renamed`),r.untracked&&s.push(`${r.untracked} untracked`),r.changed&&s.push(`${r.changed} changed`),`${n?`${e}/${t}`:e} changes: ${r.added??0} added, ${r.modified??0} modified, ${r.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function lg(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 bv(e,t,r){let n=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=te(n,r);return wt({command:e.join(" "),commits:s,summary:`${r?`${s.length}/${n.length}`:s.length} commits`},r,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function wv(e,t,r){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=te(s,r),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 wt({command:e.join(" "),files:o,summary:`${r?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function _v(e,t){let r=t.split(`
84
+ `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function Rv(e,t){let r=t.split(`
85
+ `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),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:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function kv(e,t,r){let n=t.split(`
86
+ `),s=[],o=null;for(let c of n){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),p=o.commit.slice(0,12);l&&l.commit===p&&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:p,path:o.path}),o=null}let i=te(s,r),a=dg(i,"author");return wt({command:e.join(" "),ranges:i,authors:a,summary:`${r?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Sv(e,t,r){let n=t.split(`
87
+ `).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return wt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${o?`, current ${o}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Ev(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,p,d=""]=o.split(""),f=[];for(let y of i.split(`
81
88
  `)){let b=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!b)continue;let R=b[3]??"";f.push({path:(b[1]??"").trim(),changed:Number(b[2]??0),added:[...R].filter(T=>T==="+").length,deleted:[...R].filter(T=>T==="-").length,binary:R.startsWith("Bin")})}let m=te(f,r),w=0,_=0,g=0;for(let y of m)w+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,g+=typeof y.deleted=="number"?y.deleted:0;return wt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
82
- `).length:0,files:m,summary:`${r?`${m.length}/${f.length}`:m.length} files, ${w} changed, +${_} -${g}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function wt(e,t,r){return t?et(e,r):e}function lv(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Xm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function dv(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function pv(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}var qm,$o,Do,Zt=h(()=>{"use strict";J();M();Pe();sn();Be();Pe();qm=["%h","%an","%as","%s"];$o=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Il(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Do=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var ru={};F(ru,{NORMALIZATION_ALLOWLIST:()=>sg,NORMALIZE_ANSI:()=>Mo,NORMALIZE_BLANK_LINES:()=>jo,NORMALIZE_CR_PROGRESS:()=>Bo,NORMALIZE_JSON_TOON:()=>ng,NORMALIZE_TRAILING_WHITESPACE:()=>Fo,crushJsonArrayItems:()=>Yn,formatCodexNormalizeDecision:()=>ug,formatNormalizeDecision:()=>cg,hookDecisionFromClaudePostExecJson:()=>og,hookDecisionFromCodexPostExecJson:()=>ig,normalizeOutput:()=>Ho,renderGenericJsonLane:()=>eu,runClaudePostExecHook:()=>gv,runCodexPostExecHook:()=>hv,transcodeJsonToToon:()=>rg});import{readFileSync as No}from"node:fs";function rg(e,t){let r=t?.encode??C,n=t?.decode??D,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return Qc(o,a)?i.trimEnd():e}async function eu(e,t={}){let r=_v(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=tg(t.minTokens,fv),i=tg(t.maxItems,mv);if(!(s>i&&xv(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Yn)(n,i)}catch(w){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:vv(w)}}}let u=c.items,l={items:u},p=`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 f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,m=C(l).trimEnd();return{output:[p,f,m].filter(Boolean).join(`
83
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Yn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=Rv(e),s=new Set;n&&e.forEach((a,c)=>{tu(a)!==n&&s.add(c)});let o=kv(e,n);for(let a of s)r.add(a);for(let a of o)r.add(a);let i=[...r].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 Ho(e){let t=e;for(let r of sg)t=r.apply(t);return t}async function og(e,t){return await ag(e,t)}async function ig(e,t){return await ag(e,t)}async function ag(e,t){let r=wv(e),n=Cv(r,["cwd"])||t.cwd;if(!await(t.isEnabled??bv)(n))return{kind:"passthrough",reason:"disabled"};let o=Tv(r,"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??Ho)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function cg(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function ug(e){return{stdout:"",status:0}}async function gv(e){let t=e?No(e,"utf8"):No(0,"utf8"),r=await og(t,{cwd:process.cwd()}),n=cg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function hv(e){let t=e?No(e,"utf8"):No(0,"utf8"),r=await ig(t,{cwd:process.cwd()}),n=ug(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function yv(e){let t="",r=0;for(;r<e.length;){let n=e.charCodeAt(r);if(n===27){let s=e.charCodeAt(r+1);if(s===93){for(r+=2;r<e.length;){let o=e.charCodeAt(r);if(o===7){r++;break}if(o===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&Zm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Zm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Zm(e){return e>=32&&e<=63}function bv(e){return Oe(e,process.env).enabled}function wv(e){try{let t=JSON.parse(e);return Br(t)?t:{}}catch{return{}}}function _v(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Br(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function Rv(e){let t=new Map;for(let s of e){let o=tu(s);t.set(o,(t.get(o)??0)+1)}let[r,n]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function tu(e){return Array.isArray(e)?"array":Br(e)?Object.keys(e).sort().map(t=>`${t}:${Qm(e[t])}`).join("|"):Qm(e)}function kv(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&tu(s)!==t))for(let[i,a]of lg(s)){let c=n.get(i)??[];c.push({index:o,value:a}),n.set(i,c)}});for(let s of n.values()){for(let o of Sv(s))r.add(o);for(let o of Ev(s))r.add(o)}return r}function Sv(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let r=t.map(a=>a.value).sort((a,c)=>a-c),n=eg(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=eg(s);if(o===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-n)>i).map(a=>a.index)}function Ev(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 n=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=n).map(s=>s.index)}function lg(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Br(e)?Object.entries(e).flatMap(([r,n])=>lg(n,t?`${t}.${r}`:r)):[]}function Qm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function eg(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 xv(e){return Math.ceil(e.length/4)}function tg(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function vv(e){let r=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Cv(e,t){let r=e;for(let n of t){if(!Br(r))return"";r=r[n]}return typeof r=="string"?r:""}function Tv(e,t){let r=e[t];return Br(r)?r:null}function Br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qc(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)=>Qc(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&Qc(r[i],n[i]))}var Mo,Bo,Fo,jo,ng,fv,mv,sg,Xn=h(()=>{"use strict";M();Pe();Mo={id:"ansi",apply:yv},Bo={id:"cr-progress",apply:e=>e.split(`
89
+ `).length:0,files:m,summary:`${r?`${m.length}/${f.length}`:m.length} files, ${w} changed, +${_} -${g}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function wt(e,t,r){return t?et(e,r):e}function xv(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function dg(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function vv(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Cv(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}var ig,Do,No,Zt=h(()=>{"use strict";J();N();Ae();sn();Be();Ae();ig=["%h","%an","%as","%s"];Do=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Nl(this.command,this.flag,this.validFlags,`${this.command} --help`)}},No=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var iu={};F(iu,{NORMALIZATION_ALLOWLIST:()=>bg,NORMALIZE_ANSI:()=>Bo,NORMALIZE_BLANK_LINES:()=>Ho,NORMALIZE_CR_PROGRESS:()=>Fo,NORMALIZE_JSON_TOON:()=>yg,NORMALIZE_TRAILING_WHITESPACE:()=>jo,crushJsonArrayItems:()=>Yn,formatCodexNormalizeDecision:()=>Sg,formatNormalizeDecision:()=>kg,hookDecisionFromClaudePostExecJson:()=>wg,hookDecisionFromCodexPostExecJson:()=>_g,normalizeOutput:()=>Go,renderGenericJsonLane:()=>su,runClaudePostExecHook:()=>Pv,runCodexPostExecHook:()=>Av,transcodeJsonToToon:()=>hg});import{readFileSync as Mo}from"node:fs";function hg(e,t){let r=t?.encode??C,n=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return nu(o,a)?i.trimEnd():e}async function su(e,t={}){let r=Dv(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=gg(t.minTokens,Tv),i=gg(t.maxItems,Ov);if(!(s>i&&jv(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Yn)(n,i)}catch(w){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Hv(w)}}}let u=c.items,l={items:u},p=`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 f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,m=C(l).trimEnd();return{output:[p,f,m].filter(Boolean).join(`
90
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Yn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=Nv(e),s=new Set;n&&e.forEach((a,c)=>{ou(a)!==n&&s.add(c)});let o=Mv(e,n);for(let a of s)r.add(a);for(let a of o)r.add(a);let i=[...r].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 Go(e){let t=e;for(let r of bg)t=r.apply(t);return t}async function wg(e,t){return await Rg(e,t)}async function _g(e,t){return await Rg(e,t)}async function Rg(e,t){let r=$v(e),n=Gv(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Lv)(n))return{kind:"passthrough",reason:"disabled"};let o=Wv(r,"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??Go)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function kg(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Sg(e){return{stdout:"",status:0}}async function Pv(e){let t=e?Mo(e,"utf8"):Mo(0,"utf8"),r=await wg(t,{cwd:process.cwd()}),n=kg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Av(e){let t=e?Mo(e,"utf8"):Mo(0,"utf8"),r=await _g(t,{cwd:process.cwd()}),n=Sg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Iv(e){let t="",r=0;for(;r<e.length;){let n=e.charCodeAt(r);if(n===27){let s=e.charCodeAt(r+1);if(s===93){for(r+=2;r<e.length;){let o=e.charCodeAt(r);if(o===7){r++;break}if(o===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function pg(e){return e>=32&&e<=63}function Lv(e){return Pe(e,process.env).enabled}function $v(e){try{let t=JSON.parse(e);return Br(t)?t:{}}catch{return{}}}function Dv(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Br(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function Nv(e){let t=new Map;for(let s of e){let o=ou(s);t.set(o,(t.get(o)??0)+1)}let[r,n]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function ou(e){return Array.isArray(e)?"array":Br(e)?Object.keys(e).sort().map(t=>`${t}:${fg(e[t])}`).join("|"):fg(e)}function Mv(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&ou(s)!==t))for(let[i,a]of Eg(s)){let c=n.get(i)??[];c.push({index:o,value:a}),n.set(i,c)}});for(let s of n.values()){for(let o of Bv(s))r.add(o);for(let o of Fv(s))r.add(o)}return r}function Bv(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let r=t.map(a=>a.value).sort((a,c)=>a-c),n=mg(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=mg(s);if(o===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-n)>i).map(a=>a.index)}function Fv(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 n=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=n).map(s=>s.index)}function Eg(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Br(e)?Object.entries(e).flatMap(([r,n])=>Eg(n,t?`${t}.${r}`:r)):[]}function fg(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mg(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 jv(e){return Math.ceil(e.length/4)}function gg(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Hv(e){let r=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Gv(e,t){let r=e;for(let n of t){if(!Br(r))return"";r=r[n]}return typeof r=="string"?r:""}function Wv(e,t){let r=e[t];return Br(r)?r:null}function Br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nu(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)=>nu(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&nu(r[i],n[i]))}var Bo,Fo,jo,Ho,yg,Tv,Ov,bg,Xn=h(()=>{"use strict";N();Ae();Bo={id:"ansi",apply:Iv},Fo={id:"cr-progress",apply:e=>e.split(`
84
91
  `).map(t=>{let r=t.endsWith("\r")?t.slice(0,-1):t,n=r.lastIndexOf("\r");return n>=0?r.slice(n+1):r}).join(`
85
- `)},Fo={id:"trailing-whitespace",apply:e=>e.split(`
92
+ `)},jo={id:"trailing-whitespace",apply:e=>e.split(`
86
93
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
87
- `)},jo={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
94
+ `)},Ho={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
88
95
 
89
- `)};ng={id:"json-to-toon",apply:e=>rg(e)},fv=200,mv=15;sg=[Mo,Bo,Fo,jo,ng]});var es={};F(es,{parseExecCommandLine:()=>hg,renderExecContract:()=>gg,runExecWrapper:()=>Lv});import{isUtf8 as Ov}from"node:buffer";import{spawn as Pv}from"node:child_process";async function Lv(e,t){let r=hg(e),n=await $v(r);return await gg(r,n,t)}async function gg(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=Ee(e,t.stdout,t.stderr);return{stdout:$(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=Dv(n),i=o.kind==="text"?Buffer.from(o.text):n,a=tC(r.heavyByteThreshold,Av);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let p=o.kind==="text"?Mv(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Bv(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function hg(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function $v(e){let t=Pv(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.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(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function Dv(e){return Ov(e)?{kind:"text",text:Nv(e.toString("utf8"))}:{kind:"bytes"}}function Nv(e){let t=e;for(let r of[Mo,Bo,Fo,jo])t=r.apply(t);return t}function Mv(e,t,r,n,s,o=Kv,i=Yn){let c=Math.max(1,Math.floor((n==="terse"?mg:Iv)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=Vv(e,c,l,o),d=Fv(e),f=jv(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),m=yg(s,d,t,eC(u),r,f.summary),w=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Sg(p.error)}:f.degradation;return{text:kg(m),degradation:w}}function Bv(e,t,r,n){let s=Math.max(1,Math.floor(mg/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:kg(yg(n,"bytes",t,0,r,o))}}function yg(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Ie(s)}}}function Fv(e){let t=e.trim();return t?wg(t)?"json":_g(e)?"jsonl":zv(e)?"unified-diff":Rg(e)?"tabular":Yv(e)?"log-like":Xv(e)?"prose":"untyped":"untyped"}function jv(e,t,r,n,s,o,i=Yn){switch(e){case"json":return Hv(t,i);case"jsonl":return{summary:Gv(t)};case"unified-diff":return{summary:Uv(t)};case"tabular":return{summary:Wv(t)};case"log-like":return{summary:Jv(t,o)};case"prose":return{summary:qv(t)};case"bytes":return{summary:{}};case"untyped":return{summary:bg(r,n,s,o)}}}function Hv(e,t){let r=wg(e);if(Array.isArray(r)){if(r.length>15)try{let n=t(r,15);return{summary:{root_type:"array",total:n.total,kept:n.kept,dropped:n.dropped,shape_outliers:n.shapeOutliers,value_outliers:n.valueOutliers,items:n.items.map(_t),item_keys:su(r)}}}catch(n){return{summary:pg(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Sg(n)}}}return{summary:pg(r)}}if(Qn(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,o])=>[s,_t(o)]))}}}return{summary:{root_type:typeof r,value:_t(r)}}}function pg(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(_t),item_keys:su(e)}}function Gv(e){let t=_g(e)??[],r=Zv(t,"level");return{records:t.length,keys:su(t),levels:r,first:_t(t[0]),last:_t(t.at(-1))}}function Uv(e){let t=new Map,r="",n=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){r=a[2]??a[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0});continue}if(!r){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,r&&t.get(r).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(n++,r&&t.get(r).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:n,deleted_lines:s}}function Wv(e){let t=Rg(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:bg(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Jv(e,t){let r=Zn(e);return{entries:r.length,levels:Qv(r),first:Qt(r[0]??""),last:Qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Qt(n.text)}))}}function qv(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:Qt(t[0]??""),closing:Qt(t.at(-1)??"")}}function bg(e,t,r,n){let s=fg(e.subarray(0,t)),o=fg(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Qt(i.text)}))}}function Vv(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function Kv(e,t){return Um(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function wg(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Qn(r)||Array.isArray(r)?r:null}catch{return null}}function _g(e){let t=Zn(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function zv(e){let t=Zn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=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 n&&s&&o}function Rg(e){let t=Zn(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).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(n).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 Yv(e){let t=Zn(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function Xv(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function Zn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function su(e){let t=new Map;for(let r of e)if(Qn(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function Zv(e,t){let r=new Map;for(let n of e){if(!Qn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function Qv(e){let t=new Map;for(let r of e){let n=/\blevel=([A-Za-z]+)\b/.exec(r)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(r);if(!n)continue;let s=(n[1]??n[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}function _t(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(_t):Qn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,_t(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=dg?t:`${t.slice(0,dg-1)}\u2026`}function kg(e){let t=C(e).trimEnd(),r=D(t);if(!nu(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
90
- `}function nu(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)=>nu(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&nu(r[i],n[i]))}function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Sg(e){let r=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function fg(e){return e.toString("utf8").replace(/�$/g,"")}function eC(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function tC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Av,Iv,mg,dg,ts=h(()=>{"use strict";J();M();Wm();Zt();Xn();Be();Av=8*1024,Iv=2*1024,mg=1024,dg=240});var Xo={};F(Xo,{RSP_WRAPPER_CAPABILITIES:()=>ss,_testOnlyResetBinaryState:()=>pC,formatCodexHookDecision:()=>Ng,formatHookDecision:()=>Dg,hookDecisionFromClaudePreExecJson:()=>bC,hookDecisionFromCodexPreExecJson:()=>wC,rewriteCommand:()=>Lg,rewriteTableFromCapabilities:()=>Ig,runClaudePreExecHook:()=>_C,runCodexPreExecHook:()=>RC});import{accessSync as cC,constants as uC,existsSync as lC,readFileSync as zo}from"node:fs";import{fileURLToPath as dC}from"node:url";function pC(){Ko=void 0,ou=!1}function fC(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return cC(`${t}/rsp`,uC.X_OK),!0}catch{}return!1}function mC(e){return Ko===void 0&&(Ko=e()),Ko}function gC(){ou||(ou=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Ig(e){let t=new Map;for(let r of e)t.set(FC(r.command),["rsp",...r.wrapper]);return t}function Lg(e,t=Kn()){let r=PC(e);if(r)return r;let n=TC(e);if(!n)return Vo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Pr(s[0]))return Vo(e,t);let o=yC(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Vo(e,t);let i=[...ss].sort((u,l)=>l.command.length-u.command.length).find(u=>OC(s,u.command));if(!i)return Vo(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=Hg(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(Rt),...c].join(" "),capabilityId:i.id}}function yC(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=Hg(e.redirectSuffix),o=t.map(Rt);return n==="cat"&&r.length===2&&qo(r[1])?{kind:"rewrite",command:[...o,"cat",Rt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&qo(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",Rt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&qo(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],Rt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&qo(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),Rt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function qo(e){return!!e&&!e.startsWith("-")}async function bC(e,t){return await $g(e,t)}async function wC(e,t){return await $g(e,t)}async function $g(e,t){return(await au(e,t,"pre-exec")).decision}async function au(e,t,r){let n=Jg(e);if(!n.ok){let m={kind:"passthrough",reason:n.reason};return{decision:m,telemetryRoot:t.cwd,event:Fr({hook:r,command:"",decision:m,reason:n.reason})}}let s=n.payload,o=Le(s,["cwd"])||Le(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??kC)(o)){let m={kind:"passthrough",reason:"disabled"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:iu(s),decision:m,reason:"disabled"})}}let a=iu(s);if(!a){let m={kind:"passthrough",reason:"missing-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"missing-command"})}}if(!mC(t.resolveBinary??fC)){gC();let m={kind:"passthrough",reason:"binary-unresolved"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Oe(o,process.env),p=t.rspInvocationPrefix??Kn(),d=l.proxyEnabled?AC(a,p):(t.rewrite??(m=>Lg(m,p)))(a),f=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let m=d.reason?d:{...d,reason:"unsupported-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:m.reason??"unsupported-command",decisionMs:f})}}return await EC(o,t.wakeResident??SC),{decision:d,telemetryRoot:o,event:Fr({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Dg(e){return e.kind==="rewrite"?Mg(e.command):{stdout:"",status:0}}function Ng(e){return e.kind==="rewrite"?Mg(e.command):{stdout:"",status:0}}function Mg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
91
- `,status:0}}async function _C(e){let t="";try{t=e?zo(e,"utf8"):zo(0,"utf8");let r=await au(t,{cwd:process.cwd()},"claude-pre-exec");Yo(r.telemetryRoot,r.event);let n=r.decision;Fg("claude-pre-exec",n);let s=Dg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Yo(process.cwd(),Bg("claude-pre-exec",t,r)),jg("claude-pre-exec",r),0}}async function RC(e){let t="";try{t=e?zo(e,"utf8"):zo(0,"utf8");let r=await au(t,{cwd:process.cwd()},"codex-pre-exec");Yo(r.telemetryRoot,r.event);let n=r.decision;Fg("codex-pre-exec",n);let s=Ng(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Yo(process.cwd(),Bg("codex-pre-exec",t,r)),jg("codex-pre-exec",r),0}}function Yo(e,t){at(e,t).catch(()=>{})}function Fr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:ye(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Bg(e,t,r){let n=Jg(t),s=n.ok?iu(n.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:ye(s),decision:"failed-open",reason:"hook-exception",error:cu(r)}}function kC(e){return Oe(e,process.env).enabled}async function SC(e){let t=Oe(e,process.env);if(!t.enabled||!CC(t))return;let r=je(e);await Ts(r,vC(t))}async function EC(e,t){try{await Promise.resolve(t(e))}catch(r){xC(r)}}function Fg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
96
+ `)};yg={id:"json-to-toon",apply:e=>hg(e)},Tv=200,Ov=15;bg=[Bo,Fo,jo,Ho,yg]});var es={};F(es,{parseExecCommandLine:()=>Pg,renderExecContract:()=>Og,runExecWrapper:()=>Kv});import{isUtf8 as Uv}from"node:buffer";import{spawn as Jv}from"node:child_process";async function Kv(e,t){let r=Pg(e),n=await zv(r);return await Og(r,n,t)}async function Og(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=xe(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=Yv(n),i=o.kind==="text"?Buffer.from(o.text):n,a=hC(r.heavyByteThreshold,qv);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let p=o.kind==="text"?Zv(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Qv(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function Pg(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function zv(e){let t=Jv(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.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(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function Yv(e){return Uv(e)?{kind:"text",text:Xv(e.toString("utf8"))}:{kind:"bytes"}}function Xv(e){let t=e;for(let r of[Bo,Fo,jo,Ho])t=r.apply(t);return t}function Zv(e,t,r,n,s,o=uC,i=Yn){let c=Math.max(1,Math.floor((n==="terse"?Tg:Vv)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=cC(e,c,l,o),d=eC(e),f=tC(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),m=Ag(s,d,t,gC(u),r,f.summary),w=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Mg(p.error)}:f.degradation;return{text:Ng(m),degradation:w}}function Qv(e,t,r,n){let s=Math.max(1,Math.floor(Tg/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Ng(Ag(n,"bytes",t,0,r,o))}}function Ag(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Le(s)}}}function eC(e){let t=e.trim();return t?Lg(t)?"json":$g(e)?"jsonl":lC(e)?"unified-diff":Dg(e)?"tabular":dC(e)?"log-like":pC(e)?"prose":"untyped":"untyped"}function tC(e,t,r,n,s,o,i=Yn){switch(e){case"json":return rC(t,i);case"jsonl":return{summary:nC(t)};case"unified-diff":return{summary:sC(t)};case"tabular":return{summary:oC(t)};case"log-like":return{summary:iC(t,o)};case"prose":return{summary:aC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Ig(r,n,s,o)}}}function rC(e,t){let r=Lg(e);if(Array.isArray(r)){if(r.length>15)try{let n=t(r,15);return{summary:{root_type:"array",total:n.total,kept:n.kept,dropped:n.dropped,shape_outliers:n.shapeOutliers,value_outliers:n.valueOutliers,items:n.items.map(_t),item_keys:cu(r)}}}catch(n){return{summary:vg(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Mg(n)}}}return{summary:vg(r)}}if(Qn(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,o])=>[s,_t(o)]))}}}return{summary:{root_type:typeof r,value:_t(r)}}}function vg(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(_t),item_keys:cu(e)}}function nC(e){let t=$g(e)??[],r=fC(t,"level");return{records:t.length,keys:cu(t),levels:r,first:_t(t[0]),last:_t(t.at(-1))}}function sC(e){let t=new Map,r="",n=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){r=a[2]??a[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0});continue}if(!r){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,r&&t.get(r).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(n++,r&&t.get(r).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:n,deleted_lines:s}}function oC(e){let t=Dg(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Ig(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function iC(e,t){let r=Zn(e);return{entries:r.length,levels:mC(r),first:Qt(r[0]??""),last:Qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Qt(n.text)}))}}function aC(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:Qt(t[0]??""),closing:Qt(t.at(-1)??"")}}function Ig(e,t,r,n){let s=Cg(e.subarray(0,t)),o=Cg(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Qt(i.text)}))}}function cC(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function uC(e,t){return ng(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Lg(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Qn(r)||Array.isArray(r)?r:null}catch{return null}}function $g(e){let t=Zn(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function lC(e){let t=Zn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=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 n&&s&&o}function Dg(e){let t=Zn(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).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(n).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 dC(e){let t=Zn(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function pC(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function Zn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function cu(e){let t=new Map;for(let r of e)if(Qn(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function fC(e,t){let r=new Map;for(let n of e){if(!Qn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function mC(e){let t=new Map;for(let r of e){let n=/\blevel=([A-Za-z]+)\b/.exec(r)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(r);if(!n)continue;let s=(n[1]??n[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}function _t(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(_t):Qn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,_t(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=xg?t:`${t.slice(0,xg-1)}\u2026`}function Ng(e){let t=C(e).trimEnd(),r=L(t);if(!au(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
97
+ `}function au(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)=>au(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&au(r[i],n[i]))}function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mg(e){let r=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Cg(e){return e.toString("utf8").replace(/�$/g,"")}function gC(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function hC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var qv,Vv,Tg,xg,ts=h(()=>{"use strict";J();N();sg();Zt();Xn();Be();qv=8*1024,Vv=2*1024,Tg=1024,xg=240});var Zo={};F(Zo,{RSP_WRAPPER_CAPABILITIES:()=>ss,_testOnlyResetBinaryState:()=>CC,formatCodexHookDecision:()=>Yg,formatHookDecision:()=>zg,hookDecisionFromClaudePreExecJson:()=>LC,hookDecisionFromCodexPreExecJson:()=>$C,rewriteCommand:()=>Vg,rewriteTableFromCapabilities:()=>qg,runClaudePreExecHook:()=>DC,runCodexPreExecHook:()=>NC});import{accessSync as SC,constants as EC,existsSync as xC,readFileSync as Yo}from"node:fs";import{fileURLToPath as vC}from"node:url";function CC(){zo=void 0,uu=!1}function TC(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return SC(`${t}/rsp`,EC.X_OK),!0}catch{}return!1}function OC(e){return zo===void 0&&(zo=e()),zo}function PC(){uu||(uu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function qg(e){let t=new Map;for(let r of e)t.set(e0(r.command),["rsp",...r.wrapper]);return t}function Vg(e,t=Kn()){let r=JC(e);if(r)return r;let n=WC(e);if(!n)return Ko(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Pr(s[0]))return Ko(e,t);let o=IC(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Ko(e,t);let i=[...ss].sort((u,l)=>l.command.length-u.command.length).find(u=>UC(s,u.command));if(!i)return Ko(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=th(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(Rt),...c].join(" "),capabilityId:i.id}}function IC(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=th(e.redirectSuffix),o=t.map(Rt);return n==="cat"&&r.length===2&&Vo(r[1])?{kind:"rewrite",command:[...o,"cat",Rt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&Vo(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",Rt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&Vo(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],Rt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&Vo(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),Rt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function Vo(e){return!!e&&!e.startsWith("-")}async function LC(e,t){return await Kg(e,t)}async function $C(e,t){return await Kg(e,t)}async function Kg(e,t){return(await du(e,t,"pre-exec")).decision}async function du(e,t,r){let n=oh(e);if(!n.ok){let m={kind:"passthrough",reason:n.reason};return{decision:m,telemetryRoot:t.cwd,event:Fr({hook:r,command:"",decision:m,reason:n.reason})}}let s=n.payload,o=$e(s,["cwd"])||$e(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??MC)(o)){let m={kind:"passthrough",reason:"disabled"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:lu(s),decision:m,reason:"disabled"})}}let a=lu(s);if(!a){let m={kind:"passthrough",reason:"missing-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"missing-command"})}}if(!OC(t.resolveBinary??TC)){PC();let m={kind:"passthrough",reason:"binary-unresolved"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Pe(o,process.env),p=t.rspInvocationPrefix??Kn(),d=l.proxyEnabled?qC(a,p):(t.rewrite??(m=>Vg(m,p)))(a),f=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let m=d.reason?d:{...d,reason:"unsupported-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:m.reason??"unsupported-command",decisionMs:f})}}return await FC(o,t.wakeResident??BC),{decision:d,telemetryRoot:o,event:Fr({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function zg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Yg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Xg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
98
+ `,status:0}}async function DC(e){let t="";try{t=e?Yo(e,"utf8"):Yo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"claude-pre-exec");Xo(r.telemetryRoot,r.event);let n=r.decision;Qg("claude-pre-exec",n);let s=zg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Xo(process.cwd(),Zg("claude-pre-exec",t,r)),eh("claude-pre-exec",r),0}}async function NC(e){let t="";try{t=e?Yo(e,"utf8"):Yo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"codex-pre-exec");Xo(r.telemetryRoot,r.event);let n=r.decision;Qg("codex-pre-exec",n);let s=Yg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Xo(process.cwd(),Zg("codex-pre-exec",t,r)),eh("codex-pre-exec",r),0}}function Xo(e,t){at(e,t).catch(()=>{})}function Fr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:be(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Zg(e,t,r){let n=oh(t),s=n.ok?lu(n.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:be(s),decision:"failed-open",reason:"hook-exception",error:pu(r)}}function MC(e){return Pe(e,process.env).enabled}async function BC(e){let t=Pe(e,process.env);if(!t.enabled||!GC(t))return;let r=je(e);await Os(r,HC(t))}async function FC(e,t){try{await Promise.resolve(t(e))}catch(r){jC(r)}}function Qg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
92
99
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
93
- `)}}function jg(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${cu(t)}
94
- `)}function xC(e){da(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${cu(e)}
95
- `)}function cu(e){return e instanceof Error?e.name||"Error":typeof e}function vC(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function CC(e){if(!e.storeUri.startsWith("file://"))return!0;try{return lC(dC(e.storeUri))}catch{return!1}}function iu(e){return Le(e,["tool_input","command"])||Le(e,["tool_input","cmd"])||Le(e,["tool_input","args","command"])||Le(e,["input","command"])||Le(e,["input","cmd"])||Le(e,["arguments","command"])||Le(e,["arguments","cmd"])||Le(e,["command"])||Le(e,["cmd"])}function TC(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=uu(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Pr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function uu(e){let t=[],r="",n=!1,s=null,o=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let i=0;i<e.length;i+=1){let a=e[i];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}if(/[ \t]/.test(a)){o();continue}r+=a}return s?[]:(o(),t)}function OC(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function PC(e){let t=uu(e.trim()).map(r=>r.text);return qt(t)?{kind:"passthrough",reason:hC}:null}function Hg(e){return e.map(t=>t.text)}function Rt(e){return/[^\w@%+=:,./-]/.test(e)?lu(e):e}function AC(e,t){let r=LC(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(Rt).join(" ")} proxy -- ${lu(e.trim())}`,capabilityId:"proxy:universal"}}function IC(e){if(!process.argv[1])return!1;let t=uu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function LC(e){let t=e.trim();if(!t)return"missing-command";if(Ug(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Cn(vn(t)[0]??"")[0];if(r==="rsp"||IC(t))return"opt-out";if(r&&Gg.has(r))return"interactive"}function Vo(e,t){let r=e.trim();return $C(r)?{kind:"rewrite",command:`${t.map(Rt).join(" ")} exec -- ${lu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function $C(e){return!(!e||!DC(e)||!NC(e)||Ug(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||MC(e,"rsp")||Wg(e,Gg)||BC(e))}function DC(e){return/&&|[;|]/.test(e)}function Ug(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function NC(e){return vn(e).some(t=>{let r=Cn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function Wg(e,t){return vn(e).some(r=>{let n=Cn(r)[0];return n?t.has(n):!1})}function MC(e,t){return Wg(e,new Set([t]))}function BC(e){return vn(e).some(t=>{let r=Cn(t);return r[0]==="grep"&&r.includes("-q")})}function lu(e){return`'${e.replace(/'/g,"'\\''")}'`}function FC(e){return e.join("\0")}function Jg(e){try{let t=JSON.parse(e);return qg(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Le(e,t){let r=e;for(let n of t){if(!qg(r))return"";r=r[n]}return typeof r=="string"?r:""}function qg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ko,ou,ss,b1,hC,Gg,os=h(()=>{"use strict";Tn();Pe();He();Gt();Kc();Ae();ou=!1;ss=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],b1=Ig(ss),hC="lossless-gh-json-jq";Gg=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Qg={};F(Qg,{fastTelemetryRoot:()=>pu,isFastGitStatus:()=>Zo,runFastGitStatus:()=>Qo});import{spawnSync as Xg}from"node:child_process";import{existsSync as Zg,readdirSync as KC}from"node:fs";function Zo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Qo(){if(zC(process.cwd()))return{stdout:du(),stderr:Buffer.alloc(0),status:0,signal:null};if(Xg("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:du(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Xg("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?du():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function pu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(He(),Ht));return t(e).rootDir}catch{return e}}function du(){return Buffer.from(`${W({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
96
- `)}function zC(e){try{return!Zg(`${e}/.git`)||Zg(`${e}/.git/index`)?!1:KC(e).every(t=>t===".git")}catch{return!1}}var fu=h(()=>{"use strict";Qe()});async function Hr(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function rh(e,t,r,n={}){p0(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=f0(["id","number",...r]).map(d=>m0(d0[d],6)).join(`
100
+ `)}}function eh(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${pu(t)}
101
+ `)}function jC(e){ga(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${pu(e)}
102
+ `)}function pu(e){return e instanceof Error?e.name||"Error":typeof e}function HC(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function GC(e){if(!e.storeUri.startsWith("file://"))return!0;try{return xC(vC(e.storeUri))}catch{return!1}}function lu(e){return $e(e,["tool_input","command"])||$e(e,["tool_input","cmd"])||$e(e,["tool_input","args","command"])||$e(e,["input","command"])||$e(e,["input","cmd"])||$e(e,["arguments","command"])||$e(e,["arguments","cmd"])||$e(e,["command"])||$e(e,["cmd"])}function WC(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=fu(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Pr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function fu(e){let t=[],r="",n=!1,s=null,o=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let i=0;i<e.length;i+=1){let a=e[i];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}if(/[ \t]/.test(a)){o();continue}r+=a}return s?[]:(o(),t)}function UC(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function JC(e){let t=fu(e.trim()).map(r=>r.text);return qt(t)?{kind:"passthrough",reason:AC}:null}function th(e){return e.map(t=>t.text)}function Rt(e){return/[^\w@%+=:,./-]/.test(e)?mu(e):e}function qC(e,t){let r=KC(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(Rt).join(" ")} proxy -- ${mu(e.trim())}`,capabilityId:"proxy:universal"}}function VC(e){if(!process.argv[1])return!1;let t=fu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function KC(e){let t=e.trim();if(!t)return"missing-command";if(nh(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Cn(vn(t)[0]??"")[0];if(r==="rsp"||VC(t))return"opt-out";if(r&&rh.has(r))return"interactive"}function Ko(e,t){let r=e.trim();return zC(r)?{kind:"rewrite",command:`${t.map(Rt).join(" ")} exec -- ${mu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function zC(e){return!(!e||!YC(e)||!XC(e)||nh(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||ZC(e,"rsp")||sh(e,rh)||QC(e))}function YC(e){return/&&|[;|]/.test(e)}function nh(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function XC(e){return vn(e).some(t=>{let r=Cn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function sh(e,t){return vn(e).some(r=>{let n=Cn(r)[0];return n?t.has(n):!1})}function ZC(e,t){return sh(e,new Set([t]))}function QC(e){return vn(e).some(t=>{let r=Cn(t);return r[0]==="grep"&&r.includes("-q")})}function mu(e){return`'${e.replace(/'/g,"'\\''")}'`}function e0(e){return e.join("\0")}function oh(e){try{let t=JSON.parse(e);return ih(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function $e(e,t){let r=e;for(let n of t){if(!ih(r))return"";r=r[n]}return typeof r=="string"?r:""}function ih(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var zo,uu,ss,N1,AC,rh,os=h(()=>{"use strict";Tn();Ae();He();Gt();Zc();Ie();uu=!1;ss=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],N1=qg(ss),AC="lossless-gh-json-jq";rh=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var fh={};F(fh,{fastTelemetryRoot:()=>hu,isFastGitStatus:()=>Qo,runFastGitStatus:()=>ei});import{spawnSync as dh}from"node:child_process";import{existsSync as ph,readdirSync as u0}from"node:fs";function Qo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ei(){if(l0(process.cwd()))return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};if(dh("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=dh("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?gu():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function hu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(He(),Ht));return t(e).rootDir}catch{return e}}function gu(){return Buffer.from(`${U({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
103
+ `)}function l0(e){try{return!ph(`${e}/.git`)||ph(`${e}/.git/index`)?!1:u0(e).every(t=>t===".git")}catch{return!1}}var yu=h(()=>{"use strict";Qe()});async function Hr(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function hh(e,t,r,n={}){C0(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=T0(["id","number",...r]).map(d=>O0(v0[d],6)).join(`
97
104
  `),u=o.map(({alias:d,number:f})=>[` ${d}: ${e}(number: ${f}) {`,c," }"].join(`
98
105
  `)),l=i.map(({alias:d,name:f})=>` ${d}: label(name: ${JSON.stringify(f)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
99
- `);return{kind:e,query:p,aliases:o,labelAliases:i}}function nh(e,t){let r=jr(t),n=jr(r.data),s=jr(n.repository),o=Array.isArray(r.errors)?r.errors.map(jr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(ih(c))return{number:a,value:c};let u=o.find(l=>{let p=l.path;return Array.isArray(p)&&p.includes(i)});return{number:a,error:ah(u?.message)||"not found"}})}function sh(e,t,r){let n=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${th(t)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}if(r.length>0){let a=`remove${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${th(r)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
100
- `)}}function oh(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${St(e.nodeId)}, subIssueId: ${St(s.nodeId)}, clientMutationId: ${St(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
101
- `)}}function mu(e,t){let r=jr(t),n=Array.isArray(r.errors)?r.errors.map(jr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,ah(i.message)||"mutation failed")}return s}function p0(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function f0(e){return[...new Set(e)]}function m0(e,t){let r=" ".repeat(t);return e.split(`
106
+ `);return{kind:e,query:p,aliases:o,labelAliases:i}}function yh(e,t){let r=jr(t),n=jr(r.data),s=jr(n.repository),o=Array.isArray(r.errors)?r.errors.map(jr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(_h(c))return{number:a,value:c};let u=o.find(l=>{let p=l.path;return Array.isArray(p)&&p.includes(i)});return{number:a,error:Rh(u?.message)||"not found"}})}function bh(e,t,r){let n=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${gh(t)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}if(r.length>0){let a=`remove${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${gh(r)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
107
+ `)}}function wh(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${St(e.nodeId)}, subIssueId: ${St(s.nodeId)}, clientMutationId: ${St(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
108
+ `)}}function bu(e,t){let r=jr(t),n=Array.isArray(r.errors)?r.errors.map(jr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,Rh(i.message)||"mutation failed")}return s}function C0(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function T0(e){return[...new Set(e)]}function O0(e,t){let r=" ".repeat(t);return e.split(`
102
109
  `).map(n=>`${r}${n}`).join(`
103
- `)}function St(e){return JSON.stringify(e)}function th(e){return`[${e.map(St).join(", ")}]`}function jr(e){return ih(e)?e:{}}function ih(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ah(e){return typeof e=="string"?e:""}var d0,ch=h(()=>{d0={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
104
- `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as h0,spawnSync as y0}from"node:child_process";function yu(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function dh(e,t={}){let r=A0(e),n=r.repo??t.repo??process.env.GH_REPO??L0();if(!n||!n.includes("/"))return _u(e,"repository is required; pass --repo owner/repo");let s=t.exec??$0,o=Math.max(1,Math.floor(t.restConcurrency??lh));return r.verb==="issues"||r.verb==="prs"?await _0(r,n,s,o,e):r.verb==="edit-labels"?await k0(r,n,s,o,e):await E0(r,n,s,o,e)}async function _0(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=ph(e),a=[],c=[];for(let l of wu(e.numbers,100)){let p=rh(o,l,i.query),d=await bu(r,t,p.query);if(ku(d))return await R0(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:we(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...nh(p,Et(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:v0(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return ti({command:ri(s),transport:"graphql",order:e.numbers,[e.verb]:is(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
105
- `))}async function R0(e,t,r,n,s){let o=ph(e),i=e.verb==="issues"?"issues":"pulls",a=await Hr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:we(l)||"REST fallback failed"}};let p=qe(Et(l.stdout));if(e.verb==="prs"&&o.output.some(fh)){let d=G(qe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:we(f)||"REST check-runs fallback failed"}};let m=await r(["api",`repos/${t}/commits/${d}/status`]);if(m.code!==0)return{number:u,value:{error:we(m)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:T0(qe(Et(f.stdout)),qe(Et(m.stdout)))}}return{number:u,value:C0(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return ti({command:ri(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:is(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function k0(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return _u(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([mh(e.numbers,t,r,n),Hr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(qe(Et(f.stdout)).node_id),error:f.code===0?"":we(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Ur(s,e.numbers,Ru(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of wu(p,100)){let f=sh(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),m=await bu(r,t,f.query);if(ku(m))return await S0(e,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:we(m)||"label mutation failed"});continue}let w=mu(f.aliases,Et(m.stdout));for(let _ of d){let y=f.aliases.filter(b=>b.number===_.number).map(b=>w.get(b.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return Ur(s,e.numbers,gh(e.numbers,l),"graphql")}async function S0(e,t,r,n,s){let o=await Hr(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:we(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:we(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Ur(s,e.numbers,is(o),"rest-fallback",n)}async function E0(e,t,r,n,s){if(e.numbers.length<2)return _u(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await mh(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Ur(s,i,Ru(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of wu(p,100)){let f=oh({number:o,nodeId:u},d),m=await bu(r,t,f.query);if(ku(m))return await x0(o,i,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:we(m)||"sub-issue mutation failed"});continue}let w=mu(f.aliases,Et(m.stdout));for(let _ of f.aliases){let g=w.get(_.alias);l.set(_.number,g?{error:g}:{ok:!0})}}return Ur(s,i,gh(i,l),"graphql")}async function x0(e,t,r,n,s,o){let i=await Hr(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:we(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:we(l)||"REST link failed"}}});return Ur(o,t,is(i),"rest-fallback",s)}function Ur(e,t,r,n,s){let o=Object.values(r).filter(i=>Wr(i)&&"error"in i).length;return ti({command:ri(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??lh}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function ph(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return uh(r,b0),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return uh(t,w0),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function uh(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function v0(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=gu(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=P0(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=hh(t[s]));return"number"in n||(n.number=Su(t.number)),n}function C0(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Wr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(fh(s))n[s]=qe(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=hh(t[s]);return"number"in n||(n.number=Su(t.number)),n}function T0(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Wr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Wr):[],s=[...r.map(o=>({name:G(o.name),state:(G(o.conclusion)||G(o.status)).toLowerCase()})),...n.map(o=>({name:G(o.context),state:G(o.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||O0(s.map(o=>o.state)),contexts:s}}function O0(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function fh(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function P0(e){let t=gu(e).at(-1),r=qe(qe(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:gu(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function bu(e,t,r){let[n,s]=I0(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function mh(e,t,r,n){return await Hr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=qe(Et(o.stdout)),a=G(i.node_id),c=Su(i.id);return o.code!==0||!a?{number:s,error:we(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function wu(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function A0(e){if(!yu(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Gr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Gr(c.slice(7)));else if(c==="--add")s.push(...Gr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Gr(c.slice(6)));else if(c==="--remove")o.push(...Gr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Gr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function ti(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
106
- `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function _u(e,t){return ti({command:ri(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Ru(e,t){return is(e.map(r=>({number:r,value:t(r)})))}function is(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function gh(e,t){return Ru(e,r=>t.get(r)??{error:"mutation skipped"})}function ku(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
107
- ${e.stdout}`)}function we(e){return(e.stderr||e.stdout).trim().split(`
108
- `)[0]?.slice(0,240)??""}function Et(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function gu(e){let t=qe(e).nodes;return Array.isArray(t)?t.filter(Wr):[]}function hh(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function Su(e){let t=Number(e);return Number.isFinite(t)?t:0}function Gr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function I0(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function ri(e){return`rsp ${e.join(" ")}`}function L0(){let e=y0("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function $0(e){let t=h0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function qe(e){return Wr(e)?e:{}}function Wr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var lh,b0,w0,yh=h(()=>{"use strict";J();M();ch();lh=4,b0=new Set(["number","title","state","labels","body"]),w0=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Au={};F(Au,{renderGhContract:()=>Sh,runGhWrapper:()=>j0});import{spawn as D0}from"node:child_process";async function j0(e,t){if(yu(e))return await dh(e);let r=Eh(e),n=await G0(r);return Sh(e,n,t)}async function Sh(e,t,r){if((t.status??0)!==0||t.signal){let f=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=Eh(e),s=as(t.stdout),o=Y0(n,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=sT(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=f}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=oT(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Ie(p)}
110
+ `)}function St(e){return JSON.stringify(e)}function gh(e){return`[${e.map(St).join(", ")}]`}function jr(e){return _h(e)?e:{}}function _h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rh(e){return typeof e=="string"?e:""}var v0,kh=h(()=>{v0={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
111
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as A0,spawnSync as I0}from"node:child_process";function Ru(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function xh(e,t={}){let r=q0(e),n=r.repo??t.repo??process.env.GH_REPO??K0();if(!n||!n.includes("/"))return Eu(e,"repository is required; pass --repo owner/repo");let s=t.exec??z0,o=Math.max(1,Math.floor(t.restConcurrency??Eh));return r.verb==="issues"||r.verb==="prs"?await D0(r,n,s,o,e):r.verb==="edit-labels"?await M0(r,n,s,o,e):await F0(r,n,s,o,e)}async function D0(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=vh(e),a=[],c=[];for(let l of Su(e.numbers,100)){let p=hh(o,l,i.query),d=await ku(r,t,p.query);if(vu(d))return await N0(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:_e(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...yh(p,Et(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:H0(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return ri({command:ni(s),transport:"graphql",order:e.numbers,[e.verb]:is(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
112
+ `))}async function N0(e,t,r,n,s){let o=vh(e),i=e.verb==="issues"?"issues":"pulls",a=await Hr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:_e(l)||"REST fallback failed"}};let p=qe(Et(l.stdout));if(e.verb==="prs"&&o.output.some(Ch)){let d=G(qe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:_e(f)||"REST check-runs fallback failed"}};let m=await r(["api",`repos/${t}/commits/${d}/status`]);if(m.code!==0)return{number:u,value:{error:_e(m)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:W0(qe(Et(f.stdout)),qe(Et(m.stdout)))}}return{number:u,value:G0(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return ri({command:ni(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:is(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function M0(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Eu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Th(e.numbers,t,r,n),Hr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(qe(Et(f.stdout)).node_id),error:f.code===0?"":_e(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Wr(s,e.numbers,xu(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Su(p,100)){let f=bh(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),m=await ku(r,t,f.query);if(vu(m))return await B0(e,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"label mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of d){let y=f.aliases.filter(b=>b.number===_.number).map(b=>w.get(b.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return Wr(s,e.numbers,Oh(e.numbers,l),"graphql")}async function B0(e,t,r,n,s){let o=await Hr(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:_e(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:_e(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Wr(s,e.numbers,is(o),"rest-fallback",n)}async function F0(e,t,r,n,s){if(e.numbers.length<2)return Eu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Th(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Wr(s,i,xu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of Su(p,100)){let f=wh({number:o,nodeId:u},d),m=await ku(r,t,f.query);if(vu(m))return await j0(o,i,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"sub-issue mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of f.aliases){let g=w.get(_.alias);l.set(_.number,g?{error:g}:{ok:!0})}}return Wr(s,i,Oh(i,l),"graphql")}async function j0(e,t,r,n,s,o){let i=await Hr(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:_e(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:_e(l)||"REST link failed"}}});return Wr(o,t,is(i),"rest-fallback",s)}function Wr(e,t,r,n,s){let o=Object.values(r).filter(i=>Ur(i)&&"error"in i).length;return ri({command:ni(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Eh}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function vh(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Sh(r,L0),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Sh(t,$0),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Sh(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function H0(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=wu(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=J0(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Ph(t[s]));return"number"in n||(n.number=Cu(t.number)),n}function G0(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Ur):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(Ch(s))n[s]=qe(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=Ph(t[s]);return"number"in n||(n.number=Cu(t.number)),n}function W0(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Ur):[],n=Array.isArray(t.statuses)?t.statuses.filter(Ur):[],s=[...r.map(o=>({name:G(o.name),state:(G(o.conclusion)||G(o.status)).toLowerCase()})),...n.map(o=>({name:G(o.context),state:G(o.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||U0(s.map(o=>o.state)),contexts:s}}function U0(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function Ch(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function J0(e){let t=wu(e).at(-1),r=qe(qe(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:wu(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function ku(e,t,r){let[n,s]=V0(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Th(e,t,r,n){return await Hr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=qe(Et(o.stdout)),a=G(i.node_id),c=Cu(i.id);return o.code!==0||!a?{number:s,error:_e(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Su(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function q0(e){if(!Ru(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Gr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Gr(c.slice(7)));else if(c==="--add")s.push(...Gr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Gr(c.slice(6)));else if(c==="--remove")o.push(...Gr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Gr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function ri(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
113
+ `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Eu(e,t){return ri({command:ni(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function xu(e,t){return is(e.map(r=>({number:r,value:t(r)})))}function is(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Oh(e,t){return xu(e,r=>t.get(r)??{error:"mutation skipped"})}function vu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
114
+ ${e.stdout}`)}function _e(e){return(e.stderr||e.stdout).trim().split(`
115
+ `)[0]?.slice(0,240)??""}function Et(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function wu(e){let t=qe(e).nodes;return Array.isArray(t)?t.filter(Ur):[]}function Ph(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function Cu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Gr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function V0(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function ni(e){return`rsp ${e.join(" ")}`}function K0(){let e=I0("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function z0(e){let t=A0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function qe(e){return Ur(e)?e:{}}function Ur(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Eh,L0,$0,Ah=h(()=>{"use strict";J();N();kh();Eh=4,L0=new Set(["number","title","state","labels","body"]),$0=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Du={};F(Du,{renderGhContract:()=>Mh,runGhWrapper:()=>tT});import{spawn as Y0}from"node:child_process";async function tT(e,t){if(Ru(e))return await xh(e);let r=Bh(e),n=await nT(r);return Mh(e,n,t)}async function Mh(e,t,r){if((t.status??0)!==0||t.signal){let f=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=Bh(e),s=as(t.stdout),o=dT(n,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=wT(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=f}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=_T(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Le(p)}
109
116
  `;return{stdout:Buffer.from(`${C(u.payload)}
110
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Eh(e){let t=nn(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let f=0;f<l.length;f+=1){let m=l[f]??"";m==="--full"?a=!0:m==="--wide"?c=!0:m==="--fields"?u=wh(l[++f]??""):m.startsWith("--fields=")?u=wh(m.slice(9)):i.push(m)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return H0(d),d}function bh(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?M0[t]:N0[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function wh(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function H0(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ni(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=F0[t];for(let n of e.fields)if(!r.includes(n))throw new ni(e,`unknown field: ${n}`,r)}async function G0(e){if(e.action==="combined")return await U0(e);let t=W0(e);if(!t)return await z0(bh(e));let r=await ue({...t,command:["gh",...bh(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await J0(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function U0(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=vh(as(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(as(s.stdout)).map(V0)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function W0(e){let t=Ch(e.passthrough),r=K0(e.passthrough,"--limit")??30,n=Ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ve(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function J0(e,t){let r=as(t);switch(`${e.kind}:${e.action}`){case"pr:list":return pe(r).map(xh);case"pr:view":return vh(r);case"issue:list":return pe(r).filter(n=>!rr(n.pull_request)).map(_h);case"issue:view":return _h(r);case"run:list":return{items:pe(H(r).workflow_runs).map(Rh),total:le(H(r),"total_count")};case"run:view":{let n=Rh(r),s=Ch(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?pe(H(as(o.stdout)).jobs).map(q0):[]}}default:return r}}function xh(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Ou(t.user),labels:pe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(H(t.base),"ref"),headRefName:x(H(t.head),"ref")}}function vh(e){return xh(e)}function _h(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:pe(t.labels).map(r=>({name:x(r,"name")})),author:Ou(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Rh(e){let t=H(e);return{databaseId:le(t,"database_id")||le(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function q0(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function V0(e){let t=H(e);return{author:Ou(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Ou(e){let t=H(e);return{login:x(t,"login")}}function Ch(e){return e.find(t=>!t.startsWith("-"))}function Ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function K0(e,t){let r=Ve(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function z0(e){let t=D0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.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(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Y0(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Eu(r,"prs"),o=s.rows.map(c=>Th(c,e)),i=te(o,e.query),a=xu(i.length,o.length,s.total,e.query);return i.length===0?vu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Jr({...n,prs:i,aggregate:a,summary:`${Cu(i.length,o.length,e.query)} ${kh(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Jr({...n,pr:Oh(H(r),e),summary:`PR #${le(H(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return X0(e,t,H(r));case"issue:list":{let s=Eu(r,"issues"),o=s.rows.map(c=>Ph(c,e)),i=te(o,e.query),a=xu(i.length,o.length,s.total,e.query);return i.length===0?vu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Jr({...n,issues:i,aggregate:a,summary:`${Cu(i.length,o.length,e.query)} ${kh(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Jr({...n,issue:rT(H(r),e),summary:`issue #${le(H(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Eu(r,"runs"),o=s.rows.map(c=>Ah(c,e)),i=te(o,e.query),a=xu(i.length,o.length,s.total,e.query);return i.length===0?vu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Jr({...n,runs:i,aggregate:a,summary:`${Cu(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Jr({...n,run:nT(H(r),e),summary:`run ${le(H(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function X0(e,t,r){let n=Oh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(Z0),e.query),o=H(r.comments).comments,i=te(pe(o).map(Q0).slice(-3),e.query);return et({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(H(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Z0(e){return{name:x(e,"name"),state:cs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function Q0(e){return{author:Lh(e.author),body:si(e,"body",Tu,!1),created:x(e,"createdAt")}}function Eu(e,t){if(Array.isArray(e))return{rows:pe(e)};let r=H(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:pe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:pe(r.workflow_runs),total:n}:{rows:[]}}function xu(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function vu(e,t,r,n,s){return et({...e,empty:!0,scope:eT(t),[r]:[],aggregate:n,summary:`0 ${tT(t)}`},s)}function eT(e){let t=Ve(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ve(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ve(e.passthrough,"--branch")??Ve(e.passthrough,"-b"),s=Ve(e.passthrough,"--workflow")??Ve(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function tT(e){let t=Ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Th(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),draft:!!e.isDraft};return Pu(r,e,t,["author","labels","url","updated"]),r}function Oh(e,t){let r=Th(e,t);return r.body=si(e,"body",Tu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Ph(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),labels:Ih(e.labels)};return Pu(r,e,t,["author","url","updated"]),r}function rT(e,t){let r=Ph(e,t);return r.body=si(e,"body",Tu,t.full),r}function Ah(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:cs(e),conclusion:x(e,"conclusion")};return Pu(r,e,t,["event","branch","workflow","created"]),r}function nT(e,t){let r=Ah(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:cs(s),conclusion:x(s,"conclusion"),log:si(s,"log",B0,t.full)}));return r.jobs=n,r}function si(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function sT(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(rr(r)){if(rr(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function oT(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function kh(e,t){return e.every(r=>r.state===t)?t:"returned"}function Cu(e,t,r){return r?`${e}/${t}`:String(e)}function Jr(e,t,r){return t.query?et(e,r):e}function cs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function Pu(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=Lh(t.author):s==="labels"?e.labels=Ih(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function Ih(e){return Array.isArray(e)?e.map(t=>rr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Lh(e){return rr(e)?x(e,"login"):""}function as(e){return e.trim()?JSON.parse(e):null}function pe(e){return Array.isArray(e)?e.filter(rr):[]}function H(e){return rr(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var N0,M0,Tu,B0,F0,ni,Iu=h(()=>{"use strict";J();M();Ro();yh();Zt();sn();Be();N0={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},M0={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},Tu=160,B0=160,F0={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};ni=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Du={};F(Du,{renderTestContract:()=>$h,runTestWrapper:()=>lT});import{spawn as iT}from"node:child_process";async function lT(e,t){let r=nn(e),n=await gT(r.argv);return await $h(e,n,t)}async function $h(e,t,r){let n=nn(e),o=Dh(n.argv)==="vitest"?hT(t.stdout):yT(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let m=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${_T(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await dT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await bT(m.excerpt,n.argv.join(" "),r.store);u.push({suite:m.suite,name:m.name,excerpt:w.text}),l??=w.handle,p+=w.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?et(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:$u(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function dT(e,t,r,n,s,o,i){let a=pT(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?et(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,r.failures.length-a.length),d=a.some((b,R)=>b.excerpt!==r.failures[R].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:$u(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let m=C(f),w=Buffer.byteLength(m),_=await o.store?.mint(Buffer.from(m),{command:e.join(" "),loss:{level:"terse",bytes_elided:w}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${w}) \u2014 ${Ie(_)}`;return{stdout:Buffer.from(`${l}
111
- ${y}`),stderr:Buffer.from(t.stderr),status:$u(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:w,rowsElided:p,rawOutput:Buffer.from(m)}}function $u(e){return e===0||e===null?0:1}function pT(e){let t=[],r=cT;for(let n of e.slice(0,uT)){let s=fT(n.excerpt,Math.min(aT,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function fT(e,t){if(t<=0)return"";let r=e.split(`
117
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Bh(e){let t=nn(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let f=0;f<l.length;f+=1){let m=l[f]??"";m==="--full"?a=!0:m==="--wide"?c=!0:m==="--fields"?u=Lh(l[++f]??""):m.startsWith("--fields=")?u=Lh(m.slice(9)):i.push(m)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return rT(d),d}function Ih(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?Z0[t]:X0[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Lh(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function rT(e){if(e.fields.size===0)return;if(e.action!=="list")throw new si(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=eT[t];for(let n of e.fields)if(!r.includes(n))throw new si(e,`unknown field: ${n}`,r)}async function nT(e){if(e.action==="combined")return await sT(e);let t=oT(e);if(!t)return await lT(Ih(e));let r=await ue({...t,command:["gh",...Ih(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await iT(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function sT(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=jh(as(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(as(s.stdout)).map(cT)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function oT(e){let t=Hh(e.passthrough),r=uT(e.passthrough,"--limit")??30,n=Ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ve(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function iT(e,t){let r=as(t);switch(`${e.kind}:${e.action}`){case"pr:list":return pe(r).map(Fh);case"pr:view":return jh(r);case"issue:list":return pe(r).filter(n=>!rr(n.pull_request)).map($h);case"issue:view":return $h(r);case"run:list":return{items:pe(H(r).workflow_runs).map(Dh),total:le(H(r),"total_count")};case"run:view":{let n=Dh(r),s=Hh(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?pe(H(as(o.stdout)).jobs).map(aT):[]}}default:return r}}function Fh(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Lu(t.user),labels:pe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(H(t.base),"ref"),headRefName:x(H(t.head),"ref")}}function jh(e){return Fh(e)}function $h(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:pe(t.labels).map(r=>({name:x(r,"name")})),author:Lu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Dh(e){let t=H(e);return{databaseId:le(t,"database_id")||le(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function aT(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function cT(e){let t=H(e);return{author:Lu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Lu(e){let t=H(e);return{login:x(t,"login")}}function Hh(e){return e.find(t=>!t.startsWith("-"))}function Ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function uT(e,t){let r=Ve(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function lT(e){let t=Y0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.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(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function dT(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Tu(r,"prs"),o=s.rows.map(c=>Gh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Jr({...n,prs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Jr({...n,pr:Wh(H(r),e),summary:`PR #${le(H(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return pT(e,t,H(r));case"issue:list":{let s=Tu(r,"issues"),o=s.rows.map(c=>Uh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Jr({...n,issues:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Jr({...n,issue:yT(H(r),e),summary:`issue #${le(H(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Tu(r,"runs"),o=s.rows.map(c=>Jh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Jr({...n,runs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Jr({...n,run:bT(H(r),e),summary:`run ${le(H(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function pT(e,t,r){let n=Wh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(fT),e.query),o=H(r.comments).comments,i=te(pe(o).map(mT).slice(-3),e.query);return et({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(H(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function fT(e){return{name:x(e,"name"),state:cs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function mT(e){return{author:Vh(e.author),body:oi(e,"body",Iu,!1),created:x(e,"createdAt")}}function Tu(e,t){if(Array.isArray(e))return{rows:pe(e)};let r=H(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:pe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:pe(r.workflow_runs),total:n}:{rows:[]}}function Ou(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Pu(e,t,r,n,s){return et({...e,empty:!0,scope:gT(t),[r]:[],aggregate:n,summary:`0 ${hT(t)}`},s)}function gT(e){let t=Ve(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ve(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ve(e.passthrough,"--branch")??Ve(e.passthrough,"-b"),s=Ve(e.passthrough,"--workflow")??Ve(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function hT(e){let t=Ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Gh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),draft:!!e.isDraft};return $u(r,e,t,["author","labels","url","updated"]),r}function Wh(e,t){let r=Gh(e,t);return r.body=oi(e,"body",Iu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Uh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),labels:qh(e.labels)};return $u(r,e,t,["author","url","updated"]),r}function yT(e,t){let r=Uh(e,t);return r.body=oi(e,"body",Iu,t.full),r}function Jh(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:cs(e),conclusion:x(e,"conclusion")};return $u(r,e,t,["event","branch","workflow","created"]),r}function bT(e,t){let r=Jh(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:cs(s),conclusion:x(s,"conclusion"),log:oi(s,"log",Q0,t.full)}));return r.jobs=n,r}function oi(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function wT(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(rr(r)){if(rr(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function _T(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function Nh(e,t){return e.every(r=>r.state===t)?t:"returned"}function Au(e,t,r){return r?`${e}/${t}`:String(e)}function Jr(e,t,r){return t.query?et(e,r):e}function cs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function $u(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=Vh(t.author):s==="labels"?e.labels=qh(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function qh(e){return Array.isArray(e)?e.map(t=>rr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Vh(e){return rr(e)?x(e,"login"):""}function as(e){return e.trim()?JSON.parse(e):null}function pe(e){return Array.isArray(e)?e.filter(rr):[]}function H(e){return rr(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var X0,Z0,Iu,Q0,eT,si,Nu=h(()=>{"use strict";J();N();ko();Ah();Zt();sn();Be();X0={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},Z0={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},Iu=160,Q0=160,eT={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};si=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return D({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Fu={};F(Fu,{renderTestContract:()=>Kh,runTestWrapper:()=>xT});import{spawn as RT}from"node:child_process";async function xT(e,t){let r=nn(e),n=await PT(r.argv);return await Kh(e,n,t)}async function Kh(e,t,r){let n=nn(e),o=zh(n.argv)==="vitest"?AT(t.stdout):IT(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let m=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${DT(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await vT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await LT(m.excerpt,n.argv.join(" "),r.store);u.push({suite:m.suite,name:m.name,excerpt:w.text}),l??=w.handle,p+=w.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?et(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function vT(e,t,r,n,s,o,i){let a=CT(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?et(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,r.failures.length-a.length),d=a.some((b,R)=>b.excerpt!==r.failures[R].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let m=C(f),w=Buffer.byteLength(m),_=await o.store?.mint(Buffer.from(m),{command:e.join(" "),loss:{level:"terse",bytes_elided:w}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${w}) \u2014 ${Le(_)}`;return{stdout:Buffer.from(`${l}
118
+ ${y}`),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:w,rowsElided:p,rawOutput:Buffer.from(m)}}function Bu(e){return e===0||e===null?0:1}function CT(e){let t=[],r=ST;for(let n of e.slice(0,ET)){let s=TT(n.excerpt,Math.min(kT,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function TT(e,t){if(t<=0)return"";let r=e.split(`
112
119
  `),n=r.length<=2?e:`${r[0]}
113
120
  \u2026
114
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Dh(e){if(e[0]==="vitest")return"vitest";if(e[0]==="cargo"&&e[1]==="test")return"cargo";throw new Error(`unsupported test command: ${e.join(" ")}`)}function mT(e){if(Dh(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(i=>i==="--reporter=json"||i==="--reporter"||i.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let r=e.slice(1);return{executable:"cargo",args:r.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?r:["test","--message-format=json",...r.slice(1)]}}async function gT(e){let t=mT(e),r=iT(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function hT(e){let t=Nh(e);if(!xt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=vt(t.numTotalTests),o=vt(t.numFailedTests),i=RT(vt(t.startTime),vt(t.endTime));for(let a of r){if(!xt(a))continue;let c=Ke(a.name)||Ke(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)xt(l)&&l.status==="failed"&&n.push({suite:c,name:Ke(l.fullName)||Ke(l.title)||Ke(l.name),excerpt:wT(l.failureMessages)||Ke(l.failureMessage)})}return s||=r.reduce((a,c)=>!xt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>xt(c)?a+vt(c.perfStats&&xt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function yT(e){let t=e.split(`
115
- `).filter(Boolean).map(c=>Nh(c)).filter(xt);if(t.length===0)return null;let r=[],n=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,n+=vt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=vt(c.failed),i+=vt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ke(c.name).split("::").slice(0,-1).join("::"),name:Ke(c.name),excerpt:Ke(c.stdout)});continue}if(c.reason==="compiler-message"&&xt(c.message)){let u=Ke(c.message.rendered);u&&a.push(u)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
116
- `)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function bT(e,t,r){let n=Buffer.from(e);if(n.length<=Lu)return{text:e,bytesElided:0};if(!r)throw new Error("over-limit test failure excerpt requires an elision store");let s=await r.mint(n,{command:t,loss:{level:"brief",bytes_elided:n.length}}),o=n.subarray(0,Lu).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
117
- \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Ie(s)}`,handle:s,bytesElided:n.length}}function Nh(e){try{return JSON.parse(e)}catch{return null}}function wT(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
118
- `):""}function _T(e){return`${Number(e.toFixed(1))}s`}function RT(e,t){return e>0&&t>e?(t-e)/1e3:0}function vt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ke(e){return typeof e=="string"?e:""}function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lu,aT,cT,uT,Nu=h(()=>{"use strict";J();M();Zt();sn();Be();Lu=320,aT=160,cT=Lu,uT=3});var Fu={};F(Fu,{parseCatCommand:()=>Bu,renderCatContract:()=>OT,runCatWrapper:()=>TT});import{isUtf8 as kT}from"node:buffer";import{readFile as ST}from"node:fs/promises";import{extname as ET}from"node:path";async function TT(e,t){let r=Bu(e),n;try{n=await ST(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=Ee(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
119
- `),status:1,signal:null}}return Gh(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Hh(e,r,n,t)}async function OT(e,t,r){if((t.status??0)!==0||t.signal){let i=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Bu(e),s=Buffer.from(t.stdout,"utf8");return Gh(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Hh(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Bu(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,o=[];for(let i=0;i<t.length;i++){let a=t[i];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=jh(t[++i],Mu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=jh(u,Mu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function Hh(e,t,r,n){let s=r.toString("utf8"),o=IT(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>Fh(n.heavyByteThreshold,Mh)||o.truncated;if(!Bh(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Bh(t.file)?PT(e,t.file,r,s,n.level,o):AT(e,t.file,r,s,o),c=`${C(a)}
120
- `;if(!i&&Buffer.byteLength(c)<=Fh(n.heavyByteThreshold,Mh))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let u=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${Ie(u)}
121
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function PT(e,t,r,n,s,o){let i=oi(n),a=s==="terse"?vT:xT,c=oi(o.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:i.length,symbols:LT(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function AT(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:oi(n).length,content:oi(s.text),truncated:s.truncated}}function IT(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
122
- `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Mu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
121
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function zh(e){if(e[0]==="vitest")return"vitest";if(e[0]==="cargo"&&e[1]==="test")return"cargo";throw new Error(`unsupported test command: ${e.join(" ")}`)}function OT(e){if(zh(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(i=>i==="--reporter=json"||i==="--reporter"||i.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let r=e.slice(1);return{executable:"cargo",args:r.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?r:["test","--message-format=json",...r.slice(1)]}}async function PT(e){let t=OT(e),r=RT(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function AT(e){let t=Yh(e);if(!xt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=vt(t.numTotalTests),o=vt(t.numFailedTests),i=NT(vt(t.startTime),vt(t.endTime));for(let a of r){if(!xt(a))continue;let c=Ke(a.name)||Ke(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)xt(l)&&l.status==="failed"&&n.push({suite:c,name:Ke(l.fullName)||Ke(l.title)||Ke(l.name),excerpt:$T(l.failureMessages)||Ke(l.failureMessage)})}return s||=r.reduce((a,c)=>!xt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>xt(c)?a+vt(c.perfStats&&xt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function IT(e){let t=e.split(`
122
+ `).filter(Boolean).map(c=>Yh(c)).filter(xt);if(t.length===0)return null;let r=[],n=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,n+=vt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=vt(c.failed),i+=vt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ke(c.name).split("::").slice(0,-1).join("::"),name:Ke(c.name),excerpt:Ke(c.stdout)});continue}if(c.reason==="compiler-message"&&xt(c.message)){let u=Ke(c.message.rendered);u&&a.push(u)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
123
+ `)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function LT(e,t,r){let n=Buffer.from(e);if(n.length<=Mu)return{text:e,bytesElided:0};if(!r)throw new Error("over-limit test failure excerpt requires an elision store");let s=await r.mint(n,{command:t,loss:{level:"brief",bytes_elided:n.length}}),o=n.subarray(0,Mu).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
124
+ \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Le(s)}`,handle:s,bytesElided:n.length}}function Yh(e){try{return JSON.parse(e)}catch{return null}}function $T(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
125
+ `):""}function DT(e){return`${Number(e.toFixed(1))}s`}function NT(e,t){return e>0&&t>e?(t-e)/1e3:0}function vt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ke(e){return typeof e=="string"?e:""}function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Mu,kT,ST,ET,ju=h(()=>{"use strict";J();N();Zt();sn();Be();Mu=320,kT=160,ST=Mu,ET=3});var Wu={};F(Wu,{parseCatCommand:()=>Gu,renderCatContract:()=>UT,runCatWrapper:()=>WT});import{isUtf8 as MT}from"node:buffer";import{readFile as BT}from"node:fs/promises";import{extname as FT}from"node:path";async function WT(e,t){let r=Gu(e),n;try{n=await BT(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=xe(e.join(" "),"",o);return{stdout:D({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
126
+ `),status:1,signal:null}}return ry(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await ty(e,r,n,t)}async function UT(e,t,r){if((t.status??0)!==0||t.signal){let i=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Gu(e),s=Buffer.from(t.stdout,"utf8");return ry(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ty(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Gu(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,o=[];for(let i=0;i<t.length;i++){let a=t[i];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=ey(t[++i],Hu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=ey(u,Hu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function ty(e,t,r,n){let s=r.toString("utf8"),o=VT(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>Qh(n.heavyByteThreshold,Xh)||o.truncated;if(!Zh(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Zh(t.file)?JT(e,t.file,r,s,n.level,o):qT(e,t.file,r,s,o),c=`${C(a)}
127
+ `;if(!i&&Buffer.byteLength(c)<=Qh(n.heavyByteThreshold,Xh))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let u=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${Le(u)}
128
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function JT(e,t,r,n,s,o){let i=ii(n),a=s==="terse"?HT:jT,c=ii(o.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:i.length,symbols:KT(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function qT(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ii(n).length,content:ii(s.text),truncated:s.truncated}}function VT(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
129
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Hu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
123
130
  `)}${n&&i.length>0?`
124
- `:""}`,truncated:i.length<s.length}}function LT(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),o=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(o){t.push({kind:o[1],name:o[2],line:r+1,signature:s});continue}let i=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(i){t.push({kind:"function",name:i[1],line:r+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!$T(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function oi(e){let t=e.split(`
125
- `);return t.at(-1)===""?t.slice(0,-1):t}function Gh(e){return e.includes(0)||!kT(e)}function Bh(e){return CT.has(ET(e).toLowerCase())}function $T(e){return["for","if","switch","while"].includes(e)}function Fh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function jh(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Mh,Mu,xT,vT,CT,ju=h(()=>{"use strict";M();Zt();Be();Mh=8*1024,Mu=10,xT=8,vT=2,CT=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Yh={};F(Yh,{REPO_STORE_PATH:()=>Uu,mergeRspBlock:()=>Vh,provisionRspRepoStore:()=>WT});import{constants as DT}from"node:fs";import{access as NT,copyFile as MT,mkdir as Wh,readFile as BT,rename as FT,writeFile as Jh}from"node:fs/promises";import{dirname as jT,join as us,resolve as HT}from"node:path";async function WT(e,t={}){let r=HT(e),n=us(r,".red"),s=us(n,"config.yaml"),o=us(r,Uu);await Wh(n,{recursive:!0}),await Wh(jT(o),{recursive:!0});let i="";try{i=await BT(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=Vh(i,{enabled:!0,ttlDays:t.ttlDays??ve,ephemeralTtlHours:t.ephemeralTtlHours??Ce,byteBudget:t.byteBudget??Te,heavyGitByteThreshold:t.heavyGitByteThreshold??ot}),c=a!==i;c&&await Jh(s,a,"utf8");let u=!await Gu(o),l=!1,p=!1;if(u){let f=us(r,GT),m=us(r,UT);if(await Gu(f))await FT(f,o),p=!0;else if(await Gu(m))await MT(m,o),l=!0;else{let{provisionElisionStore:w}=await Promise.resolve().then(()=>(wo(),Bf)),_=process.env.REDDB_BIN;try{await w({uri:`file://${o}`,ttlDays:t.ttlDays??ve,ephemeralTtlHours:t.ephemeralTtlHours??Ce,byteBudget:t.byteBudget??Te})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=JT(a,Uu);return d!==a&&await Jh(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function Vh(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ii(t.ttlDays,ve)}`,` ephemeralTtlHours: ${ii(t.ephemeralTtlHours,Ce)}`,` byteBudget: ${ii(t.byteBudget,Te)}`,` heavyGitByteThreshold: ${ii(t.heavyGitByteThreshold,ot)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
126
- `),s=Kh(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
131
+ `:""}`,truncated:i.length<s.length}}function KT(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),o=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(o){t.push({kind:o[1],name:o[2],line:r+1,signature:s});continue}let i=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(i){t.push({kind:"function",name:i[1],line:r+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!zT(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ii(e){let t=e.split(`
132
+ `);return t.at(-1)===""?t.slice(0,-1):t}function ry(e){return e.includes(0)||!MT(e)}function Zh(e){return GT.has(FT(e).toLowerCase())}function zT(e){return["for","if","switch","while"].includes(e)}function Qh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ey(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Xh,Hu,jT,HT,GT,Uu=h(()=>{"use strict";N();Zt();Be();Xh=8*1024,Hu=10,jT=8,HT=2,GT=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var ly={};F(ly,{REPO_STORE_PATH:()=>Vu,mergeRspBlock:()=>ay,provisionRspRepoStore:()=>oO});import{constants as YT}from"node:fs";import{access as XT,copyFile as ZT,mkdir as sy,readFile as QT,rename as eO,writeFile as oy}from"node:fs/promises";import{dirname as tO,join as us,resolve as rO}from"node:path";async function oO(e,t={}){let r=rO(e),n=us(r,".red"),s=us(n,"config.yaml"),o=us(r,Vu);await sy(n,{recursive:!0}),await sy(tO(o),{recursive:!0});let i="";try{i=await QT(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=ay(i,{enabled:!0,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ot}),c=a!==i;c&&await oy(s,a,"utf8");let u=!await qu(o),l=!1,p=!1;if(u){let f=us(r,nO),m=us(r,sO);if(await qu(f))await eO(f,o),p=!0;else if(await qu(m))await ZT(m,o),l=!0;else{let{provisionElisionStore:w}=await Promise.resolve().then(()=>(_o(),Zf)),_=process.env.REDDB_BIN;try{await w({uri:`file://${o}`,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=iO(a,Vu);return d!==a&&await oy(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function ay(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ai(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ai(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ai(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ai(t.heavyGitByteThreshold,ot)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
133
+ `),s=cy(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
127
134
  `)}
128
- `}let o=Wu(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
135
+ `}let o=Ku(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
129
136
  `)}
130
- `}function Kh(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(qu(n)&&Ju(n)===0&&zh(n)===t)return r}return-1}function Wu(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(qu(e[s])&&Ju(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ju(e){return(e.match(/^ */)?.[0]??"").length}function qu(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function zh(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ii(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function JT(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
131
- `),n=Kh(r,"plugins");if(n===-1)return e;let s=Wu(r,n,0),o=qh(r,"memory",n+1,s,2);if(o===-1)return e;let i=Wu(r,o,2),a=[...r],c=qh(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
137
+ `}function cy(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Yu(n)&&zu(n)===0&&uy(n)===t)return r}return-1}function Ku(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Yu(e[s])&&zu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function zu(e){return(e.match(/^ */)?.[0]??"").length}function Yu(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function uy(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ai(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function iO(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
138
+ `),n=cy(r,"plugins");if(n===-1)return e;let s=Ku(r,n,0),o=iy(r,"memory",n+1,s,2);if(o===-1)return e;let i=Ku(r,o,2),a=[...r],c=iy(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
132
139
  `)}
133
- `}function qh(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(qu(i)&&Ju(i)===s&&zh(i)===t)return o}return-1}async function Gu(e){try{return await NT(e,DT.F_OK),!0}catch{return!1}}var Uu,GT,UT,Xh=h(()=>{"use strict";fe();Pe();Uu=Ma,GT=Vl,UT=".red/memory/graph.rdb"});var ny={};F(ny,{runRspMcpServer:()=>VT});import{createInterface as qT}from"node:readline";async function VT(){let e=Oe(process.cwd(),process.env),t=qT({input:process.stdin,crlfDelay:1/0});for await(let r of t){if(!r.trim())continue;let n;try{n=JSON.parse(r);let s=await KT(n,e);ey({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){ey({jsonrpc:"2.0",id:typeof ty(r)?.id>"u"?null:ty(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function KT(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:Qh(t)}]};if(!t.enabled)return{content:[{type:"text",text:Qh(t)}],isError:!0};let n=rO(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:nr({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),o=await n.get(s);return o?"status"in o?{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:o.status,expired_at:o.expired_at,help:[o.command]})}],isError:!0}:{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:nr(zT(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await YT(r.arguments,n)}]}}return{}}function nr(e){return`${W(e)}
134
- `}function zT(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function YT(e,t){let r=ZT(e?.payload);try{return await XT(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return ry(r)}}async function XT(e,t,r){let n=QT(t?.level),s=await eu(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return ry(s.output);let o=Ho(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return nr({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return eO(o,i.length,a,n)}function ZT(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function QT(e){return e==="terse"?"terse":"brief"}function eO(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Zh(o.subarray(0,i)),c=Zh(o.subarray(Math.max(0,o.length-i)));return nr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:tO(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function ry(e){return e.endsWith(`
140
+ `}function iy(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Yu(i)&&zu(i)===s&&uy(i)===t)return o}return-1}async function qu(e){try{return await XT(e,YT.F_OK),!0}catch{return!1}}var Vu,nO,sO,dy=h(()=>{"use strict";me();Ae();Vu=Ha,nO=Xl,sO=".red/memory/graph.rdb"});var yy={};F(yy,{runRspMcpServer:()=>cO});import{createInterface as aO}from"node:readline";async function cO(){let e=Pe(process.cwd(),process.env),t=aO({input:process.stdin,crlfDelay:1/0});for await(let r of t){if(!r.trim())continue;let n;try{n=JSON.parse(r);let s=await uO(n,e);my({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){my({jsonrpc:"2.0",id:typeof gy(r)?.id>"u"?null:gy(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function uO(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:fy(t)}]};if(!t.enabled)return{content:[{type:"text",text:fy(t)}],isError:!0};let n=yO(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:nr({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),o=await n.get(s);return o?"status"in o?{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:o.status,expired_at:o.expired_at,help:[o.command]})}],isError:!0}:{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:nr(lO(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await dO(r.arguments,n)}]}}return{}}function nr(e){return`${U(e)}
141
+ `}function lO(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function dO(e,t){let r=fO(e?.payload);try{return await pO(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return hy(r)}}async function pO(e,t,r){let n=mO(t?.level),s=await su(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return hy(s.output);let o=Go(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return nr({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return gO(o,i.length,a,n)}function fO(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function mO(e){return e==="terse"?"terse":"brief"}function gO(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=py(o.subarray(0,i)),c=py(o.subarray(Math.max(0,o.length-i)));return nr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:hO(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function hy(e){return e.endsWith(`
135
142
  `)?e:`${e}
136
- `}function Zh(e){return e.toString("utf8").replace(/�$/g,"")}function tO(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function rO(e){return la(process.cwd(),e)}function Qh(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return nr({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function ey(e){process.stdout.write(`${JSON.stringify(e)}
137
- `)}function ty(e){try{return JSON.parse(e)}catch{return null}}var sy=h(()=>{"use strict";Qe();Pe();J();Xn();Gt()});var iy={};F(iy,{renderShellInit:()=>nO});function nO(e,t=ss){if(e==="fish")return sO(t);if(e==="bash"||e==="zsh")return oO(e,t);throw new Error(`unsupported shell: ${e}`)}function sO(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(r=>r.command[0]).filter(ci))].map(r=>` abbr --add --position command -- ${r} '${uO(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
138
- `)}function oO(e,t){let r=aO(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ai("git",r.get("git")??[]),...ai("gh",r.get("gh")??[]),...ai("vitest",r.get("vitest")??[]),...ai("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
139
- `)}function ai(e,t){if(t.length===0)return[];if(t.some(o=>o.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ci),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ci)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>oy(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of iO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${cO(u)}' ]`).join(" && ")).join(" || ");s.push(` ${oy(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function iO(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function aO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ci(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ci(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function oy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function cO(e){return e.replace(/'/g,"'\\''")}function uO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var ay=h(()=>{"use strict";os()});function Vu(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&lO(t.chosenOption)&&dO(t.outcome)&&pO(t.cost)}function lO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function dO(e){return e==="success"||e==="failure"||e==="escalated"}function pO(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var cy=h(()=>{});import{createHash as fO}from"node:crypto";function _y(e,t){return new zu(e,t)}function uy(e){let t=Number(e.red_entity_id??e.rid),r=Yu(e.properties??e.PROPERTIES),n=Ry(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),o=String(r.title??e.label??e.LABEL??s),i=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function ly(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=ky(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:Yu(e.properties??e.PROPERTIES)}}function hO(e){let t=Number(e.red_entity_id??e.rid),r=Yu(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Vu(r)?null:{rid:t,event:r}}function Yu(e){return e==null?{}:typeof e=="string"?JSON.parse(e):ui(e)?e:{}}function Ry(e){let t=e==="contact"?"person":e;if(mO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function ky(e){if(gO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function yO(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function dy(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function or(e){return ui(e)?e:{}}function py(e,t){return or(e)[t]}function fy(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function my(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function gy(e){let t=or(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function ui(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ku(e){return e!=null}function bO(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function wO(e){return fO("sha256").update(JSON.stringify(e)).digest("hex")}function _O(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function hy(e){return`artifact-hash:${e}`}function yy(e,t,r){return`connection:${e}:${t}:${r}`}function by(){return"model-tier-bandit:v1"}function RO(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function wy(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Sy(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+wy(r,a)*3+wy(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function kO(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=Ey({...Sy(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return sr(s)}function Ey(e){return{...e,lexical:sr(e.lexical),tags:sr(e.tags),kind:sr(e.kind),connections:sr(e.connections),vector:sr(e.vector),total:sr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function sr(e){return Math.round(e*1e3)/1e3}function SO(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function EO(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,o)=>({ref:`B${o+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function xO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,mO,gO,zu,xy=h(()=>{"use strict";cy();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},mO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),gO=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),zu=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(or(r));if(t==="getArtifact")return await this.getArtifact(py(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=or(r);return await this.search(fy(n,"query"),my(n,"limit")??10,gy(n.options))}if(t==="think"){let n=or(r);return await this.think(fy(n,"query"),my(n,"limit")??8,gy(n.options))}if(t==="link")return await this.link(or(r));if(t==="backlinks")return await this.backlinks(py(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(or(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:xO(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Ry(de(t.kind)||"note"),o=bO(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=wO([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(hy(a));if(c!=null){let m=await this.getArtifact(Number(c));if(m)return m}let u=`${_O(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:ui(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${ze.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=uy(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(hy(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ze.artifacts}`)).rows.map(uy).filter(Ku)}async search(t,r,n={}){let s=RO(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=Sy(u,s),p=Ey({...l,connections:kO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:SO(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return EO(t,s)}async link(t){let r=await this.getArtifact(dy(t.from)),n=await this.getArtifact(dy(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=ky(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:ui(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ze.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=ly(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(yy(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${ze.connections}`)).rows.map(ly).filter(Ku)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=yO(de(t.interval)||"day"),s=de(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Vu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ze.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${ze.outcomeEvents}`)).rows.map(hO).filter(Ku).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(by());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(by(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(yy(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(ze.kv)}}});var By={};F(By,{runResidentServer:()=>LO});import{randomUUID as qr}from"node:crypto";import{execFileSync as vO,spawn as CO}from"node:child_process";import{existsSync as TO}from"node:fs";import{mkdir as Iy,rename as OO,rm as vy,writeFile as Ly}from"node:fs/promises";import{createServer as PO}from"node:net";import{dirname as el,join as li}from"node:path";import{fileURLToPath as AO,pathToFileURL as IO}from"node:url";async function LO(e){await Iy(el(e.socketPath),{recursive:!0});let t=qO();JO();let r=e.telemetryDrainTimeoutMs??$y,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??zs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=PO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),QO(R,async T=>{m();let B=await eP(n,T,e.storeUri,e.residentVersion??"0.0.0-dev"),_e={id:T.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};My(R,_e),T.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=WO(c),d.close();for(let R of l)R.destroy()}function m(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(R=>{let T=()=>{di(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,T),{signal:R,handler:T}});await new Promise((R,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),R()})}),(async()=>{let R=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(oe=>setTimeout(oe,T));let B=await Yt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),_e=Number(process.hrtime.bigint()-R)/1e6,$e=new Qu(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Vs,byteBudget:e.telemetryByteBudget??e.byteBudget??Ks});if(o){await B.close();return}if(await Xu($e,r),o){await B.close();return}n={kind:"ready",store:B,telemetry:$e,storeOpenCount:1,storeElapsedMs:_e},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&Xu(oe.telemetry,r)},p),s.unref(),m()})().catch(R=>{n={kind:"failed",error:R instanceof Error?R:new Error(String(R))},m()}),e.pidPath&&await Ly(e.pidPath,`${process.pid}
140
- `,{encoding:"utf8",mode:384});let g=e.residentVersion??"0.0.0-dev",y=e.registryPath??li(U(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Os(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:g})}catch{}await new Promise(R=>d.once("close",R)),a&&clearTimeout(a),s&&clearInterval(s),await vy(e.socketPath,{force:!0});let b=n;b.kind==="ready"&&(await Xu(b.telemetry,r,u),await b.store.close()),c&&clearTimeout(c);for(let{signal:R,handler:T}of _)process.off(R,T);t?.kill("SIGTERM"),di(),e.pidPath&&await vy(e.pidPath,{force:!0}),await Ps(y)}async function FO(e,t,r=new Date){let n=await _o(e,1,r),s=r.toISOString().slice(0,10),o=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=n.savings.tokens_saved>0?o/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=li(U(t),MO),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:o,dollars_saved_today_usd:Math.round(i*1e6)/1e6,show_total_today:n.health.show_total,updated_at:r.toISOString()};n.health.show_total>0&&(u.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(u.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await Iy(el(a),{recursive:!0}),await Ly(c,`${W(u)}
141
- `,{encoding:"utf8",mode:384}),await OO(c,a)}async function Xu(e,t=$y,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Ny(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
142
- `)}}async function jO(e){let t=[];for(let r of BO){let n=await HO(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await GO(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Dy(r)}`))}return t}async function HO(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(r){let n=r instanceof Error?r.message:String(r);if(/\bnot found\b/i.test(n))return{ok:!1,previousModel:null};let s=n.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(n))return{ok:!1,previousModel:"collection"};let o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw r}}async function GO(e,t,r){let n=UO(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Dy(t)}`)}function UO(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function Dy(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function WO(e){return e&&clearTimeout(e),setTimeout(()=>{di(),process.exit(0)},NO)}function JO(){Cy||(Cy=!0,process.on("exit",()=>di()))}function qO(){if(process.platform==="win32")return;let t=CO(process.execPath,["-e",`
143
+ `}function py(e){return e.toString("utf8").replace(/�$/g,"")}function hO(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function yO(e){return ma(process.cwd(),e)}function fy(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return nr({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function my(e){process.stdout.write(`${JSON.stringify(e)}
144
+ `)}function gy(e){try{return JSON.parse(e)}catch{return null}}var by=h(()=>{"use strict";Qe();Ae();J();Xn();Gt()});var _y={};F(_y,{renderShellInit:()=>bO});function bO(e,t=ss){if(e==="fish")return wO(t);if(e==="bash"||e==="zsh")return _O(e,t);throw new Error(`unsupported shell: ${e}`)}function wO(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(r=>r.command[0]).filter(ui))].map(r=>` abbr --add --position command -- ${r} '${EO(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
145
+ `)}function _O(e,t){let r=kO(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ci("git",r.get("git")??[]),...ci("gh",r.get("gh")??[]),...ci("vitest",r.get("vitest")??[]),...ci("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
146
+ `)}function ci(e,t){if(t.length===0)return[];if(t.some(o=>o.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ui),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ui)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>wy(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of RO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${SO(u)}' ]`).join(" && ")).join(" || ");s.push(` ${wy(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function RO(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function kO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ui(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ui(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function SO(e){return e.replace(/'/g,"'\\''")}function EO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ry=h(()=>{"use strict";os()});function Xu(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&xO(t.chosenOption)&&vO(t.outcome)&&CO(t.cost)}function xO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function vO(e){return e==="success"||e==="failure"||e==="escalated"}function CO(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var ky=h(()=>{});import{createHash as TO}from"node:crypto";function $y(e,t){return new Qu(e,t)}function Sy(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES),n=Dy(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),o=String(r.title??e.label??e.LABEL??s),i=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Ey(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=Ny(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:el(e.properties??e.PROPERTIES)}}function AO(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Xu(r)?null:{rid:t,event:r}}function el(e){return e==null?{}:typeof e=="string"?JSON.parse(e):li(e)?e:{}}function Dy(e){let t=e==="contact"?"person":e;if(OO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ny(e){if(PO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function IO(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function xy(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function or(e){return li(e)?e:{}}function vy(e,t){return or(e)[t]}function Cy(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Ty(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Oy(e){let t=or(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function li(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zu(e){return e!=null}function LO(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function $O(e){return TO("sha256").update(JSON.stringify(e)).digest("hex")}function DO(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Py(e){return`artifact-hash:${e}`}function Ay(e,t,r){return`connection:${e}:${t}:${r}`}function Iy(){return"model-tier-bandit:v1"}function NO(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ly(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function My(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Ly(r,a)*3+Ly(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function MO(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=By({...My(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return sr(s)}function By(e){return{...e,lexical:sr(e.lexical),tags:sr(e.tags),kind:sr(e.kind),connections:sr(e.connections),vector:sr(e.vector),total:sr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function sr(e){return Math.round(e*1e3)/1e3}function BO(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function FO(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,o)=>({ref:`B${o+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function jO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,OO,PO,Qu,Fy=h(()=>{"use strict";ky();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},OO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),PO=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Qu=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(or(r));if(t==="getArtifact")return await this.getArtifact(vy(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=or(r);return await this.search(Cy(n,"query"),Ty(n,"limit")??10,Oy(n.options))}if(t==="think"){let n=or(r);return await this.think(Cy(n,"query"),Ty(n,"limit")??8,Oy(n.options))}if(t==="link")return await this.link(or(r));if(t==="backlinks")return await this.backlinks(vy(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(or(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:jO(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Dy(de(t.kind)||"note"),o=LO(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=$O([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Py(a));if(c!=null){let m=await this.getArtifact(Number(c));if(m)return m}let u=`${DO(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:li(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${ze.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=Sy(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Py(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ze.artifacts}`)).rows.map(Sy).filter(Zu)}async search(t,r,n={}){let s=NO(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=My(u,s),p=By({...l,connections:MO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:BO(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return FO(t,s)}async link(t){let r=await this.getArtifact(xy(t.from)),n=await this.getArtifact(xy(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=Ny(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:li(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ze.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ey(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ay(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${ze.connections}`)).rows.map(Ey).filter(Zu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=IO(de(t.interval)||"day"),s=de(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Xu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ze.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${ze.outcomeEvents}`)).rows.map(AO).filter(Zu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Iy());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Iy(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(Ay(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(ze.kv)}}});var Xy={};F(Xy,{runResidentServer:()=>KO});import{randomUUID as qr}from"node:crypto";import{execFileSync as HO,spawn as GO}from"node:child_process";import{existsSync as WO}from"node:fs";import{mkdir as qy,rename as UO,rm as jy,writeFile as Vy}from"node:fs/promises";import{createServer as JO}from"node:net";import{dirname as sl,join as di}from"node:path";import{fileURLToPath as qO,pathToFileURL as VO}from"node:url";async function KO(e){await qy(sl(e.socketPath),{recursive:!0});let t=aP();iP();let r=e.telemetryDrainTimeoutMs??Ky,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Ys,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=JO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),mP(R,async(T,B)=>{m();let Re=await gP(n,T,e.storeUri,e.residentVersion??"0.0.0-dev"),fe={id:T.id,ok:!0,value:Re,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};B(fe),T.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=oP(c),d.close();for(let R of l)R.destroy()}function m(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(R=>{let T=()=>{pi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,T),{signal:R,handler:T}});await new Promise((R,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),R()})}),(async()=>{let R=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(oe=>setTimeout(oe,T));let B=await Yt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-R)/1e6,fe=new nl(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Ks,byteBudget:e.telemetryByteBudget??e.byteBudget??zs});if(o){await B.close();return}if(await tl(fe,r),o){await B.close();return}n={kind:"ready",store:B,telemetry:fe,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&tl(oe.telemetry,r)},p),s.unref(),m()})().catch(R=>{n={kind:"failed",error:R instanceof Error?R:new Error(String(R))},m()}),e.pidPath&&await Vy(e.pidPath,`${process.pid}
147
+ `,{encoding:"utf8",mode:384});let g=e.residentVersion??"0.0.0-dev",y=e.registryPath??di(W(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Ps(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:g})}catch{}await new Promise(R=>d.once("close",R)),a&&clearTimeout(a),s&&clearInterval(s),await jy(e.socketPath,{force:!0});let b=n;b.kind==="ready"&&(await tl(b.telemetry,r,u),await b.store.close()),c&&clearTimeout(c);for(let{signal:R,handler:T}of _)process.off(R,T);t?.kill("SIGTERM"),pi(),e.pidPath&&await jy(e.pidPath,{force:!0}),await As(y)}async function eP(e,t,r=new Date){let n=await Ro(e,1,r),s=r.toISOString().slice(0,10),o=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=n.savings.tokens_saved>0?o/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=di(W(t),ZO),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:o,dollars_saved_today_usd:Math.round(i*1e6)/1e6,show_total_today:n.health.show_total,updated_at:r.toISOString()};n.health.show_total>0&&(u.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(u.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await qy(sl(a),{recursive:!0}),await Vy(c,`${U(u)}
148
+ `,{encoding:"utf8",mode:384}),await UO(c,a)}async function tl(e,t=Ky,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Yy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
149
+ `)}}async function tP(e){let t=[];for(let r of QO){let n=await rP(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await nP(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${zy(r)}`))}return t}async function rP(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(r){let n=r instanceof Error?r.message:String(r);if(/\bnot found\b/i.test(n))return{ok:!1,previousModel:null};let s=n.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(n))return{ok:!1,previousModel:"collection"};let o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw r}}async function nP(e,t,r){let n=sP(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${zy(t)}`)}function sP(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function zy(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function oP(e){return e&&clearTimeout(e),setTimeout(()=>{pi(),process.exit(0)},XO)}function iP(){Hy||(Hy=!0,process.on("exit",()=>pi()))}function aP(){if(process.platform==="win32")return;let t=GO(process.execPath,["-e",`
143
150
  const { execFileSync } = require("node:child_process");
144
151
  const parentPid = Number(process.argv[1]);
145
152
  const known = new Set();
@@ -180,25 +187,23 @@ const timer = setInterval(() => {
180
187
  clearInterval(timer);
181
188
  process.exit(0);
182
189
  }, 500);
183
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function di(){for(let e of VO())try{process.kill(e,"SIGTERM")}catch{}}function VO(){if(process.platform==="win32")return[];let e="";try{e=vO("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),o=Number(n[2]),i=n[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function KO(e){if(e.collection!==ge)return e;let t=await Ty(e.raw_text,Py(e.raw_bytes)),r=await Ty(e.emitted_text,Py(e.emitted_bytes)),{raw_text:n,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function Ty(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=$O)try{return await Ny((async()=>({tokens:(await zO())("cl100k_base").encode(e).length,estimated:!1}))(),DO,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function zO(){return Oy??=import(IO(YO()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Oy}function YO(){let e=el(AO(import.meta.url)),r=[li(e,"..","node_modules","js-tiktoken","dist","index.js"),li(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>TO(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Py(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Zu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Ny(e,t,r){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>o(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function XO(e){try{return JSON.parse(e)}catch{return e}}function ZO(e){return Ay(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Ay(t)&&(t.collection===ce||t.collection===X||t.collection===ge||t.collection===We)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Ay(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function QO(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
184
- `);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??qr(),ok:!1,error:a instanceof Error?a.message:String(a)};My(e,u)}finally{e.end()}})()})}function My(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
185
- `)}catch{}}async function eP(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="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 Tc(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 _o(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 Oc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return rP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await tP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function tP(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await _y(s,t).request(r,n)}function rP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var $O,DO,$y,NO,MO,BO,Qu,Cy,Oy,Fy=h(()=>{"use strict";fe();As();Qe();wo();xy();Ae();Pe();$O=256*1024,DO=500,$y=2e3,NO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),MO="rsp-status-summary.json",BO=[ce,X,ge,We,En],Qu=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await jO(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,o=[...n.records];for(let a of r)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 Ka(this.opts.rootDir,async a=>{let c=Or(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:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(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 FO(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:qr(),a={...await KO(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===ge?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Zu(ee(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===We?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Zu(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:We,id:qr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:ce,id:`mirror:${qr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Zu(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(En).get("index:v1"),n=typeof r=="string"?XO(r):r;return ZO(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(En).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.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)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Cy=!1});bi();Be();var Ll={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},Xb={json:{kind:"boolean"}},Zb={help:{kind:"boolean",aliases:["h"]}},Qb={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 $l(e){let{command:t,args:r}=yi(e,ew);return t==="--version"?{kind:"version",json:zr(r,Xb).values.json===!0}:tw(e)?{kind:"help"}:{kind:"command"}}var ew={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function tw(e){return It(e,Zb).values.help===!0}function Dl(e){let{values:t,rest:r}=nw(e),n=r[0];if(n!==void 0&&n!=="--"&&n.startsWith("--"))throw ms.unknownFlag(n);let s=yi(r,Qb).command,o=[...r],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:r[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var ms=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return $({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:rw})}},rw=Object.keys(Ll).map(e=>`--${e}`);function nw(e){try{return It(e,Ll)}catch(t){throw new ms(t instanceof Error?t.message:String(t))}}function Nl(e){return $({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Ml(e){return e instanceof Kr}function pr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var sw={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:pt},"ephemeral-ttl-hours":{kind:"value",coerce:pt},"byte-budget":{kind:"value",coerce:pt},"telemetry-ttl-days":{kind:"value",coerce:pt},"telemetry-byte-budget":{kind:"value",coerce:pt},"telemetry-drain-interval-ms":{kind:"value",coerce:pt},"telemetry-drain-timeout-ms":{kind:"value",coerce:pt},"idle-ms":{kind:"value",coerce:pt}};function $i(e){return zr(e,sw).values}var Bl={since:{kind:"value",coerce:iw},full:{kind:"boolean"}};function gs(e,t){return zr(e,Bl).values.since??t}function Fl(e){return zr(e,Bl).values.full===!0}var ow={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function jl(e){let{values:t,rest:r}=It(e,ow),n=r[1];if(!n)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:n,params:s}}function pt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function iw(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let r=Number(t[1]);return Number.isFinite(r)&&r>0?r:void 0}Di();Be();import{existsSync as nP}from"node:fs";import{fileURLToPath as sP}from"node:url";Qe();sn();J();He();import{existsSync as gx}from"node:fs";import{fileURLToPath as hx}from"node:url";Qe();ua();J();import{existsSync as x_}from"node:fs";import{fileURLToPath as v_}from"node:url";async function hr(e,t){let r={stats:C_(e.telemetryByteBudget),telemetry:ma(t)};if(!e.storeUri.startsWith("file://"))return r;let n=v_(e.storeUri);if(!x_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ma(t)}}catch{return r}finally{await o.close()}}function ga(e,t=ma(30),r=!1,n=Nd()){return`${W(ha(e,t,r,n))}
186
- `}function Dd(e,t){return`${W({...e,overhead:Md(t)})}
187
- `}function Nd(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:xe,breaching_families:[],disabled_families:[],families:[]}}function Md(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 ha(e,t,r,n=Nd()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Is(),a=t.health.recent_failures.slice(0,r?20:5),c=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:T_(t.savings),dollars_saved_estimate_usd_display:O_(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Md(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:fa(t.health.degradation_rate),show_hit_rate_display:fa(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?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:fa(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:pa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:pa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:pa(t.latency.store_elapsed_ms_avg)}}}function Bd(e){return`${W(e)}
188
- `}function ma(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 C_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Is()}}function Is(){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 ya(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
189
- `)}function T_(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 O_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?fn(e.dollars_saved_estimate_usd):`${fn(e.dollars_saved_low_usd)}-${fn(e.dollars_saved_high_usd)} (estimate_midpoint: ${fn(e.dollars_saved_estimate_usd)})`}function pa(e){return e==null?"none":String(e)}function fa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Nm(e){let{stats:t,telemetry:r}=await hr(e,30),[n,s]=await Promise.all([yx(e),Promise.resolve().then(()=>(Vc(),qc)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(je(process.cwd()).rootDir,e.overhead)}}function Mm(e){let t=ha(e.stats,e.telemetry,!1,e.overhead),r=Fi({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??Is()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},bx(e));return`${W(r)}
190
- `}async function yx(e){if(!e.storeUri.startsWith("file://"))return[];let t=hx(e.storeUri);if(!gx(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Gt(),mn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function bx(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"]}Qe();J();Be();import{existsSync as jC}from"node:fs";import{fileURLToPath as HC}from"node:url";Ae();import{spawn as Go}from"node:child_process";async function xg(e,t,r){let n=process.hrtime.bigint(),s=await vg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return rC(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function vg(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(Lo(),Io)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(ts(),es)).then(i=>i.parseExecCommandLine(e));r=Go(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Go(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
191
- `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function Cg(e){return e>0&&Math.random()<e}async function ns(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
192
- `);let s=await Ag(t);if(n){let o=nC(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ae(),Wn));Wo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Uo(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})),Wo(i(n,{collection:c,ts:new Date().toISOString(),command:Uo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Tg(e,t,r){let n=await vg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ae(),Wn)),a={ts:new Date().toISOString(),command:Uo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return Wo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),Wo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function Og(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Jo()}, passing through
193
- `),await Ag(e)}function Jo(){return"rsp is not enabled in this directory; run /red-setup"}function Pg(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Je(e){return Uo(e.positional)}function Uo(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function rs(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function rC(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};gt(e,{collection:"rsp_accounting_events_v1",...i}),gt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function nC(e,t,r){let n=t[0]??"unknown",s=sC(r)||e;return{reason:Eg(r)==="ENOENT"||Eg(r)==="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:n,exitCode:iC(r)??1,stderrHead:oC(s,240)}}function sC(e){return e instanceof Error?rs(e.message):rs(String(e??""))}function oC(e,t){let r=rs(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Eg(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function iC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function Wo(e){e.catch(()=>{})}async function Ag(e){if(e[0]==="exec"||e[0]==="proxy")return await aC(e);let t=e[0];if(!t)return 2;let r=Go(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
194
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function aC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Lo(),Io));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(ts(),es));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
195
- `),2}let r=Go(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
196
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Kg(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled"),K("overhead_budget","skipped because rsp is disabled")),Vg("disabled",n,r);n.push(await GC(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):er("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(He(),Ht));if(n.push(UC(await o(t))),n.push(WC(e)),Yg(e)){let{telemetry:i}=await hr(e,r);n.push(JC(i,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(qC(ft(process.cwd(),e.overhead))),Vg(n.some(i=>!i.pass)?"fail":"pass",n,r)}function zg(e){let{exitCode:t,...r}=e;return`${W({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
197
- `}async function GC(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(os(),Xo)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):er("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return er("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?rs(t.message):"unknown error"}`,"rsp setup")}}function UC(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):er("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function WC(e){return e.storeUri.startsWith("file://")?Yg(e)?K("store_provisioning","rsp store exists for this directory"):er("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function JC(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",o=r?.count??n;return er("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,VC(s,t))}function qC(e){return e.verdict==="green"?K("overhead_budget",e.summary):er("overhead_budget",e.summary,"rsp status")}function VC(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Yg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return jC(HC(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function er(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Li({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Vg(e,t,r){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:r,probes:t,errors:t.map(n=>n.error).filter(n=>!!n)}}fu();function eh(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${YC(t).join(`
190
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function pi(){for(let e of cP())try{process.kill(e,"SIGTERM")}catch{}}function cP(){if(process.platform==="win32")return[];let e="";try{e=HO("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),o=Number(n[2]),i=n[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function uP(e){if(e.collection!==he)return e;let t=await Gy(e.raw_text,Uy(e.raw_bytes)),r=await Gy(e.emitted_text,Uy(e.emitted_bytes)),{raw_text:n,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function Gy(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=zO)try{return await Yy((async()=>({tokens:(await lP())("cl100k_base").encode(e).length,estimated:!1}))(),YO,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function lP(){return Wy??=import(VO(dP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Wy}function dP(){let e=sl(qO(import.meta.url)),r=[di(e,"..","node_modules","js-tiktoken","dist","index.js"),di(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>WO(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Uy(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function rl(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Yy(e,t,r){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>o(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function pP(e){try{return JSON.parse(e)}catch{return e}}function fP(e){return Jy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jy(t)&&(t.collection===ce||t.collection===X||t.collection===he||t.collection===Ue)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mP(e,t){kd(e,(r,n)=>t(r,n),(r,n,s)=>{s({id:n?.id??qr(),ok:!1,error:r instanceof Error?r.message:String(r)})})}async function gP(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="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 Ic(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 Ro(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 Lc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return yP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await hP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function hP(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await $y(s,t).request(r,n)}function yP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var zO,YO,Ky,XO,ZO,QO,nl,Hy,Wy,Zy=h(()=>{"use strict";me();Is();xs();Qe();_o();Fy();Ie();Ae();zO=256*1024,YO=500,Ky=2e3,XO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),ZO="rsp-status-summary.json",QO=[ce,X,he,Ue,En],nl=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await tP(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,o=[...n.records];for(let a of r)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 Za(this.opts.rootDir,async a=>{let c=Or(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:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(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 eP(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:qr(),a={...await uP(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===he?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ue?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ue,id:qr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:ce,id:`mirror:${qr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:rl(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(En).get("index:v1"),n=typeof r=="string"?pP(r):r;return fP(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(En).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.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)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Hy=!1});wi();Be();var Ml={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},lw={json:{kind:"boolean"}},dw={help:{kind:"boolean",aliases:["h"]}},pw={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 Bl(e){let{command:t,args:r}=bi(e,fw);return t==="--version"?{kind:"version",json:zr(r,lw).values.json===!0}:mw(e)?{kind:"help"}:{kind:"command"}}var fw={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function mw(e){return It(e,dw).values.help===!0}function Fl(e){let{values:t,rest:r}=hw(e),n=r[0];if(n!==void 0&&n!=="--"&&n.startsWith("--"))throw ms.unknownFlag(n);let s=bi(r,pw).command,o=[...r],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:r[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var ms=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:gw})}},gw=Object.keys(Ml).map(e=>`--${e}`);function hw(e){try{return It(e,Ml)}catch(t){throw new ms(t instanceof Error?t.message:String(t))}}function jl(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Hl(e){return e instanceof Kr}function pr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var yw={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:pt},"ephemeral-ttl-hours":{kind:"value",coerce:pt},"byte-budget":{kind:"value",coerce:pt},"telemetry-ttl-days":{kind:"value",coerce:pt},"telemetry-byte-budget":{kind:"value",coerce:pt},"telemetry-drain-interval-ms":{kind:"value",coerce:pt},"telemetry-drain-timeout-ms":{kind:"value",coerce:pt},"idle-ms":{kind:"value",coerce:pt}};function Di(e){return zr(e,yw).values}var Gl={since:{kind:"value",coerce:ww},full:{kind:"boolean"}};function gs(e,t){return zr(e,Gl).values.since??t}function Wl(e){return zr(e,Gl).values.full===!0}var bw={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Ul(e){let{values:t,rest:r}=It(e,bw),n=r[1];if(!n)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:n,params:s}}function pt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function ww(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let r=Number(t[1]);return Number.isFinite(r)&&r>0?r:void 0}Ni();Be();import{existsSync as bP}from"node:fs";import{fileURLToPath as wP}from"node:url";Qe();sn();J();He();import{existsSync as Px}from"node:fs";import{fileURLToPath as Ax}from"node:url";Qe();fa();J();import{existsSync as j_}from"node:fs";import{fileURLToPath as H_}from"node:url";async function hr(e,t){let r={stats:G_(e.telemetryByteBudget),telemetry:ba(t)};if(!e.storeUri.startsWith("file://"))return r;let n=H_(e.storeUri);if(!j_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ba(t)}}catch{return r}finally{await o.close()}}function wa(e,t=ba(30),r=!1,n=Yd()){return`${U(_a(e,t,r,n))}
191
+ `}function zd(e,t){return`${U({...e,overhead:Xd(t)})}
192
+ `}function Yd(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:ve,breaching_families:[],disabled_families:[],families:[]}}function Xd(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 _a(e,t,r,n=Yd()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Ls(),a=t.health.recent_failures.slice(0,r?20:5),c=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:W_(t.savings),dollars_saved_estimate_usd_display:U_(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Xd(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:ya(t.health.degradation_rate),show_hit_rate_display:ya(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?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:ya(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:ha(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ha(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ha(t.latency.store_elapsed_ms_avg)}}}function Zd(e){return`${U(e)}
193
+ `}function ba(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 G_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Ls()}}function Ls(){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 Ra(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
194
+ `)}function W_(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 U_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?fn(e.dollars_saved_estimate_usd):`${fn(e.dollars_saved_low_usd)}-${fn(e.dollars_saved_high_usd)} (estimate_midpoint: ${fn(e.dollars_saved_estimate_usd)})`}function ha(e){return e==null?"none":String(e)}function ya(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Ym(e){let{stats:t,telemetry:r}=await hr(e,30),[n,s]=await Promise.all([Ix(e),Promise.resolve().then(()=>(Xc(),Yc)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(je(process.cwd()).rootDir,e.overhead)}}function Xm(e){let t=_a(e.stats,e.telemetry,!1,e.overhead),r=ji({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??Ls()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},Lx(e));return`${U(r)}
195
+ `}async function Ix(e){if(!e.storeUri.startsWith("file://"))return[];let t=Ax(e.storeUri);if(!Px(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Gt(),mn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function Lx(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"]}Qe();J();Be();import{existsSync as t0}from"node:fs";import{fileURLToPath as r0}from"node:url";Ie();import{spawn as Wo}from"node:child_process";async function Fg(e,t,r){let n=process.hrtime.bigint(),s=await jg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return yC(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function jg(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>($o(),Lo)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(ts(),es)).then(i=>i.parseExecCommandLine(e));r=Wo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Wo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
196
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function Hg(e){return e>0&&Math.random()<e}async function ns(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
197
+ `);let s=await Jg(t);if(n){let o=bC(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Un));Jo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Uo(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})),Jo(i(n,{collection:c,ts:new Date().toISOString(),command:Uo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Gg(e,t,r){let n=await jg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ie(),Un)),a={ts:new Date().toISOString(),command:Uo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return Jo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),Jo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function Wg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${qo()}, passing through
198
+ `),await Jg(e)}function qo(){return"rsp is not enabled in this directory; run /red-setup"}function Ug(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Je(e){return Uo(e.positional)}function Uo(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function rs(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function yC(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};gt(e,{collection:"rsp_accounting_events_v1",...i}),gt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function bC(e,t,r){let n=t[0]??"unknown",s=wC(r)||e;return{reason:Bg(r)==="ENOENT"||Bg(r)==="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:n,exitCode:RC(r)??1,stderrHead:_C(s,240)}}function wC(e){return e instanceof Error?rs(e.message):rs(String(e??""))}function _C(e,t){let r=rs(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Bg(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function RC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function Jo(e){e.catch(()=>{})}async function Jg(e){if(e[0]==="exec"||e[0]==="proxy")return await kC(e);let t=e[0];if(!t)return 2;let r=Wo(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
199
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function kC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>($o(),Lo));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(ts(),es));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
200
+ `),2}let r=Wo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
201
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function ch(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled"),K("overhead_budget","skipped because rsp is disabled")),ah("disabled",n,r);n.push(await n0(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):er("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(He(),Ht));if(n.push(s0(await o(t))),n.push(o0(e)),lh(e)){let{telemetry:i}=await hr(e,r);n.push(i0(i,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(a0(ft(process.cwd(),e.overhead))),ah(n.some(i=>!i.pass)?"fail":"pass",n,r)}function uh(e){let{exitCode:t,...r}=e;return`${U({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
202
+ `}async function n0(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(os(),Zo)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):er("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return er("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?rs(t.message):"unknown error"}`,"rsp setup")}}function s0(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):er("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function o0(e){return e.storeUri.startsWith("file://")?lh(e)?K("store_provisioning","rsp store exists for this directory"):er("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function i0(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",o=r?.count??n;return er("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,c0(s,t))}function a0(e){return e.verdict==="green"?K("overhead_budget",e.summary):er("overhead_budget",e.summary,"rsp status")}function c0(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function lh(e){if(!e.storeUri.startsWith("file://"))return!0;try{return t0(r0(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function er(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:$i({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function ah(e,t,r){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:r,probes:t,errors:t.map(n=>n.error).filter(n=>!!n)}}yu();function mh(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${d0(t).join(`
198
203
  `)}
199
- `}function YC(e){switch(e){case"stats":return j("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return j("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return j("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return j("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return j("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return j("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return j("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return j("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return j('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return j("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","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","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return j("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return j("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return j("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return j("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return j("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return j("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return j("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return j("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return j("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"dashboard":return j("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return j("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," 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","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help"," --version, -v build version; add --json for structured build info","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return j(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function j(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}fe();J();Ae();import{spawn as XC}from"node:child_process";import{createHash as ZC}from"node:crypto";import{existsSync as QC,readFileSync as e0,statSync as t0}from"node:fs";import{tmpdir as r0}from"node:os";import{dirname as n0,join as kt}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??xe){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&o0(s,o);let c=s0(e,t,a);return an(s,c,i),n?tr(u0(s,e,t,c,i,n.lastResponseMetrics())):l0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function s0(e,t,r){let n=un(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function tr(e){e.catch(()=>{})}async function ei(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ae(),Wn));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function o0(e,t){try{let r=it(e),n=t0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!c0(r,Date.now()-s))return;let o=i0(e),i=a0(o),a=kt(i,"rsp.sock"),c=kt(i,"rsp.pid"),u=kt(U(o),"rsp-resident.pid.json"),l=kt(o,".red","tmp","rsp","wake.lock");XC(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function i0(e){let t=e;for(;;){if(QC(kt(t,".git")))return t;let r=n0(t);if(r===t)return e;t=r}}function a0(e){let t=ZC("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=kt(r,"red-skills",t);if(kt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return kt(r0(),`red-skills-${n}`,t)}function c0(e,t){try{let r=e0(e,"utf8");cn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function u0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=ks(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ae(),Wn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:p,ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function l0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=ks(n,s);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Hu=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Uh(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Hu,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(fu(),Qg));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Zt(),Zc)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(Iu(),Au)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(Nu(),Du)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(ju(),Fu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(ts(),es)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return pr(i)?(process.stdout.write(i.render()),2):await ns("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ns("wrapper failed",e.positional,n,r)}async function jy(e=process.argv.slice(2)){let t=hs("rsp"),r=$l(e);if(r.kind==="version")return process.stdout.write(r.json?`${JSON.stringify(t)}
200
- `:`${Hl(t)}
201
- `),0;if(r.kind==="help")return process.stdout.write(eh(e)),0;let n;try{n=Dl(e)}catch(g){if(Ml(g))return process.stdout.write(Nl(g)),2;throw g}if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(os(),Xo));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(os(),Xo));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Xn(),ru));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Xn(),ru));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Xh(),Yh)),y=await g(process.cwd());return process.stdout.write(ya(y)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(sy(),ny));return await g(),0}if(n.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Vc(),qc));return await g(n.positional)}if(n.command==="shell-init"){let g=n.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(ay(),iy));return process.stdout.write(y(g)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(Pe(),Op)),o=s(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(He(),Ht)),y=g(process.cwd()),b=await Kg(o,y,gs(n.positional,1));return process.stdout.write(zg(b)),b.exitCode}let i=Pg(n.command);if(!o.enabled)return i?await Og(n.positional):(process.stdout.write(`${Jo()}
202
- `),0);if(n.command==="git"&&Zo(n.positional)){let g=process.hrtime.bigint();return await se(n,await Qo(),g,void 0,await pu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(He(),Ht)),u=a(process.cwd());if(i&&n.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(J(),Es)),y=g(u.rootDir,n.command);if(y)return await Tg(n.positional,u.rootDir,y)}if(i&&Cg(o.measurementHoldoutShare))return await xg(n,u.rootDir,o.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Fy(),By)),y=a(process.cwd()),b=$i(n.positional),R=s(process.cwd(),process.env,n.storeUri);return R.enabled?(await g({socketPath:b.socket??y.socketPath,pidPath:b["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:R.storeUri,ttlDays:b["ttl-days"]??R.ttlDays,ephemeralTtlHours:b["ephemeral-ttl-hours"]??R.ephemeralTtlHours,byteBudget:b["byte-budget"]??R.byteBudget,telemetryTtlDays:b["telemetry-ttl-days"]??R.telemetryTtlDays,telemetryByteBudget:b["telemetry-byte-budget"]??R.telemetryByteBudget,telemetryDrainIntervalMs:b["telemetry-drain-interval-ms"]??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:b["telemetry-drain-timeout-ms"]??R.telemetryDrainTimeoutMs,idleMs:b["idle-ms"]??R.idleMs,residentVersion:b["resident-version"]??t.version,registryPath:b.registry??y.registryPath}),0):(process.stdout.write(`${Jo()}
203
- `),0)}if(n.command==="warm-resident"){let g=a(process.cwd()),y=$i(n.positional),b=s(process.cwd(),process.env,n.storeUri);if(!b.enabled)return 0;let{warmResidentServer:R}=await Promise.resolve().then(()=>(He(),Ht));return await R({...g,socketPath:y.socket??g.socketPath,wakeLockPath:y["wake-lock"]??g.wakeLockPath},{storeUri:b.storeUri,ttlDays:y["ttl-days"]??b.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??b.ephemeralTtlHours,byteBudget:y["byte-budget"]??b.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??b.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??b.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??b.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??b.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(Lo(),Io));return await g(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(He(),Ht)),b=n.command==="sweep"?await y(u):await g(u);if(n.command==="sweep"){let{sweepGhEtagCache:B}=await Promise.resolve().then(()=>(Sn(),Sp));await B(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:R}=await Promise.resolve().then(()=>(J(),Es)),T=R(u.rootDir,o.overhead);return process.stdout.write(Dd(b,T)),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(Ro(),Wf)),y=jl(n.positional);if(!y)return process.stdout.write($({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
204
- `),b.status}if(n.command==="dashboard"){let g=await Nm(o);return process.stdout.write(Mm(g)),0}if(!n.storeUri&&o.storeUri.startsWith("file://")&&!nP(sP(o.storeUri)))return i?await Uh(n,o,u.rootDir):(process.stdout.write($({command:Je(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:p,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Gt(),mn)),f=(g=!0)=>Promise.resolve(p(process.cwd(),o,{ensureResident:g,paths:u})),m=()=>c(u,l(o,t.version)).catch(g=>void d(g)),w=()=>f(),_;try{if(n.command==="stats"){let{stats:g,telemetry:y}=await hr(o,gs(n.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(J(),Es));return process.stdout.write(ga(g,y,Fl(n.positional),b(u.rootDir,o.overhead))),0}if(n.command==="gains"){let g=await w();_=()=>g.close();let y;try{y=await g.telemetryGains(gs(n.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${n.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Bd(y)),0}if(n.command==="git"){if(tr(m()),Zo(n.positional)){let T=process.hrtime.bigint();return await se(n,await Qo(),T,void 0,u.rootDir,o)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Zt(),Zc)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="gh"){tr(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Iu(),Au)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="vitest"||n.command==="cargo"){tr(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Nu(),Du)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="cat"){tr(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(ju(),Fu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="exec"){tr(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(ts(),es)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="show"&&n.handle){let g=await w();_=()=>g.close();let y=await g.get(n.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ei(u.rootDir,n.handle,!0,y.original.length),0;if(y?.status==="expired"){let R=$({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(R),await ei(u.rootDir,n.handle,!1,R.length),1}let b=$({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(b),await ei(u.rootDir,n.handle,!1,b.length),1}return process.stdout.write($({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(pr(g))return process.stdout.write(g.render()),2;if(i)return await ns("wrapper failed",n.positional,g,u.rootDir);throw g}finally{await _?.()}}Be();import.meta.url===`file://${process.argv[1]}`&&jy().then(e=>process.exit(e),e=>{pr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write($({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{jy as main,ya as renderSetupResult,ga as renderStats};
204
+ `}function d0(e){switch(e){case"stats":return j("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return j("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return j("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return j("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return j("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return j("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return j("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return j("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return j('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return j("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","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","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return j("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return j("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return j("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return j("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return j("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return j("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return j("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return j("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return j("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"dashboard":return j("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return j("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," 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","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help"," --version, -v build version; add --json for structured build info","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return j(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function j(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}me();J();Ie();import{spawn as p0}from"node:child_process";import{createHash as f0}from"node:crypto";import{existsSync as m0,readFileSync as g0,statSync as h0}from"node:fs";import{tmpdir as y0}from"node:os";import{dirname as b0,join as kt}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??ve){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&_0(s,o);let c=w0(e,t,a);return an(s,c,i),n?tr(E0(s,e,t,c,i,n.lastResponseMetrics())):x0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function w0(e,t,r){let n=un(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function tr(e){e.catch(()=>{})}async function ti(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Un));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function _0(e,t){try{let r=it(e),n=h0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!S0(r,Date.now()-s))return;let o=R0(e),i=k0(o),a=kt(i,"rsp.sock"),c=kt(i,"rsp.pid"),u=kt(W(o),"rsp-resident.pid.json"),l=kt(o,".red","tmp","rsp","wake.lock");p0(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function R0(e){let t=e;for(;;){if(m0(kt(t,".git")))return t;let r=b0(t);if(r===t)return e;t=r}}function k0(e){let t=f0("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=kt(r,"red-skills",t);if(kt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return kt(y0(),`red-skills-${n}`,t)}function S0(e,t){try{let r=g0(e,"utf8");cn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function E0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=ks(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ie(),Un));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:p,ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function x0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=ks(n,s);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Ju=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ny(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ju,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(yu(),fh));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Zt(),ru)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(Nu(),Du)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(ju(),Fu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Uu(),Wu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(ts(),es)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return pr(i)?(process.stdout.write(i.render()),2):await ns("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ns("wrapper failed",e.positional,n,r)}async function Qy(e=process.argv.slice(2)){let t=hs("rsp"),r=Bl(e);if(r.kind==="version")return process.stdout.write(r.json?`${JSON.stringify(t)}
205
+ `:`${Jl(t)}
206
+ `),0;if(r.kind==="help")return process.stdout.write(mh(e)),0;let n;try{n=Fl(e)}catch(g){if(Hl(g))return process.stdout.write(jl(g)),2;throw g}if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(os(),Zo));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(os(),Zo));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Xn(),iu));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Xn(),iu));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(dy(),ly)),y=await g(process.cwd());return process.stdout.write(Ra(y)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(by(),yy));return await g(),0}if(n.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Xc(),Yc));return await g(n.positional)}if(n.command==="shell-init"){let g=n.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write(D({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(Ry(),_y));return process.stdout.write(y(g)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(Ae(),Wp)),o=s(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(He(),Ht)),y=g(process.cwd()),b=await ch(o,y,gs(n.positional,1));return process.stdout.write(uh(b)),b.exitCode}let i=Ug(n.command);if(!o.enabled)return i?await Wg(n.positional):(process.stdout.write(`${qo()}
207
+ `),0);if(n.command==="git"&&Qo(n.positional)){let g=process.hrtime.bigint();return await se(n,await ei(),g,void 0,await hu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(He(),Ht)),u=a(process.cwd());if(i&&n.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(J(),Es)),y=g(u.rootDir,n.command);if(y)return await Gg(n.positional,u.rootDir,y)}if(i&&Hg(o.measurementHoldoutShare))return await Fg(n,u.rootDir,o.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Zy(),Xy)),y=a(process.cwd()),b=Di(n.positional),R=s(process.cwd(),process.env,n.storeUri);return R.enabled?(await g({socketPath:b.socket??y.socketPath,pidPath:b["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:R.storeUri,ttlDays:b["ttl-days"]??R.ttlDays,ephemeralTtlHours:b["ephemeral-ttl-hours"]??R.ephemeralTtlHours,byteBudget:b["byte-budget"]??R.byteBudget,telemetryTtlDays:b["telemetry-ttl-days"]??R.telemetryTtlDays,telemetryByteBudget:b["telemetry-byte-budget"]??R.telemetryByteBudget,telemetryDrainIntervalMs:b["telemetry-drain-interval-ms"]??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:b["telemetry-drain-timeout-ms"]??R.telemetryDrainTimeoutMs,idleMs:b["idle-ms"]??R.idleMs,residentVersion:b["resident-version"]??t.version,registryPath:b.registry??y.registryPath}),0):(process.stdout.write(`${qo()}
208
+ `),0)}if(n.command==="warm-resident"){let g=a(process.cwd()),y=Di(n.positional),b=s(process.cwd(),process.env,n.storeUri);if(!b.enabled)return 0;let{warmResidentServer:R}=await Promise.resolve().then(()=>(He(),Ht));return await R({...g,socketPath:y.socket??g.socketPath,wakeLockPath:y["wake-lock"]??g.wakeLockPath},{storeUri:b.storeUri,ttlDays:y["ttl-days"]??b.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??b.ephemeralTtlHours,byteBudget:y["byte-budget"]??b.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??b.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??b.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??b.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??b.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>($o(),Lo));return await g(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(He(),Ht)),b=n.command==="sweep"?await y(u):await g(u);if(n.command==="sweep"){let{sweepGhEtagCache:B}=await Promise.resolve().then(()=>(Sn(),Mp));await B(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:R}=await Promise.resolve().then(()=>(J(),Es)),T=R(u.rootDir,o.overhead);return process.stdout.write(zd(b,T)),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(ko(),sm)),y=Ul(n.positional);if(!y)return process.stdout.write(D({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
209
+ `),b.status}if(n.command==="dashboard"){let g=await Ym(o);return process.stdout.write(Xm(g)),0}if(!n.storeUri&&o.storeUri.startsWith("file://")&&!bP(wP(o.storeUri)))return i?await ny(n,o,u.rootDir):(process.stdout.write(D({command:Je(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:p,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Gt(),mn)),f=(g=!0)=>Promise.resolve(p(process.cwd(),o,{ensureResident:g,paths:u})),m=()=>c(u,l(o,t.version)).catch(g=>void d(g)),w=()=>f(),_;try{if(n.command==="stats"){let{stats:g,telemetry:y}=await hr(o,gs(n.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(J(),Es));return process.stdout.write(wa(g,y,Wl(n.positional),b(u.rootDir,o.overhead))),0}if(n.command==="gains"){let g=await w();_=()=>g.close();let y;try{y=await g.telemetryGains(gs(n.positional,28))}catch(b){return process.stdout.write(D({command:`rsp ${n.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Zd(y)),0}if(n.command==="git"){if(tr(m()),Qo(n.positional)){let T=process.hrtime.bigint();return await se(n,await ei(),T,void 0,u.rootDir,o)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Zt(),ru)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="gh"){tr(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Nu(),Du)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="vitest"||n.command==="cargo"){tr(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(ju(),Fu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="cat"){tr(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Uu(),Wu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="exec"){tr(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(ts(),es)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="show"&&n.handle){let g=await w();_=()=>g.close();let y=await g.get(n.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ti(u.rootDir,n.handle,!0,y.original.length),0;if(y?.status==="expired"){let R=D({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(R),await ti(u.rootDir,n.handle,!1,R.length),1}let b=D({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(b),await ti(u.rootDir,n.handle,!1,b.length),1}return process.stdout.write(D({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(pr(g))return process.stdout.write(g.render()),2;if(i)return await ns("wrapper failed",n.positional,g,u.rootDir);throw g}finally{await _?.()}}Be();import.meta.url===`file://${process.argv[1]}`&&Qy().then(e=>process.exit(e),e=>{pr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(D({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Qy as main,Ra as renderSetupResult,wa as renderStats};