@reddb-io/red-skills 3.3.8 → 3.3.10

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,152 +1,158 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
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 ps(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=>ps(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",`
3
+ var tw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{for(var n in t)tw(e,n,{get:t[n],enumerable:!0})};function rw(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 sw(e=Ll){return Object.entries(e).map(([t,n])=>rw(t,n)).sort((t,n)=>n.separator.length-t.separator.length)}function ow(e){return/^-\d+(\.\d+)?$/.test(e)}function wn(e){return!(!e||e.startsWith("-")&&!ow(e))}function vs(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 $l(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(n=>$l(n.trim())):e}function jt(e,t){switch(t){case"boolean":return iw(e);case"number":return aw(e);case"array":return e.split(",").map(n=>vs(n.trim()));case"string":default:return e}}function iw(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function aw(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 _t(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function cw(e,t={}){return e.map(n=>{let r=t[n.type];return r?r(n.value):n.value}).join("")}function $(e,t){return{type:e,value:t}}function uw(e){let t=[],n=dw(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",n),$("newline",`
4
4
  `),$("newline",`
5
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",`
6
+ `));for(let r of e.positional)if(r.description){let s=r.variadic?`${r.name}...`:r.name;t.push($("indent"," "),$("positional-name",`<${s}>`)),r.required||t.push($("positional-optional"," (optional)")),t.push($("newline",`
7
+ `),$("indent"," "),$("option-description",r.description),$("newline",`
8
8
  `))}t.push($("newline",`
9
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 fs(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)?fs(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=yi(c,s);return l?fs(l.name,u,t+1,n,s,o):(o.strict?n.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(n.options[c]=ps(dt(u))),t+1)}if(i.length===1){let a=yi(i,s);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?fs(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]=ps(dt(c)),t+2;n.options[i]=!0}return t+1}for(let a of i){let c=yi(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 fs(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]=ps(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 yi(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 bi(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 wi(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 bi,vb,Cb,Kr,_i=h(()=>{ul();bi=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 ms(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,Ri=h(()=>{Xr();M=","});function Nb(e={}){return{indent:Math.max(1,e.indent??Ti),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Mb(e,t){let r=[],n=!1;return ms(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=Ai(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw vi(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=Oi(n,i,0,r),c=n[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Oi(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 vi(_,s.number);t.index+=1;let g=ki(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=Ai(a,i)}catch(_){if(n.strict)throw vi(_,s.number);t.index+=1;let g=ki(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=Pi(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=ki(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function ki(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?Oi(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=Pi(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 Pi(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 Ei(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 Ei(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 Ei(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=Ai(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Pi(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 Oi(i,{index:0},r+1,n)}return t.index+=1,Ne(o,s.number)}function Ei(e,t){let r=e[t]??e[e.length-1];return S(r===void 0?1:r.number,"array length mismatch")}function Ai(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])||xi(r[a],r[c])||xi(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&&xi(e,t)}function xi(e,t){return t.every((r,n)=>e[n]===r)}function vi(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)?Ii(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*Ti))}function bl(e,t,r,n){for(let[s,o]of Object.entries(t))en(e,r),Ci(e,s,o,r,n)}function Ci(e,t,r,n,s){if(Array.isArray(r)){Ii(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(Li).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 Ii(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Ee(t),`: []
10
+ `));let r=fw(e.options);t.push(...r)}return t}function lw(e,t){let n=uw(e);return cw(n,t)}function dw(e){let t=["[options]"];if(e.positional)for(let n of e.positional)n.variadic?t.push(n.required?`<${n.name}...>`:`[${n.name}...]`):t.push(n.required?`<${n.name}>`:`[${n.name}]`);return t.join(" ")}function fw(e,t=!1){let n=[],r=[],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 f=[],d=b=>{f.includes(b)||f.push(b)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let b of l.aliases??[])b.length===1?d(`-${b}`):d(`--${b}`);let m=f.join(", "),p=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;r.push({flags:m,type:p,desc:l.description??"",default:l.default!==void 0?String(l.default):void 0})}let c=Math.max(...r.map(u=>u.flags.length+(u.type?u.type.length+1:0)),20);for(let u of r){let l=u.flags.length+(u.type?u.type.length+1:0),f=" ".repeat(c-l+2);n.push($("indent"," ")),n.push($(s,u.flags)),u.type&&(n.push($("text"," ")),n.push($(o,u.type))),n.push($("text",f)),n.push($(a,u.desc)),u.default!==void 0&&(n.push($("text"," ")),n.push($(i,`(default: ${u.default})`))),n.push($("newline",`
11
+ `))}return n}function Dl(e){let t=ww(e.options??{},e.autoShort??!1),n=sw(e.separators??Ll);return{schema:e,parse(r){return pw(r,e,t,n)},help(){return lw(e,e.formatter)}}}function pw(e,t,n,r){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(r.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 m=[];for(;c<e.length;){let p=e[c];m.push(d.type?jt(p,d.type):p),c++}s.positional[d.name]=m,i++}else{let m=d.type?jt(l,d.type):l;s.positional[d.name]=m,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=yw(l,c,e,s,n,t);continue}if(l.startsWith("-")&&l.length>1&&!Ew(l)){c=bw(l,c,e,s,n,t);continue}let f=mw(l,r);if(f){let{key:d,value:m,config:p}=f,b=s,_=b[p.to]??(b[p.to]={});_[d]=p.typed?$l(m):_t(m),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let p=[];for(;c<e.length&&!e[c].startsWith("-");){let b=e[c];p.push(d.type?jt(b,d.type):b),c++}s.positional[d.name]=p,i++;continue}let m=d.type?jt(l,d.type):l;s.positional[d.name]=m,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return Rw(s,t,n),kw(s,t,a),Sw(s,t,n),s}function mw(e,t){if(nw.test(e))return null;for(let n of t){if(n.prefix&&e.startsWith(n.separator)){let s=e.slice(n.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(gw(i))return{key:i,value:a,config:n}}continue}let r=e.indexOf(n.separator);if(r>0){let s=e.slice(0,r),o=e.slice(r+n.separator.length);if(hw(s,o,n))return{key:s,value:o,config:n}}}return null}function gw(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function hw(e,t,n){return e?n.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((n.separator==="="||n.separator===":=")&&e.includes("/")):!1}function yw(e,t,n,r,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 r.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return Cs(u,l,t+1,r,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=n[t+1];return wn(c)?Cs(a.name,c,t+2,r,s,o):(r.errors.push(`Option --${i} requires a value`),t+1)}return r.options[a.name]=!0,t+1}return o.strict?r.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(r.options[i]=!0),t+1}function bw(e,t,n,r,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=Mi(c,s);return l?Cs(l.name,u,t+1,r,s,o):(o.strict?r.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(r.options[c]=vs(_t(u))),t+1)}if(i.length===1){let a=Mi(i,s);if(a){if(a.type!=="boolean"){let c=n[t+1];return wn(c)?Cs(a.name,c,t+2,r,s,o):(r.errors.push(`Option -${i} requires a value`),t+1)}return r.options[a.name]=!0,t+1}if(o.strict)r.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=n[t+1];if(wn(c))return r.options[i]=vs(_t(c)),t+2;r.options[i]=!0}return t+1}for(let a of i){let c=Mi(a,s);c?c.type==="boolean"?r.options[c.name]=!0:r.errors.push(`Option -${a} requires a value`):o.strict?r.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(r.options[a]=!0)}return t+1}function Cs(e,t,n,r,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?jt(_t(t),i.type):_t(t);if(!i.choices.includes(c))return r.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),n}let a=i.type?jt(_t(t),i.type):_t(t);if(i.type==="array"){let c=r.options[e];Array.isArray(c)?c.push(...a):r.options[e]=a}else r.options[e]=a}else o.strict?r.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(r.options[e]=vs(_t(t)));return n}function ww(e,t=!1){let n=new Map,r=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of r)o.short&&s.add(o.short);for(let[o,i]of r){let a=i.short??"";t&&!a&&(a=_w(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};n.set(o,c);for(let u of c.aliases)n.set(u,c)}return n}function _w(e,t){for(let n of e){if(!/[a-zA-Z]/.test(n))continue;let r=n.toLowerCase();if(!t.has(r))return r;let s=n.toUpperCase();if(!t.has(s))return s}return""}function Mi(e,t){for(let n of t.values())if(n.short===e||n.aliases.includes(e))return n}function Rw(e,t,n){for(let r of n.values())if(e.options[r.name]===void 0)if(r.env&&process.env[r.env]!==void 0){let s=process.env[r.env];e.options[r.name]=r.type?jt(s,r.type):s}else r.default!==void 0&&(e.options[r.name]=r.default);for(let r of t.positional??[])e.positional[r.name]===void 0&&r.default!==void 0&&(e.positional[r.name]=r.default)}function kw(e,t,n){if(t.options)for(let[r,s]of Object.entries(t.options))s.required&&e.options[r]===void 0&&e.errors.push(`Missing required option: --${r}`);for(let r of n)r.required&&e.positional[r.name]===void 0&&e.errors.push(`Missing required argument: <${r.name}>`)}function Sw(e,t,n){for(let r of n.values()){let s=e.options[r.name];if(r.validate&&s!==void 0){let o=r.validate(s);o!==!0&&e.errors.push(o)}}for(let r of t.positional??[]){let s=e.positional[r.name];if(r.validate&&s!==void 0){let o=r.validate(s);o!==!0&&e.errors.push(o)}}}function Ew(e){return/^-\d+(\.\d+)?$/.test(e)}var Ll,nw,Nl=g(()=>{Ll={"=":"data",":=":{to:"data",typed:!0},":":"meta"},nw=/^[a-z][a-z0-9+.-]*:\/\//i});function xw(e){let t={};for(let[n,r]of Object.entries(e))t[n]={type:r.kind==="boolean"?"boolean":"string",...n.length===1?{short:n}:{},...r.aliases===void 0?{}:{aliases:r.aliases}};return t}function vw(e,t){let n=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){n.set(s,s);for(let i of o.aliases??[])n.set(i,s)}let r=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=n.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&wn(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=r.get(a)??[];u.push(c),r.set(a,u)}return r}function lr(e,t,n={}){let s=Dl({options:xw(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=vw(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(n.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new Bi(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(f=>u.coerce(f)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Ow(e){let t=new Map;for(let[n,r]of Object.entries(e)){t.set(n,n);for(let s of r.aliases??[])t.set(s,n)}return t}function Gt(e,t,n={}){let r=Ow(t),s=n.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=Cw.exec(c)??Tw.exec(c),l=u===null?void 0:r.get(u[1]),f=l===void 0?void 0:t[l];if(l===void 0||f===void 0){i.push(c);continue}if(f.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&wn(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(f.type==="array"){let m=o[l]??[];m.push(f.coerce(d)),o[l]=m}else o[l]=f.coerce(d)}return{values:o,rest:i}}function Fi(e,t){let[n,...r]=e;if(n!==void 0){for(let[o,i]of Object.entries(t.commands))if(n===o||(i.aliases??[]).includes(n))return{command:o,args:r};if(t.errorOnUnknownCommand&&!n.startsWith("-"))throw new ur(n,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:r}}var Bi,Cw,Tw,ur,ji=g(()=>{Nl();Bi=class extends Error{flag;known;constructor(t,n){super(`unknown flag '${t}'; expected one of: ${n.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=n}};Cw=/^--([^=]+)(?:=([\s\S]*))?$/,Tw=/^-([^-=])(?:=([\s\S]*))?$/;ur=class extends Error{token;known;constructor(t,n){super(`unknown command '${t}'; expected one of: ${n.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=n}}});function Bl(e){return Aw.test(e)}var Aw,Ml,Fl=g(()=>{Aw=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,Ml="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});var jl=g(()=>{});function R(e,t){return new _n(e,t)}function P(e,t){return new Ht(e,t)}function Rn(e){return e instanceof Ht?e:e instanceof _n?new Ht(e.line,e.reason):new Ht(0,String(e&&e.message?e.message:e))}var _n,Ht,it=g(()=>{_n=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},Ht=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});var Gl,Wt,Hl,kn=g(()=>{Gl=["type","kind","event"],Wt="|",Hl=new Set(["order","discriminator","rows","common"])});function Ts(e){let t=e.split(`
12
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function Ue(e){return R(e,"invalid quoted string")}function _e(e,t){if(e==="")return"";if(e.startsWith('"'))return ql(e,t);if(e.includes('"'))throw Ue(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Pw(e)?Number(e):e}function Pe(e,t){let n=e.trim();if(n.startsWith('"'))return[ql(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function ql(e,t){if(e.charCodeAt(0)!==34)throw Ue(t);let n="",r=1;for(;r<e.length;){Wl.lastIndex=r;let s=Wl.exec(e);if(s===null)break;if(s[0]==='"'){if(e.slice(s.index+1).trim()==="")return n+e.slice(r,s.index);throw Ue(t)}if(s[0]!=="\\")throw Ue(t);n+=e.slice(r,s.index);let o=e[s.index+1];switch(r=s.index+2,o){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
13
+ `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let i=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw Ue(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ue(t);n+=String.fromCharCode(a),r+=4;break}default:throw Ue(t)}}throw Ue(t)}function Jl(e,t,n){for(;;){let r=e.indexOf('"',t),s=e.indexOf("\\",t);if(s!==-1&&(r===-1||s<r)){if(s===e.length-1)throw Ue(n);t=s+2;continue}if(r===-1)throw Ue(n);return r+1}}function Ie(e,t,n){if(e==="")return[];let r=[],s=0,o=0;for(;o<e.length;){let i=e.indexOf('"',o),a=e.indexOf(t,o);if(a!==-1&&(i===-1||a<i))r.push(e.slice(s,a).trim()),s=a+1,o=a+1;else if(i!==-1)o=Jl(e,i+1,n);else break}return r.push(e.slice(s).trim()),r}function oe(e,t,n){let r=0;for(;r<e.length;){let s=e.indexOf('"',r),o=e.indexOf(t,r);if(o!==-1&&(s===-1||o<s))return o;if(s===-1)return-1;r=Jl(e,s+1,n)}return-1}function Pw(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Iw(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Lw(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw R(0,"number is not representable in TOON");return String(e)}function qe(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function ie(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Lw(e);if(typeof e=="string")return Dw(e,t);throw R(0,"not a primitive")}function $w(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function K(e){return $w(e)?e:Os(e)}function Dw(e,t){return Gi(e,t)?Os(e):e}function Gi(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Iw(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Os(e){let t='"',n=0;Ul.lastIndex=0;let r;for(;(r=Ul.exec(e))!==null;){let s=e.charCodeAt(r.index),o;s===34?o='\\"':s===92?o="\\\\":s===10?o="\\n":s===13?o="\\r":s===9?o="\\t":o=`\\u${s.toString(16).padStart(4,"0")}`,t+=e.slice(n,r.index)+o,n=r.index+1}return`${t}${e.slice(n)}"`}function Le(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var G,Wl,Ul,Ut=g(()=>{it();G=",";Wl=/["\\\u0000-\u0008\u000a-\u001f]/g;Ul=/["\\\u0000-\u001f]/g});function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dr=g(()=>{});function Vl(e={}){let t=e.maxDepth??1e3,n=t===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(t));return{indent:Math.max(1,e.indent??2),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0,cyclicDiscriminatedArrays:e.cyclicDiscriminatedArrays!==!1,maxDepth:n}}function Kl(e,t){let n=[],r=!1;return Ts(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(i,"invalid indentation");let c=Math.floor(a/t.indent);Je(c,i,t),n.push({number:i,depth:c,content:s.slice(a),blankBefore:r}),r=!1}),n}function Je(e,t,n){if(n.maxDepth!==0&&e>n.maxDepth)throw R(t,`maximum nesting depth exceeded (maxDepth ${n.maxDepth})`)}function mr(e,t,n){if(n.maxDepth===0)return;let r=0,s=!1,o=!1;for(let i of e){if(o){o=!1;continue}if(s&&i==="\\"){o=!0;continue}if(i==='"'){s=!s;continue}s||(i==="{"?(r+=1,Je(r,t,n)):i==="}"&&(r=Math.max(0,r-1)))}}var Hi=g(()=>{it();Ut();kn()});function Ql(e){if(!H(e)||Object.keys(e).length===0)return e;let t={};for(let[n,r]of Object.entries(e)){let s=Nw(r,1);if(s===void 0)return e;Le(t,n,s)}return t}function Nw(e,t){if(!H(e)||!Mw(e))return;let{order:n,discriminator:r,rows:s}=e;if(typeof n!="string"||typeof r!="string"||!Number.isSafeInteger(s)||s<0)throw X(t);let o=Bw(n,s,t),i=e.common,a=i===void 0?Array.from({length:s},()=>({})):i;if(!Array.isArray(a)||a.length!==s||!a.every(H))throw Xl(t);let c=new Map;for(let[f,d]of Object.entries(e))if(!Hl.has(f)){if(!Array.isArray(d)||!d.every(H))throw X(t);c.set(f,d)}if(c.size===0)throw X(t);let u=new Map,l=o.map((f,d)=>{let m=c.get(f);if(m===void 0)throw Wi(t);let p=u.get(f)??0,b=m[p];if(b===void 0)throw Wi(t);return u.set(f,p+1),Fw(r,f,a[d],b,t)});for(let[f,d]of c)if((u.get(f)??0)!==d.length)throw Wi(t);return l}function Mw(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Bw(e,t,n){if(!e.startsWith("cycle("))throw X(n);let r=e.slice(6),s=r.indexOf(")*");if(s===-1)throw X(n);let o=r.slice(0,s),i=r.slice(s+2);if(o===""||i.includes("+tail("))throw X(n);let a=o.split(",").map(l=>Ww(l,n));if(a.some(l=>l===""))throw X(n);let c=Hw(i,n),u=a.length*c;if(!Number.isSafeInteger(u))throw X(n);if(u!==t)throw Xl(n);return Array.from({length:u},(l,f)=>a[f%a.length])}function Fw(e,t,n,r,s){let o={};Le(o,e,t);for(let[i,a]of Object.entries(n??{})){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw X(s);Le(o,i,a)}for(let[i,a]of Object.entries(jw(r,s))){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw X(s);Le(o,i,a)}return o}function jw(e,t){let n={};for(let[r,s]of Object.entries(e))Gw(n,r.split("."),s,t);return As(n,t)}function Gw(e,t,n,r){if(t.some(o=>o===""))throw X(r);let s=e;for(let o=0;o<t.length;o+=1){let i=t[o];if(o===t.length-1){s[i]=n;return}if(s[i]??={},s=s[i],!H(s))throw X(r)}}function As(e,t){return Array.isArray(e)?e.map(n=>As(n,t)):H(e)?Number.isSafeInteger(e.length)&&e.length>=0?Array.from({length:e.length},(n,r)=>{if(!Object.prototype.hasOwnProperty.call(e,String(r)))throw X(t);return As(e[String(r)],t)}):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,As(r,t)])):e}function Hw(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw X(t);let n=Number(e);if(!Number.isSafeInteger(n))throw X(t);return n}function Ww(e,t){try{return decodeURIComponent(e)}catch{throw X(t)}}function zl(e){return encodeURIComponent(e)}function X(e){return R(e,"invalid cyclic array wire")}function Xl(e){return R(e,"cyclic array length mismatch")}function Wi(e){return R(e,"cyclic array group length mismatch")}function Zl(e){if(!H(e))return;let t=Object.entries(e);if(t.length===0)return;let n=[];for(let[s,o]of t){let i=Uw(o);if(i===void 0)return;n.push([s,i])}let r=[];for(let[s,o]of n)Kw(r,s,o);return r.join("")}function Uw(e){if(!Array.isArray(e)||e.length===0||!e.every(H))return;let t=qw(e);if(t===void 0)return;let n=e.map(a=>a[t]),r=Jw(n);if(r===void 0)return;let s=Vw(e,t),o=new Map;for(let a of e){let c=a[t];o.has(c)||o.set(c,[]);let u={};for(let[l,f]of Object.entries(a))if(l!==t&&!s.includes(l)&&!Ui(f,l,u))return;o.get(c).push(u)}let i=[];for(let a of r.cycle){let c=o.get(a),u=Yw(c);if(u===void 0||u.length===0)return;i.push({fields:u,label:a,rows:c})}return{common:s,commonRows:e.map(a=>Object.fromEntries(s.map(c=>[c,a[c]]))),discriminator:t,groups:i,order:r,rows:e}}function qw(e){return Gl.find(t=>e.every(n=>typeof n[t]=="string"))}function Jw(e){if(!(e.length<12))for(let t=2;t<=Math.min(8,Math.floor(e.length/3));t+=1){if(e.length%t!==0)continue;let n=e.slice(0,t);if(new Set(n).size<2||!e.every((i,a)=>i===n[a%t]))continue;let r=e.length/t;if(r<3)continue;let s=e.map(zl).join(","),o=`cycle(${n.map(zl).join(",")})*${r}`;if(o.length<=s.length*.4)return{cycle:n,encoded:o,repeats:r}}}function Vw(e,t){let n=[],r=Object.keys(e[0]),s=r.indexOf(t)+1;for(let o of r.slice(s).filter(i=>i!==t)){if(!zw(o)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,o))||!e.every(i=>qe(i[o])))break;n.push(o)}return n}function Kw(e,t,n){e.push(K(t),`:
14
+ `),e.push(" order: ",ie(n.order.encoded,Wt),`
15
+ `),e.push(" discriminator: ",ie(n.discriminator,Wt),`
16
+ `),e.push(" rows: ",String(n.rows.length),`
17
+ `),n.common.length>0&&Yl(e,"common",n.common,n.commonRows);for(let r of n.groups)Yl(e,r.label,r.fields,r.rows)}function Yl(e,t,n,r){e.push(" ",K(t),"[",String(r.length),Wt,"]{",n.map(K).join(Wt),`}:
18
+ `);for(let s of r)e.push(" ",n.map(o=>ie(s[o],Wt)).join(Wt),`
19
+ `)}function zw(e){return e!==""&&qi(e)}function Ui(e,t,n,r=new Set){if(!qi(t))return!1;if(qe(e))return n[t]=e,!0;if(Array.isArray(e)){if(r.has(e))return!1;r.add(e),n[`${t}.length`]=e.length;let s=e.every((o,i)=>Ui(o,`${t}.${i}`,n,r));return r.delete(e),s}if(H(e)){if(r.has(e))return!1;r.add(e);let s=Object.entries(e).every(([o,i])=>!o.includes(".")&&Ui(i,`${t}.${o}`,n,r));return r.delete(e),s}return!1}function Yw(e){let t=Object.keys(e[0]??{});if(e.every(n=>Qw(Object.keys(n),t)))return t.every(qi)?t:void 0}function Qw(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function qi(e){return e.split(".").every(t=>/^[A-Za-z_][A-Za-z0-9_]*$|^(?:0|[1-9][0-9]*)$/.test(t))}var Ji=g(()=>{it();Ut();kn();dr()});function Sn(e,t){let n=e[t]??e[e.length-1];return R(n===void 0?1:n.number,"array length mismatch")}function Ps(e,t){if(t===-1)throw R(0,"array header missing colon");let n=e.slice(0,t),r=oe(n,"[",0);if(r===-1)throw R(0,"invalid array header");let s,o;try{[s,o]=Pe(n.slice(0,r),0)}catch{throw R(0,"invalid array header")}let i=n.slice(r+1),a=i.indexOf("]");if(a===-1)throw R(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 R(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw R(0,"invalid array header")}let d=i.slice(a+1),m,p;if(d==="")m=void 0,p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=Zw(d.slice(1,-1),f),m=Ki(p)}catch(b){throw R(0,b.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:f,fields:m,fieldTree:p}}function ed(e){let t=oe(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let n,r;try{[n,r]=Pe(e.slice(0,t),0)}catch{throw R(0,"invalid keyed map header")}if(n===""&&!r)throw R(0,"expected non-empty field name");let s=e.slice(t+1,-1),o=G;(s.startsWith("|")||s.startsWith(" "))&&(o=s[0],s=s.slice(1));let i;try{i=Xw(s,o,o)}catch(a){throw R(0,a.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:o,fields:i}}function Xw(e,t,n){let r=[],s=0;function o(c,u){let l=0;for(;s<e.length&&!(u&&e[s]==="}");){if(e[s]===t||e[s]==="}")throw R(0,"invalid array header");let f=s;for(;s<e.length;){let p=e[s];if(p==='"'){i();continue}if(p===t||p==="{"||p==="}"||p==="[")break;s+=1}let[d,m]=Pe(e.slice(f,s),0);if(d===""&&!m)throw R(0,"invalid array header");if(l+=1,e[s]==="["){s+=1;let p=s;for(;s<e.length&&e[s]!=="]";)s+=1;if(s>=e.length)throw R(0,"invalid array header");let b=e.slice(p,s);if(!td(b,n))throw R(0,"invalid array header");s+=1,r.push({path:[...c,d],listDelimiter:b})}else if(e[s]==="{"){s+=1;let p=r.length;if(o([...c,d],!0),e[s]!=="}"||r.length===p)throw R(0,"invalid array header");s+=1}else r.push({path:[...c,d],listDelimiter:void 0});if(e[s]===t){if(s+=1,s>=e.length||e[s]==="}")throw R(0,"invalid array header");continue}if(u?e[s]==="}":s===e.length)break;throw R(0,"invalid array header")}if(l===0)throw R(0,"invalid array header")}function i(){for(s+=1;s<e.length;){let c=e[s];if(s+=1,c==="\\")s+=1;else if(c==='"')return}}if(o([],!1),s!==e.length)throw R(0,"invalid array header");let a=new Set;for(let c=0;c<r.length;c+=1)for(let u=c+1;u<r.length;u+=1)if(nd(r[c].path,r[u].path)||gr(r[c].path,r[u].path)||gr(r[u].path,r[c].path))throw R(0,"duplicate key");for(let c of r){let l=c.path.join("\0");if(a.has(l))throw R(0,"duplicate key");a.add(l)}return r}function Zw(e,t){if(t!==G&&e.includes(G)&&(e.includes("[")||e.includes("{")))return Vi(e,G,t);try{return Vi(e,t,t)}catch(n){if(t!==G&&n.reason!=="duplicate key")return Vi(e,G,t);throw n}}function Vi(e,t,n){let r=0;function s(c){let u=[];for(;r<e.length&&!(c&&e[r]==="}");){if(e[r]===t||e[r]==="}")throw R(0,"invalid array header");let l=r;for(;r<e.length;){let p=e[r];if(p==='"'){o();continue}if(p===t||p==="{"||p==="}"||p==="[")break;r+=1}let[f,d]=Pe(e.slice(l,r),0);if(f===""&&!d)throw R(0,"invalid array header");let m={key:f};if(e[r]==="["){r+=1;let p=r;for(;r<e.length&&e[r]!=="]";)r+=1;if(r>=e.length)throw R(0,"invalid array header");let b=e.slice(p,r);r+=1;let _=e_(b);if(_!==void 0){if(_.delimiter!==n)throw R(0,"invalid array header");m.fixedLength=_.len,m.fixedDelimiter=_.delimiter}else if(td(b,n))m.listDelimiter=b;else throw R(0,"invalid array header")}else if(e[r]==="{"){if(r+=1,m.children=s(!0),e[r]!=="}"||m.children.length===0)throw R(0,"invalid array header");r+=1}if(u.push(m),e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw R(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw R(0,"invalid array header")}if(u.length===0)throw R(0,"invalid array header");return u}function o(){for(r+=1;r<e.length;){let c=e[r];if(r+=1,c==="\\")r+=1;else if(c==='"')return}}let i=s(!1);if(r!==e.length)throw R(0,"invalid array header");let a=Ki(i);for(let c=0;c<a.length;c+=1)for(let u=c+1;u<a.length;u+=1)if(nd(a[c].path,a[u].path)||gr(a[c].path,a[u].path)||gr(a[u].path,a[c].path))throw R(0,"duplicate key");return i}function e_(e){let t=/^[0-9]+/.exec(e)?.[0];if(t===void 0||t.length>1&&t.startsWith("0"))return;let n=e.slice(t.length),r;switch(n){case"":r=G;break;case" ":r=" ";break;case"|":r="|";break;default:return}return{len:Number.parseInt(t,10),delimiter:r}}function Ki(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children!==void 0?Ki(n.children,r):[{path:r,listDelimiter:n.listDelimiter}]})}function Is(e,t,n){return e.listDelimiter===void 0?_e(t,n):Ie(t,e.listDelimiter,n).map(r=>_e(r,n))}function td(e,t){return e.length===1&&e!==t&&!/[ \t\r\n"[\]{}:]/.test(e)}function nd(e,t){return e.length===t.length&&gr(e,t)}function gr(e,t){return t.every((n,r)=>e[r]===n)}function Ls(e,t){return R(t,e.reason??String(e.message))}var rd=g(()=>{it();Ut()});function L(e,t){let n=Vl(t),r=Kl(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let o=r.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){mr(s.content,s.number,n);let u;try{u=Ps(s.content,oe(s.content,":",s.number))}catch(l){if(n.strict)throw Ls(l,s.number);u=void 0}if(u!==void 0)return r_(u,r,n)}if(o&&oe(s.content,":",s.number)===-1)return _e(s.content.trim(),s.number);let i={index:0},a=Yi(r,i,0,n),c=r[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return n.cyclicDiscriminatedArrays?Ql(a):a}function Yi(e,t,n,r){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<n)break;if(o.depth>n)throw R(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=t_(e,t,n,r);ld(s,i,a,c,r,o.number)}return s}function t_(e,t,n,r){let s=e[t.index],o=s.content,i=oe(o,":",s.number);if(i===-1)throw R(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=oe(a,"[",s.number),l=oe(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){mr(a,s.number,r);let p;try{p=ed(a)}catch(_){if(r.strict)throw Ls(_,s.number);t.index+=1;let h=zi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:h}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let b=n_(p,e,t,n+1,r);return{key:p.key,quoted:p.keyQuoted,value:b}}if(u!==-1){mr(a,s.number,r);let p;try{p=Ps(a,i)}catch(_){if(r.strict)throw Ls(_,s.number);t.index+=1;let h=zi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:h}}if(p.key===""&&!p.keyQuoted)throw R(s.number,"expected non-empty field name");let b=Qi(p,c,e,t,n,r);return{key:p.key,quoted:p.keyQuoted,value:b}}let[f,d]=Pe(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let m=zi(e,t,n,c,s.number,r);return{key:f,quoted:d,value:m}}function zi(e,t,n,r,s,o){let i=r.trim();if(i==="[]")return[];if(i!=="")return _e(i,s);let a=e[t.index];return a!==void 0&&a.depth>n?Yi(e,t,n+1,o):{}}function n_(e,t,n,r,s){let o={};for(n.index+=1;n.index<t.length;){let i=t[n.index];if(i.depth<r)break;if(i.depth>r)throw R(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw R(i.number,"blank line inside keyed map");let a=oe(i.content,":",i.number);if(a===-1)throw R(i.number,"expected `key: value`");let[c,u]=Pe(i.content.slice(0,a),i.number);if(c===""&&!u)throw R(i.number,"expected non-empty field name");let l=Ie(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw R(i.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,m)=>{xn(f,d.path,Is(d,l[m],i.number),s,i.number)}),ld(o,c,u,f,s,i.number),n.index+=1}return o}function r_(e,t,n){let r=t[0],s=oe(r.content,":",r.number);if(s===-1)throw R(r.number,"expected `key: value`");let o=r.content.slice(s+1),i={index:0},a=Qi(e,o,t,i,0,n),c=t[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Qi(e,t,n,r,s,o){let i=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw R(i,"expected tabular rows");return s_(e,e.fields,n,r,s+1,o)}if(a!==""){let c=Ie(a,e.delimiter,i).map(u=>_e(u,i));if(c.length!==e.len)throw R(i,"array length mismatch");return c}return d_(e,n,r,s+1,o)}function s_(e,t,n,r,s,o){if(e.fieldTree!==void 0&&u_(e.fieldTree))return o_(e,n,r,s,o);let i=[];for(;i.length<e.len;){let c=n[r.index];if(c===void 0)throw Sn(n,r.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw R(c.number,"blank line inside array");if(!En(c.content,e.delimiter,c.number))break;let u=Ie(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{xn(l,f.path,Is(f,u[d],c.number),o,c.number)}),i.push(l),r.index+=1}if(i.length!==e.len)throw Sn(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&En(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return i}function o_(e,t,n,r,s){return sd(e.len,e.fieldTree,e.delimiter,t,n,r,s,!0)}function sd(e,t,n,r,s,o,i,a){let c=[],u=id(e,t,n,r,s.index,o,i);for(;c.length<e;){let f=r[s.index];if(f===void 0)throw Sn(r,s.index);if(f.depth<o)break;if(f.depth>o)throw R(f.number,"invalid indentation");if(f.blankBefore&&i.strict)throw R(f.number,"blank line inside array");if(!En(f.content,n,f.number))break;let d=Ie(f.content,n,f.number),m={cellIndex:0,nextIndex:s.index+1,flatWidth:$s(t),childTableFields:u},p=od(t,d,f.number,r,m,o+1,n,i);if(m.cellIndex!==d.length)throw R(f.number,"array row length mismatch");c.push(c_(t,p,a)),s.index=m.nextIndex}if(c.length!==e)throw Sn(r,s.index);let l=r[s.index];if(l!==void 0&&l.depth>=o&&En(l.content,n,l.number))throw R(l.number,"array length mismatch");return c}function od(e,t,n,r,s,o,i,a){let c={};return e.forEach((u,l)=>{let f=e.slice(l+1),d=i_(u,f,t,n,r,s,o,i,a);xn(c,[u.key],d,a,n)}),c}function i_(e,t,n,r,s,o,i,a,c){if(e.fixedLength!==void 0){if(o.cellIndex+e.fixedLength>n.length)throw R(r,"array row length mismatch");let l=n.slice(o.cellIndex,o.cellIndex+e.fixedLength).map(f=>_e(f,r));return o.cellIndex+=e.fixedLength,l}if(e.children!==void 0){let l=$s(e.children),f=n[o.cellIndex],d=cd(f),m=n.length-o.cellIndex-1,p=s[o.nextIndex],b=p!==void 0&&p.depth===i,_=o.childTableFields===void 0?void 0:o.childTableFields.has(e);if(_===void 0?d!==void 0&&(b||n.length!==o.flatWidth&&m<l+l_(t)):_){if(d===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,sd(d,e.children,a,s,{get index(){return o.nextIndex},set index(y){o.nextIndex=y}},i,c,!1)}return od(e.children,n,r,s,o,i,a,c)}let u=n[o.cellIndex];if(u===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,Is(e,u,r)}function id(e,t,n,r,s,o,i){let a=t.filter(l=>l.children!==void 0);if(a.length===0)return new Set;if(a.length>12)return;let c,u=1<<a.length;for(let l=0;l<u;l+=1){let f=new Set;a.forEach((m,p)=>{l&1<<p&&f.add(m)});let d=ad(e,t,f,n,r,s,o,i);d!==void 0&&(c===void 0||d.consumedChildRows>c.consumedChildRows||d.consumedChildRows===c.consumedChildRows&&f.size<c.childTableFields.size)&&(c={childTableFields:f,consumedChildRows:d.consumedChildRows})}return c?.childTableFields}function ad(e,t,n,r,s,o,i,a){let c=o,u=0;try{for(let f=0;f<e;f+=1){let d=s[c];if(d===void 0||d.depth!==i||d.blankBefore&&a.strict||!En(d.content,r,d.number))return;let m=Ie(d.content,r,d.number),p=a_(t,n,m,r,s,c+1,i+1,a);if(p===void 0||s[p.nextIndex]?.depth>i)return;u+=p.consumedChildRows,c=p.nextIndex}let l=s[c];if(l!==void 0&&l.depth>=i&&En(l.content,r,l.number))return}catch{return}return{nextIndex:c,consumedChildRows:u}}function a_(e,t,n,r,s,o,i,a){let c=0,u=o,l=0;for(let f of e){if(f.fixedLength!==void 0)c+=f.fixedLength;else if(f.children!==void 0)if(t.has(f)){let d=cd(n[c]);if(d===void 0)return;c+=1;let m=id(d,f.children,r,s,u,i,a);if(m===void 0)return;let p=ad(d,f.children,m,r,s,u,i,a);if(p===void 0)return;u=p.nextIndex,l+=d+p.consumedChildRows}else c+=$s(f.children);else c+=1;if(c>n.length)return}if(c===n.length)return{nextIndex:u,consumedChildRows:l}}function c_(e,t,n){return n&&e.length===1&&e[0].fixedLength!==void 0?t[e[0].key]:t}function cd(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function u_(e){return e.some(t=>t.fixedLength!==void 0||t.children!==void 0)}function $s(e){return e.reduce((t,n)=>t+ud(n),0)}function ud(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?$s(e.children):1}function l_(e){return e.reduce((t,n)=>n.children!==void 0?t+1:t+ud(n),0)}function En(e,t,n){let r=oe(e,":",n);if(r===-1)return!0;let s=oe(e,t,n);return s===-1?!1:s<r}function d_(e,t,n,r,s){let o=[];for(;o.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw Sn(t,n.index);if(a.depth>r)throw R(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw R(a.number,"blank line inside array");o.push(f_(t,n,r,s))}let i=t[n.index];if(i!==void 0&&i.depth>=r)throw R(i.number,"array length mismatch");return o}function f_(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=oe(o,":",s.number);mr(o,s.number,r);let a;try{a=Ps(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Qi(a,c,e,t,n,r)}}if(oe(o,":",s.number)!==-1){let i=[{number:s.number,depth:n+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;i.push(a),t.index+=1}return Yi(i,{index:0},n+1,r)}return t.index+=1,_e(o,s.number)}function ld(e,t,n,r,s,o){if(s.expandPaths&&!n&&t.includes(".")){let i=t.split(".");if(i.every(p_)){xn(e,i,r,s,o);return}}xn(e,[t],r,s,o)}function xn(e,t,n,r,s){Je(t.length-1,s,r);let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&r.strict)throw R(s,"duplicate key");Le(e,o,n);return}if(i&&!H(e[o])){if(r.strict)throw R(s,"path expansion conflict");Le(e,o,{})}else i||Le(e,o,{});xn(e[o],t.slice(1),n,r,s)}function p_(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var dd=g(()=>{it();Ut();kn();dr();Hi();Ji();rd()});function C(e,t={}){let n=t.maxDepth??1e3,r=t.delimiter??G;if(![G,"|"," "].includes(r))throw R(0,"invalid array header");let s={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0,primitiveArrayColumns:t.primitiveArrayColumns===!0,objectArrayColumns:t.objectArrayColumns===!0,cyclicDiscriminatedArrays:t.cyclicDiscriminatedArrays===!0,delimiter:r,maxDepth:n===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(n))};if(s.cyclicDiscriminatedArrays){let i=Zl(e);if(i!==void 0)return i}let o=[];return Array.isArray(e)?ta(o,void 0,e,0,!1,s):H(e)?fd(o,e,0,s):o.push(ie(e,r)),o.join("")}function vn(e,t){e.push(" ".repeat(t*2))}function fd(e,t,n,r){Je(n,0,r);for(let[s,o]of Object.entries(t))vn(e,n),Zi(e,s,o,n,r)}function Zi(e,t,n,r,s){if(Je(r,0,s),Array.isArray(n)){ta(e,t,n,r,!1,s);return}if(H(n)){let o=s.keyedMapCollapse?g_(n,s,r+1):void 0;if(o!==void 0){e.push(K(t),"{",na(s.delimiter),o.fields.map(i=>oa(i,s.delimiter)).join(s.delimiter),`}:
20
+ `);for(let[i,a]of Object.entries(n)){vn(e,r+1);let c=[];e.push(K(i),": ",o.paths.map(u=>ia(sa(a,u.path),u,s.delimiter,s,c,r+2)).join(s.delimiter),`
21
+ `),e.push(...c)}return}e.push(K(t),`:
22
+ `),fd(e,n,r+1,s);return}e.push(K(t),": ",ie(n,s.delimiter),`
23
+ `)}function ta(e,t,n,r,s,o){if(Je(r,0,o),n.length===0){t!==void 0?e.push(K(t),`: []
19
24
  `):s?e.push(`[0]:
20
25
  `):e.push(`[]
21
- `);return}if(r.every(Zr)){Si(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){Si(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}Si(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("- "),Ii(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("- "),Ci(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))en(e,r+1),Ci(e,o,i,r+1,n);return}e.push("- ",Me(t,M),`
27
- `)}function Si(e,t,r,n){t!==void 0&&e.push(Ee(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Li).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 Li(e){return e.children===void 0?Ee(e.key):`${Ee(e.key)}{${e.children.map(Li).join(M)}}`}var Ti,tn=h(()=>{Xr();Ri();Ti=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(ms(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 $i(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=$i(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=$i(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=$i(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,BP,FP,Dl=h(()=>{Xr();tn();Ri();Al=[M,"|"," "],Il=8,Ll=/^[A-Za-z0-9_-]+$/,BP=new TextEncoder,FP=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(Di(e))}
33
- `)}function Di(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 ys(e){let t={app:e,version:_w(fr("__RED_BUILD_VERSION__",()=>"3.3.8")??"0.0.0-dev"),gitSha:fr("__RED_BUILD_GIT_SHA__",()=>"237f92e38c2041901c29482b96ac88b303d979c0")??"unknown",buildTime:fr("__RED_BUILD_TIME__",()=>"2026-08-02T13:10:23Z")??"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 Mi=h(()=>{});import{isAbsolute as Rw,join as Ze,resolve as Bi}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??Fi;for(let n of t){let s=e.env[n];if(s)return Rw(s)?s:Bi(e.startDir,s)}let r=Bi(e.startDir);for(;;){if(e.exists(Ze(r,ql)))return r;let n=Ze(r,".."),s=Bi(n);if(s===r)break;r=s}return e.startDir}var ql,kw,Sw,Fi,Yl,Xl,me=h(()=>{ql=".red",kw="MEMORY_ROOT",Sw="RED_BRAIN_ROOT",Fi=[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,_A,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"}],_A=[...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=ji(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 Hi(e,t,{includeLegacyHelp:!0})}function Hi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function ji(e){return Array.isArray(e)?e.map(ji).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ji).join(" "):String(e??"")}var td,rd,sn=h(()=>{"use strict";_i();td={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},rd={stopAtSeparator:!1}});var xs={};F(xs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>ws,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Rs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>ks,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>_s,RSP_OVERHEAD_FAMILIES:()=>Mw,RSP_OVERHEAD_LEDGER_FILE:()=>id,RSP_OVERHEAD_SCHEMA_VERSION:()=>ad,classifyOverheadSample:()=>Ui,noteChildProcessMs:()=>ud,noteSelfStateBytesRead:()=>cn,overheadCounters:()=>un,overheadFamilyDisabled:()=>qi,overheadHealth:()=>ft,overheadLedgerPath:()=>Ji,overheadMsOf:()=>cd,overheadTelemetryFields:()=>Ss,readOverheadLedger:()=>on,readSelfStateFile:()=>Es,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,Wi(t)):0}function Ui(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 Ss(e,t=ve){let r=Ui(e,t);return{wrapper_ms:Wi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Wi(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 Ji(e){return od(W(e),id)}function on(e){try{let t=sd(Ji(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=Ui(t,r),i=s.families[t.family]??Ww(t.family,n),a=zi(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 qi(e,t,r=Date.now()){let n=on(e).families[t];return!n?.disabled||zi(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=>zi(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&&(Vi+=e)}function ud(e){Number.isFinite(e)&&e>0&&(Ki+=e)}function un(){return{selfStateBytesRead:Vi,childMs:Ki}}function Fw(){Vi=0,Ki=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,ud(Number(process.hrtime.bigint()-e)/1e6))}}async function Es(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 zi(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=Ji(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!Gi(e)||e.version!==1||!Gi(e.families)?!1:Object.values(e.families).every(qw)}function qw(e){return Gi(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Gi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var id,ad,bs,ws,_s,Rs,ks,Mw,ve,Vi,Ki,J=h(()=>{"use strict";me();N();id="overhead-budget.toon",ad="red.rsp.overhead.v1",bs=250,ws=1024*1024,_s=64*1024,Rs=3,ks=6*60*60*1e3,Mw=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:bs,maxSelfStateBytes:ws,netLossFloorBytes:_s,consecutiveBreaches:Rs,cooldownMs:ks};Vi=0,Ki=0});function md(e){return e.trimStart().startsWith("{")?"json":"toon"}function Xi(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(`
26
+ `);return}if(n.every(qe)){Xi(e,t,n.length,void 0,o.delimiter),e.push(" "),e.push(n.map(a=>ie(a,o.delimiter)).join(o.delimiter)),e.push(`
27
+ `);return}let i=s?void 0:pd(n,o,r+1);if(i!==void 0){Xi(e,t,n.length,i.fields,o.delimiter),e.push(`
28
+ `);for(let a of n){vn(e,r+1);let c=[];e.push(i.paths.map(u=>ia(sa(a,u.path),u,o.delimiter,o,c,r+2)).join(o.delimiter)),e.push(`
29
+ `),e.push(...c)}return}Xi(e,t,n.length,void 0,o.delimiter),e.push(`
30
+ `);for(let a of n)vn(e,r+1),m_(e,a,r+1,o)}function m_(e,t,n,r){if(Je(n,0,r),Array.isArray(t)){e.push("- "),ta(e,void 0,t,n,!0,r);return}if(H(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
31
+ `);return}e.push("- "),Zi(e,s[0][0],s[0][1],n+1,r);for(let[o,i]of s.slice(1))vn(e,n+1),Zi(e,o,i,n+1,r);return}e.push("- ",ie(t,r.delimiter),`
32
+ `)}function Xi(e,t,n,r,s){t!==void 0&&e.push(K(t)),e.push("[",String(n),na(s),"]"),r!==void 0&&e.push("{",r.map(o=>oa(o,s)).join(s),"}"),e.push(":")}function na(e){return e===G?"":e}function pd(e,t,n){let r=h_(e,t);if(r!==void 0)return r;let s=ea(e.map(o=>({value:o})),t,n);return s===void 0?void 0:{fields:s,paths:ra(s)}}function g_(e,t,n){let r=Object.values(e);if(!(r.length<2))return pd(r,t,n)}function ea(e,t,n){Je(n,0,t);let r=e[0]?.value;if(!H(r))return;let s=Object.keys(r).map(o=>({key:o}));if(s.length!==0){for(let{value:o}of e)if(!H(o)||Object.keys(o).length!==s.length||s.some(a=>!Object.prototype.hasOwnProperty.call(o,a.key)))return;for(let o of s){let i=e.map(({value:c})=>({value:c[o.key]}));if(i.every(({value:c})=>qe(c)))continue;if(t.primitiveArrayColumns&&i.every(({value:c})=>Array.isArray(c)&&c.every(qe))){o.listDelimiter=";";continue}if(t.objectArrayColumns&&i.every(({value:c})=>Array.isArray(c))){let c=md(i.map(({value:l})=>l));if(c!==void 0){o.fixedLength=c.fixedLength,o.fixedDelimiter=t.delimiter;continue}let u=ea(i.flatMap(({value:l})=>l.map(f=>({value:f}))),t,n+1);if(u!==void 0){o.children=u,o.childTable=!0;continue}}if(!t.nestedTabularHeaders)return;let a=ea(i,t,n+1);if(a===void 0)return;o.children=a}return s}}function h_(e,t){if(!t.objectArrayColumns)return;let n=md(e);return n===void 0?void 0:{fields:[{key:"values",fixedLength:n.fixedLength,fixedDelimiter:t.delimiter}],paths:[{path:[],fixedLength:n.fixedLength}]}}function md(e){let t=e[0]?.length;if(!(!Number.isInteger(t)||t===0)&&e.every(n=>Array.isArray(n)&&n.length===t&&n.every(qe)))return{fixedLength:t}}function ra(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.childTable===!0?[{path:r,childFields:n.children}]:n.fixedLength!==void 0?[{path:r,fixedLength:n.fixedLength}]:n.children===void 0?[{path:r,listDelimiter:n.listDelimiter}]:ra(n.children,r)})}function sa(e,t){let n=e;for(let r of t)n=n[r];return n}function oa(e,t){return e.listDelimiter!==void 0?`${K(e.key)}[${e.listDelimiter}]`:e.fixedLength!==void 0?`${K(e.key)}[${e.fixedLength}${na(t)}]`:e.children===void 0?K(e.key):`${K(e.key)}{${e.children.map(n=>oa(n,t)).join(t)}}`}function ia(e,t,n,r,s,o){return t.childFields!==void 0?(y_(s,e,t.childFields,r,o),String(e.length)):t.fixedLength!==void 0?e.map(i=>ie(i,n)).join(n):t.listDelimiter===void 0?ie(e,n):e.map(i=>b_(i,n,t.listDelimiter)).join(t.listDelimiter)}function y_(e,t,n,r,s){for(let o of t){vn(e,s);let i=[];e.push(ra(n).map(a=>ia(sa(o,a.path),a,r.delimiter,r,i,s+1)).join(r.delimiter)),e.push(`
33
+ `),e.push(...i)}}function b_(e,t,n){return typeof e!="string"?ie(e,t):Gi(e,t)||e.includes(n)?Os(e):e}var gd=g(()=>{it();Ut();kn();dr();Hi();Ji()});var hr=g(()=>{kn();dd();dr();gd()});var hd=g(()=>{hr()});function k_(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw P(t,"invalid trailer count");return Number.parseInt(n,10)}function Cd(e,t){if(!vd.test(e))throw P(t,"invalid tag")}function S_(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!vd.test(r)){if(/^[A-Za-z0-9_-]/.test(r)&&/^[^,[\]|{}:\t ]+$/.test(r))throw P(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function E_(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw P(t,"invalid header");let s=n.slice(0,r),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Ed.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?G:i,c=n.slice(r+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),Cd(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),f;try{f=Ie(l,a,t).map(d=>Pe(d,t)[0])}catch(d){throw Rn(d)}if(f.length===0||f.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:o,tag:u}}function x_(e,t,n){if(e===null||e.delimiter===void 0)throw P(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(n,"continuation header mismatch")}function yd(e,t,n,r){let s;try{s=Ie(e,t,r)}catch(o){throw Rn(o)}if(s.length!==n)throw P(r,"row arity mismatch");for(let o of s)try{_e(o,r)}catch(i){throw Rn(i)}return s}function v_(e,t,n){let r={};return e.forEach((s,o)=>{try{Le(r,s,_e(t[o],n))}catch(i){throw Rn(i)}}),r}function C_(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=k_(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw P(t,"trailer without header");if(n.rowCount!==r)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=E_(e,t);if(s!==null)return s.continuation?(x_(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=S_(e,t);if(o!==null){let i=n?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:yd(o.cellsText,i.delimiter,i.fields.length,t)}}if(n===null||n.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:yd(e,n.delimiter,n.fields.length,t)}}function T_(e,t={}){let n=[],r=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(m,p){let b=o.at(-1);if(b!==void 0&&b.lane===m.lane&&b.delimiter===m.delimiter&&b.fieldText===m.fieldText){b.rows.push(p);return}o.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[p]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function f(m,p,b){let _=r.get(m);if(_===void 0){if(r.size>=xd)throw P(b,"too many tagged lanes");_={segments:[],current:null},r.set(m,_),n.push(m)}else _.current!==null&&_.segments.push(_.current);_.current={lane:m,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[]},_.delimiter=p.delimiter,_.fields=p.fields,_.fieldText=p.fieldText}if(Ts(e).forEach((m,p)=>{let b=p+1;if(m==="")return;let _=i===null?{taggedLanes:r}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:r},h=C_(m,b,_);if(h.kind==="trailer"){l(),i=null;return}if(h.kind!=="continuation"){if(h.kind==="tag-header"){c=!0,f(h.header.tag,h.header,b);return}if(h.kind==="header"){l(),a||(n.push(null),a=!0),i={lane:null,delimiter:h.header.delimiter,fields:h.header.fields,fieldText:h.header.fieldText,rows:[]};return}if(h.kind==="tagged-row"){c=!0;let y=r.get(h.tag).current;y.rows.push(h.cells),u(y,h.cells);return}if(i===null)throw P(b,"row before header");i.rows.push(h.cells),u(i,h.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of n){if(m===null){d.push(...s);continue}let p=r.get(m);d.push(...p.segments),p.current!==null&&d.push(p.current)}return t.preserveInterleaving===!0?o:d}function qt(e){return T_(e).flatMap(t=>t.rows.map(n=>v_(t.fields,n,0)))}function O_(e){if(!Ed.includes(e))throw P(0,"invalid header delimiter")}function bd(e,t,n=!1){return`[${`${n?"~":""}${e===G?"":e}`}]{${t}}:
34
+ `}function wd(e,t){return`[]<${e}>{${t}}:
35
+ `}function aa(e,t){return t.map(K).join(e)}function A_(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=Pe(String(t),0)}catch(r){throw Rn(r)}if(n==="")throw P(0,"TOONL header requires fields");return n})}function _d(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function Rd(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function P_(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function kd(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(n=>!qe(e[n])))throw P(0,"TOONL rows must be flat objects");return t}function I_(e){return JSON.stringify([...e].sort())}function Sd(e,t){let n=I_(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function Jt({delimiter:e=G,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){O_(e),Rd(n),Rd(r);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},m=()=>s===null||!t?"":`[=${a}]
36
+ `,p=()=>P_(d,c,u)?(c=0,u=0,bd(e,o,!0)):"",b=_=>{Cd(_,0);let h=l.get(_);if(h===void 0){if(l.size>=xd)throw P(0,"too many tagged lanes");h={fields:null,fieldsByShape:new Map},l.set(_,h)}return h};return{push(_){if(f)throw P(0,"TOONL encoder is closed");let h=Sd(kd(_),i),y="";(s===null||s.length!==h.length||s.some((T,M)=>T!==h[M]))&&(y+=m(),s=h,o=aa(e,s),a=0,c=0,u=0,y+=bd(e,o));let w=s.map(T=>ie(_[T],e));y+=p();let k=`${w.join(e)}
37
+ `;return y+=k,a+=1,c+=1,u+=k.length,y},declareLane(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=A_(h),w=aa(G,y),k=b(_);return _d(k.fields,y)?"":(k.fields=y,wd(_,w))},pushTagged(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=b(_),w=Sd(kd(h),y.fieldsByShape),k=aa(G,w),T=w.map(Te=>ie(h[Te],G)),M="";return _d(y.fields,w)||(y.fields=w,M+=wd(_,k)),`${M}${_}:${T.join(G)}
38
+ `},end(){return f?"":(f=!0,m())}}}var Ed,xd,vd,YI,QI,Td=g(()=>{it();hr();Ut();Ed=[G,"|"," "],xd=8,vd=/^[A-Za-z0-9_-]+$/,YI=new TextEncoder,QI=new TextDecoder});var N=g(()=>{jl();it();hr();hr();hd();Td()});function $_(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C(ca(e))}
39
+ `)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??$_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=D_(e.diagnostics,3)),t}function $e(e,t,n){let s=([n,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Bl(s)?{command:e,category:"transient",error:yr(s)||"GitHub API rate limit exceeded",help:Ml,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:yr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:yr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:yr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Od(e,t,n,r){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function D_(e,t){return e.split(/\r?\n/).slice(0,t).join(`
40
+ `).trim()}var Ve=g(()=>{"use strict";Fl();N()});function Ms(e){let t={app:e,version:J_(Tn("__RED_BUILD_VERSION__",()=>"3.3.10")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"efacf48c6512520601e438c4e755e96b51509e23")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-02T23:09:28-03:00")??"unknown",bundleAsset:Tn("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Tn("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Tn("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function J_(e){return e.startsWith("v")?e.slice(1):e}function Bd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as V_,join as at,resolve as da}from"node:path";function Y_(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function jd(e){return at(Y_(e),Fd)}function Gd(e){return at(jd(e),"state")}function Hd(e){return at(jd(e),"tmp")}function q(e){return at(Gd(e),"rsp")}function Q_(e){return at(Gd(e),"red-skills.rdb")}function X_(e){return at(Hd(e),"red-skills.rdb")}function qd(e,t){let n=Q_(e);if(t(n))return n;let r=X_(e);if(t(r))throw Z_();return n}function Z_(){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 Jd(e){return at(Hd(e),"waits")}function Vd(e){let t=e.overrideEnvVars??fa;for(let r of t){let s=e.env[r];if(s)return V_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(at(n,Fd)))return n;let r=at(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var Fd,K_,z_,fa,Wd,Ud,Re=g(()=>{Fd=".red",K_="MEMORY_ROOT",z_="RED_BRAIN_ROOT",fa=[K_,z_];Wd=".red/state/red-skills.rdb";Ud=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var eR,tR,LL,ct=g(()=>{N();Re();eR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],tR=[{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"}],LL=[...eR,...tR]});function br(e){let{values:t,rest:n}=Gt(e,{query:Kd.query},zd);return{argv:n,query:t.query?.trim()||void 0}}function Yd(e){let{values:t,rest:n}=Gt(e,Kd,zd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function nR(e,t){if(!t)return!0;let n=pa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>nR(n,t)):[...e]}function ut(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function pa(e){return Array.isArray(e)?e.map(pa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(pa).join(" "):String(e??"")}var Kd,zd,wr=g(()=>{"use strict";ji();Kd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},zd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>uR,RSP_OVERHEAD_LEDGER_FILE:()=>Zd,RSP_OVERHEAD_SCHEMA_VERSION:()=>ef,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>nf,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>kt,overheadLedgerPath:()=>ba,overheadMsOf:()=>tf,overheadTelemetryFields:()=>Ws,readOverheadLedger:()=>_r,readSelfStateFile:()=>Us,readSelfStateFileSync:()=>fR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>dR,resetOverheadLedger:()=>lR,startChildProcessTimer:()=>ce});import{existsSync as rR,mkdirSync as sR,readFileSync as Qd,renameSync as oR,writeFileSync as iR}from"node:fs";import{readFile as aR}from"node:fs/promises";import{dirname as cR,join as Xd}from"node:path";function tf(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=tf(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Ws(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Xd(q(e),Zd)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=hR(t);if(yR(n))return n}catch{}return{version:1,families:{}}}function Rr(e,t,n=De,r=Date.now()){let s=_r(e),o=ya(t,n),i=s.families[t.family]??gR(t.family,r),a=ka(i,r)?rf(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(r).toISOString()};return o.breached?c>=n.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(r).toISOString(),u.disabled_until=new Date(r+n.cooldownMs).toISOString(),u.disabled_reason=pR(t.family,c,o,n)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,sf(e,s),u}function wa(e,t,n=Date.now()){let r=_r(e).families[t];return!r?.disabled||ka(r,n)?null:r}function lR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},sf(e,n),n}function kt(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?rf(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=r.filter(a=>a.disabled),o=r.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:ef,verdict:i,summary:mR(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function nf(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function dR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,nf(Number(process.hrtime.bigint()-e)/1e6))}}async function Us(e){let t=await aR(e,"utf8");return kr(Buffer.byteLength(t)),t}function fR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function pR(e,t,n,r){let s=n.reasons.map(o=>o==="wall-clock-ceiling"?`added ${n.overhead_ms}ms > ${r.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${r.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function mR(e,t,n){if(e==="green")return"every wrapper family is inside its overhead ceiling";let r=[];return t.length>0&&r.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),n.length>0&&r.push(`breaching: ${n.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),r.join("; ")}function ka(e,t){if(!e.disabled||!e.disabled_until)return!1;let n=Date.parse(e.disabled_until);return Number.isFinite(n)&&n<=t}function rf(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function gR(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 sf(e,t){try{let n=ba(e);if(!rR(Xd(e,".red")))return;sR(cR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;iR(r,`${C(t)}
41
+ `,{encoding:"utf8",mode:384}),oR(r,n)}catch{}}function hR(e){try{return JSON.parse(e)}catch{return L(e)}}function yR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(bR)}function bR(e){return ga(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function ga(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ha(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Zd,ef,Bs,Fs,js,Gs,Hs,uR,De,_a,Ra,V=g(()=>{"use strict";Re();N();Zd="overhead-budget.toon",ef="red.rsp.overhead.v1",Bs=250,Fs=1024*1024,js=64*1024,Gs=3,Hs=6*60*60*1e3,uR=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],De={maxOverheadMs:Bs,maxSelfStateBytes:Fs,netLossFloorBytes:js,consecutiveBreaches:Gs,cooldownMs:Hs};_a=0,Ra=0});function cf(e){return e.trimStart().startsWith("{")?"json":"toon"}function Ea(e){let t=0;for(;e[t]===`
42
+ `||e[t]==="\r";)t+=1;let n=e.slice(t);if(n==="")return null;let r=cf(n);if(r==="json"){let o=n.indexOf(`
43
+ `);return o<0?null:{frame:n.slice(0,o),dialect:r,rest:n.slice(o+1)}}let s=n.indexOf(`
38
44
 
39
- `);return s<0?null:{frame:r.slice(0,s+1),dialect:n,rest:r.slice(s+2)}}function Zi(e){let t=md(e)==="json"?Yi:pd,r=t===Yi?pd:Yi;try{return t(e)}catch(n){try{return r(e)}catch{throw n}}}function Yi(e){return JSON.parse(e)}function pd(e){return L(e)}function Qi(e,t){if(t==="toon"){let r=Kw(e);if(r!==null)return r.endsWith(`
40
- `)?`${r}
41
- `:`${r}
45
+ `);return s<0?null:{frame:n.slice(0,s+1),dialect:r,rest:n.slice(s+2)}}function xa(e){let t=cf(e)==="json"?Sa:of,n=t===Sa?of:Sa;try{return t(e)}catch(r){try{return n(e)}catch{throw r}}}function Sa(e){return JSON.parse(e)}function of(e){return L(e)}function va(e,t){if(t==="toon"){let n=_R(e);if(n!==null)return n.endsWith(`
46
+ `)?`${n}
47
+ `:`${n}
42
48
 
43
49
  `}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 ea}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 ln}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(Qi(t,n))}),a.on("data",d=>{u+=d.toString("utf8");let f=Xi(u);f&&(u=f.rest,p(()=>{try{o(Zi(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=Xi(n);if(!o)return;n=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(Qi(a,o.dialect))}catch{}};(async()=>{let a;try{a=Zi(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,ea.O_CREAT|ea.O_EXCL|ea.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=c=>ln(c,e.socketFileName).length<t_,s=t.XDG_RUNTIME_DIR;if(s){let c=ln(s,"red-skills",r);if(n(c))return c}let o=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=ln(`red-skills-${o}`,r),a=ln(Qw(),i);return n(a)||process.platform==="win32"?a:ln(r_,i)}var t_,r_,vs=h(()=>{wd();t_=108;r_="/tmp"});async function mr(e,t){return await Rd(e,t,"resident rsp server")}var ra=h(()=>{vs()});var xd=h(()=>{"use strict";ra()});import{existsSync as n_,readdirSync as s_}from"node:fs";import{homedir as o_}from"node:os";import{basename as sa,dirname as na,join as ge,resolve as Cs}from"node:path";function i_(e){return"command"in e}function Ts(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??n_,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&&u_(i))return a(Cs(i),"caller-entry");let c=[];for(let[u,l]of d_(i,t.rootDir,r,t.listDir??g_))if(c.push(u),n(u))return a(u,l);return{diagnostic:tt,searched:c,...i?{callerEntry:Cs(i)}:{}}}function Cd(e={},t={}){let r=Ts(e,t);if(i_(r))return r;throw new gr(r)}function u_(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:l_(Cs(e))}function l_(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*d_(e,t,r,n){if(e){let o=na(Cs(e));yield[ge(o,Bt),"caller-sibling-bundle"];let i=a_.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 c_){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=p_(r);yield[ge(s,Bt),"bundle-cache"];for(let o of f_(s,n))yield[ge(s,o),"bundle-cache"]}function p_(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ge(e.HOME||o_(),".cache");return ge(t,"red-skills","bundles")}function f_(e,t){return t(e).filter(r=>oa.test(r)).sort((r,n)=>m_(vd(n),vd(r)))}function vd(e){return oa.exec(e)?.[1]??""}function m_(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 g_(e){try{return s_(e)}catch{return[]}}var tt,gr,Bt,a_,oa,c_,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})`:""}
50
+ `}function _R(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let n=C(JSON.parse(t));return n.trim()===""?null:n}catch{return null}}function uf(e,t){return!af(e)||!af(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function af(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function df(e){return lf.has(e)?"json":wR}function ff(e){lf.add(e)}var wR,lf,pf=g(()=>{N();wR="toon";lf=new Set});import{createHash as RR}from"node:crypto";import{constants as Ca}from"node:fs";import{mkdir as kR,open as SR}from"node:fs/promises";import{createConnection as ER}from"node:net";import{tmpdir as xR}from"node:os";import{dirname as vR,join as Er}from"node:path";async function gf(e,t,n="resident server"){let r=e.wire,s=r??df(e.socketPath),o=await mf(e,t,n,s);return r||s==="json"||!uf(t,o)?o:(ff(e.socketPath),await mf(e,t,n,"json"))}async function mf(e,t,n,r){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=ER(e.socketPath),c=!1,u="",l=setTimeout(()=>{f(()=>i(new Error(`${n} timed out`))),a.destroy()},s);function f(d){c||(c=!0,clearTimeout(l),d())}a.on("connect",()=>{a.write(va(t,r))}),a.on("data",d=>{u+=d.toString("utf8");let m=Ea(u);m&&(u=m.rest,f(()=>{try{o(xa(m.frame))}catch(p){i(p)}}),a.end())}),a.on("error",d=>f(()=>i(d))),a.on("close",()=>{c||f(()=>i(new Error(`${n} closed without response`)))})})}function hf(e,t,n){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",s=>{r+=s;let o=Ea(r);if(!o)return;r=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(va(a,o.dialect))}catch{}};(async()=>{let a;try{a=xa(o.frame),await t(a,i)}catch(c){n(c,a,i)}finally{e.end()}})()})}async function yf(e){await kR(vR(e),{recursive:!0,mode:448});try{return await SR(e,Ca.O_CREAT|Ca.O_EXCL|Ca.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Vt(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(!Vt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let n=Date.now()+t;for(;Date.now()<n;){if(!Vt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}function bf(e){let t=e.env??process.env,n=RR("sha256").update(e.key).digest("hex").slice(0,20),r=c=>Er(c,e.socketFileName).length<CR,s=t.XDG_RUNTIME_DIR;if(s){let c=Er(s,"red-skills",n);if(r(c))return c}let o=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=Er(`red-skills-${o}`,n),a=Er(xR(),i);return r(a)||process.platform==="win32"?a:Er(TR,i)}var CR,TR,Js=g(()=>{pf();CR=108;TR="/tmp"});async function On(e,t){return await gf(e,t,"resident rsp server")}var Oa=g(()=>{Js()});var wf=g(()=>{"use strict";Oa()});import{existsSync as OR,readdirSync as AR}from"node:fs";import{homedir as PR}from"node:os";import{basename as Pa,dirname as Aa,join as ke,resolve as Vs}from"node:path";function IR(e){return"command"in e}function Ks(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let n=t.env??process.env,r=t.exists??OR,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(n.RSP_BIN)return{command:n.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&DR(i))return a(Vs(i),"caller-entry");let c=[];for(let[u,l]of MR(i,t.rootDir,n,t.listDir??GR))if(c.push(u),r(u))return a(u,l);return{diagnostic:lt,searched:c,...i?{callerEntry:Vs(i)}:{}}}function Rf(e={},t={}){let n=Ks(e,t);if(IR(n))return n;throw new An(n)}function DR(e){let t=Pa(e);return t===Kt||Ia.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:NR(Vs(e))}function NR(e){let t=Aa(e);for(let n=0;n<4;n++){if(Pa(t)==="rsp")return!0;let r=Aa(t);if(r===t)return!1;t=r}return!1}function*MR(e,t,n,r){if(e){let o=Aa(Vs(e));yield[ke(o,Kt),"caller-sibling-bundle"];let i=LR.exec(Pa(e));i&&(yield[ke(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ke(o,"..","dist",Kt),"caller-sibling-bundle"]}for(let o of $R){let i=n[o];i&&(yield[ke(i,"dist",Kt),"plugin-root-bundle"],yield[ke(i,"..","..","dist",Kt),"plugin-root-bundle"])}t&&(yield[ke(t,"dist",Kt),"repo-bundle"],yield[ke(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ke(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=BR(n);yield[ke(s,Kt),"bundle-cache"];for(let o of FR(s,r))yield[ke(s,o),"bundle-cache"]}function BR(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ke(e.HOME||PR(),".cache");return ke(t,"red-skills","bundles")}function FR(e,t){return t(e).filter(n=>Ia.test(n)).sort((n,r)=>jR(_f(r),_f(n)))}function _f(e){return Ia.exec(e)?.[1]??""}function jR(e,t){let n=o=>o.split(".").map(i=>Number.parseInt(i,10)),[r,s]=[n(e),n(t)];for(let o=0;o<Math.max(r.length,s.length);o++){let[i,a]=[r[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 GR(e){try{return AR(e)}catch{return[]}}var lt,An,Kt,LR,Ia,$R,La=g(()=>{lt="rsp-resident-entry-unresolved";An=class extends Error{code=lt;searched;callerEntry;constructor(t){super(`${lt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
45
51
  searched:
46
- ${t.searched.map(r=>` ${r}`).join(`
47
- `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Bt="rsp.bundle.min.mjs",a_=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,oa=/^rsp-(.+)\.bundle\.min\.mjs$/,c_=["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 h_}from"node:fs";import{mkdir as ua,readFile as $d,rename as y_,rm as Fe,stat as b_,writeFile as w_}from"node:fs/promises";import{dirname as Ft,join as rt,resolve as la}from"node:path";import{fileURLToPath as __}from"node:url";function je(e){let t=A_(e)??la(e),r=P_(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 Os(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 S_(e.socketPath);let n=E_(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:D_(r.value.version)}:{}:null}async function Ps(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 Os(e,t)}finally{await Fe(e.wakeLockPath,{force:!0})}}async function pn(e){try{let t=C_(await $d(e,"utf8"));return N_(t)?t:null}catch{return null}}async function As(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 w_(n,`${C(r)}
48
- `,{encoding:"utf8",mode:384}),await y_(n,e)}async function Is(e,t=process.pid){try{let r=await pn(e);if(r&&r.pid!==t)return;await Fe(e,{force:!0})}catch{}}async function dn(e){let t=await pn(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 O_(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 dn(e);return t.state==="registered-dead"||t.state==="invalid"?(await Fe(e.registryPath,{force:!0}),await dn(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 dn(e)):t}async function Td(e,t){let r=Date.now()+k_(),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 k_(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:R_}async function S_(e){await Fe(e,{force:!0})}function E_(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=v_(`${i}${c}`,x_)})),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:
49
- ${s}`),n.join(`
50
- `)}function v_(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function C_(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 pn(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 T_(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 T_(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}}async function O_(e){if(!e.startsWith("file://"))return!1;try{return await b_(__(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 P_(e){return Ed({key:e,socketFileName:"rsp.sock"})}function A_(e){let t=la(e);for(let r=0;r<32;r++){try{let s=ca(rt(t,".git"));if(s!=null)return I_(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 I_(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 h_(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 L_(e,t.clientVersion),await M_(e),!1):!0:!1}async function L_(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:Id(),op:"handover",clientVersion:t})}catch{}}function Hd(e,t){return!e||!t?!1:$_(e,t)>0}function $_(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 D_(e){return typeof e=="string"&&e.length>0?e:void 0}function N_(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 M_(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,R_,Fd,x_,Ls=h(()=>{N();me();vs();ra();ia();ia();Dd=1,R_=5e3;Fd=Sd;x_=8*1024});var Ht={};F(Ht,{RSP_ENTRY_UNRESOLVED:()=>tt,ResidentRspElisionStore:()=>fn,RspResidentEntryError:()=>gr,ensureResidentServer:()=>Os,kickResidentServer:()=>Ps,pingResident:()=>jt,readResidentRegistry:()=>pn,removeResidentRegistry:()=>Is,residentRegistryStatus:()=>dn,resolveResidentPaths:()=>je,resolveRspEntry:()=>Ts,sweepResidentRegistry:()=>Bd,warmResidentServer:()=>Md,writeResidentRegistry:()=>As});import{randomUUID as B_}from"node:crypto";function Wd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fn,He=h(()=>{"use strict";xd();Ls();fn=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 Os(this.paths,this.config);let r=await mr(this.paths,{...t,id:B_()});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:F_}}function da(e,t){return j_(Math.max(0,e)/1e6*t)}function mn(e){return`$${e.toFixed(6)}`}function j_(e){return Math.round(e*1e6)/1e6}var Ud,Jd,F_,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},F_="estimate derived from byte-based token estimate when token counts are estimated"});var gn={};F(gn,{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 fn(n,Vd(t,ys("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
52
+ ${t.searched.map(n=>` ${n}`).join(`
53
+ `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",LR=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ia=/^rsp-(.+)\.bundle\.min\.mjs$/,$R=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as vf}from"node:crypto";import{spawn as Cf}from"node:child_process";import{readFileSync as HR}from"node:fs";import{mkdir as Na,readFile as Tf,rename as WR,rm as Ke,stat as UR,writeFile as qR}from"node:fs/promises";import{dirname as zt,join as dt,resolve as Ma}from"node:path";import{fileURLToPath as JR}from"node:url";function ze(e){let t=rk(e)??Ma(e),n=nk(t),r=q(t);return{rootDir:t,socketPath:dt(n,"rsp.sock"),pidPath:dt(n,"rsp.pid"),lockPath:dt(n,"rsp.lock"),wakeLockPath:dt(t,".red","tmp","rsp","wake.lock"),summaryPath:dt(r,"rsp-status-summary.json"),registryPath:dt(r,"rsp-resident.pid.json")}}async function zs(e,t){if(await Na(zt(e.socketPath),{recursive:!0,mode:448}),await Ef(e.socketPath,t))return;await Sf(e,t);let n=await Lf(e.lockPath);if(n)try{if(await Ef(e.socketPath,t))return;await Sf(e,t),await zR(e.socketPath);let r=YR(e,t);await kf(e.socketPath,r);return}finally{await n.close(),await Ke(e.lockPath,{force:!0})}await kf(e.socketPath)}async function Yt(e,t=200){try{return await Af(e,t)!=null}catch{return!1}}async function Af(e,t=200){let n=await On({socketPath:e,timeoutMs:t},{id:vf(),op:"ping"});return n.ok?Nf(n.value)?{version:ak(n.value.version)}:{}:null}async function Ys(e,t){if(await Na(zt(e.socketPath),{recursive:!0,mode:448}),await Yt(e.socketPath,50))return!1;let n=await Lf(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=$f(e,t);return Cf(r,[...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 Pf(e,t){try{await zs(e,t)}finally{await Ke(e.wakeLockPath,{force:!0})}}async function vr(e){try{let t=ZR(await Tf(e,"utf8"));return ck(t)?t:null}catch{return null}}async function Qs(e,t){let n={version:Of,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 Na(zt(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await qR(r,`${C(n)}
54
+ `,{encoding:"utf8",mode:384}),await WR(r,e)}async function Xs(e,t=process.pid){try{let n=await vr(e);if(n&&n.pid!==t)return;await Ke(e,{force:!0})}catch{}}async function xr(e){let t=await vr(e.registryPath);if(!t)try{return await Tf(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Vt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await Yt(t.socket_path,100);return n&&await tk(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function If(e){let t=await xr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Ke(e.registryPath,{force:!0}),await xr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Ta(t.entry.pid),await Ke(e.registryPath,{force:!0}),await Ke(t.entry.socket_path,{force:!0}),await xr(e)):t}async function kf(e,t){let n=Date.now()+KR(),r;for(;Date.now()<n;){if(await Yt(e))return;if(t){let s=t.spawnError();if(s)throw new Error($a("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error($a("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?$a("resident rsp server did not start",t):"resident rsp server did not start")}function KR(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:VR}async function zR(e){await Ke(e,{force:!0})}function YR(e,t){let[n,r]=$f(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Cf(n,[...r,"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=XR(`${i}${c}`,QR)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function $a(e,t,n){let r=[e];n&&r.push(`error: ${n.message}`),t.child.exitCode!=null&&r.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&r.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&r.push(`stderr tail:
55
+ ${s}`),r.join(`
56
+ `)}function XR(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function ZR(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Sf(e,t){try{let n=await vr(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Vt(n.pid)){await Ke(e.registryPath,{force:!0});return}if(await Yt(n.socket_path,100))return;if(Df(t.clientVersion,n.resident_version)&&(await ek(n.pid,1500),!Vt(n.pid))){await Ke(e.registryPath,{force:!0});return}await Ta(n.pid),await Ke(e.registryPath,{force:!0})}catch{}}async function ek(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Vt(e))return;await new Promise(r=>setTimeout(r,50))}}async function tk(e){if(!e.startsWith("file://"))return!1;try{return await UR(JR(e)),!1}catch(t){return t.code==="ENOENT"}}function $f(e,t){let n=Rf(t,{rootDir:e.rootDir});return[n.command,n.args]}function nk(e){return bf({key:e,socketFileName:"rsp.sock"})}function rk(e){let t=Ma(e);for(let n=0;n<32;n++){try{let s=Da(dt(t,".git"));if(s!=null)return sk(t,s)??t;if(Da(dt(t,".git","HEAD"))!=null||Da(dt(t,".red","config.yaml"))!=null)return t}catch{}let r=zt(t);if(r===t)return null;t=r}return null}function sk(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ma(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?zt(zt(zt(r))):null}function Da(e){try{return HR(e,"utf8")}catch{return null}}async function Ef(e,t){let n=await Af(e).catch(()=>null);return n?Df(t.clientVersion,n.version)?(await ok(e,t.clientVersion),await uk(e),!1):!0:!1}async function ok(e,t){try{await On({socketPath:e,timeoutMs:200},{id:vf(),op:"handover",clientVersion:t})}catch{}}function Df(e,t){return!e||!t?!1:ik(e,t)>0}function ik(e,t){let n=xf(e),r=xf(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function xf(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 Nf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ak(e){return typeof e=="string"&&e.length>0?e:void 0}function ck(e){return Nf(e)&&e.version===Of&&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 uk(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Yt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Of,VR,Lf,QR,Zs=g(()=>{N();Re();Js();Oa();La();La();Of=1,VR=5e3;Lf=yf;QR=8*1024});var Qt={};B(Qt,{RSP_ENTRY_UNRESOLVED:()=>lt,ResidentRspElisionStore:()=>Cr,RspResidentEntryError:()=>An,ensureResidentServer:()=>zs,kickResidentServer:()=>Ys,pingResident:()=>Yt,readResidentRegistry:()=>vr,removeResidentRegistry:()=>Xs,residentRegistryStatus:()=>xr,resolveResidentPaths:()=>ze,resolveRspEntry:()=>Ks,sweepResidentRegistry:()=>If,warmResidentServer:()=>Pf,writeResidentRegistry:()=>Qs});import{randomUUID as lk}from"node:crypto";function Mf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cr,Ye=g(()=>{"use strict";wf();Zs();Cr=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let n=await this.request({op:"get",handle:t});return n?Mf(n)&&n.status==="expired"?n:!Mf(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.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,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await zs(this.paths,this.config);let n=await On(this.paths,{...t,id:lk()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});function Fa(e,t,n=Bf){let r=Math.max(0,Math.floor(e)),s=n in Ff?n:Bf,o=Ff[s],i=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:Ba(r,o),dollars_saved_low_usd:i==null?null:Ba(i,o),dollars_saved_high_usd:a==null?null:Ba(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:dk}}function Ba(e,t){return fk(Math.max(0,e)/1e6*t)}function Tr(e){return`$${e.toFixed(6)}`}function fk(e){return Math.round(e*1e6)/1e6}var Bf,Ff,dk,ja=g(()=>{"use strict";Bf="gpt-5",Ff={"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},dk="estimate derived from byte-based token estimate when token counts are estimated"});var Or={};B(Or,{isResidentEntryUnresolved:()=>Hf,reportResidentEntryDiagnostic:()=>Ha,residentConfigFor:()=>Gf,residentElisionStore:()=>Ga});function Gf(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 Ga(e,t,n={}){let r=n.paths??ze(e);return new Cr(r,Gf(t,Ms("rsp").version),{ensureResident:n.ensureResident})}function Ha(e){return Hf(e)?(jf||(jf=!0,process.stderr.write(`rsp: ${lt} \u2014 elision is off until an rsp entry is installed
51
57
  `),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
52
- `)),!0):!1}function Kd(e){return typeof e=="object"&&e!==null&&e.code===tt}var qd,Gt=h(()=>{"use strict";Mi();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 q_,readFile as V_}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await Ns(r),s=[r,...n];if(s.every(c=>!Ut(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ip(e,"SIGTERM"),Ds(n,"SIGTERM"),await ap(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await Ns(r)])];ip(e,"SIGKILL"),Ds(o,"SIGKILL");let i=Math.max(1e3,t);await K_(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 Ds(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function K_(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 z_(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Ut(n))}async function Ns(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await q_("/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 hn(e){return(await cp(e))?.[19]}async function wr(e,t){if(!Ut(e))return!1;if(!t)return!0;let r=await hn(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 V_(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function z_(e){await new Promise(t=>setTimeout(t,e))}var st=h(()=>{"use strict"});import{constants as Y_}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=yn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Q_(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=yn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=yn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=yn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Z_(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 X_(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function X_(e){if(!(e.signal in Y_.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 hn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function yn(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 bn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return yn(n)}catch{return t}}function Z_(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Q_(e){return e.startsWith("SIG")?e:`SIG${e}`}var lp=h(()=>{"use strict";Wt();st()});import{existsSync as va,readFileSync as eR,statSync as tR}from"node:fs";import{basename as dp,dirname as Ms,isAbsolute as rR,join as pp,resolve as wn}from"node:path";function Bs(e,t=process.env){let r=wn(e);if(Fi.map(i=>t[i]).find(Boolean))return ed({startDir:r,env:t,exists:va});let s=sR(r),o=nR(r,s);return o||(s??r)}function nR(e,t){let r=e;for(;;){if(va(pp(r,".red")))return r;if(t&&r===t)return null;let n=wn(r,"..");if(n===r)return null;r=n}}function sR(e){let t=e;for(;;){let r=pp(t,".git");if(va(r))return aR(r)?t:oR(r)??t;let n=wn(t,"..");if(n===t)return null;t=n}}function oR(e){let t=iR(e);if(!t)return null;let r=Ms(t),n=Ms(r);return dp(r)!=="worktrees"||dp(n)!==".git"?null:Ms(n)}function iR(e){let t;try{t=eR(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return rR(n)?wn(n):wn(Ms(e),n)}function aR(e){try{return tR(e).isDirectory()}catch{return!1}}var Ca=h(()=>{me()});import{join as cR}from"node:path";function lR(e,t=process.env){return Bs(e,t)}function _r(e,t=process.env){return Ql(lR(e,t))}function fp(e,t=process.env){return cR(_r(e,t),uR)}var uR,Ta=h(()=>{"use strict";me();Ca();uR="spool"});import{randomUUID as dR}from"node:crypto";import{existsSync as pR}from"node:fs";import{mkdir as fR,readdir as mR,readFile as gR,rename as hR,rm as Oa,writeFile as yR}from"node:fs/promises";import{dirname as bR,join as gp}from"node:path";function hp(e,t,r=process.env){return gp(_r(e,r),`${t}${wR}`)}async function Rr(e,t){await Pa(e,`${U(t)}
53
- `)}async function Fs(e,t,r){t.status=r,await Rr(e,t)}async function js(e,t=process.env){let r=_r(e,t);if(!pR(r))return[];let n=await mR(r).catch(()=>[]),s=[];for(let o of n.filter(i=>_R.some(a=>i.endsWith(a)))){let i=gp(r,o),a=await RR(i);if(!a){await Oa(i,{force:!0});continue}if(!await kR(a)){await Oa(i,{force:!0});continue}s.push(a)}return s}async function RR(e){let t;try{t=await gR(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=SR(r);return n&&Object.keys(n).length>0?n:null}async function kR(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 SR(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 fR(bR(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${dR()}`;try{await yR(r,t,"utf8"),await hR(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 wR,_R,Rn=h(()=>{"use strict";N();Qe();Wt();Ta();st();wR=".toon",_R=[".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 Hs(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Gs=h(()=>{"use strict"});import{spawn as ER}from"node:child_process";import{resolve as xR}from"node:path";async function yp(e,t,r){let n=[];if(e.signalPid){let s=await vR(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await CR(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function vR(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 CR(e,t,r){let n=Ge(t.wait),s=Ge(t.verdict);return await TR(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?xR(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 TR(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=ER(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";Gs();st()});import{resolve as OR}from"node:path";async function _p(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=PR(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=kn(t,r,o,{status:"pending"},i);await Sn(n.resultFile,a,n.format);let c=await yp(n,a,s),u=kn(t,r,o,c,i);return await Sn(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 PR(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 kn(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 Sn(e,t,r){e&&await Pa(OR(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();Rn();wp()});import{createWriteStream as AR,mkdirSync as IR}from"node:fs";import{readFile as LR,rm as $R}from"node:fs/promises";import{dirname as DR}from"node:path";import{join as Sp}from"node:path";function Ep(e,t,r){return{stdout:new Ws(r,Sp(e,`${t}.stdout.bin`)),stderr:new Ws(r,Sp(e,`${t}.stderr.bin`))}}function NR(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!MR(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function MR(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ws,xp=h(()=>{"use strict";Ws=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,...NR(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 LR(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{IR(DR(this.spoolPath),{recursive:!0}),t=AR(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 $R(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as BR,readFileSync as aL}from"node:fs";import{dirname as FR,join as jR}from"node:path";function vp(e,t){let r=e;for(let n=0;n<16;n++){let s=jR(r,t);if(BR(s))return s;let o=FR(r);if(o===r)break;r=o}return null}function HR(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Us(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 HR(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:()=>Js,ghEtagEntryPath:()=>qs,isCacheEntry:()=>Ks,legacyGhEtagCachePaths:()=>Da,migrateLegacyGhEtagCache:()=>ja,readGhEtagCache:()=>Vs,readGhEtagEntry:()=>Na,resetGhEtagCacheMigrationMemo:()=>KR,sweepGhEtagCache:()=>Fa,writeGhEtagEntry:()=>Ma});import{existsSync as GR}from"node:fs";import{mkdir as WR,readdir as UR,rename as JR,rm as Tp,stat as Op,unlink as Pp,writeFile as qR}from"node:fs/promises";import{dirname as VR,join as xr}from"node:path";function Js(e){return xr(W(e),Ap)}function qs(e,t){return xr(Js(e),`${ZR(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 Es(qs(e,t)));return Ks(r)?r:void 0}catch{return}}async function Ma(e,t,r={}){return await Dp(qs(e,t.key),t),await Ba(e,r.maxBytes??vr)}async function Ba(e,t=vr){let r=await YR(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 zR(e);return{...await Ba(e,t.maxBytes??vr),reclaimedTmp:n,migratedEntries:r}}async function Vs(e){for(let t of Da(e))try{let r=Np(await Es(t));if(QR(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=>GR(o));if(r.length===0)return 0;let n=await Vs(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Ks(i))continue;let a=qs(e,o);await XR(a)||(await Dp(a,{...i,key:o}),s+=1)}for(let o of r)await Tp(o,{force:!0});return s}function KR(){La.clear()}async function zR(e){let t=0;for(let r of[W(e),Js(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 YR(e){let t=Js(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 UR(e)}catch{return[]}}async function XR(e){try{return await Op(e),!0}catch{return!1}}async function Dp(e,t){await WR(VR(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await qR(r,`${C(t)}
57
- `,{encoding:"utf8",mode:384}),await JR(r,e)}catch(n){throw await Tp(r,{force:!0}),n}}function ZR(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 QR(e){return $a(e)&&e.version===1&&$a(e.entries)&&Object.values(e.entries).every(Ks)}function Ks(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,En=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:()=>Xs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Gp,DEFAULT_RSP_STORE_PATH:()=>Ha,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Ys,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zs,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>Hp,resolveRspConfig:()=>Pe});import{existsSync as ek,readFileSync as tk}from"node:fs";import{join as rk,resolve as Bp}from"node:path";function Pe(e,t,r){let n=vp(Bp(e),rk(".red","config.yaml")),s=n?tk(n,"utf8"):"",o=Us(s,"rsp.enabled")==="true",i=Us(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"),zs),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),Ys),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=nk(We(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),Xs,Hp),_=ne(We(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=sk(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"),bs),maxSelfStateBytes:ne(We(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),ws),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),_s),consecutiveBreaches:ne(We(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),Rs),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),ks)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Zl(Bp(R),ek)}`;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=Us(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 nk(e,t,r){let n=ne(e,t);return Math.max(n,r)}function sk(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,zs,Ys,Fp,jp,Xs,Hp,Gp,Ae=h(()=>{"use strict";Cp();me();Ls();J();En();ot=8*1024,Ha=Yl,Ce=7,Te=6,Oe=64*1024*1024,zs=90,Ys=4*1024*1024,Fp=3e4,jp=2e3,Xs=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(),gn)),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 ok}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 Fs(s,o,g.verdict.status).catch(()=>{}),u(g))},f=ok(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 Zs(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:ik(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 Fs(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 ak(f,i,m)}return await Fs(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 ik(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ga(e)}:{}})}async function ak(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();Rn()});var Wa,Ua,Ja,ce,X,he,Ue,xn,Qs=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",xn="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 ck}from"node:crypto";import{appendFileSync as ef,existsSync as uk,mkdirSync as tf}from"node:fs";import{mkdir as rf,readdir as lk,readFile as nf,rename as dk,rm as sf,writeFile as za}from"node:fs/promises";import{basename as Va,dirname as vn,join as Tr,resolve as Yp}from"node:path";function to(e){if(!e)return null;let t=Yp(e);for(;;){if(uk(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 ro(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=to(e);if(!r)return;let n=it(r);tf(vn(n),{recursive:!0}),ef(n,yk({spool_id:Ka(),event:fk(t)}),{encoding:"utf8",mode:384})}catch{}}function fk(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<=pk)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function mk(e){let t=to(e);if(!t)return[];let r=it(t);await rf(vn(r),{recursive:!0}).catch(()=>{});let n=await cf(t),s=[...await uf(t),...await wk(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=to(e);if(!r)return;let n=it(r);await rf(vn(n),{recursive:!0}).catch(()=>{}),await bk(r);for(let s of await gk(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 gk(e){let t=[it(e),ro(e)],r=vn(t[0]);return(await lk(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&&hk(a))}).sort().map(s=>Tr(r,s))}function hk(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 yk(e){return Nt().push(kk(e))}function Qp(e,t){try{let r=to(e);if(!r)return;let n=Xa(r);tf(vn(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),ro(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await dk(n,s),await za(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function bk(e){await Promise.all([za(it(e),"",{flag:"a"}),za(ro(e),"",{flag:"a"})]).catch(()=>{})}async function wk(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 _k(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:eo(JSON.stringify(o)),event:i}:{spool_id:eo(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:eo(s),raw_line:s});continue}try{for(let o of Dt(`${r}
58
+ `)),!0):!1}function Hf(e){return typeof e=="object"&&e!==null&&e.code===lt}var jf,Xt=g(()=>{"use strict";la();Ye();jf=!1});function Qa(e){return e==="success"?0:e==="failure"?1:2}function Xa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ft(e,t,n){return{status:e,exitCode:Qa(e),summary:t,...n?{details:n}:{}}}function Z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function In(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Vf,Kf,zf,za,Yf,Qf,Xf,Zf,Ya,Zt=g(()=>{"use strict";Vf="rsp.wait.result",Kf="rsp.wait.registry",zf="rsp.wait.list",za={cmd:18e5,pr:27e5,run:27e5,release:72e5},Yf=16*1024,Qf=1e4,Xf=2e3,Zf=6e4,Ya={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 bk,readFile as wk}from"node:fs/promises";async function Ln(e,t){let n=e.pid;if(!n)return{cleaned:!0,escalation:"none",survivors:[]};let r=await no(n),s=[n,...r];if(s.every(c=>!en(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ep(e,"SIGTERM"),to(r,"SIGTERM"),await tp(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await no(n)])];ep(e,"SIGKILL"),to(o,"SIGKILL");let i=Math.max(1e3,t);await _k(e,i);let a=await tp(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(en)}}function ep(e,t){let n=e.pid;if(n)try{process.platform!=="win32"?process.kill(-n,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function to(e,t){for(let n of e)try{process.kill(n,t)}catch{}}async function _k(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(n=>{let r=setTimeout(()=>n(!1),t);e.once("close",()=>{clearTimeout(r),n(!0)})})}async function tp(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(e.every(r=>!en(r)))return!0;await Rk(Math.min(25,Math.max(1,n-Date.now())))}return e.every(r=>!en(r))}async function no(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await bk("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await np(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 n=[],r=[...t.get(e)??[]];for(;r.length>0;){let s=r.shift();n.push(s),r.push(...t.get(s)??[])}return n.reverse()}async function Ar(e){return(await np(e))?.[19]}async function $n(e,t){if(!en(e))return!1;if(!t)return!0;let n=await Ar(e);return n===void 0?process.platform!=="linux":n===t}function en(e){try{return process.kill(e,0),!0}catch{return!1}}async function np(e){if(process.platform!=="linux")return null;try{let t=await wk(`/proc/${e}/stat`,"utf8"),n=t.lastIndexOf(")");return n<0?null:t.slice(n+2).trim().split(/\s+/)}catch{return null}}async function Rk(e){await new Promise(t=>setTimeout(t,e))}var pt=g(()=>{"use strict"});import{constants as kk}from"node:os";async function rp(e){let t=e[1],n={timeoutMs:za.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Qf,terminateGraceMs:Xf,probeTimeoutMs:Zf,format:"toon",captureBytes:Yf},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};t!=="ls"&&(n.timeoutMs=za[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?n.timeoutMs=Pr(e[++i]??""):a==="--reason"?n.reason=e[++i]??"":a==="--signal-pid"?n.signalPid=Number(e[++i]):a==="--signal"?n.signal=xk(e[++i]??""):a==="--notify-cmd"?n.notifyCmd=e[++i]??"":a==="--notify-timeout"?n.notifyTimeoutMs=Pr(e[++i]??""):a==="--terminate-grace"?n.terminateGraceMs=Pr(e[++i]??""):a==="--probe-timeout"?n.probeTimeoutMs=Pr(e[++i]??""):a==="--result-file"?n.resultFile=e[++i]??"":a==="--json"?n.format="json":a==="--capture-bytes"?n.captureBytes=Ek(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?r.branch=e[++i]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++i]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return await Sk(n),t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function Sk(e){if(!(e.signal in kk.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(!en(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await Ar(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function Pr(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Ir(e,t,n=process.env){let r=n[e];if(!r)return t;try{return Pr(r)}catch{return t}}function Ek(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function xk(e){return e.startsWith("SIG")?e:`SIG${e}`}var sp=g(()=>{"use strict";Zt();pt()});import{existsSync as Za,readFileSync as vk,statSync as Ck}from"node:fs";import{basename as op,dirname as ro,isAbsolute as Tk,join as ip,resolve as Lr}from"node:path";function so(e,t=process.env){let n=Lr(e);if(fa.map(i=>t[i]).find(Boolean))return Vd({startDir:n,env:t,exists:Za});let s=Ak(n),o=Ok(n,s);return o||(s??n)}function Ok(e,t){let n=e;for(;;){if(Za(ip(n,".red")))return n;if(t&&n===t)return null;let r=Lr(n,"..");if(r===n)return null;n=r}}function Ak(e){let t=e;for(;;){let n=ip(t,".git");if(Za(n))return Lk(n)?t:Pk(n)??t;let r=Lr(t,"..");if(r===t)return null;t=r}}function Pk(e){let t=Ik(e);if(!t)return null;let n=ro(t),r=ro(n);return op(n)!=="worktrees"||op(r)!==".git"?null:ro(r)}function Ik(e){let t;try{t=vk(e,"utf8")}catch{return null}let n=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!n)return null;let r=n[1].trim();return Tk(r)?Lr(r):Lr(ro(e),r)}function Lk(e){try{return Ck(e).isDirectory()}catch{return!1}}var ec=g(()=>{Re()});import{join as $k}from"node:path";function Nk(e,t=process.env){return so(e,t)}function Dn(e,t=process.env){return Jd(Nk(e,t))}function ap(e,t=process.env){return $k(Dn(e,t),Dk)}var Dk,tc=g(()=>{"use strict";Re();ec();Dk="spool"});import{randomUUID as Mk}from"node:crypto";import{existsSync as Bk}from"node:fs";import{mkdir as Fk,readdir as jk,readFile as Gk,rename as Hk,rm as nc,writeFile as Wk}from"node:fs/promises";import{dirname as Uk,join as up}from"node:path";function lp(e,t,n=process.env){return up(Dn(e,n),`${t}${qk}`)}async function Nn(e,t){await rc(e,`${J(t)}
59
+ `)}async function oo(e,t,n){t.status=n,await Nn(e,t)}async function io(e,t=process.env){let n=Dn(e,t);if(!Bk(n))return[];let r=await jk(n).catch(()=>[]),s=[];for(let o of r.filter(i=>Jk.some(a=>i.endsWith(a)))){let i=up(n,o),a=await Vk(i);if(!a){await nc(i,{force:!0});continue}if(!await Kk(a)){await nc(i,{force:!0});continue}s.push(a)}return s}async function Vk(e){let t;try{t=await Gk(e,"utf8")}catch{return null}let n=t.trim();if(!n)return null;let r=zk(n);return r&&Object.keys(r).length>0?r:null}async function Kk(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let n=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await $n(t,n)}function zk(e){try{let t=L(e);if(cp(t))return t}catch{}try{let t=JSON.parse(e);if(cp(t))return t}catch{}return null}async function rc(e,t){await Fk(Uk(e),{recursive:!0});let n=`${e}.tmp-${process.pid}-${Mk()}`;try{await Wk(n,t,"utf8"),await Hk(n,e)}finally{await nc(n,{force:!0})}}function sc(e){return{schema:Kf,version:1,...e}}function cp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var qk,Jk,Dr=g(()=>{"use strict";N();ct();Zt();tc();pt();qk=".toon",Jk=[".toon",".json"]});function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qe(e){return Mn(e)?e:{}}function tn(e){return Array.isArray(e)?e.filter(Mn):[]}function ee(e,t){let n=e[t];return typeof n=="string"?n:""}function Bn(e,t){let n=e[t];return typeof n=="number"?n:0}function oc(e){let t=JSON.parse(e);if(!Mn(t))throw new Error("expected JSON object");return t}function ao(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}var co=g(()=>{"use strict"});import{spawn as Yk}from"node:child_process";import{resolve as Qk}from"node:path";async function dp(e,t,n){let r=[];if(e.signalPid){let s=await Xk(e);s&&r.push(s)}if(e.notifyCmd?.trim()){let s=await Zk(e,t,n);s&&r.push({hook:"notify-cmd",...s})}return r.length===0?{status:"success"}:{status:"failure",errors:r}}async function Xk(e){let t=e.signalPid;if(!await $n(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(n){return{hook:"signal-pid",error:fp(n),pid:t,signal:e.signal}}}async function Zk(e,t,n){let r=Qe(t.wait),s=Qe(t.verdict);return await eS(e.notifyCmd,n,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Qk(n,e.resultFile):"",RSP_WAIT_STATUS:String(r.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(r.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function eS(e,t,n,r,s){return await new Promise(o=>{let i=!1,a=!1,c=f=>{i||(i=!0,o(f))},u=Yk(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,Ln(u,r).then(f=>c({error:`timed out after ${n}ms`,...f.cleaned?{}:{survivors:f.survivors}}))},n);u.once("error",f=>{clearTimeout(l),c({error:fp(f)})}),u.once("close",(f,d)=>{clearTimeout(l),!a&&c(f===0?null:{error:`exited with ${d??f??"unknown"}`,status:f??null,signal:d??null})})})}function fp(e){return e instanceof Error?e.message:String(e)}var pp=g(()=>{"use strict";co();pt()});import{resolve as tS}from"node:path";async function mp(e){let{kind:t,entry:n,options:r,cwd:s}=e,o=nS(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=Nr(t,n,o,{status:"pending"},i);await Mr(r.resultFile,a,r.format);let c=await dp(r,a,s),u=Nr(t,n,o,c,i);return await Mr(r.resultFile,u,r.format),{result:u,exitCode:gp(o,c)}}function gp(e,t){return t.status!=="success"||e.status==="running"?2:Qa(e.status)}function nS(e,t,n=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:n}}}}function Nr(e,t,n,r,s){return{schema:Vf,version:1,wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:gp(n,r),target_exit_code:n.exitCode,summary:n.summary,delivery:r,...n.details?{details:n.details}:{}}}}async function Mr(e,t,n){e&&await rc(tS(e),Fn(t,n))}function Fn(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
60
+ `:`${J(e)}
61
+ `}var hp=g(()=>{"use strict";ct();Zt();Dr();pp()});import{createWriteStream as rS,mkdirSync as sS}from"node:fs";import{readFile as oS,rm as iS}from"node:fs/promises";import{dirname as aS}from"node:path";import{join as yp}from"node:path";function bp(e,t,n){return{stdout:new uo(n,yp(e,`${t}.stdout.bin`)),stderr:new uo(n,yp(e,`${t}.stderr.bin`))}}function cS(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!uS(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function uS(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var uo,wp=g(()=>{"use strict";uo=class{constructor(t,n){this.limit=t;this.spoolPath=n}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 n=this.limit-this.headBytes;if(n>0){let r=t.subarray(0,n);this.head.push(r),this.headBytes+=r.length}if(this.total>this.limit){let r=n>0?t.subarray(n):t;this.openSpool(),r.length>0&&this.appendSpool(r)}}async finish(t,n){this.closed=!0;let r=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...cS(r),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 oS(this.spoolPath);o.handle=await t.mint(Buffer.concat([r,i]),{command:n,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{sS(aS(this.spoolPath),{recursive:!0}),t=rS(this.spoolPath,{flags:"w"})}catch(n){this.spoolError=n instanceof Error?n.message:String(n);return}t.on("error",n=>{this.spoolError=n instanceof Error?n.message:String(n)}),this.spool=t}appendSpool(t){let n=this.spool;n&&(this.spoolReady=this.spoolReady.then(()=>new Promise(r=>{n.write(t)?r():n.once("drain",()=>r())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(n=>t.end(()=>n())))}async discardSpool(){await iS(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as lS,readFileSync as _D}from"node:fs";import{dirname as dS,join as fS}from"node:path";function _p(e,t){let n=e;for(let r=0;r<16;r++){let s=fS(n,t);if(lS(s))return s;let o=dS(n);if(o===n)break;n=o}return null}function pS(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function lo(e,t){let n=[];for(let r of e.split(`
62
+ `)){let s=r.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(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(f=>f.key).join(".")===t)return pS(u)}}var Rp=g(()=>{});var Pp={};B(Pp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Gn,GH_ETAG_CACHE_DIR_NAME:()=>xp,LEGACY_GH_ETAG_CACHE_FILE:()=>vp,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Cp,enforceGhEtagCacheCeiling:()=>dc,ghEtagCacheDir:()=>fo,ghEtagEntryPath:()=>po,isCacheEntry:()=>go,legacyGhEtagCachePaths:()=>cc,migrateLegacyGhEtagCache:()=>pc,readGhEtagCache:()=>mo,readGhEtagEntry:()=>uc,resetGhEtagCacheMigrationMemo:()=>_S,sweepGhEtagCache:()=>fc,writeGhEtagEntry:()=>lc});import{existsSync as mS}from"node:fs";import{mkdir as gS,readdir as hS,rename as yS,rm as kp,stat as Sp,unlink as Ep,writeFile as bS}from"node:fs/promises";import{dirname as wS,join as jn}from"node:path";function fo(e){return jn(q(e),xp)}function po(e,t){return jn(fo(e),`${ES(t)}.toon`)}function cc(e){let t=q(e);return[jn(t,vp),jn(t,Cp)]}async function uc(e,t){await pc(e);try{let n=Ap(await Us(po(e,t)));return go(n)?n:void 0}catch{return}}async function lc(e,t,n={}){return await Op(po(e,t.key),t),await dc(e,n.maxBytes??Gn)}async function dc(e,t=Gn){let n=await kS(e),r=n.reduce((o,i)=>o+i.bytes,0);if(r<=t)return{evictedEntries:0,bytes:r};n.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of n){if(r<=t)break;try{await Ep(o.path),r-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:r}}async function fc(e,t={}){let n=await pc(e,{force:!0}),r=await RS(e);return{...await dc(e,t.maxBytes??Gn),reclaimedTmp:r,migratedEntries:n}}async function mo(e){for(let t of cc(e))try{let n=Ap(await Us(t));if(xS(n))return n}catch{}return{version:1,entries:{}}}async function pc(e,t={}){if(!t.force&&ic.has(e))return 0;ic.add(e);let n=cc(e).filter(o=>mS(o));if(n.length===0)return 0;let r=await mo(e),s=0;for(let[o,i]of Object.entries(r.entries)){if(!go(i))continue;let a=po(e,o);await SS(a)||(await Op(a,{...i,key:o}),s+=1)}for(let o of n)await kp(o,{force:!0});return s}function _S(){ic.clear()}async function RS(e){let t=0;for(let n of[q(e),fo(e)])for(let r of await Tp(n))if(r.endsWith(".tmp"))try{await Ep(jn(n,r)),t+=1}catch{}return t}async function kS(e){let t=fo(e),n=[];for(let r of await Tp(t)){if(!r.endsWith(".toon"))continue;let s=jn(t,r);try{let o=await Sp(s);o.isFile()&&n.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return n}async function Tp(e){try{return await hS(e)}catch{return[]}}async function SS(e){try{return await Sp(e),!0}catch{return!1}}async function Op(e,t){await gS(wS(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await bS(n,`${C(t)}
63
+ `,{encoding:"utf8",mode:384}),await yS(n,e)}catch(r){throw await kp(n,{force:!0}),r}}function ES(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Ap(e){try{return JSON.parse(e)}catch{return L(e)}}function xS(e){return ac(e)&&e.version===1&&ac(e.entries)&&Object.values(e.entries).every(go)}function go(e){return ac(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function ac(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var xp,vp,Cp,Gn,ic,Br=g(()=>{"use strict";Re();N();V();xp="gh-etag",vp="gh-etag-cache.toon",Cp="gh-etag-cache.json",Gn=4*1024*1024;ic=new Set});var Mp={};B(Mp,{DEFAULT_RSP_BYTE_BUDGET:()=>Be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Me,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,DEFAULT_RSP_IDLE_MS:()=>bo,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Np,DEFAULT_RSP_STORE_PATH:()=>mc,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>yo,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Lp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>$p,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>ho,DEFAULT_RSP_TTL_DAYS:()=>Ne,MIN_RSP_IDLE_MS:()=>Dp,resolveRspConfig:()=>Fe});import{existsSync as vS,readFileSync as CS}from"node:fs";import{join as TS,resolve as Ip}from"node:path";function Fe(e,t,n){let r=_p(Ip(e),TS(".red","config.yaml")),s=r?CS(r,"utf8"):"",o=lo(s,"rsp.enabled")==="true",i=lo(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ue(z(s,"rsp.ttlDays"),Ne),u=ue(Xe(t.RSP_EPHEMERAL_TTL_HOURS)??z(s,"rsp.ephemeralTtlHours"),Me),l=ue(z(s,"rsp.byteBudget"),Be),f=ue(z(s,"rsp.telemetryTtlDays"),ho),d=ue(z(s,"rsp.telemetryByteBudget")??z(s,"rsp.byteBudget"),yo),m=ue(Xe(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??z(s,"rsp.telemetryDrainIntervalMs"),Lp),p=ue(Xe(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(s,"rsp.telemetryDrainTimeoutMs"),$p),b=OS(Xe(t.RSP_IDLE_MS)??z(s,"rsp.idleMs"),bo,Dp),_=ue(Xe(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(s,"rsp.heavyGitByteThreshold"),mt),h=AS(Xe(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??z(s,"rsp.measurement.holdoutShare"),Np),y=ue(Xe(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??z(s,"rsp.ghEtagCacheMaxBytes"),Gn),w={maxOverheadMs:ue(Xe(t.RSP_MAX_OVERHEAD_MS)??z(s,"rsp.overhead.maxOverheadMs"),Bs),maxSelfStateBytes:ue(Xe(t.RSP_MAX_SELF_STATE_BYTES)??z(s,"rsp.overhead.maxSelfStateBytes"),Fs),netLossFloorBytes:ue(z(s,"rsp.overhead.netLossFloorBytes"),js),consecutiveBreaches:ue(Xe(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??z(s,"rsp.overhead.consecutiveBreaches"),Gs),cooldownMs:ue(z(s,"rsp.overhead.cooldownMs"),Hs)},k=ze(e).rootDir,T=n??t.RSP_STORE_URI??`file://${qd(Ip(k),vS)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:p,idleMs:b,heavyGitByteThreshold:_,measurementHoldoutShare:h,ghEtagCacheMaxBytes:y,overhead:w}}function z(e,t){let n=lo(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ue(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function OS(e,t,n){let r=ue(e,t);return Math.max(r,n)}function AS(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Xe(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var mt,mc,Ne,Me,Be,ho,yo,Lp,$p,bo,Dp,Np,je=g(()=>{"use strict";Rp();Re();Zs();V();Br();mt=8*1024,mc=Wd,Ne=7,Me=6,Be=64*1024*1024,ho=90,yo=4*1024*1024,Lp=3e4,$p=2e3,bo=5*6e4,Dp=5e3,Np=0});function Bp(e,t=process.env){return{async mint(n,r){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Xt(),Or)),o=s(e,Fe(e,t));try{return await o.mint(n,r)}finally{await o.close()}}}}var Fp=g(()=>{"use strict";je()});import{spawn as PS}from"node:child_process";async function Gp(e){let{commandLine:t,options:n,cwd:r,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Z("missing command line")};let a=e.store??Bp(r),c=bp(e.spoolDir,o.id,n.captureBytes);return await new Promise(u=>{let l=!1,f=!1,d=async h=>{l||(l=!0,i.removeEventListener("abort",b),await oo(s,o,h.verdict.status).catch(()=>{}),u(h))},m=PS(t,{cwd:r,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});m.stdout?.on("data",h=>c.stdout.write(Buffer.from(h))),m.stderr?.on("data",h=>c.stderr.write(Buffer.from(h)));let p=async(h,y)=>{if(l||f)return;f=!0,clearTimeout(_);let w=await Ln(m,n.terminateGraceMs),k=await jp(null,null,c,a,t);await d({verdict:{status:h,exitCode:2,summary:y,details:k},cleanupProven:w.cleaned,survivors:w.survivors})},b=()=>void p("indeterminate","command interrupted");i.addEventListener("abort",b,{once:!0});let _=setTimeout(()=>{p("timeout",`command timed out after ${Hp(n.timeoutMs)}`)},n.timeoutMs);m.once("error",h=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:h.message}})}),m.once("close",(h,y)=>{if(clearTimeout(_),l||f)return;let w=h===0;jp(h,y,c,a,t).then(k=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${y??h??"unknown"}`,details:k}}))}),i.aborted&&b()})}async function wo(e){let{probe:t,timeoutMs:n,baseSleepMs:r,registryPath:s,entry:o,signal:i}=e,a=Date.now()+n,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:IS(u,c,o.last_poll_at)};let l;try{l=await t()}catch(b){l=Z(b instanceof Error?b.message:String(b))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=gc(l),await Nn(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await oo(s,o,l.status).catch(()=>{}),{verdict:l};let f=Math.min(r*4,Math.round(r*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),m=Math.min(f+d,Math.max(0,a-Date.now())),p=e.makeWakeSignal?.();await LS(m,i,p)}return await oo(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Hp(n)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:gc(u)}:{attempts:c}}}}async function jp(e,t,n,r,s){let[o,i]=await Promise.all([n.stdout.finish(r,`${s} # stdout`),n.stderr.finish(r,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function gc(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function IS(e,t,n){return Z("wait interrupted",{attempts:t,last_poll_at:n??null,...e?{last_observation:gc(e)}:{}})}async function LS(e,t,n){t.aborted||e<=0||n?.aborted||await new Promise(r=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),n?.removeEventListener("abort",a),r()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),n?.addEventListener("abort",a,{once:!0})})}function Hp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Wp=g(()=>{"use strict";wp();Fp();Zt();pt();Dr()});var hc,yc,bc,pe,te,Se,Ze,Fr,_o=g(()=>{"use strict";hc="rsp-telemetry.spool.toonl",yc="rsp-telemetry.spool.jsonl",bc="rsp-telemetry.spool.corrections.toonl",pe="rsp_accounting_events_v1",te="rsp_decisions_v1",Se="rsp_telemetry_invocations_v1",Ze="rsp_telemetry_degradations_v1",Fr="rsp_telemetry_index_v1"});function Hn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ee(e){return St(e)??0}function St(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var wc=g(()=>{"use strict"});import{randomUUID as Rc,createHash as $S}from"node:crypto";import{appendFileSync as Kp,existsSync as DS,mkdirSync as zp}from"node:fs";import{mkdir as Yp,readdir as NS,readFile as Qp,rename as MS,rm as Xp,writeFile as kc}from"node:fs/promises";import{basename as _c,dirname as jr,join as Wn,resolve as Up}from"node:path";function ko(e){if(!e)return null;let t=Up(e);for(;;){if(DS(Wn(t,".red")))return t;let n=Up(Wn(t,".."));if(n===t)break;t=n}return null}function gt(e){return Wn(q(e),hc)}function So(e){return Wn(q(e),yc)}function Ec(e){return Wn(q(e),bc)}async function ht(e,t){Et(e,t)}function Et(e,t){try{let n=ko(e);if(!n)return;let r=gt(n);zp(jr(r),{recursive:!0}),Kp(r,WS({spool_id:Rc(),event:FS(t)}),{encoding:"utf8",mode:384})}catch{}}function FS(e){return qp(qp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function qp(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=BS)return e;let o={...e};return delete o[t],Ee(o[n])===0&&(o[n]=s),o.estimated=!0,o}async function jS(e){let t=ko(e);if(!t)return[];let n=gt(t);await Yp(jr(n),{recursive:!0}).catch(()=>{});let r=await tm(t),s=[...await nm(t),...await qS(r)];return await Promise.all(r.map(o=>Xp(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function xc(e,t){let n=ko(e);if(!n)return;let r=gt(n);await Yp(jr(r),{recursive:!0}).catch(()=>{}),await US(n);for(let s of await GS(n))await Jp(n,s,t);for(let s of await nm(n))await Zp(n,s,t,!0);for(let s of await tm(n))await Jp(n,s,t)}async function GS(e){let t=[gt(e),So(e)],n=jr(t[0]);return(await NS(n).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${_c(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${_c(c)}.`));if(!o)return!1;let i=`${_c(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&HS(a))}).sort().map(s=>Wn(n,s))}function HS(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Jp(e,t,n){try{let r=await em(t);for(let s of rm(r))await Zp(e,s,n,!1)}finally{await Xp(t,{force:!0})}}async function Zp(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Vp(e,{correction_id:Rc(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Vp(e,{correction_id:Rc(),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 em(e){let t="";for(let n=0;n<5;n++){let r=await Qp(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Un(e){try{let t=JSON.parse(e);return!Hn(t)||t.collection!==pe&&t.collection!==te&&t.collection!==Se&&t.collection!==Ze?null:t}catch{return null}}function WS(e){return Jt().push(KS(e))}function Vp(e,t){try{let n=ko(e);if(!n)return;let r=Ec(n);zp(jr(r),{recursive:!0});let s=Jt();Kp(r,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 tm(e){let t=[gt(e),So(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await MS(r,s),await kc(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return n}async function US(e){await Promise.all([kc(gt(e),"",{flag:"a"}),kc(So(e),"",{flag:"a"})]).catch(()=>{})}async function qS(e){let t=[];for(let n of e)t.push(...rm(await em(n)));return t}async function nm(e){let t=await Qp(Ec(e),"utf8").catch(()=>""),n=new Map;for(let r of JS(t))n.set(r.target_spool_id,r);return[...n.values()].filter(r=>r.action==="retry"&&r.event_json).map(r=>({spool_id:r.target_spool_id,event:Un(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function rm(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let o=JSON.parse(s);if(Hn(o)){let i=Un(JSON.stringify(o));t.push(i?{spool_id:Ro(JSON.stringify(o)),event:i}:{spool_id:Ro(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:Ro(s),raw_line:s});continue}try{for(let o of qt(`${n}
58
64
  ${s}
59
- `))Ya(o)&&Sk(o)&&t.push({spool_id:o.spool_id,event:df(o)})}catch{s.startsWith("{")&&t.push({spool_id:eo(s),raw_line:s})}}}return t}function _k(e){return Rk(e).map(Ek).filter(t=>t!==null)}function Rk(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}
65
+ `))Sc(o)&&zS(o)&&t.push({spool_id:o.spool_id,event:sm(o)})}catch{s.startsWith("{")&&t.push({spool_id:Ro(s),raw_line:s})}}}return t}function JS(e){return VS(e).map(YS).filter(t=>t!==null)}function VS(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let o=JSON.parse(s);Sc(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let o of qt(`${n}
60
66
  ${s}
61
- `))Ya(o)&&t.push(o)}catch{}}}return t}function eo(e){return`legacy:${ck("sha256").update(e).digest("hex").slice(0,24)}`}function kk(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 Sk(e){return typeof e.spool_id=="string"&&df(e)!==null}function Ek(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 pk,pf=h(()=>{"use strict";me();N();Qs();qa();pk=64*1024});function no(e){return e.trim().split(/\s+/).filter(Boolean)}function Cn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Tn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function be(e){let t=no(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(xk)}function xk(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 On=h(()=>{"use strict"});var V,so=h(()=>{"use strict";Ae();V="rsp_elisions_v1"});import{spawnSync as In}from"node:child_process";import{createHash as tc}from"node:crypto";import{existsSync as vk}from"node:fs";import{mkdir as Ck,readFile as Tk,readdir as ff,rename as Ok,writeFile as Pk}from"node:fs/promises";import{homedir as Ak}from"node:os";import{basename as Ik,dirname as Lk,join as Pn}from"node:path";import{fileURLToPath as $k}from"node:url";import{gunzipSync as Dk,gzipSync as Nk}from"node:zlib";function Ln(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 ao(){return"index:v1"}function Mk(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=no(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":co(t)?"re-executable":"ephemeral"}return"ephemeral"}function $n(e){return fo(e.storage_class)?e.storage_class:ct(e.command)}function gf(e){return fo(e.storage_class)?e.storage_class:ct(e.command)}function rc(e){let t=jk(),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:Bk(o),storage_class:gf(s),recover:`rsp show ${s.handle}`}})}function Bk(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=In("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=In("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:Fk(r),original_bytes:e.length}:null}function Fk(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=In("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ic(e,t){let r=no(t);if(!co(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 co(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=Nk(e);return{key:Mk(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=Dk(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=In("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(!co(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=In(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 jk(){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 Dn(e){return/^el:[a-f0-9]{12}$/.test(e)}function io(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _f(e){if(!An(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:An(e.scope)?e.scope:void 0,ranking:An(e.ranking)?e.ranking:void 0}}}function Rf(e){if(!An(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 An(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=Pn(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=An(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 uo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Nn(e){if(!we(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Gk(e.derivation_recipe),n=Wk(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&io(s);return e.collection===V&&typeof e.handle=="string"&&Dn(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"&&io(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Hk(e.loss)&&(e.storage_class===void 0||fo(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"&&Dn(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||fo(t.storage_class))&&(r===void 0||typeof r=="string"&&io(r))})}function lo(e){return we(e)&&typeof e.key=="string"&&io(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 po(e){return we(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Hk(e){return we(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fo(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Gk(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 Wk(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")&&co(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 Tk(e,"utf8")).trim();if(n==="")return oo();let s;try{s=JSON.parse(n)}catch{s=L(n)}if(Uk(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=oo();return await Ar(e,s),s}let n=oo();return await Ar(e,n),n}let t=oo();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 Ik(e)==="red-skills.rdb"}async function mo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Pn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Pn(Ak(),".cache","red-skills","bundles")),t=Pn(e,"reddb"),r;try{r=await ff(t)}catch{return}r.sort().reverse();for(let n of r){let s=Pn(t,n,process.platform==="win32"?"red.exe":"red");if(vk(s)){process.env.REDDB_BIN=s;return}}}async function Ar(e,t){await Ck(Lk(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Pk(r,`${C(ec(t))}
63
- `,"utf8"),await Ok(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 oo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Uk(e){return we(e)&&e.version===1&&we(e.records)&&Object.values(e.records).every(Nn)&&(e.blobs===void 0||we(e.blobs)&&Object.values(e.blobs).every(lo))&&we(e.tombstones)&&Object.values(e.tombstones).every(po)&&lc(e.index)}function Cf(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return $k(e)}var go=h(()=>{"use strict";N();On();so()});async function Tf(e,t){return Jk?Kk(e,t):qk?Yk(e,t):Vk(e,t)}async function Vk(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 Kk(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:zk(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*zk(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 Yk(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:Xk(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Xk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Jk,qk,Of=h(()=>{Jk=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",qk=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Zk}from"node:fs";import{join as Qk}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=Qk(r,"bin",t);if(Zk(o))return o;throw new Error(`reddb: binary "${t}" not found.
67
+ `))Sc(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${$S("sha256").update(e).digest("hex").slice(0,24)}`}function KS(e){let t={spool_id:e.spool_id};for(let[n,r]of Object.entries(e.event??{}))n!=="spool_id"&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null?t[n]=r:r!==void 0&&(t[n]=JSON.stringify(r)));return t}function sm(e){let{spool_id:t,...n}=e;return Un(JSON.stringify(n))}function zS(e){return typeof e.spool_id=="string"&&sm(e)!==null}function YS(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 Sc(e){return Hn(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var BS,om=g(()=>{"use strict";Re();N();_o();wc();BS=64*1024});function Eo(e){return e.trim().split(/\s+/).filter(Boolean)}function Gr(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Hr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function xe(e){let t=Eo(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:nn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:nn(t)&&t[1]?`gh ${t[1]} json-jq`:nn(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 nn(e){return e[0]==="gh"&&e.some(QS)}function QS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function qn(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Wr=g(()=>{"use strict"});var Y,xo=g(()=>{"use strict";je();Y="rsp_elisions_v1"});import{spawnSync as Jr}from"node:child_process";import{createHash as Tc}from"node:crypto";import{existsSync as XS}from"node:fs";import{mkdir as ZS,readFile as eE,readdir as im,rename as tE,writeFile as nE}from"node:fs/promises";import{homedir as rE}from"node:os";import{basename as sE,dirname as oE,join as Ur}from"node:path";import{fileURLToPath as iE}from"node:url";import{gunzipSync as aE,gzipSync as cE}from"node:zlib";function Vr(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 xt(e){return`record:${e.slice(3)}`}function sn(e){return`expired:${e.slice(3)}`}function To(){return"index:v1"}function uE(e){return`blob:${e}`}function am(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function yt(e){let t=Eo(e),n=t[0]??"";if(n==="cat")return"derivable";if(n==="git"){let r=t[1]??"";return r==="log"||r==="diff"||r==="blame"||r==="show"?"derivable":Oo(t)?"re-executable":"ephemeral"}return"ephemeral"}function Kr(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function cm(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function Oc(e){let t=fE(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=cm(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function Ac(e,t,n){let r=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let o=Math.max(0,Math.floor((r-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:lE(o),storage_class:cm(s),recover:`rsp show ${s.handle}`}})}function lE(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function Pc(e,t,n,r){let s=t==="ephemeral"?r*60*60*1e3:n*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function on(e){let t=0,n=new Set;for(let r of e){if(r.blob_key){if(n.has(r.blob_key))continue;n.add(r.blob_key)}t+=r.bytes}return t}function Ic(e,t){let n=process.cwd(),r=Jr("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=Jr("git",["hash-object","-w","--stdin"],{cwd:n,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:n,object_ids:[o],working_tree_fingerprint:dE(n),original_bytes:e.length}:null}function dE(e){let t=vc(e,["rev-parse","HEAD"])||"unborn",n=vc(e,["write-tree"])||"no-index",r=vc(e,["status","--porcelain=v1","-z"])||"";return Tc("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function vc(e,t){let n=Jr("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function Lc(e,t){let n=Eo(t);if(!Oo(n))return null;let r=fm(process.cwd(),n,e.length);return!r||rn(r)!==rn(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:rn(e)}}function Oo(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 rn(e){return Tc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function $c(e,t,n,r){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):n?Buffer.byteLength(JSON.stringify(n),"utf8"):r?r.stored_bytes:e.length}function Dc(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 Nc(e,t,n){let r=cE(e);return{key:uE(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function um(e){try{let t=aE(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function lm(e){let t=e.object_ids[0];if(!t)return null;let n=Jr("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return n.status!==0||n.stdout.length!==e.original_bytes?null:n.stdout}function dm(e){if(!Oo(e.argv))return null;let t=fm(e.cwd,e.argv,e.original_bytes);return t?rn(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
68
+ `,"utf8"),t]):null}function fm(e,t,n){let r=t[0];if(!r)return null;let s=Jr(r,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(n+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function fE(){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 zr(e){return/^el:[a-f0-9]{12}$/.test(e)}function Co(e){return/^blob:[a-f0-9]{64}$/.test(e)}function pm(e){if(!qr(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 n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:qr(e.scope)?e.scope:void 0,ranking:qr(e.ranking)?e.ranking:void 0}}}function mm(e){if(!qr(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 n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function qr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function gm(e,t,n){let r=[],s=new Set([".git","node_modules",".red",...n]);async function o(i){if(r.length>=t)return;let a=await im(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Ur(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)&&r.push(u)}}return await o(e),r}function hm(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=qr(r)?r:{},o=String(e.label??e.LABEL??s.title??`memory-${n}`),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(n),rid:n,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 Yr(e){if(!ve(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=mE(e.derivation_recipe),r=gE(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Co(s);return e.collection===Y&&typeof e.handle=="string"&&zr(e.handle)&&(t||n||r||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Bc(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Co(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&pE(e.loss)&&(e.storage_class===void 0||Lo(e.storage_class))}function Mc(e){return!ve(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!ve(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&zr(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))&&(n===void 0||typeof n=="string"&&Co(n))})}function Po(e){return ve(e)&&typeof e.key=="string"&&Co(e.key)&&Bc(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 Io(e){return ve(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function pE(e){return ve(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Lo(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function mE(e){return ve(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 gE(e){return ve(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Oo(e.argv)&&typeof e.original_bytes=="number"&&Bc(e.content_hash)}function Bc(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function ve(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ym(e){try{let r=(await eE(e,"utf8")).trim();if(r==="")return vo();let s;try{s=JSON.parse(r)}catch{s=L(r)}if(hE(s))return{...s,blobs:s.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=vo();return await Jn(e,s),s}let r=vo();return await Jn(e,r),r}let t=vo();return await Jn(e,t),t}async function bm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function wm(e){return sE(e)==="red-skills.rdb"}async function $o(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ur(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ur(rE(),".cache","red-skills","bundles")),t=Ur(e,"reddb"),n;try{n=await im(t)}catch{return}n.sort().reverse();for(let r of n){let s=Ur(t,r,process.platform==="win32"?"red.exe":"red");if(XS(s)){process.env.REDDB_BIN=s;return}}}async function Jn(e,t){await ZS(oE(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await nE(n,`${C(Cc(t))}
69
+ `,"utf8"),await tE(n,e)}function Cc(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=>Cc(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Cc(r));return t}return String(e)}function vo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function hE(e){return ve(e)&&e.version===1&&ve(e.records)&&Object.values(e.records).every(Yr)&&(e.blobs===void 0||ve(e.blobs)&&Object.values(e.blobs).every(Po))&&ve(e.tombstones)&&Object.values(e.tombstones).every(Io)&&Mc(e.index)}function _m(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return iE(e)}var Do=g(()=>{"use strict";N();Wr();xo()});async function Rm(e,t){return yE?_E(e,t):bE?kE(e,t):wE(e,t)}async function wE(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{r.stdin.write(s,a=>a?i(a):o())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",o=>s(o??0))})}}}function _E(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){r?await r.write(s):(n.stdin.write(s),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:RE(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*RE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function kE(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:SE(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*SE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var yE,bE,km=g(()=>{yE=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",bE=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as EE}from"node:fs";import{join as xE}from"node:path";function Sm(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[r];if(typeof s=="string"&&s!=="")return s;let o=xE(n,"bin",t);if(EE(o))return o;throw new Error(`reddb: binary "${t}" not found.
64
70
  expected at: ${o}
65
- override: set ${n}=/path/to/${t}
71
+ override: set ${r}=/path/to/${t}
66
72
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
67
- or check the postinstall log for a download error.`)}var Af=h(()=>{});import{fileURLToPath as eS}from"node:url";import{dirname as tS,resolve as rS,join as d$}from"node:path";function oS(){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:oS(),packageRoot:sS,envVar:"REDDB_BIN"})}var nS,sS,Lf=h(()=>{Af();nS=tS(eS(import.meta.url)),sS=rS(nS,"..")});var iS,aS,v,ho,yt=h(()=>{iS=new TextEncoder,aS=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},ho=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(iS.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(aS.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:/"?cS(e):uS(e)}function cS(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=lS(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 uS(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 lS(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 pS(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 fS(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 dS,Mn,gc=h(()=>{yt();dS=new Set(["embedded"]),Mn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&dS.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:fS(n.value)}async put(t,r,n,s={}){this._guard("put");let o=pS(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)}.${mS(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 mS(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function gS(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)} = ${gS(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(`
73
+ or check the postinstall log for a download error.`)}var Em=g(()=>{});import{fileURLToPath as vE}from"node:url";import{dirname as CE,resolve as TE,join as EN}from"node:path";function PE(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function xm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Sm({name:PE(),packageRoot:AE,envVar:"REDDB_BIN"})}var OE,AE,vm=g(()=>{Em();OE=CE(vE(import.meta.url)),AE=TE(OE,"..")});var IE,LE,v,No,vt=g(()=>{IE=new TextEncoder,LE=new TextDecoder("utf-8"),v=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},No=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,n={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((o,i)=>{this.pending.set(r,{resolve:o,reject:i}),this.child.stdin.write(IE.encode(s+`
74
+ `)).catch(a=>{this.pending.delete(r),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 n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#n(LE.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let r=n.id;if(r==null)return;let s=this.pending.get(r);s&&(this.pending.delete(r),n.error?s.reject(new v(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):s.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new v("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function jc(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:/"?$E(e):DE(e)}function $E(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 n;try{n=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),o=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let i=NE(s),a=n.port?Number(n.port):Fc(i),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:i,host:n.hostname,port:a,path:o||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function DE(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],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Fc(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.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(n){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Fc(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 NE(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 Fc(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 Gc=g(()=>{vt()});function BE(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Cm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Cm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Cm(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function FE(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var ME,Qr,Hc=g(()=>{vt();ME=new Set(["embedded"]),Qr=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&ME.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,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:FE(r.value)}async put(t,n,r,s={}){this._guard("put");let o=BE(r);await this._client.call("cache.put",{namespace:t,key:n,value:o,...s})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function Wc(e,t){return`${Uc(e)}.${jE(t)}`}function Uc(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function jE(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function GE(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 Tm(e){return`'${String(e).replace(/'/g,"''")}'`}var Vn,qc=g(()=>{vt();Vn=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Tm).join(", ")}]`:"",i=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Wc(s,t)} = ${GE(n)}${i}${o}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${Wc(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let s of t)r.push(await this.get(s,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${Wc(r,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=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 ${Uc(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Tm).join(", ")}] FROM ${Uc(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,s=new URLSearchParams;n.sinceLsn!=null&&s.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&s.set("limit",String(n.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/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(`
69
75
 
70
76
  `)){let l=u.split(`
71
- `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function hS(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 yS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function bS(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 ${yS(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 wS(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 Bn,kc=h(()=>{yt();Bn=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=bS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${wS(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=hS(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 _S(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 yo(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 RS(e){return Bf(JSON.stringify(e))}function kS(e){return JSON.stringify(e)}function SS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?RS(e):Bf(e)}function Bf(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,Sc=h(()=>{yt();Fn=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 ${yo(t)} DOCUMENT VALUES (${kS(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=_S(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 ${yo(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)} = ${SS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${yo(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 ${yo(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function ES(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return vS(e)}function xS(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 vS(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 jn,Ec=h(()=>{jn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){xS(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)} = ${ES(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 CS(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 TS(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 Hn,xc=h(()=>{Hn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){CS(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)} = ${TS(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(OS)}async function Wf(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${AS(t)}`)).rows??[]).some(n=>n.name===String(t))}function OS(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(PS).join(".")}function PS(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 AS(e){return`'${String(e).replace(/'/g,"''")}'`}var Gn,vc=h(()=>{yt();Gn=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 _o(e,t={}){let r=fc(e);if(HS(r),r.kind==="embedded"){let n=jS(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=FS(r),o=t.binary??If(),i=await Tf(o,s),a=new ho(i);return await a.call("version",{}),new Tc(a,{transport:"embedded"})}}function Jf(e){return $S(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:NS(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&BS(e)?{$uuid:e}:e}function $S(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 DS(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jf):e.map(Jf)}function NS(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 MS(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 BS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function bo(e){if(Array.isArray(e))return e.map(bo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return MS(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]=bo(s);return r}return e}function FS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function jS(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 HS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",IS)}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 GS(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 WS(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 IS,LS,qf,Uf,wo,Cc,Tc,Kf=h(()=>{Of();Lf();yt();mc();gc();bc();kc();Sc();Ec();xc();vc();gc();bc();kc();Sc();Ec();xc();vc();mc();IS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",LS="1.0",qf="1.0.9",Uf="NESTED_TX_NOT_SUPPORTED";wo=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 wo(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=LS,this.cache=new Mn(t,this.transport),this.queue=new Bn(t),this.queues=this.queue,this.documents=new Fn(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 jn(t,s),this.vault=(s="red.vault")=>new Hn(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=DS(r);return n==null?this.client.call("query",{sql:t}).then(bo):this.client.call("query",{sql:t,params:n}).then(bo)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return GS(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 WS(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 wo(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 Gn(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 US}from"node:crypto";import{existsSync as zf}from"node:fs";import{mkdir as JS,readFile as qS,rename as Pc,rm as Wn,stat as Ac}from"node:fs/promises";import{basename as VS,dirname as KS}from"node:path";async function Yf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Xf=h(()=>{"use strict";Kf();so();go();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:uo(t.ttlDays,Ce),ephemeralTtlHours:uo(t.ephemeralTtlHours,Te),byteBudget:uo(t.byteBudget,Oe),now:t.now??(()=>new Date)});return vf(n)?(await mo(),await JS(KS(n),{recursive:!0}),s.db=await _o(`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=Ln(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(!Dn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Nn(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:$n(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:$n(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 po(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 lo(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=Ln(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&&!lo(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(!Dn(t))return null;let r=await this.kvGet(Kt(t));if(po(r))return r;let n=await this.kvGet(ht(t));if(!Nn(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:$n(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:$n(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 qS(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=VS(s),c=US("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(ao());return lc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ao(),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 Wn(o,{force:!0}),await Wn(i,{force:!0});let a=await _o(`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 Wn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Pc(this.path,i),await Pc(o,this.path),await Wn(i,{force:!0})}catch(u){throw!zf(this.path)&&zf(i)&&await Pc(i,this.path),await Wn(o,{force:!0}),u}finally{this.db=await _o(`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:ao(),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(!Nn(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:()=>Ln,ensureReddbBinaryFromWarmCache:()=>mo,provisionElisionStore:()=>Yf,storageClassForCommand:()=>ct});var Ro=h(()=>{"use strict";so();go();go();Xf()});async function ko(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 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=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=zS(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 zS(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 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:sE(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)/fE()))),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)),mi=mt(k.wrapper_ms);if(mi!=null){w.push(mi);let ol=_.get(ke)??[];ol.push(mi),_.set(ke,ol)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let gi=cE(O);gi&&b.set(gi,(b.get(gi)??0)+1);let hi=dE(O);hi&&R.set(hi,(R.get(hi)??0)+Se);let ds=T.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ds.invocations++,ds.tokens_saved+=Se,ds.bytes_saved+=ar,T.set(ke,ds),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=QS(Vr),Ye=ZS(l),Tt=tE([...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:uE(b)},savings:{tokens:pa(B,Re),measured_control_holdout:YS(c,u),weekly_tokens_saved:pE(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 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,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 Un(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 YS(e,t){let r=nE(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(rE(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:XS(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 XS(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 ZS(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 QS(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:eE(r)}))}function eE(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 tE(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 rE(e){return e.reduce((t,r)=>t+r,0)/e.length}function nE(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function sE(e){let t=iE();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=oE(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 oE(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function iE(){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=>aE(n.value)).filter(n=>Cr(n))}function aE(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 cE(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${lE(t.getUTCDay())}:${t.getUTCHours()}`:null}function uE(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 lE(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function dE(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 pE(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 fE(){return 24*60*60*1e3}var rm=h(()=>{"use strict";On();Ro();fa();Qs();qa()});var Jn={};F(Jn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ue,RSP_TELEMETRY_INDEX_COLLECTION:()=>xn,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:()=>ko,takeTelemetrySpool:()=>mk,telemetryLegacySpoolPath:()=>ro,telemetrySpoolCorrectionsPath:()=>Xa,telemetrySpoolPath:()=>it});var Ie=h(()=>{"use strict";Qs();pf();rm()});var sm={};F(sm,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Vs,sweepGhEtagCache:()=>Fa});import{spawn as mE}from"node:child_process";import{createHash as gE,randomUUID as hE}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=yE(e.path,e.params),i=bE(o),c=qi(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 wE(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=_E(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 yE(e,t){return JSON.stringify({method:"GET",path:e,params:nm(t)})}function bE(e){return gE("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function wE(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=mE("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 _E(e){let t=e.replace(/\r\n/g,`
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(`
77
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function HE(e,t,n){let{waitMs:r,group:s=null,count:o=null}=n??{};if(!Number.isInteger(r)||r<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=bt(e),a=bt(t),c=s!=null?` GROUP ${bt(s)}`:"",u=o!=null?Vc(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function bt(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 Vc(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 WE(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function UE(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 ${WE(e.priority)}`),e.key!=null&&(t+=` KEY ${Kc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Kc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function qE(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Kc(e):JSON.stringify(e)}function Kc(e){return`'${String(e).replace(/'/g,"''")}'`}function Jc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Xr,zc=g(()=>{vt();Xr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${bt(t)}`})}push(t,n,r={}){let s=UE(r);return this.client.call("query",{sql:`QUEUE PUSH ${bt(t)} ${qE(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${bt(t)}${Vc(n)}`});return Jc(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${bt(t)}${Vc(n)}`});return Jc(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${bt(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${bt(t)}`})}async readWait(t,n,r={}){let s=HE(t,n,r),o=await this.client.call("query",{sql:s});return Jc(o)}}});function Om(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function JE(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 Mo(e){return String(e).split(".").map(Am).join(".")}function Am(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 VE(e){return Pm(JSON.stringify(e))}function KE(e){return JSON.stringify(e)}function zE(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?VE(e):Pm(e)}function Pm(e){return`'${String(e).replace(/'/g,"''")}'`}var Zr,Yc=g(()=>{vt();Zr=class{constructor(t){this.db=t}async insert(t,n){Om(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Mo(t)} DOCUMENT VALUES (${KE(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:s.rid,item:s}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new v("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=JE(n.limit),s=n.orderBy??n.order_by??"rid ASC",o=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Mo(t)}${o} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Om(r,"documents.patch patch");let s=Object.entries(r);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])=>`${Am(c)} = ${zE(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Mo(t)} SET ${o} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let s=(await this.db.delete(t,n)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Mo(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function YE(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Ct(n)}.${Ct(r)})`}return XE(e)}function QE(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Ct(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 XE(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Im(e)}function Im(e){return`'${String(e).replace(/'/g,"''")}'`}var es,Qc=g(()=>{es=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){QE(r,"config");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Im).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Ct(s)} ${Ct(t)} = ${YE(n,r)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Ct(r)} ${Ct(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Ct(r)} ${Ct(t)}`})}}});function ZE(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Kn(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 ex(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Lm(e)}function Lm(e){return`'${String(e).replace(/'/g,"''")}'`}var ts,Xc=g(()=>{ts=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ZE(r,"vault");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Lm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Kn(s)}.${Kn(t)} = ${ex(n)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Kn(r)}.${Kn(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Kn(r)}.${Kn(t)}`})}}});async function Dm(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(tx)}async function Nm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${rx(t)}`)).rows??[]).some(r=>r.name===String(t))}function tx(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function $m(e){return String(e).split(".").map(nx).join(".")}function nx(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 rx(e){return`'${String(e).replace(/'/g,"''")}'`}var ns,Zc=g(()=>{vt();ns=class e{constructor(t,n,r=null,s=[],o=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=o}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map($m).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${$m(this.collection)}${n}`,o=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).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 jo(e,t={}){let n=jc(e);if(px(n),n.kind==="embedded"){let r=fx(n,t.auth);if(r.token||r.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=dx(n),o=t.binary??xm(),i=await Rm(o,s),a=new No(i);return await a.call("version",{}),new tu(a,{transport:"embedded"})}}function Bm(e){return ix(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:cx(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&lx(e)?{$uuid:e}:e}function ix(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 ax(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Bm):e.map(Bm)}function cx(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 n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function ux(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function lx(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Bo(e){if(Array.isArray(e))return e.map(Bo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ux(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 r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,s]of Object.entries(e))n[r]=Bo(s);return n}return e}function dx(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function fx(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;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");n.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");n.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");n.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");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function px(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",sx)}function nu(){return new v(Mm,`${Mm}: nested transactions are not supported on one connection`)}function jm(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function mx(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Fm} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function gx(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 >= ${Fm} 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 sx,ox,Fm,Mm,Fo,eu,tu,Gm=g(()=>{km();vm();vt();Gc();Hc();qc();zc();Yc();Qc();Xc();Zc();Hc();qc();zc();Yc();Qc();Xc();Zc();Gc();sx="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ox="1.0",Fm="1.0.9",Mm="NESTED_TX_NOT_SUPPORTED";Fo=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw nu()}},eu=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw nu();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 n=await t(new Fo(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){jm(n,r)}throw n}}},tu=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=ox,this.cache=new Qr(t,this.transport),this.queue=new Xr(t),this.queues=this.queue,this.documents=new Zr(this);let r=new Vn(t);this.kv=Object.assign((s="kv_default")=>new Vn(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new es(t,s),this.vault=(s="red.vault")=>new ts(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=ax(n);return r==null?this.client.call("query",{sql:t}).then(Bo):this.client.call("query",{sql:t,params:r}).then(Bo)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return mx(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return gx(r,n.length)}tx(){return new eu(this)}async transaction(t){if(this.inTransaction)throw nu();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new Fo(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){jm(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Nm(this,t)}list(){return Dm(this)}from(t){return new ns(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as hx}from"node:crypto";import{existsSync as Hm}from"node:fs";import{mkdir as yx,readFile as bx,rename as ru,rm as rs,stat as su}from"node:fs/promises";import{basename as wx,dirname as _x}from"node:path";async function Wm(e){await(await an.open({...e,allowResidentOpen:!0})).close()}var an,Um=g(()=>{"use strict";Gm();xo();Do();an=class e{constructor(t,n){this.opts=n;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 n=_m(t.uri),r=await bm(n),s=new e(r,{uri:t.uri,ttlDays:Ao(t.ttlDays,Ne),ephemeralTtlHours:Ao(t.ephemeralTtlHours,Me),byteBudget:Ao(t.byteBudget,Be),now:t.now??(()=>new Date)});return wm(r)?(await $o(),await yx(_x(r),{recursive:!0}),s.db=await jo(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await ym(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,n){if(this.db)return await this.mintRedDb(t,n);let r=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Vr(r,n),a=xt(i),c=yt(n.command),u=c==="derivable"?Ic(r,n.command):null,l=c==="re-executable"?Lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Pc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Nc(r,m,o):null,b=$c(r,u,l,p);p&&!this.document.blobs[p.key]&&(this.document.blobs[p.key]=p,this.dirty=!0);let _={collection:Y,handle:i,original_bytes:r.length,stored_bytes:b,command:n.command,created_at:o,expires_at:d,loss:n.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};return delete this.document.tombstones[sn(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:b,raw_bytes:r.length,command:n.command,created_at:o,expires_at:d,storage_class:f,blob_key:p?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!zr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[xt(t)];if(!Yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:xt(r.handle),bytes:Dc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kr(r),blob_key:r.blob_key},r.expires_at),await this.flush(),o}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kr(r)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:on(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:Oc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Ac(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let i of r.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=on(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,n),o=on(s)}s.length<r.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[sn(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[sn(t)];return Io(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return lm(t.derivation_recipe);if(t.reexecution_recipe)return dm(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Po(n)?um(n):null}return null}deleteUnreferencedLocalBlobs(t){let n=new Set(t.map(r=>r.blob_key).filter(r=>typeof r=="string"));for(let r of Object.keys(this.document.blobs))n.has(r)||(delete this.document.blobs[r],this.dirty=!0)}async flush(){this.dirty&&(await Jn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await su(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let n=this.readIndex().records,r=new Set(n.map(a=>a.key)),s=new Set(n.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>r.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:n}},i=Buffer.byteLength(`${JSON.stringify(o)}
78
+ `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Jn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Y)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}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(n=>n.name===Y);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Y}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Y}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Vr(r,n),a=xt(i),c=yt(n.command),u=c==="derivable"?Ic(r,n.command):null,l=c==="re-executable"?Lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Pc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Nc(r,m,o):null,b=$c(r,u,l,p);p&&!Po(await this.kvGet(p.key))&&await this.kv().put(p.key,p);let _={collection:Y,handle:i,original_bytes:r.length,stored_bytes:b,command:n.command,created_at:o,expires_at:d,loss:n.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};await this.kv().delete(sn(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return y.push({handle:i,key:a,bytes:b,raw_bytes:r.length,command:n.command,created_at:o,expires_at:d,storage_class:f,blob_key:p?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,b),i}async getRedDb(t){if(!zr(t))return null;let n=await this.kvGet(sn(t));if(Io(n))return n;let r=await this.kvGet(xt(t));if(!Yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:xt(r.handle),bytes:Dc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kr(r),blob_key:r.blob_key},r.expires_at),o}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:on(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Oc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return Ac(n.records,this.opts.now(),t)}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=pm(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=mm(n);return await this.memoryIngestRedDb(r)}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 n=await gm(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let i=(await bx(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=wx(s),c=hx("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}},f=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(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=r.rows.map(i=>hm(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
79
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(To());return Mc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(To(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=on(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=on(o)}let a={version:1,records:o};return(n||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 n=await su(this.path).then(u=>u.size,()=>0);if(n<=this.opts.byteBudget)return;let r=await this.snapshotRedDbKvCollections(t);if(!r)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await rs(o,{force:!0}),await rs(i,{force:!0});let a=await jo(`file://${o}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${am(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await su(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await rs(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await ru(this.path,i),await ru(o,this.path),await rs(i,{force:!0})}catch(u){throw!Hm(this.path)&&Hm(i)&&await ru(i,this.path),await rs(o,{force:!0}),u}finally{this.db=await jo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.list();if(n.some(o=>o.model!=="kv"))return null;let r=[],s=!1;for(let o of n){let i=String(o.name??"").trim();if(i===Y){r.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;r.push({name:i,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:To(),value:t}],r=new Set;for(let s of t.records)r.add(s.key),s.blob_key&&r.add(s.blob_key);for(let s of r){let o=await this.kvGet(s);o!=null&&n.push({key:s,value:o})}return{name:Y,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(sn(t.handle),{status:"expired",expired_at:n,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let n=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),r=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of r.items)s.key.startsWith("blob:")&&!n.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(xt(t));if(!Yr(r))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!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var qm={};B(qm,{DEFAULT_RSP_BYTE_BUDGET:()=>Be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Me,DEFAULT_RSP_TTL_DAYS:()=>Ne,RSP_ELISION_COLLECTION:()=>Y,RspElisionStore:()=>an,contentHandle:()=>Vr,ensureReddbBinaryFromWarmCache:()=>$o,provisionElisionStore:()=>Wm,storageClassForCommand:()=>yt});var Go=g(()=>{"use strict";xo();Do();Do();Um()});async function Ho(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,o=await Km(e,s),i=(await ss(e,te)).filter(E=>Yn(E)>=s),a=o.filter(E=>A(E.event_type)!=="show"&&A(E.degradation_reason)===""),c=o.filter(E=>A(E.event_type)==="show"),u=o.filter(E=>A(E.degradation_reason)!==""),l=0,f=0,d=0,m=0,p=!1,b=new Map,_=new Map,h=[],y=0,w=0,k=0;for(let E of a){E.elided===!0&&l++;let I=Ee(E.raw_bytes),ot=Ee(E.emitted_bytes),Mt=Math.max(0,I-ot),yn=Qn(E,"raw"),S=Qn(E,"emitted"),O=Math.max(0,yn.tokens-S.tokens);p||=(E.estimated===!0||yn.estimated||S.estimated)&&O>0,f+=I,d+=ot,m+=O;let Bt=cn(E).slice(0,10);Bt&&b.set(Bt,(b.get(Bt)??0)+O);let Ft=A(E.command)||"unknown",Oe=_.get(Ft)??{command:Ft,invocations:0,bytes_saved:0,tokens_saved:0};Oe.invocations++,Oe.bytes_saved+=Mt,Oe.tokens_saved+=O,_.set(Ft,Oe);let Ae=St(E.wrapper_ms);Ae!=null&&h.push(Ae),y+=Ee(E.store_open_count);let bn=St(E.store_elapsed_ms);bn!=null&&(w+=bn,k++)}let T=new Map,M=new Map,Te=[],we=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",ot=A(E.wrapper_family)||xe(A(E.command));T.set(I,(T.get(I)??0)+1),M.set(ot,(M.get(ot)??0)+1);let Mt=cn(E);Te.push({timestamp:Mt,family:ot,command:A(E.command)||"unknown",reason:I,exit_code:St(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!we||Mt>we.timestamp)&&(we={timestamp:Mt,reason:I,command:A(E.command)||"unknown"})}let de=a.length+u.length,wt=c.filter(E=>E.hit===!0).length,fe=Fa(m,p),cr=Rx(i);return{window_days:r,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:m,tokens_saved_estimated:fe.tokens_saved_estimated,token_estimate_range_pct:fe.token_estimate_range_pct,tokens_saved_low:fe.tokens_saved_low,tokens_saved_high:fe.tokens_saved_high,dollars_saved_estimate_usd:fe.dollars_saved_estimate_usd,dollars_saved_low_usd:fe.dollars_saved_low_usd,dollars_saved_high_usd:fe.dollars_saved_high_usd,pricing_model_family:fe.pricing_model_family,pricing_input_usd_per_million_tokens:fe.pricing_input_usd_per_million_tokens,pricing_note:fe.pricing_note,daily_tokens_saved:[...b.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:de===0?0:u.length/de,show_total:c.length,show_hits:wt,show_misses:Math.max(0,c.length-wt),show_hit_rate:c.length===0?0:ne(wt/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:[...M.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Te.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:we},latency:{wrapper_ms_p50:zn(h,.5),wrapper_ms_p95:zn(h,.95),store_open_count_sum:y,store_elapsed_ms_sum:ne(w),store_elapsed_ms_avg:k===0?null:ne(w/k)},decisions:cr}}function Rx(e){let t=0,n=0,r=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?r++:n++,a.quota_free===!0&&(s+=Math.max(1,Ee(a.saved_units))),c!=="contributed"){let f=A(a.reason)||"unknown";o.set(f,(o.get(f)??0)+1)}let u=A(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:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:ne(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:ne(c.contributed/u)}})}}async function ou(e,t,n=new Date){let s=(await ss(e,pe)).filter(o=>Yn(o)<=n.getTime()||cn(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=cn(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:Ax(s)}}async function iu(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),o=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await Km(e,i),c=a.filter(S=>A(S.event_type)!=="show"&&A(S.event_type)!=="control_holdout"&&S.control_holdout!==!0&&A(S.degradation_reason)===""),u=a.filter(S=>A(S.event_type)==="control_holdout"||S.control_holdout===!0),l=a.filter(S=>A(S.event_type)==="show"),f=a.filter(S=>A(S.degradation_reason)!==""),d=[...c,...f].map(Yn).filter(S=>Number.isFinite(S)&&S>0),m=d.length===0?null:Math.min(...d),p=m==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-m)/Fx()))),b=[],_=new Map,h=new Map,y=new Map,w=new Map,k=new Map,T=new Map,M=0,Te=!1,we=0,de=null,wt=0,fe=0;for(let S of c){let O=cn(S),Bt=O.slice(0,10),Ft=O.slice(0,16),Oe=xe(A(S.command)),Ae=Math.max(0,Qn(S,"raw").tokens-Qn(S,"emitted").tokens);M+=Ae,Te||=S.estimated===!0&&Ae>0;let bn=Math.max(0,Ee(S.raw_bytes)-Ee(S.emitted_bytes)),$i=St(S.wrapper_ms);if($i!=null){b.push($i);let Il=_.get(Oe)??[];Il.push($i),_.set(Oe,Il)}Bt&&h.set(Bt,(h.get(Bt)??0)+1),Ft&&y.set(Ft,(y.get(Ft)??0)+1);let Di=$x(O);Di&&w.set(Di,(w.get(Di)??0)+1);let Ni=Mx(O);Ni&&k.set(Ni,(k.get(Ni)??0)+Ae);let xs=T.get(Oe)??{command_family:Oe,invocations:0,tokens_saved:0,bytes_saved:0};xs.invocations++,xs.tokens_saved+=Ae,xs.bytes_saved+=bn,T.set(Oe,xs),S.elided===!0&&we++,(S.store_open_count!=null||S.store_elapsed_ms!=null)&&(wt++,Ee(S.store_open_count)>0&&fe++),Ae>0&&(!de||Ae>de.tokens_saved||Ae===de.tokens_saved&&bn>de.bytes_saved)&&(de={timestamp:O,command_family:Oe,tokens_saved:Ae,bytes_saved:bn})}let cr=f.map(S=>({timestamp:cn(S),command_family:xe(A(S.command)),reason:A(S.degradation_reason)||A(S.reason)||"unknown"})).sort((S,O)=>S.timestamp.localeCompare(O.timestamp)),E=new Map;for(let S of cr)E.set(S.reason,(E.get(S.reason)??0)+1);let I=xx(cr),ot=Ex(l),Mt=Cx([...T.values()],ot,I),yn=[...y.entries()].sort((S,O)=>O[1]-S[1]||S[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:p,since:o,until:s,label:`window: ${r}d, data: ${p}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Vm(b),by_command_family:[..._.entries()].sort((S,O)=>O[1].length-S[1].length||S[0].localeCompare(O[0])).map(([S,O])=>({command_family:S,count:O.length,...Vm(O)}))},throughput:{requests_per_day:[...h.entries()].sort(([S],[O])=>S.localeCompare(O)).map(([S,O])=>({date:S,requests:O})),active_minute_avg:y.size===0?null:ne([...y.values()].reduce((S,O)=>S+O,0)/y.size),peak_minute:yn?{minute:yn[0],requests:yn[1]}:null,hour_weekday_heatmap:Dx(w)},savings:{tokens:Fa(M,Te),measured_control_holdout:kx(c,u),weekly_tokens_saved:Bx(k),elision_rate:c.length===0?0:ne(we/c.length),top_commands_by_tokens_saved:[...T.values()].sort((S,O)=>O.tokens_saved-S.tokens_saved||O.bytes_saved-S.bytes_saved||S.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((S,O)=>O.invocations-S.invocations||O.tokens_saved-S.tokens_saved||S.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:de},health:{degradation_timeline:cr,degradations_by_reason:[...E.entries()].sort((S,O)=>O[1]-S[1]||S[0].localeCompare(O[0])).map(([S,O])=>({reason:S,count:O})),cold_boots:wt===0?null:fe,warm_hits:wt===0?null:Math.max(0,wt-fe)},mining:{recovery_usage_by_family:ot,degradation_clusters:I,threshold_tuning_suggestions:Mt}}}async function Km(e,t){let n=(await ss(e,pe)).filter(i=>Yn(i)>=t),r=n.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await ss(e,Se)).filter(i=>Yn(i)>=t).filter(i=>!r&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await ss(e,Ze)).filter(i=>Yn(i)>=t).filter(i=>!r&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...n,...s,...o]}function Qn(e,t){let n=St(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Ee(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function kx(e,t){let n=Ox(t.map(a=>St(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,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 r=e.map(Jm).filter(a=>a!=null),s=t.map(Jm).filter(a=>a!=null),o=r.length>0?r:s,i=o.length===0?null:ne(Tx(o));return{enabled:!0,holdout_share:ne(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:Sx(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Jm(e){let t=Qn(e,"raw").tokens;if(t<=0)return null;let n=Qn(e,"emitted").tokens;return Math.max(0,t-n)/t}function Sx(e,t){if(e.length<=1)return{low:ne(Math.max(0,t)),high:ne(Math.min(1,t))};let n=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:ne(Math.max(0,t-r)),high:ne(Math.min(1,t+r))}}function Ex(e){let t=new Map;for(let n of e){let r=xe(A(n.recovered_command)||A(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:ne(n.show_hits/n.show_total)}))}function xx(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:vx(n)}))}function vx(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 Cx(e,t,n){let r=[];for(let s of t.filter(o=>o.show_total>0))r.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 n.filter(o=>o.count>1))r.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))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function Tx(e){return e.reduce((t,n)=>t+n,0)/e.length}function Ox(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function Ax(e){let t=Ix();for(let n of e){if(A(n.event_type)==="show"||A(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Px(n.storage_class)??yt(A(n.command));t[r].records+=1;let s=Ee(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Px(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Ix(){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 ss(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>Lx(r.value)).filter(r=>Hn(r))}function Lx(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Yn(e){let t=Date.parse(cn(e));return Number.isFinite(t)?t:0}function cn(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function zn(e,t){if(e.length===0)return null;let n=[...e].sort((s,o)=>s-o),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return ne(n[r])}function Vm(e){return{wrapper_ms_p50:zn(e,.5),wrapper_ms_p90:zn(e,.9),wrapper_ms_p95:zn(e,.95),wrapper_ms_p99:zn(e,.99)}}function ne(e){return Math.round(e*100)/100}function $x(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Nx(t.getUTCDay())}:${t.getUTCHours()}`:null}function Dx(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let s=e.get(`${n}:${r}`)??0;s>0&&t.push({weekday:n,hour:r,requests:s})}return t}function Nx(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Mx(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function Bx(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:ne((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function Fx(){return 24*60*60*1e3}var zm=g(()=>{"use strict";Wr();Go();ja();_o();wc()});var os={};B(os,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>pe,RSP_DECISIONS_COLLECTION:()=>te,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ze,RSP_TELEMETRY_INDEX_COLLECTION:()=>Fr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>yc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>bc,RSP_TELEMETRY_SPOOL_FILE:()=>hc,appendTelemetryEvent:()=>ht,appendTelemetryEventSync:()=>Et,drainTelemetrySpool:()=>xc,parseTelemetryEvent:()=>Un,readAccountingLaneStats:()=>ou,readTelemetryGainsReport:()=>iu,readTelemetryStats:()=>Ho,takeTelemetrySpool:()=>jS,telemetryLegacySpoolPath:()=>So,telemetrySpoolCorrectionsPath:()=>Ec,telemetrySpoolPath:()=>gt});var Ge=g(()=>{"use strict";_o();om();zm()});var Qm={};B(Qm,{readGhConditionalJson:()=>me,readGhEtagCache:()=>mo,sweepGhEtagCache:()=>fc});import{spawn as jx}from"node:child_process";import{createHash as Gx,randomUUID as Hx}from"node:crypto";async function me(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=process.hrtime.bigint(),s=e.overheadCeiling??De,o=Wx(e.path,e.params),i=Ux(o),c=wa(n,"gh-api-json")?void 0:await uc(n,i),u=["api","--include","--method","GET",e.path];for(let[p,b]of Ym(e.params))u.push("-f",`${p}=${String(b)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await qx(u,t,e.env,e.signal),f=p=>{let b=Sr();Rr(n,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-r)/1e6,childMs:b.childMs,selfStateBytesRead:b.selfStateBytesRead,bytesSaved:p},s)},d=Jx(l.stdout);if(d.statusCode===304&&!!c)return f(Buffer.byteLength(c.body)),await au(n,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 p=d.headers.get("etag");return p&&await lc(n,{key:i,request:o,etag:p,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),f(0),await au(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:p??void 0,quotaFree:!1}}return f(0),await au(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function Ym(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Wx(e,t){return JSON.stringify({method:"GET",path:e,params:Ym(t)})}function Ux(e){return Gx("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function qx(e,t,n,r){return r?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,r?.removeEventListener("abort",c),s(d))},a=jx("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}r?.addEventListener("abort",c,{once:!0});let u=ce();a.once("close",u),a.once("error",u);let l=[],f=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>f.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(f).toString("utf8").trim()})})})}function Jx(e){let t=e.replace(/\r\n/g,`
80
+ `),n=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(n.length===0)return{statusCode:0,headers:new Map,body:e};let r=n[n.length-1],s=Number(r[1]),o=r.index+r[0].length,i=t.indexOf(`
75
81
 
76
82
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
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:hE(),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 So=h(()=>{"use strict";En();En();J();Ie()});import{spawn as RE}from"node:child_process";async function qn(e,t){return await kE(t,async r=>{let n=await EE(e,t.cwd,r);return n||await SE(e,t.cwd,r)})}async function kE(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 SE(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=RE("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&Ns(l).then(p=>Ds(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 EE(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await xE(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=Hs(e,"--branch"),s=Hs(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=Hs(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 xE(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:vE(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 vE(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";So();Gs();st()});function am(e,t,r){let n=Date.now();return()=>CE(e,t,r,n)}async function CE(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return z("missing PR number");let s=await qn(["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(TE),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 qn(["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 qn(["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 qn(["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||OE(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 TE(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 OE(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var dm=h(()=>{"use strict";Wt();om();Gs()});function Vn(){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 PE(e){return Object.keys(e)}function Mr(e){return{...e,fields:PE(e.fields)}}var mm,gm,hm,AE,IE,LE,ym,Nc=h(()=>{"use strict";mm="red.castle.lane.v1",gm="red.castle.state.v1",hm="red.castle.history.v1",AE="red.castle.validation.v2",IE="red.castle.envelope.v1",LE="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:AE,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:IE,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:LE,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 FD,Eo=h(()=>{"use strict";N();Nc();FD=new Map(ym.map(e=>[e.schemaId,new Set(e.fields)]))});var bm=h(()=>{"use strict";fm();Eo()});var wm=h(()=>{"use strict"});var xo=h(()=>{"use strict"});var Mc=h(()=>{"use strict";xo()});var vo=h(()=>{"use strict"});import{appendFile as NE,mkdir as ME,readFile as BE}from"node:fs/promises";import{dirname as FE,join as jE}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 HE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function GE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function WE(e){return jE(e.castleStateRoot,"singleton-events.toonl")}function Fc(e,t={}){let r=t.fs??{appendFile:NE,mkdir:ME,readFile:BE},n=t.clock??(()=>new Date().toISOString()),s=WE(e);return{path:s,async append(o){let i=_m({at:o.at??n(),...o});return await r.mkdir(FE(s),{recursive:!0}),await r.appendFile(s,Nt().push(HE(i)),"utf8"),i},async read(o={}){GE(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 Co=h(()=>{"use strict";N();vo();jc()});var Rm=h(()=>{"use strict";xo();Mc();Co()});var km=h(()=>{"use strict"});var SN,Sm=h(()=>{"use strict";N();SN=24*60*60*1e3});var Em=h(()=>{"use strict";Eo()});var CN,TN,xm=h(()=>{"use strict";CN=15*6e4,TN=30*6e4});var vm=h(()=>{"use strict"});var JE,qE,AN,IN,Cm=h(()=>{"use strict";JE=["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"],qE={pre_worktree:["cargo","gradle"]},AN=Object.values(qE).flat(),IN=new Set(JE)});var Tm=h(()=>{"use strict"});var Om=h(()=>{"use strict";Co()});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,VE),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 VE,Nm=h(()=>{"use strict";VE="default"});var Mm=h(()=>{"use strict";vo()});var Bm=h(()=>{"use strict"});var Fm=h(()=>{"use strict";Gc();Wc()});import{mkdir as KE,readFile as zE,rename as YE,rm as XE,writeFile as ZE}from"node:fs/promises";import{dirname as QE,join as ex}from"node:path";function rx(e){if(!tx.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function nx(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function sx(e){return e.code==="ENOENT"}function ox(e){return e.code==="EEXIST"}function ix(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 To(e,t){return rx(t),ex(e.castleStateRoot,"singletons",t,"lease.toon")}function jm(e,t={}){let r=t.fs??{mkdir:KE,readFile:zE,rename:YE,rm:XE,writeFile:ZE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??nx;async function o(a){try{return ix(L(await r.readFile(a,"utf8")))}catch(c){if(sx(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(To(e,a))},async acquire(a,c){let u=To(e,a);await r.mkdir(QE(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(!ox(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=To(e,a),l=await o(u);if(!l||!Uc(l,c))throw new Oo(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=To(e,a),l=await o(u);if(!l)return!1;if(!Uc(l,c))throw new Oo(a);return await r.rm(u,{force:!0}),!0}}}var Oo,tx,Hm=h(()=>{"use strict";N();Oo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},tx=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Jc=h(()=>{"use strict"});var Gm=h(()=>{"use strict"});var ax,cx,ux,hM,Wm=h(()=>{"use strict";ax={refreshCadenceS:270,tolerance:3},cx=270,ux=2700,hM={...ax,claimGraceS:cx,recentCommitProtectionS:ux}});var Um=h(()=>{"use strict"});import{execFile as fx}from"node:child_process";import{promisify as mx}from"node:util";var RM,Jm=h(()=>{"use strict";Jc();RM=mx(fx)});var qm=h(()=>{"use strict";pm();bm();wm();xo();Rm();km();Sm();Em();Eo();xm();vm();Cm();Tm();Mc();Om();Pm();Am();Im();Co();Lm();$m();Nc();Gc();Wc();Nm();Mm();Bm();Fm();vo();Hc();jc();Hm();Jc();Gm();Wm();Um();Jm()});import{EventEmitter as gx}from"node:events";import{spawn as hx}from"node:child_process";function Ao(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 Io(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Kn,qc,yx,bx,wx,_x,Po,Vc=h(()=>{Kn="github-webhook",qc="github.webhook.delivery";yx="pull_request,pull_request_review,check_run,check_suite,workflow_run",bx=3,wx=1e3,_x=/no extension matched|unknown command|command not found/i,Po=class extends gx{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,wx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ao(c,n):Io(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=hx(r,["webhook","forward",`--events=${yx}`],{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");_x.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>=bx)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Lo,Vm=h(()=>{"use strict";Vc();Vc();st();Lo=class extends Po{constructor(t){super(t,br)}}});import{EventEmitter as Rx}from"node:events";import{join as kx}from"node:path";function zc(e){let t=Bs(e.cwd),r=Dm(kx(t,".red"));return new Kc({...e,leases:e.leases??jm(r),lane:e.lane??Fc(r),makeForwarder:e.makeForwarder??((n,s)=>new Lo({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 Rx{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(Kn).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"?Ao(a,n):Io(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===Kn&&o.kind===qc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Kn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Yc={};F(Yc,{listWaits:()=>js,renderWaitHelp:()=>Vn,runWait:()=>xx});import{randomUUID as zm}from"node:crypto";import{mkdir as Sx,rm as Ex}from"node:fs/promises";async function xx(e,t=process.cwd()){let r;try{r=await up(e)}catch(n){return await Px(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Vn()),0;if(r.kind==="ls"){let n={schema:tp,version:1,waits:await js(t)};return process.stdout.write(Er(n,r.options.format)),0}return xa(r.kind)?await vx({...r,kind:r.kind},t):(process.stdout.write(Vn()),2)}async function vx(e,t){let r=e.kind,n=Aa({id:zm(),kind:r,target:Ox(e),reason:e.options.reason,pid:process.pid,pid_start_time:await hn(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 Sx(_r(t),{recursive:!0}),await Rr(s,n);let l=await Cx(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=kn(r,n,p,{status:"success"},new Date().toISOString());return await Sn(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 Ex(s,{force:!0}).catch(()=>{})}}async function Cx(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 Zs({probe:am(i,o,{emptyChecksGraceMs:bn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("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 Tx(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 Zs({probe:()=>cm(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("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 Zs({probe:()=>lm(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Tx(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 Ox(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 Px(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=kn(o,a,z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Sn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Xc=h(()=>{"use strict";lp();kp();zp();Wt();Ta();dm();st();Rn();Dc();Km();Rn();Dc()});import{existsSync as Dx}from"node:fs";import{join as Nx}from"node:path";function Mx(){for(let e of(process.env.PATH??"").split(":"))if(e&&Dx(Nx(e,"rsp")))return!0;return!1}function zn(){return Mx()?["rsp"]:[process.execPath,process.argv[1]]}var Zc=h(()=>{"use strict"});var $o={};F($o,{parseProxyCommandLine:()=>eg,rewriteProxyCommandLine:()=>Qm,runProxy:()=>jx});import{spawn as Bx}from"node:child_process";function Fx(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function jx(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 Hx(t.telemetryRoot,r,c),await Zm(r);throw c}for(let c of s)await Gx(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=zn()){let n=Kx(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||Vx(n,a)==="|")return i.text;let c=Wx(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 Hx(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 Gx(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=Bx(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 Wx(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=Yx(o);if(!i)return null;let a=qx(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=Ux(c);if(!l)return null;let p=i.slice(0,a).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...p,...r.map(Fx),...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 Ux(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}:Jx(t,r)}function Jx(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 qx(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 Vx(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Kx(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=zx(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 zx(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 Yx(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 Do=h(()=>{"use strict";J();On();Zc();Ie()});function ng(e,t={}){let r=Xx(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=>nv(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)+tv(d.tokens,n,r.length)+rv(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 Xx(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:Zx(n),tokens:Qx(n),numbers:ev(n),length:n.length}}function Zx(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 Qx(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function ev(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function tv(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 rv(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 nv(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:()=>No,cleanStatusPayload:()=>lg,recoveryInstruction:()=>Le,renderGitContract:()=>ag,runGitWrapper:()=>ov});import{spawn as sv}from"node:child_process";async function ov(e,t){let r=cg(e),n=ug(r.argv),s=await uv(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=lv(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof Mo)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(iv(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=Tv(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)}
83
+ `)){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 au(e,t,n){await ht(e,{collection:te,id:Hx(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}var Wo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as Vx}from"node:child_process";async function is(e,t){return await Kx(t,async n=>{let r=await Yx(e,t.cwd,n);return r||await zx(e,t.cwd,n)})}async function Kx(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let n=new AbortController,r=setTimeout(()=>n.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,n.signal]);try{let o=await t(s);return n.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(r)}}async function zx(e,t,n){return n.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(r=>{let s=!1,o=l=>{s||(s=!0,n.removeEventListener("abort",a),r(l))},i=Vx("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&no(l).then(f=>to(f,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function Yx(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Qx(e[2],t,n);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await me({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Qe(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Bn(s,"database_id")||Bn(s,"id"),status:ee(s,"status").toUpperCase(),conclusion:ee(s,"conclusion").toUpperCase(),workflowName:ee(s,"workflow_name")||ee(s,"name"),headBranch:ee(s,"head_branch"),url:ee(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=ao(e,"--branch"),s=ao(e,"--limit")??"20",o=await me({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:s},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=tn(Qe(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Bn(a,"database_id")||Bn(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=ao(e,"--limit")??"20",s=await me({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=tn(JSON.parse(s.stdout)).map(i=>({tagName:ee(i,"tag_name"),publishedAt:ee(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function Qx(e,t,n){let r=await me({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:n,command:`gh pr view ${e}`});if(r.status!==0)return r;let s=Qe(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Qe(s.head),"sha"),[i,a]=o?await Promise.all([me({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:n,command:`gh pr view ${e} status`}),me({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:n,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?tn(Qe(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Qe(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,a.stderr].filter(Boolean).join(`
84
+ `),stdout:JSON.stringify({number:Bn(s,"number"),state:ee(s,"state").toUpperCase(),mergeable:Xx(s),statusCheckRollup:[...c.map(l=>({conclusion:ee(l,"state").toUpperCase()})),...u.map(l=>({status:ee(l,"status").toUpperCase(),conclusion:ee(l,"conclusion").toUpperCase()}))],url:ee(s,"html_url")})}}function Xx(e){let t=ee(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Xm=g(()=>{"use strict";Wo();co();pt()});function eg(e,t,n){let r=Date.now();return()=>Zx(e,t,n,r)}async function Zx(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return Z("missing PR number");let s=await is(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Z(s.stderr||"gh pr view failed");let o=oc(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(ev),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(o.state)!=="OPEN")return ft("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return ft("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return ft("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return In(`PR #${e} has ${l} pending checks`);if(i.length===0){let f=Date.now()-r;return a==="UNKNOWN"||a==="BLOCKED"||f<n.emptyChecksGraceMs?In(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:f}):ft("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?In(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):ft("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function tg(e,t){if(!e)return Z("missing run id");let n=await is(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return Z(n.stderr||"gh run view failed");let r=oc(n.stdout),s=String(r.status??"").toLowerCase(),o=String(r.conclusion??"").toLowerCase();return s!=="completed"?In(`run ${e} is ${s||"pending"}`):o==="success"?ft("success",`run ${e} succeeded`,Zm(r)):ft("failure",`run ${e} concluded ${o||"unknown"}`,Zm(r))}async function ng(e,t){let n=await is(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return Mn(s)&&s.databaseId!=null?String(s.databaseId):""}async function rg(e,t,n){let r=await is(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return Z(r.stderr||"gh release list failed");let o=tn(JSON.parse(r.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||tv(e,a))&&c>=t});return o?ft("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):In("no matching release is published yet")}function ev(e){let t=Mn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Zm(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 tv(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var sg=g(()=>{"use strict";Zt();Xm();co()});function as(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
85
+ `)}var cu=g(()=>{"use strict"});var og=g(()=>{"use strict";N()});var ig=g(()=>{"use strict"});function nv(e){return Object.keys(e)}function Xn(e){return{...e,fields:nv(e.fields)}}var ag,cg,ug,rv,sv,ov,lg,uu=g(()=>{"use strict";ag="red.castle.lane.v1",cg="red.castle.state.v1",ug="red.castle.history.v1",rv="red.castle.validation.v2",sv="red.castle.envelope.v1",ov="red.castle.hitl-card.v1",lg=[Xn({schemaId:ag,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}}),Xn({schemaId:cg,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}}),Xn({schemaId:ug,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}}),Xn({schemaId:rv,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}}),Xn({schemaId:sv,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}}),Xn({schemaId:ov,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 XM,Uo=g(()=>{"use strict";N();uu();XM=new Map(lg.map(e=>[e.schemaId,new Set(e.fields)]))});var dg=g(()=>{"use strict";ig();Uo()});var fg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var lu=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as cv,mkdir as uv,readFile as lv}from"node:fs/promises";import{dirname as dv,join as fv}from"node:path";function du(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function pg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:du(t.at,"at"),singleton:du(t.singleton,"singleton"),kind:du(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function pv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function mv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function gv(e){return fv(e.castleStateRoot,"singleton-events.toonl")}function fu(e,t={}){let n=t.fs??{appendFile:cv,mkdir:uv,readFile:lv},r=t.clock??(()=>new Date().toISOString()),s=gv(e);return{path:s,async append(o){let i=pg({at:o.at??r(),...o});return await n.mkdir(dv(s),{recursive:!0}),await n.appendFile(s,Jt().push(pv(i)),"utf8"),i},async read(o={}){mv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=qt(i).map(pg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var pu=g(()=>{"use strict";N()});var Vo=g(()=>{"use strict";N();Jo();pu()});var mg=g(()=>{"use strict";qo();lu();Vo()});var gg=g(()=>{"use strict"});var N1,hg=g(()=>{"use strict";N();N1=24*60*60*1e3});var yg=g(()=>{"use strict";Uo()});var j1,G1,bg=g(()=>{"use strict";j1=15*6e4,G1=30*6e4});var wg=g(()=>{"use strict"});var yv,bv,U1,q1,_g=g(()=>{"use strict";yv=["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"],bv={pre_worktree:["cargo","gradle"]},U1=Object.values(bv).flat(),q1=new Set(yv)});var Rg=g(()=>{"use strict"});var kg=g(()=>{"use strict";Vo()});var Sg=g(()=>{"use strict"});var Eg=g(()=>{"use strict"});var xg=g(()=>{"use strict"});var mu=g(()=>{"use strict"});var vg=g(()=>{"use strict";N();mu()});var Cg=g(()=>{"use strict";N()});var gu=g(()=>{"use strict"});var hu=g(()=>{"use strict"});import{resolve as re}from"node:path";function Tg(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,wv),workersRoot:i,worker:u=>re(i,u),workerSteerFile:u=>re(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>re(a,u),worktreesRoot:c,worktreeLane:u=>re(c,u)}}var wv,Og=g(()=>{"use strict";wv="default"});var Ag=g(()=>{"use strict";Jo()});var Pg=g(()=>{"use strict"});var Ig=g(()=>{"use strict";gu();hu()});import{mkdir as _v,readFile as Rv,rename as kv,rm as Sv,writeFile as Ev}from"node:fs/promises";import{dirname as xv,join as vv}from"node:path";function Tv(e){if(!Cv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Ov(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Av(e){return e.code==="ENOENT"}function Pv(e){return e.code==="EEXIST"}function Iv(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function yu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return Tv(t),vv(e.castleStateRoot,"singletons",t,"lease.toon")}function Lg(e,t={}){let n=t.fs??{mkdir:_v,readFile:Rv,rename:kv,rm:Sv,writeFile:Ev},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Ov;async function o(a){try{return Iv(L(await n.readFile(a,"utf8")))}catch(c){if(Av(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await n.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await n.rename(u,a)}return{read(a){return o(Ko(e,a))},async acquire(a,c){let u=Ko(e,a);await n.mkdir(xv(u),{recursive:!0});let l=!1;for(;;){let f=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:f,renewed_at:f};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!Pv(p))throw p}let m=await o(u);if(m){if(yu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!yu(l,c))throw new zo(a);let f={...l,renewed_at:r()};return await i(u,f),f},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!yu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,Cv,$g=g(()=>{"use strict";N();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},Cv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var bu=g(()=>{"use strict"});var Dg=g(()=>{"use strict"});var Lv,$v,Dv,OB,Ng=g(()=>{"use strict";Lv={refreshCadenceS:270,tolerance:3},$v=270,Dv=2700,OB={...Lv,claimGraceS:$v,recentCommitProtectionS:Dv}});var Mg=g(()=>{"use strict"});function Bg(e){return e==="single-object"?"rest":"graphql"}function W(e,t,n,r,s){return{key:e,kind:"read",cardinality:t,surface:s??Bg(t),budget:n,...s?{only:s}:{},why:r}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var Fg,PB,jg=g(()=>{Fg=[W("issue view","single-object","rest","one issue by number; REST answers it in one request against the idle pool"),W("pr view","single-object","rest","one pull request by number, polled per Worker per iteration"),W("repo view","single-object","rest","one repository's own metadata"),W("run view","single-object","rest","one Actions run; the Actions API has no GraphQL surface either way"),W("release view","single-object","rest","one release by tag"),W("pr diff","single-object","rest","one pull request's diff, served by a REST media type"),W("issue list","multi-node","graphql","a connection of issues; one GraphQL query beats N REST pages"),W("pr list","multi-node","graphql","a connection of pull requests; one GraphQL query beats N REST pages"),W("pr checks","multi-node","graphql","every check context on one commit, which is a connection, not an object"),W("release list","multi-node","rest","Releases have no GraphQL connection gh reads; REST pages them","rest"),W("run list","multi-node","rest","the Actions API has no GraphQL surface, so a listing draws the request pool","rest"),W("label list","multi-node","graphql","a connection of labels inside one repository"),W("issue list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),W("pr list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),W("search issues","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("search prs","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("search repos","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("api graphql","multi-node","graphql","the caller wrote the query; `gh api graphql` is GraphQL by construction"),W("api rest","single-object","rest","any `gh api <path>` that is not `graphql` is a REST request"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],PB=new Map(Fg.map(e=>[e.key,e]))});var Gg=g(()=>{});var Hg=g(()=>{});var Wg=g(()=>{});var Ug=g(()=>{});var qg=g(()=>{jg();Gg();Hg();Wg();Ug()});import{execFile as jv}from"node:child_process";import{promisify as Gv}from"node:util";var wF,Jg=g(()=>{"use strict";qg();bu();wF=Gv(jv)});var Vg=g(()=>{"use strict";og();dg();fg();qo();mg();gg();hg();yg();Uo();bg();wg();_g();Rg();lu();kg();Sg();Eg();xg();Vo();vg();Cg();uu();gu();hu();Og();Ag();Pg();Ig();Jo();mu();pu();$g();bu();Dg();Ng();Mg();Jg()});import{EventEmitter as Hv}from"node:events";import{spawn as Wv}from"node:child_process";function Qo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Xo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,wu,Uv,qv,Jv,Vv,Yo,_u=g(()=>{cs="github-webhook",wu="github.webhook.delivery";Uv="pull_request,pull_request_review,check_run,check_suite,workflow_run",qv=3,Jv=1e3,Vv=/no extension matched|unknown command|command not found/i,Yo=class extends Hv{constructor(n,r){super();this.opts=n;this.terminate=r}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let n=this.child;this.child=void 0,n&&(this.stopping=this.terminate(n,Jv).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Qo(c,r):Xo(c,r))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let n=this.opts.ghBin??"gh",r;try{r=Wv(n,["webhook","forward",`--events=${Uv}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
86
+ `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");Vv.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(n){let r;try{r=JSON.parse(n)}catch{this.emit("malformed-delivery",n);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",r)}scheduleRestart(){if(this._dead||this.restarts>=qv)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Kg=g(()=>{"use strict";_u();_u();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as Kv}from"node:events";import{join as zv}from"node:path";function ku(e){let t=so(e.cwd),n=Tg(zv(t,".red"));return new Ru({...e,leases:e.leases??Lg(n),lane:e.lane??fu(n),makeForwarder:e.makeForwarder??((r,s)=>new Zo({cwd:r,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(r=>$n(r.pid,r.start_time))})}var Ru,zg=g(()=>{"use strict";Vg();Kg();pt();ec();Ru=class extends Kv{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Qo(a,r):Xo(a,r))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===wu&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Su={};B(Su,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>Xv});import{randomUUID as Yg}from"node:crypto";import{mkdir as Yv,rm as Qv}from"node:fs/promises";async function Xv(e,t=process.cwd()){let n;try{n=await rp(e)}catch(r){return await r0(e,r)}if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(as()),0;if(n.kind==="ls"){let r={schema:zf,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Xa(n.kind)?await Zv({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function Zv(e,t){let n=e.kind,r=sc({id:Yg(),kind:n,target:n0(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Ya[n],status:"running",attempts:0}),s=lp(t,r.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await Yv(Dn(t),{recursive:!0}),await Nn(s,r);let l=await e0(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let f=await mp({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(f.result,e.options.format)),f.exitCode}catch(l){let f=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,f,{status:"success"},new Date().toISOString());return await Mr(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Fn(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Qv(s,{force:!0}).catch(()=>{})}}async function e0(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Gp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:ap(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=ku({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:eg(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await t0(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=ku({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>tg(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>rg(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function t0(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await ng(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function n0(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 r0(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Xa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=sc({id:Yg(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Ya[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var Eu=g(()=>{"use strict";sp();hp();Wp();Zt();tc();sg();pt();Dr();cu();zg();Dr();cu()});import{existsSync as c0}from"node:fs";import{join as u0}from"node:path";function l0(){for(let e of(process.env.PATH??"").split(":"))if(e&&c0(u0(e,"rsp")))return!0;return!1}function us(){return l0()?["rsp"]:[process.execPath,process.argv[1]]}var xu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>th,rewriteProxyCommandLine:()=>eh,runProxy:()=>p0});import{spawn as d0}from"node:child_process";function f0(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function p0(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=th(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=eh(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await m0(t.telemetryRoot,n,c),await Zg(n);throw c}for(let c of s)await g0(t.telemetryRoot,c);let i=await Zg(r||n),a=Number(process.hrtime.bigint()-o)/1e6;return await ht(t.telemetryRoot,{collection:Se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function eh(e,t="lossless",n=us()){let r=R0(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||_0(r,a)==="|")return i.text;let c=h0(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function th(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function m0(e,t,n){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:xe(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function g0(e,t){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Zg(e){let t=d0(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
87
+ `),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function h0(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=S0(o);if(!i)return null;let a=w0(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(nn(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=y0(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(f0),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function y0(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:b0(t,n)}function b0(e,t){return e[0]==="cat"&&e.length===2&&vu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&vu(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])&&vu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function vu(e){return!!e&&!e.startsWith("-")}function w0(e){let t=0;for(;t<e.length&&qn(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&qn(e[t].value);)t+=1;return t}function _0(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function R0(e){let t=[],n=0,r,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(r){i===r&&(r=void 0);continue}if(i==="'"||i==='"'){r=i;continue}let a=k0(e,o);a&&(o>n&&t.push({kind:"segment",text:e.slice(n,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,n=o+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function k0(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function S0(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Wr();xu();Ge()});function sh(e,t={}){let n=E0(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Cu(o),u=Cu(i),l=Cu(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>A0(d.start,d.end,m.start,m.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)+T0(d.tokens,r,n.length)+O0(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function E0(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(nh(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(nh(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function nh(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:x0(r),tokens:v0(r),numbers:C0(r),length:r.length}}function x0(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 v0(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function C0(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function T0(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(o=>Math.log2(n/Math.max(1,t.get(o)??n))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function O0(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Cu(e){let t=rh(e),n=rh(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Tu(e,t){return Math.abs(e-t.median)/t.mad}function rh(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function A0(e,t,n,r){return e<r&&n<t}var oh=g(()=>{"use strict"});var Ou={};B(Ou,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>ah,StructuredUsageError:()=>ni,cleanStatusPayload:()=>dh,recoveryInstruction:()=>He,renderGitContract:()=>ch,runGitWrapper:()=>I0});import{spawn as P0}from"node:child_process";async function I0(e,t){let n=uh(e),r=lh(n.argv),s=await N0(r,n.argv.slice(1));return ch(e,s,t)}async function ch(e,t,n){let r=uh(e);if((t.status??0)!==0||t.signal){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=lh(r.argv),o;try{o=M0(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ri)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let i=C(o);if(L0(s,i,r.full,n))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=tC(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await n.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${He(u)}
82
88
  `;return{stdout:Buffer.from(`${C(a.payload)}
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 No(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:r,full:n}}function iv(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!av(e)||n.level!=="lossless")return!0;let s=Cv(n.heavyGitByteThreshold,ot);return Buffer.byteLength(t)<=s}function av(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 cv(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 uv(e,t){let r=sv("git",cv(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 lv(e,t,r,n){switch(e){case"status":return dv(t,r,n);case"log":return wv(t,r,n);case"diff":return _v(t,r,n);case"commit":return wt(Rv(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return wt(kv(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Sv(t,r,n);case"branch":return Ev(t,r,n);case"show":return xv(t,r,n)}}function dv(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of pv(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=gv(u),o=!0;continue}let l=fv(u);if(l){o=!0,s.push(l);continue}let p=mv(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return lg(e.join(" "),n);throw new Mo("git-status-unparseable")}let a=te(s,r),c=dg(a,"state");return wt({command:e.join(" "),branch:n,rows:a,summary:bv(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function pv(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function fv(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Yn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Yn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Yn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Yn(e.slice(2),"??"):null}function mv(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Yn(hv(e.slice(3),t),t):null}function Yn(e,t){let r=og(t[0]??"."),n=og(t[1]??".");return{path:yv(e),index:r,worktree:n,state:vv(`${r}${n}`)}}function og(e){return e===" "?".":e}function gv(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function hv(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function yv(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function bv(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 wv(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 _v(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 Rv(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 kv(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 Sv(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 Ev(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 xv(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(`
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(`
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 vv(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 Cv(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Tv(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,No,Mo,Zt=h(()=>{"use strict";J();N();Ae();sn();Be();Ae();ig=["%h","%an","%as","%s"];No=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`)}},Mo=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:()=>Fo,NORMALIZE_BLANK_LINES:()=>Go,NORMALIZE_CR_PROGRESS:()=>jo,NORMALIZE_JSON_TOON:()=>yg,NORMALIZE_TRAILING_WHITESPACE:()=>Ho,crushJsonArrayItems:()=>Xn,formatCodexNormalizeDecision:()=>Sg,formatNormalizeDecision:()=>kg,hookDecisionFromClaudePostExecJson:()=>wg,hookDecisionFromCodexPostExecJson:()=>_g,normalizeOutput:()=>Wo,renderGenericJsonLane:()=>su,runClaudePostExecHook:()=>Av,runCodexPostExecHook:()=>Iv,transcodeJsonToToon:()=>hg});import{readFileSync as Bo}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=Nv(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,Ov),i=gg(t.maxItems,Pv);if(!(s>i&&Hv(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Xn)(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:Gv(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 Xn(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=Mv(e),s=new Set;n&&e.forEach((a,c)=>{ou(a)!==n&&s.add(c)});let o=Bv(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 Wo(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=Dv(e),n=Wv(r,["cwd"])||t.cwd;if(!await(t.isEnabled??$v)(n))return{kind:"passthrough",reason:"disabled"};let o=Uv(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??Wo)(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 Av(e){let t=e?Bo(e,"utf8"):Bo(0,"utf8"),r=await wg(t,{cwd:process.cwd()}),n=kg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Iv(e){let t=e?Bo(e,"utf8"):Bo(0,"utf8"),r=await _g(t,{cwd:process.cwd()}),n=Sg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Lv(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 $v(e){return Pe(e,process.env).enabled}function Dv(e){try{let t=JSON.parse(e);return Br(t)?t:{}}catch{return{}}}function Nv(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 Mv(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 Bv(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 Fv(s))r.add(o);for(let o of jv(s))r.add(o)}return r}function Fv(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 jv(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 Hv(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 Gv(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 Wv(e,t){let r=e;for(let n of t){if(!Br(r))return"";r=r[n]}return typeof r=="string"?r:""}function Uv(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 Fo,jo,Ho,Go,yg,Ov,Pv,bg,Zn=h(()=>{"use strict";N();Ae();Fo={id:"ansi",apply:Lv},jo={id:"cr-progress",apply:e=>e.split(`
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(`
92
- `)},Ho={id:"trailing-whitespace",apply:e=>e.split(`
89
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function uh(e){let{argv:t,query:n,full:r}=Yd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function L0(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!$0(e)||r.level!=="lossless")return!0;let s=eC(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function $0(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function lh(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 D0(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${ah.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function N0(e,t){let n=P0("git",D0(e,t),{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function M0(e,t,n,r){switch(e){case"status":return B0(t,n,r);case"log":return J0(t,n,r);case"diff":return V0(t,n,r);case"commit":return Tt(K0(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Tt(z0(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Y0(t,n,r);case"branch":return Q0(t,n,r);case"show":return X0(t,n,r)}}function B0(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of F0(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){r=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){r=H0(u),o=!0;continue}let l=j0(u);if(l){o=!0,s.push(l);continue}let f=G0(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return dh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=fh(a,"state");return Tt({command:e.join(" "),branch:r,rows:a,summary:q0(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function F0(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function j0(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return ls(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(10).join(" "),n)}return e.startsWith("? ")?ls(e.slice(2),"??"):null}function G0(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(W0(e.slice(3),t),t):null}function ls(e,t){let n=ih(t[0]??"."),r=ih(t[1]??".");return{path:U0(e),index:n,worktree:r,state:Z0(`${n}${r}`)}}function ih(e){return e===" "?".":e}function H0(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function W0(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function U0(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function q0(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function dh(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 J0(e,t,n){let r=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=ae(r,n);return Tt({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function V0(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=ae(s,n),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Tt({command:e.join(" "),files:o,summary:`${n?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function K0(e,t){let n=t.split(`
90
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),f=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function z0(e,t){let n=t.split(`
91
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${i} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${i} -> ${r} +${a} commits`}}function Y0(e,t,n){let r=t.split(`
92
+ `),s=[],o=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=o.commit.slice(0,12);l&&l.commit===f&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:f,path:o.path}),o=null}let i=ae(s,n),a=fh(i,"author");return Tt({command:e.join(" "),ranges:i,authors:a,summary:`${n?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Q0(e,t,n){let r=t.split(`
93
+ `).filter(Boolean).map(i=>{let[a,c,u,l,f,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=ae(r,n),o=s.find(i=>i.current)?.name??"";return Tt({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${o?`, current ${o}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function X0(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,o=r>=0&&s>=0?t.slice(r+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=o.split(""),m=[];for(let y of i.split(`
94
+ `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!w)continue;let k=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...k].filter(T=>T==="+").length,deleted:[...k].filter(T=>T==="-").length,binary:k.startsWith("Bin")})}let p=ae(m,n),b=0,_=0,h=0;for(let y of p)b+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,h+=typeof y.deleted=="number"?y.deleted:0;return Tt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
95
+ `).length:0,files:p,summary:`${n?`${p.length}/${m.length}`:p.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Tt(e,t,n){return t?ut(e,n):e}function Z0(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function fh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function eC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function tC(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var ah,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();ah=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Od(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var Lu={};B(Lu,{NORMALIZATION_ALLOWLIST:()=>wh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>bh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Eh,formatNormalizeDecision:()=>Sh,hookDecisionFromClaudePostExecJson:()=>_h,hookDecisionFromCodexPostExecJson:()=>Rh,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Pu,runClaudePostExecHook:()=>sC,runCodexPostExecHook:()=>oC,transcodeJsonToToon:()=>yh});import{readFileSync as si}from"node:fs";function yh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Au(o,a)?i.trimEnd():e}async function Pu(e,t={}){let n=uC(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:C(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,o=hh(t.minTokens,nC),i=hh(t.maxItems,rC);if(!(s>i&&mC(e)>=o))return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??ds)(r,i)}catch(b){return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:gC(b)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[f,m,p].filter(Boolean).join(`
96
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=lC(e),s=new Set;r&&e.forEach((a,c)=>{Iu(a)!==r&&s.add(c)});let o=dC(e,r);for(let a of s)n.add(a);for(let a of o)n.add(a);let i=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function ui(e){let t=e;for(let n of wh)t=n.apply(t);return t}async function _h(e,t){return await kh(e,t)}async function Rh(e,t){return await kh(e,t)}async function kh(e,t){let n=cC(e),r=hC(n,["cwd"])||t.cwd;if(!await(t.isEnabled??aC)(r))return{kind:"passthrough",reason:"disabled"};let o=yC(n,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??ui)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Sh(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Eh(e){return{stdout:"",status:0}}async function sC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await _h(t,{cwd:process.cwd()}),r=Sh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function oC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await Rh(t,{cwd:process.cwd()}),r=Eh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function iC(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let o=e.charCodeAt(n);if(o===7){n++;break}if(o===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&ph(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ph(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ph(e){return e>=32&&e<=63}function aC(e){return Fe(e,process.env).enabled}function cC(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function uC(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Zn(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function lC(e){let t=new Map;for(let s of e){let o=Iu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Iu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${mh(e[t])}`).join("|"):mh(e)}function dC(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Iu(s)!==t))for(let[i,a]of xh(s)){let c=r.get(i)??[];c.push({index:o,value:a}),r.set(i,c)}});for(let s of r.values()){for(let o of fC(s))n.add(o);for(let o of pC(s))n.add(o)}return n}function fC(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=gh(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=gh(s);if(o===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-r)>i).map(a=>a.index)}function pC(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function xh(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Zn(e)?Object.entries(e).flatMap(([n,r])=>xh(r,t?`${t}.${n}`:n)):[]}function mh(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function gh(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 mC(e){return Math.ceil(e.length/4)}function hh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function gC(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function hC(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function yC(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}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 n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Au(n[i],r[i]))}var oi,ii,ai,ci,bh,nC,rC,wh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:iC},ii={id:"cr-progress",apply:e=>e.split(`
97
+ `).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
98
+ `)},ai={id:"trailing-whitespace",apply:e=>e.split(`
93
99
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
94
- `)},Go={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
100
+ `)},ci={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
95
101
 
96
- `)};yg={id:"json-to-toon",apply:e=>hg(e)},Ov=200,Pv=15;bg=[Fo,jo,Ho,Go,yg]});var ts={};F(ts,{parseExecCommandLine:()=>Pg,renderExecContract:()=>Og,runExecWrapper:()=>zv});import{isUtf8 as Jv}from"node:buffer";import{spawn as qv}from"node:child_process";async function zv(e,t){let r=Pg(e),n=await Yv(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=Xv(n),i=o.kind==="text"?Buffer.from(o.text):n,a=yC(r.heavyByteThreshold,Vv);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"?Qv(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):eC(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 Yv(e){let t=qv(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 Xv(e){return Jv(e)?{kind:"text",text:Zv(e.toString("utf8"))}:{kind:"bytes"}}function Zv(e){let t=e;for(let r of[Fo,jo,Ho,Go])t=r.apply(t);return t}function Qv(e,t,r,n,s,o=lC,i=Xn){let c=Math.max(1,Math.floor((n==="terse"?Tg:Kv)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=uC(e,c,l,o),d=tC(e),f=rC(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),m=Ag(s,d,t,hC(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 eC(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 tC(e){let t=e.trim();return t?Lg(t)?"json":$g(e)?"jsonl":dC(e)?"unified-diff":Dg(e)?"tabular":pC(e)?"log-like":fC(e)?"prose":"untyped":"untyped"}function rC(e,t,r,n,s,o,i=Xn){switch(e){case"json":return nC(t,i);case"jsonl":return{summary:sC(t)};case"unified-diff":return{summary:oC(t)};case"tabular":return{summary:iC(t)};case"log-like":return{summary:aC(t,o)};case"prose":return{summary:cC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Ig(r,n,s,o)}}}function nC(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(es(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 sC(e){let t=$g(e)??[],r=mC(t,"level");return{records:t.length,keys:cu(t),levels:r,first:_t(t[0]),last:_t(t.at(-1))}}function oC(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 iC(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 aC(e,t){let r=Qn(e);return{entries:r.length,levels:gC(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 cC(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 uC(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function lC(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 es(r)||Array.isArray(r)?r:null}catch{return null}}function $g(e){let t=Qn(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 dC(e){let t=Qn(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=Qn(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 pC(e){let t=Qn(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 fC(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 Qn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function cu(e){let t=new Map;for(let r of e)if(es(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 mC(e,t){let r=new Map;for(let n of e){if(!es(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 gC(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):es(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 es(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 hC(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 yC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Vv,Kv,Tg,xg,rs=h(()=>{"use strict";J();N();sg();Zt();Zn();Be();Vv=8*1024,Kv=2*1024,Tg=1024,xg=240});var Qo={};F(Qo,{RSP_WRAPPER_CAPABILITIES:()=>os,_testOnlyResetBinaryState:()=>TC,formatCodexHookDecision:()=>Yg,formatHookDecision:()=>zg,hookDecisionFromClaudePreExecJson:()=>$C,hookDecisionFromCodexPreExecJson:()=>DC,rewriteCommand:()=>Vg,rewriteTableFromCapabilities:()=>qg,runClaudePreExecHook:()=>NC,runCodexPreExecHook:()=>MC});import{accessSync as EC,constants as xC,existsSync as vC,readFileSync as Xo}from"node:fs";import{fileURLToPath as CC}from"node:url";function TC(){Yo=void 0,uu=!1}function OC(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return EC(`${t}/rsp`,xC.X_OK),!0}catch{}return!1}function PC(e){return Yo===void 0&&(Yo=e()),Yo}function AC(){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(t0(r.command),["rsp",...r.wrapper]);return t}function Vg(e,t=zn()){let r=qC(e);if(r)return r;let n=UC(e);if(!n)return zo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Pr(s[0]))return zo(e,t);let o=LC(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return zo(e,t);let i=[...os].sort((u,l)=>l.command.length-u.command.length).find(u=>JC(s,u.command));if(!i)return zo(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 LC(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&&Ko(r[1])?{kind:"rewrite",command:[...o,"cat",Rt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&Ko(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])&&Ko(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])&&Ko(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),Rt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function Ko(e){return!!e&&!e.startsWith("-")}async function $C(e,t){return await Kg(e,t)}async function DC(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??BC)(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(!PC(t.resolveBinary??OC)){AC();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??zn(),d=l.proxyEnabled?VC(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 jC(o,t.wakeResident??FC),{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 NC(e){let t="";try{t=e?Xo(e,"utf8"):Xo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"claude-pre-exec");Zo(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 Zo(process.cwd(),Zg("claude-pre-exec",t,r)),eh("claude-pre-exec",r),0}}async function MC(e){let t="";try{t=e?Xo(e,"utf8"):Xo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"codex-pre-exec");Zo(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 Zo(process.cwd(),Zg("codex-pre-exec",t,r)),eh("codex-pre-exec",r),0}}function Zo(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 BC(e){return Pe(e,process.env).enabled}async function FC(e){let t=Pe(e,process.env);if(!t.enabled||!WC(t))return;let r=je(e);await Ps(r,GC(t))}async function jC(e,t){try{await Promise.resolve(t(e))}catch(r){HC(r)}}function Qg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
102
+ `)};bh={id:"json-to-toon",apply:e=>yh(e)},nC=200,rC=15;wh=[oi,ii,ai,ci,bh]});var gs={};B(gs,{parseExecCommandLine:()=>Ph,renderExecContract:()=>Ah,runExecWrapper:()=>kC});import{isUtf8 as bC}from"node:buffer";import{spawn as wC}from"node:child_process";async function kC(e,t){let n=Ph(e),r=await SC(n);return await Ah(n,r,t)}async function Ah(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=$e(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let o=EC(r),i=o.kind==="text"?Buffer.from(o.text):r,a=UC(n.heavyByteThreshold,_C);if(i.length<=a&&n.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=o.kind==="text"?vC(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):CC(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Ph(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function SC(e){let t=wC(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function EC(e){return bC(e)?{kind:"text",text:xC(e.toString("utf8"))}:{kind:"bytes"}}function xC(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function vC(e,t,n,r,s,o=MC,i=ds){let c=Math.max(1,Math.floor((r==="terse"?Oh:RC)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=NC(e,c,l,o),d=TC(e),m=OC(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Ih(s,d,t,WC(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Bh(f.error)}:m.degradation;return{text:Mh(p),degradation:b}}function CC(e,t,n,r){let s=Math.max(1,Math.floor(Oh/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Mh(Ih(r,"bytes",t,0,n,o))}}function Ih(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function TC(e){let t=e.trim();return t?$h(t)?"json":Dh(e)?"jsonl":BC(e)?"unified-diff":Nh(e)?"tabular":FC(e)?"log-like":jC(e)?"prose":"untyped":"untyped"}function OC(e,t,n,r,s,o,i=ds){switch(e){case"json":return AC(t,i);case"jsonl":return{summary:PC(t)};case"unified-diff":return{summary:IC(t)};case"tabular":return{summary:LC(t)};case"log-like":return{summary:$C(t,o)};case"prose":return{summary:DC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Lh(n,r,s,o)}}}function AC(e,t){let n=$h(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(Ot),item_keys:Du(n)}}}catch(r){return{summary:Ch(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Bh(r)}}}return{summary:Ch(n)}}if(ms(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,o])=>[s,Ot(o)]))}}}return{summary:{root_type:typeof n,value:Ot(n)}}}function Ch(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Ot),item_keys:Du(e)}}function PC(e){let t=Dh(e)??[],n=GC(t,"level");return{records:t.length,keys:Du(t),levels:n,first:Ot(t[0]),last:Ot(t.at(-1))}}function IC(e){let t=new Map,n="",r=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,n&&t.get(n).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(r++,n&&t.get(n).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:r,deleted_lines:s}}function LC(e){let t=Nh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Lh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function $C(e,t){let n=ps(e);return{entries:n.length,levels:HC(n),first:ln(n[0]??""),last:ln(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:ln(r.text)}))}}function DC(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:ln(t[0]??""),closing:ln(t.at(-1)??"")}}function Lh(e,t,n,r){let s=Th(e.subarray(0,t)),o=Th(e.subarray(n));return{head:s,tail:o,outliers:r.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:ln(i.text)}))}}function NC(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function MC(e,t){return sh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function $h(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return ms(n)||Array.isArray(n)?n:null}catch{return null}}function Dh(e){let t=ps(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function BC(e){let t=ps(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return r&&s&&o}function Nh(e){let t=ps(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function FC(e){let t=ps(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function jC(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function ps(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Du(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function GC(e,t){let n=new Map;for(let r of e){if(!ms(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();n.set(o,(n.get(o)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function HC(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function Ot(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Ot):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Ot(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=vh?t:`${t.slice(0,vh-1)}\u2026`}function Mh(e){let t=C(e).trimEnd(),n=L(t);if(!$u(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
103
+ `}function $u(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)=>$u(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&$u(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bh(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Th(e){return e.toString("utf8").replace(/�$/g,"")}function WC(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function UC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var _C,RC,Oh,vh,hs=g(()=>{"use strict";V();N();oh();un();fs();Ve();_C=8*1024,RC=2*1024,Oh=1024,vh=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>tT,formatCodexHookDecision:()=>Qh,formatHookDecision:()=>Yh,hookDecisionFromClaudePreExecJson:()=>aT,hookDecisionFromCodexPreExecJson:()=>cT,rewriteCommand:()=>Kh,rewriteTableFromCapabilities:()=>Vh,runClaudePreExecHook:()=>uT,runCodexPreExecHook:()=>lT});import{accessSync as QC,constants as XC,existsSync as ZC,readFileSync as yi}from"node:fs";import{fileURLToPath as eT}from"node:url";function tT(){hi=void 0,Nu=!1}function nT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return QC(`${t}/rsp`,XC.X_OK),!0}catch{}return!1}function rT(e){return hi===void 0&&(hi=e()),hi}function sT(){Nu||(Nu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Vh(e){let t=new Map;for(let n of e)t.set(TT(n.command),["rsp",...n.wrapper]);return t}function Kh(e,t=us()){let n=wT(e);if(n)return n;let r=yT(e);if(!r)return gi(e,t);let s=r.tokens.map(u=>u.text);if(s.length>0&&qn(s[0]))return gi(e,t);let o=iT(r,t);if(o)return o;if(r.tokens.some(u=>u.quoted))return gi(e,t);let i=[...ws].sort((u,l)=>l.command.length-u.command.length).find(u=>bT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ny(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(At),...c].join(" "),capabilityId:i.id}}function iT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ny(e.redirectSuffix),o=t.map(At);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",At(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",At(n[1]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===4&&n[1]==="-n"&&/^[1-9][0-9]*$/.test(n[2])&&mi(n[3])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[2],At(n[3]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===3&&/^-[1-9][0-9]*$/.test(n[1])&&mi(n[2])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[1].slice(1),At(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function aT(e,t){return await zh(e,t)}async function cT(e,t){return await zh(e,t)}async function zh(e,t){return(await Bu(e,t,"pre-exec")).decision}async function Bu(e,t,n){let r=iy(e);if(!r.ok){let p={kind:"passthrough",reason:r.reason};return{decision:p,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:p,reason:r.reason})}}let s=r.payload,o=We(s,["cwd"])||We(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??dT)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:Mu(s),decision:p,reason:"disabled"})}}let a=Mu(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"missing-command"})}}if(!rT(t.resolveBinary??nT)){sT();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Fe(o,process.env),f=t.rspInvocationPrefix??us(),d=l.proxyEnabled?_T(a,f):(t.rewrite??(p=>Kh(p,f)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:m})}}return await pT(o,t.wakeResident??fT),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function Yh(e){return e.kind==="rewrite"?Xh(e.command):{stdout:"",status:0}}function Qh(e){return e.kind==="rewrite"?Xh(e.command):{stdout:"",status:0}}function Xh(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
104
+ `,status:0}}async function uT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Bu(t,{cwd:process.cwd()},"claude-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;ey("claude-pre-exec",r);let s=Yh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Zh("claude-pre-exec",t,n)),ty("claude-pre-exec",n),0}}async function lT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Bu(t,{cwd:process.cwd()},"codex-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;ey("codex-pre-exec",r);let s=Qh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Zh("codex-pre-exec",t,n)),ty("codex-pre-exec",n),0}}function bi(e,t){ht(e,t).catch(()=>{})}function er(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:xe(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Zh(e,t,n){let r=iy(t),s=r.ok?Mu(r.payload):"";return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:xe(s),decision:"failed-open",reason:"hook-exception",error:Fu(n)}}function dT(e){return Fe(e,process.env).enabled}async function fT(e){let t=Fe(e,process.env);if(!t.enabled||!hT(t))return;let n=ze(e);await Ys(n,gT(t))}async function pT(e,t){try{await Promise.resolve(t(e))}catch(n){mT(n)}}function ey(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
99
105
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
100
- `)}}function eh(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${pu(t)}
101
- `)}function HC(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 GC(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 WC(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vC(CC(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 UC(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 JC(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function qC(e){let t=fu(e.trim()).map(r=>r.text);return qt(t)?{kind:"passthrough",reason:IC}:null}function th(e){return e.map(t=>t.text)}function Rt(e){return/[^\w@%+=:,./-]/.test(e)?mu(e):e}function VC(e,t){let r=zC(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(Rt).join(" ")} proxy -- ${mu(e.trim())}`,capabilityId:"proxy:universal"}}function KC(e){if(!process.argv[1])return!1;let t=fu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function zC(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=Tn(Cn(t)[0]??"")[0];if(r==="rsp"||KC(t))return"opt-out";if(r&&rh.has(r))return"interactive"}function zo(e,t){let r=e.trim();return YC(r)?{kind:"rewrite",command:`${t.map(Rt).join(" ")} exec -- ${mu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function YC(e){return!(!e||!XC(e)||!ZC(e)||nh(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||QC(e,"rsp")||sh(e,rh)||e0(e))}function XC(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 ZC(e){return Cn(e).some(t=>{let r=Tn(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 Cn(e).some(r=>{let n=Tn(r)[0];return n?t.has(n):!1})}function QC(e,t){return sh(e,new Set([t]))}function e0(e){return Cn(e).some(t=>{let r=Tn(t);return r[0]==="grep"&&r.includes("-q")})}function mu(e){return`'${e.replace(/'/g,"'\\''")}'`}function t0(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 Yo,uu,os,M1,IC,rh,is=h(()=>{"use strict";On();Ae();He();Gt();Zc();Ie();uu=!1;os=[{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"]}],M1=qg(os),IC="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:()=>ei,runFastGitStatus:()=>ti});import{spawnSync as dh}from"node:child_process";import{existsSync as ph,readdirSync as l0}from"node:fs";function ei(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ti(){if(d0(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 d0(e){try{return!ph(`${e}/.git`)||ph(`${e}/.git/index`)?!1:l0(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={}){T0(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=O0(["id","number",...r]).map(d=>P0(C0[d],6)).join(`
104
- `),u=o.map(({alias:d,number:f})=>[` ${d}: ${e}(number: ${f}) {`,c," }"].join(`
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(`
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 T0(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 O0(e){return[...new Set(e)]}function P0(e,t){let r=" ".repeat(t);return e.split(`
109
- `).map(n=>`${r}${n}`).join(`
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 C0,kh=h(()=>{C0={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 I0,spawnSync as L0}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=V0(e),n=r.repo??t.repo??process.env.GH_REPO??z0();if(!n||!n.includes("/"))return Eu(e,"repository is required; pass --repo owner/repo");let s=t.exec??Y0,o=Math.max(1,Math.floor(t.restConcurrency??Eh));return r.verb==="issues"||r.verb==="prs"?await N0(r,n,s,o,e):r.verb==="edit-labels"?await B0(r,n,s,o,e):await j0(r,n,s,o,e)}async function N0(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 M0(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}:G0(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return ni({command:si(s),transport:"graphql",order:e.numbers,[e.verb]:as(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
112
- `))}async function M0(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:U0(qe(Et(f.stdout)),qe(Et(m.stdout)))}}return{number:u,value:W0(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return ni({command:si(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:as(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function B0(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 F0(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 F0(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,as(o),"rest-fallback",n)}async function j0(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 H0(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 H0(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,as(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 ni({command:si(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,$0),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Sh(t,D0),{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 G0(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]=q0(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 W0(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 U0(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()||J0(s.map(o=>o.state)),contexts:s}}function J0(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 q0(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]=K0(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 V0(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 ni(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 ni({command:si(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function xu(e,t){return as(e.map(r=>({number:r,value:t(r)})))}function as(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 K0(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function si(e){return`rsp ${e.join(" ")}`}function z0(){let e=L0("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 Y0(e){let t=I0("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,$0,D0,Ah=h(()=>{"use strict";J();N();kh();Eh=4,$0=new Set(["number","title","state","labels","body"]),D0=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Du={};F(Du,{renderGhContract:()=>Mh,runGhWrapper:()=>rT});import{spawn as X0}from"node:child_process";async function rT(e,t){if(Ru(e))return await xh(e);let r=Bh(e),n=await sT(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=cs(t.stdout),o=pT(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=_T(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=RT(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)}
106
+ `)}}function ty(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Fu(t)}
107
+ `)}function mT(e){Ha(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Fu(e)}
108
+ `)}function Fu(e){return e instanceof Error?e.name||"Error":typeof e}function gT(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 hT(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ZC(eT(e.storeUri))}catch{return!1}}function Mu(e){return We(e,["tool_input","command"])||We(e,["tool_input","cmd"])||We(e,["tool_input","args","command"])||We(e,["input","command"])||We(e,["input","cmd"])||We(e,["arguments","command"])||We(e,["arguments","cmd"])||We(e,["command"])||We(e,["cmd"])}function yT(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=ju(t);if(n.length===0||n[0]?.quoted||n.some(o=>/[()$`]/.test(o.text))||n.some(o=>o.text.includes("=")&&qn(o.text)))return null;let r=[],s=[];for(let o of n){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}r.push(o)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function ju(e){let t=[],n="",r=!1,s=null,o=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!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,n+=e[i];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,n+=e[i];continue}if(/[ \t]/.test(a)){o();continue}n+=a}return s?[]:(o(),t)}function bT(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function wT(e){let t=ju(e.trim()).map(n=>n.text);return nn(t)?{kind:"passthrough",reason:oT}:null}function ny(e){return e.map(t=>t.text)}function At(e){return/[^\w@%+=:,./-]/.test(e)?Gu(e):e}function _T(e,t){let n=kT(e);return n?{kind:"passthrough",reason:n}:{kind:"rewrite",command:`${t.map(At).join(" ")} proxy -- ${Gu(e.trim())}`,capabilityId:"proxy:universal"}}function RT(e){if(!process.argv[1])return!1;let t=ju(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function kT(e){let t=e.trim();if(!t)return"missing-command";if(sy(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Hr(Gr(t)[0]??"")[0];if(n==="rsp"||RT(t))return"opt-out";if(n&&ry.has(n))return"interactive"}function gi(e,t){let n=e.trim();return ST(n)?{kind:"rewrite",command:`${t.map(At).join(" ")} exec -- ${Gu(n)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function ST(e){return!(!e||!ET(e)||!xT(e)||sy(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||vT(e,"rsp")||oy(e,ry)||CT(e))}function ET(e){return/&&|[;|]/.test(e)}function sy(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 xT(e){return Gr(e).some(t=>{let n=Hr(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,s)=>s>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function oy(e,t){return Gr(e).some(n=>{let r=Hr(n)[0];return r?t.has(r):!1})}function vT(e,t){return oy(e,new Set([t]))}function CT(e){return Gr(e).some(t=>{let n=Hr(t);return n[0]==="grep"&&n.includes("-q")})}function Gu(e){return`'${e.replace(/'/g,"'\\''")}'`}function TT(e){return e.join("\0")}function iy(e){try{let t=JSON.parse(e);return ay(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function We(e,t){let n=e;for(let r of t){if(!ay(n))return"";n=n[r]}return typeof n=="string"?n:""}function ay(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hi,Nu,ws,DG,oT,ry,_s=g(()=>{"use strict";Wr();je();Ye();Xt();xu();Ge();Nu=!1;ws=[{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"]}],DG=Vh(ws),oT="lossless-gh-json-jq";ry=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var my={};B(my,{fastTelemetryRoot:()=>Wu,isFastGitStatus:()=>_i,runFastGitStatus:()=>Ri});import{spawnSync as fy}from"node:child_process";import{existsSync as py,readdirSync as MT}from"node:fs";function _i(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ri(){if(BT(process.cwd()))return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};if(fy("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=fy("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 n=t.stdout.length===0?Hu():t.stdout;return{stdout:n,stderr:t.stderr,status:0,signal:t.signal,rawOutput:n}}async function Wu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ye(),Qt));return t(e).rootDir}catch{return e}}function Hu(){return Buffer.from(`${J({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
109
+ `)}function BT(e){try{return!py(`${e}/.git`)||py(`${e}/.git/index`)?!1:MT(e).every(t=>t===".git")}catch{return!1}}var Uu=g(()=>{"use strict";ct()});async function nr(e,t,n){let r=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++;r[a]=await n(e[a])}});return await Promise.all(i),r}function yy(e,t,n,r={}){tO(t);let s=e==="issue"?"i":"p",o=t.map((d,m)=>({alias:`${s}${m}`,number:d})),i=(r.labelNames??[]).map((d,m)=>({alias:`l${m}`,name:d})),c=nO(["id","number",...n]).map(d=>rO(eO[d],6)).join(`
110
+ `),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
111
+ `)),l=i.map(({alias:d,name:m})=>` ${d}: label(name: ${JSON.stringify(m)}) { id name }`),f=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
112
+ `);return{kind:e,query:f,aliases:o,labelAliases:i}}function by(e,t){let n=tr(t),r=tr(n.data),s=tr(r.repository),o=Array.isArray(n.errors)?n.errors.map(tr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Ry(c))return{number:a,value:c};let u=o.find(l=>{let f=l.path;return Array.isArray(f)&&f.includes(i)});return{number:a,error:ky(u?.message)||"not found"}})}function wy(e,t,n){let r=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;r.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${It(o.nodeId)}, labelIds: ${hy(t)}, clientMutationId: ${It(String(o.number))} }) { clientMutationId }`)}if(n.length>0){let a=`remove${i}`;r.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${It(o.nodeId)}, labelIds: ${hy(n)}, clientMutationId: ${It(String(o.number))} }) { clientMutationId }`)}}),{aliases:r,query:["mutation RspEditLabels {",...s,"}"].join(`
113
+ `)}}function _y(e,t){let n=t.map((s,o)=>({alias:`link${o}`,number:s.number})),r=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${It(e.nodeId)}, subIssueId: ${It(s.nodeId)}, clientMutationId: ${It(String(s.number))} }) { clientMutationId }`);return{aliases:n,query:["mutation RspLinkSubIssues {",...r,"}"].join(`
114
+ `)}}function qu(e,t){let n=tr(t),r=Array.isArray(n.errors)?n.errors.map(tr):[],s=new Map;for(let{alias:o}of e){let i=r.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,ky(i.message)||"mutation failed")}return s}function tO(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 nO(e){return[...new Set(e)]}function rO(e,t){let n=" ".repeat(t);return e.split(`
115
+ `).map(r=>`${n}${r}`).join(`
116
+ `)}function It(e){return JSON.stringify(e)}function hy(e){return`[${e.map(It).join(", ")}]`}function tr(e){return Ry(e)?e:{}}function Ry(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ky(e){return typeof e=="string"?e:""}var eO,Sy=g(()=>{eO={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(`
117
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as oO,spawnSync as iO}from"node:child_process";function Ku(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function vy(e,t={}){let n=_O(e),r=n.repo??t.repo??process.env.GH_REPO??kO();if(!r||!r.includes("/"))return Qu(e,"repository is required; pass --repo owner/repo");let s=t.exec??SO,o=Math.max(1,Math.floor(t.restConcurrency??xy));return n.verb==="issues"||n.verb==="prs"?await uO(n,r,s,o,e):n.verb==="edit-labels"?await dO(n,r,s,o,e):await pO(n,r,s,o,e)}async function uO(e,t,n,r,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Cy(e),a=[],c=[];for(let l of Yu(e.numbers,100)){let f=yy(o,l,i.query),d=await zu(n,t,f.query);if(Zu(d))return await lO(e,t,n,r,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(m=>({number:m,value:{error:Ce(d)||`failed to read ${m}`},failed:!0})));continue}a.push(...by(f,Lt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:gO(e.verb,m.value??{},i.output),failed:!!m.error})))}let u=a.filter(l=>l.failed).length;return Si({command:Ei(s),transport:"graphql",order:e.numbers,[e.verb]:Rs(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
118
+ `))}async function lO(e,t,n,r,s){let o=Cy(e),i=e.verb==="issues"?"issues":"pulls",a=await nr(e.numbers,r,async u=>{let l=await n(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:Ce(l)||"REST fallback failed"}};let f=tt(Lt(l.stdout));if(e.verb==="prs"&&o.output.some(Ty)){let d=U(tt(f.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let m=await n(["api",`repos/${t}/commits/${d}/check-runs`]);if(m.code!==0)return{number:u,value:{error:Ce(m)||"REST check-runs fallback failed"}};let p=await n(["api",`repos/${t}/commits/${d}/status`]);if(p.code!==0)return{number:u,value:{error:Ce(p)||"REST commit-status fallback failed"}};f={...f,restCheckRollup:yO(tt(Lt(m.stdout)),tt(Lt(p.stdout)))}}return{number:u,value:hO(e.verb,f,o.output)}}),c=a.filter(u=>"error"in u.value).length;return Si({command:Ei(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:r,order:e.numbers,[e.verb]:Rs(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function dO(e,t,n,r,s){if(e.add.length===0&&e.remove.length===0)return Qu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Oy(e.numbers,t,n,r),nr(o,r,async d=>{let m=await n(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:U(tt(Lt(m.stdout)).node_id),error:m.code===0?"":Ce(m)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return sr(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}])),f=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Yu(f,100)){let m=wy(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),p=await zu(n,t,m.query);if(Zu(p))return await fO(e,t,n,r,s);if(p.code!==0){for(let _ of d)l.set(_.number,{error:Ce(p)||"label mutation failed"});continue}let b=qu(m.aliases,Lt(p.stdout));for(let _ of d){let y=m.aliases.filter(w=>w.number===_.number).map(w=>b.get(w.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return sr(s,e.numbers,Ay(e.numbers,l),"graphql")}async function fO(e,t,n,r,s){let o=await nr(e.numbers,r,async i=>{for(let a of e.remove){let c=await n(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:Ce(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 n(a);if(c.code!==0)return{number:i,value:{error:Ce(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return sr(s,e.numbers,Rs(o),"rest-fallback",r)}async function pO(e,t,n,r,s){if(e.numbers.length<2)return Qu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Oy(e.numbers,t,n,r),c=a[0],u=c?.nodeId;if(!u)return sr(s,i,Xu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,f=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 Yu(f,100)){let m=_y({number:o,nodeId:u},d),p=await zu(n,t,m.query);if(Zu(p))return await mO(o,i,t,n,r,s);if(p.code!==0){for(let _ of d)l.set(_.number,{error:Ce(p)||"sub-issue mutation failed"});continue}let b=qu(m.aliases,Lt(p.stdout));for(let _ of m.aliases){let h=b.get(_.alias);l.set(_.number,h?{error:h}:{ok:!0})}}return sr(s,i,Ay(i,l),"graphql")}async function mO(e,t,n,r,s,o){let i=await nr(t,s,async a=>{let c=await r(["api",`repos/${n}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:Ce(c)||"REST id lookup failed"}};let l=await r(["api","-X","POST",`repos/${n}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:Ce(l)||"REST link failed"}}});return sr(o,t,Rs(i),"rest-fallback",s)}function sr(e,t,n,r,s){let o=Object.values(n).filter(i=>or(i)&&"error"in i).length;return Si({command:Ei(e),transport:r,...r==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??xy}:{},order:[...t],issues:n,summary:`${t.length-o}/${t.length} mutated`})}function Cy(e){if(e.verb==="issues"){let n=e.fields.length>0?e.fields:["title","state","labels","body"];return Ey(n,aO),{output:n,query:n}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Ey(t,cO),{output:t,query:t.map(n=>["checkRollup","statusCheckRollup"].includes(n)?"checks":n)}}function Ey(e,t){let n=e.find(r=>!t.has(r));if(n)throw new Error(`unknown GitHub batch field: ${n}`)}function gO(e,t,n){let r={};for(let s of n)s==="labels"?r.labels=Ju(t.labels).map(o=>U(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?r[s]=wO(t.commits):s==="state"||s==="mergeable"?r[s]=U(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(r[s]=Py(t[s]));return"number"in r||(r.number=el(t.number)),r}function hO(e,t,n){let r={};for(let s of n)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(or):[];r.labels=o.map(i=>U(i.name)).filter(Boolean)}else if(Ty(s))r[s]=tt(t.restCheckRollup);else if(s==="state")r.state=U(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;r.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else r[s]=Py(t[s]);return"number"in r||(r.number=el(t.number)),r}function yO(e,t){let n=Array.isArray(e.check_runs)?e.check_runs.filter(or):[],r=Array.isArray(t.statuses)?t.statuses.filter(or):[],s=[...n.map(o=>({name:U(o.name),state:(U(o.conclusion)||U(o.status)).toLowerCase()})),...r.map(o=>({name:U(o.context),state:U(o.state).toLowerCase()}))];return{state:U(t.state).toLowerCase()||bO(s.map(o=>o.state)),contexts:s}}function bO(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 Ty(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function wO(e){let t=Ju(e).at(-1),n=tt(tt(t?.commit).statusCheckRollup);return{state:U(n.state).toLowerCase(),contexts:Ju(n.contexts).map(r=>({name:U(r.name)||U(r.context),state:(U(r.conclusion)||U(r.status)||U(r.state)).toLowerCase()}))}}async function zu(e,t,n){let[r,s]=RO(t);return await e(["api","graphql","-f",`query=${n}`,"-F",`owner=${r}`,"-F",`repo=${s}`])}async function Oy(e,t,n,r){return await nr(e,r,async s=>{let o=await n(["api",`repos/${t}/issues/${s}`]),i=tt(Lt(o.stdout)),a=U(i.node_id),c=el(i.id);return o.code!==0||!a?{number:s,error:Ce(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Yu(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function _O(e){if(!Ku(e))throw new Error("unsupported rsp gh batch command");let t=e[1],n=[],r=[],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")r.push(...rr(e[++a]??""));else if(c.startsWith("--json="))r.push(...rr(c.slice(7)));else if(c==="--add")s.push(...rr(e[++a]??""));else if(c.startsWith("--add="))s.push(...rr(c.slice(6)));else if(c==="--remove")o.push(...rr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...rr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);n.push(u)}}if(n.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:n,repo:i,fields:r,add:s,remove:o}}function Si(e,t=0,n=""){return{stdout:Buffer.from(`${C(e)}
119
+ `),stderr:Buffer.from(n),status:t,signal:null,payload:e}}function Qu(e,t){return Si({command:Ei(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Xu(e,t){return Rs(e.map(n=>({number:n,value:t(n)})))}function Rs(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Ay(e,t){return Xu(e,n=>t.get(n)??{error:"mutation skipped"})}function Zu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
120
+ ${e.stdout}`)}function Ce(e){return(e.stderr||e.stdout).trim().split(`
121
+ `)[0]?.slice(0,240)??""}function Lt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Ju(e){let t=tt(e).nodes;return Array.isArray(t)?t.filter(or):[]}function Py(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function el(e){let t=Number(e);return Number.isFinite(t)?t:0}function rr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function RO(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Ei(e){return`rsp ${e.join(" ")}`}function kO(){let e=iO("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 SO(e){let t=oO("gh",e,{stdio:["ignore","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function tt(e){return or(e)?e:{}}function or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function U(e){return typeof e=="string"?e:""}var xy,aO,cO,Iy=g(()=>{"use strict";V();N();Sy();xy=4,aO=new Set(["number","title","state","labels","body"]),cO=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var cl={};B(cl,{renderGhContract:()=>By,runGhWrapper:()=>OO});import{spawn as EO}from"node:child_process";async function OO(e,t){if(Ku(e))return await vy(e);let n=Fy(e),r=await PO(n);return By(e,r,t)}async function By(e,t,n){if((t.status??0)!==0||t.signal){let m=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let r=Fy(e),s=ks(t.stdout),o=FO(r,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=VO(o);if(i){if(!n.store)throw new Error("truncated gh output requires an elision store");let m=await n.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:r.full?"brief":n.level,bytes_elided:i.bytes}});i.target.truncated.handle=m}let a=i?.target.truncated.handle||void 0,c=C(o);if(n.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=KO(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),f=await n.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${He(f)}
116
122
  `;return{stdout:Buffer.from(`${C(u.payload)}
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 nT(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?Q0[t]:Z0[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 nT(e){if(e.fields.size===0)return;if(e.action!=="list")throw new oi(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=tT[t];for(let n of e.fields)if(!r.includes(n))throw new oi(e,`unknown field: ${n}`,r)}async function sT(e){if(e.action==="combined")return await oT(e);let t=iT(e);if(!t)return await dT(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 aT(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function oT(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(cs(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(cs(s.stdout)).map(uT)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function iT(e){let t=Hh(e.passthrough),r=lT(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 aT(e,t){let r=cs(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(cs(o.stdout)).jobs).map(cT):[]}}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 cT(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function uT(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 lT(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 dT(e){let t=X0("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 pT(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 fT(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:bT(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:wT(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 fT(e,t,r){let n=Wh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(mT),e.query),o=H(r.comments).comments,i=te(pe(o).map(gT).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 mT(e){return{name:x(e,"name"),state:us(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function gT(e){return{author:Vh(e.author),body:ii(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:hT(t),[r]:[],aggregate:n,summary:`0 ${yT(t)}`},s)}function hT(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 yT(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:us(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=ii(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:us(e),labels:qh(e.labels)};return $u(r,e,t,["author","url","updated"]),r}function bT(e,t){let r=Uh(e,t);return r.body=ii(e,"body",Iu,t.full),r}function Jh(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:us(e),conclusion:x(e,"conclusion")};return $u(r,e,t,["event","branch","workflow","created"]),r}function wT(e,t){let r=Jh(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:us(s),conclusion:x(s,"conclusion"),log:ii(s,"log",eT,t.full)}));return r.jobs=n,r}function ii(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 _T(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 RT(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 us(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 cs(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 Z0,Q0,Iu,eT,tT,oi,Nu=h(()=>{"use strict";J();N();So();Ah();Zt();sn();Be();Z0={"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"]},Q0={"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,eT=160,tT={"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"]};oi=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:()=>vT});import{spawn as kT}from"node:child_process";async function vT(e,t){let r=nn(e),n=await AT(r.argv);return await Kh(e,n,t)}async function Kh(e,t,r){let n=nn(e),o=zh(n.argv)==="vitest"?IT(t.stdout):LT(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 ${NT(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await CT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await $T(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 CT(e,t,r,n,s,o,i){let a=TT(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 TT(e){let t=[],r=ET;for(let n of e.slice(0,xT)){let s=OT(n.excerpt,Math.min(ST,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function OT(e,t){if(t<=0)return"";let r=e.split(`
119
- `),n=r.length<=2?e:`${r[0]}
123
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Fy(e){let t=br(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let o=n,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let m=0;m<l.length;m+=1){let p=l[m]??"";p==="--full"?a=!0:p==="--wide"?c=!0:p==="--fields"?u=$y(l[++m]??""):p.startsWith("--fields=")?u=$y(p.slice(9)):i.push(p)}let d={kind:o,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return AO(d),d}function Ly(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?vO[t]:xO[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function $y(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function AO(e){if(e.fields.size===0)return;if(e.action!=="list")throw new xi(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=TO[t];for(let r of e.fields)if(!n.includes(r))throw new xi(e,`unknown field: ${r}`,n)}async function PO(e){if(e.action==="combined")return await IO(e);let t=LO(e);if(!t)return await BO(Ly(e));let n=await me({...t,command:["gh",...Ly(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await $O(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function IO(e){let t=e.target??"",[n,r,s]=await Promise.all([me({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),me({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),me({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[n,r,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=Gy(ks(n.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:be(ks(s.stdout)).map(NO)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function LO(e){let t=Hy(e.passthrough),n=MO(e.passthrough,"--limit")??30,r=nt(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:r,per_page:n}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:r,labels:nt(e.passthrough,"--label"),per_page:n}};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:n}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function $O(e,t){let n=ks(t);switch(`${e.kind}:${e.action}`){case"pr:list":return be(n).map(jy);case"pr:view":return Gy(n);case"issue:list":return be(n).filter(r=>!pn(r.pull_request)).map(Dy);case"issue:view":return Dy(n);case"run:list":return{items:be(j(n).workflow_runs).map(Ny),total:he(j(n),"total_count")};case"run:view":{let r=Ny(n),s=Hy(e.passthrough);if(!s)return r;let o=await me({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:o.status===0?be(j(ks(o.stdout)).jobs).map(DO):[]}}default:return n}}function jy(e){let t=j(e);return{number:he(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:il(t.user),labels:be(t.labels).map(n=>({name:x(n,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(j(t.base),"ref"),headRefName:x(j(t.head),"ref")}}function Gy(e){return jy(e)}function Dy(e){let t=j(e);return{number:he(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:be(t.labels).map(n=>({name:x(n,"name")})),author:il(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Ny(e){let t=j(e);return{databaseId:he(t,"database_id")||he(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 DO(e){let t=j(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function NO(e){let t=j(e);return{author:il(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function il(e){let t=j(e);return{login:x(t,"login")}}function Hy(e){return e.find(t=>!t.startsWith("-"))}function nt(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function MO(e,t){let n=nt(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function BO(e){let t=EO("gh",e,{stdio:["ignore","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function FO(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=tl(n,"prs"),o=s.rows.map(c=>Wy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):ir({...r,prs:i,aggregate:a,summary:`${sl(i.length,o.length,e.query)} ${My(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ir({...r,pr:Uy(j(n),e),summary:`PR #${he(j(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return jO(e,t,j(n));case"issue:list":{let s=tl(n,"issues"),o=s.rows.map(c=>qy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):ir({...r,issues:i,aggregate:a,summary:`${sl(i.length,o.length,e.query)} ${My(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ir({...r,issue:qO(j(n),e),summary:`issue #${he(j(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=tl(n,"runs"),o=s.rows.map(c=>Jy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):ir({...r,runs:i,aggregate:a,summary:`${sl(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 ir({...r,run:JO(j(n),e),summary:`run ${he(j(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function jO(e,t,n){let r=Uy(j(n.view),{...e,action:"view",wide:!0}),s=ae(be(n.checks).map(GO),e.query),o=j(n.comments).comments,i=ae(be(o).map(HO).slice(-3),e.query);return ut({command:t.join(" "),pr:r,checks:s,comments:i,summary:`PR #${he(j(n.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 GO(e){return{name:x(e,"name"),state:Ss(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function HO(e){return{author:Ky(e.author),body:vi(e,"body",ol,!1),created:x(e,"createdAt")}}function tl(e,t){if(Array.isArray(e))return{rows:be(e)};let n=j(e),r=he(n,"total")||he(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:be(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:be(n.workflow_runs),total:r}:{rows:[]}}function nl(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function rl(e,t,n,r,s){return ut({...e,empty:!0,scope:WO(t),[n]:[],aggregate:r,summary:`0 ${UO(t)}`},s)}function WO(e){let t=nt(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let o=nt(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${n}`}let r=nt(e.passthrough,"--branch")??nt(e.passthrough,"-b"),s=nt(e.passthrough,"--workflow")??nt(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function UO(e){let t=nt(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Wy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),draft:!!e.isDraft};return al(n,e,t,["author","labels","url","updated"]),n}function Uy(e,t){let n=Wy(e,t);return n.body=vi(e,"body",ol,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function qy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),labels:Vy(e.labels)};return al(n,e,t,["author","url","updated"]),n}function qO(e,t){let n=qy(e,t);return n.body=vi(e,"body",ol,t.full),n}function Jy(e,t){let n={id:he(e,"databaseId"),name:x(e,"name"),status:Ss(e),conclusion:x(e,"conclusion")};return al(n,e,t,["event","branch","workflow","created"]),n}function JO(e,t){let n=Jy(e,t),r=be(e.jobs).map(s=>({name:x(s,"name"),status:Ss(s),conclusion:x(s,"conclusion"),log:vi(s,"log",CO,t.full)}));return n.jobs=r,n}function vi(e,t,n,r){let s=x(e,t);if(r||Buffer.byteLength(s)<=n)return s;let o=s.slice(0,n),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 VO(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(pn(n)){if(pn(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function KO(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function My(e,t){return e.every(n=>n.state===t)?t:"returned"}function sl(e,t,n){return n?`${e}/${t}`:String(e)}function ir(e,t,n){return t.query?ut(e,n):e}function Ss(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function al(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=Ky(t.author):s==="labels"?e.labels=Vy(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 Vy(e){return Array.isArray(e)?e.map(t=>pn(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Ky(e){return pn(e)?x(e,"login"):""}function ks(e){return e.trim()?JSON.parse(e):null}function be(e){return Array.isArray(e)?e.filter(pn):[]}function j(e){return pn(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function he(e,t){let n=e[t];return typeof n=="number"?n:0}function pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var xO,vO,ol,CO,TO,xi,ul=g(()=>{"use strict";V();N();Wo();Iy();un();wr();Ve();xO={"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"]},vO={"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"]},ol=160,CO=160,TO={"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"]};xi=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;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 fl={};B(fl,{renderTestContract:()=>zy,runTestWrapper:()=>ZO});import{spawn as zO}from"node:child_process";async function ZO(e,t){let n=br(e),r=await sA(n.argv);return await zy(e,r,t)}async function zy(e,t,n){let r=br(e),o=Yy(r.argv)==="vitest"?oA(t.stdout):iA(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let p=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${uA(o.durationSeconds)}`,c=ae(o.failures,r.query);if(n.level==="terse")return await eA(r.argv,t,{...o,failures:c},i,a,n,r.query);let u=[],l,f=0;for(let p of c){let b=await aA(p.excerpt,r.argv.join(" "),n.store);u.push({suite:p.suite,name:p.name,excerpt:b.text}),l??=b.handle,f+=b.bytesElided}let d={exit_code:i,summary:r.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let m=r.query?ut(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function eA(e,t,n,r,s,o,i){let a=tA(n.failures),c={exit_code:r,summary:i?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?ut(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),f=Math.max(0,n.failures.length-a.length),d=a.some((w,k)=>w.excerpt!==n.failures[k].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:u};let m={exit_code:r,summary:s};n.failures.length>0&&(m.failures=n.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let p=C(m),b=Buffer.byteLength(p),_=await o.store?.mint(Buffer.from(p),{command:e.join(" "),loss:{level:"terse",bytes_elided:b}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${b}) \u2014 ${He(_)}`;return{stdout:Buffer.from(`${l}
124
+ ${y}`),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:b,rowsElided:f,rawOutput:Buffer.from(p)}}function dl(e){return e===0||e===null?0:1}function tA(e){let t=[],n=QO;for(let r of e.slice(0,XO)){let s=nA(r.excerpt,Math.min(YO,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function nA(e,t){if(t<=0)return"";let n=e.split(`
125
+ `),r=n.length<=2?e:`${n[0]}
120
126
  \u2026
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 PT(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 AT(e){let t=PT(e),r=kT(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 IT(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=MT(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:DT(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 LT(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 $T(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 DT(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
125
- `):""}function NT(e){return`${Number(e.toFixed(1))}s`}function MT(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,ST,ET,xT,ju=h(()=>{"use strict";J();N();Zt();sn();Be();Mu=320,ST=160,ET=Mu,xT=3});var Wu={};F(Wu,{parseCatCommand:()=>Gu,renderCatContract:()=>JT,runCatWrapper:()=>UT});import{isUtf8 as BT}from"node:buffer";import{readFile as FT}from"node:fs/promises";import{extname as jT}from"node:path";async function UT(e,t){let r=Gu(e),n;try{n=await FT(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 JT(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=KT(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)?qT(e,t.file,r,s,n.level,o):VT(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 qT(e,t,r,n,s,o){let i=ai(n),a=s==="terse"?GT:HT,c=ai(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:zT(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function VT(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ai(n).length,content:ai(s.text),truncated:s.truncated}}function KT(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(`
130
- `)}${n&&i.length>0?`
131
- `:""}`,truncated:i.length<s.length}}function zT(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&&!YT(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ai(e){let t=e.split(`
132
- `);return t.at(-1)===""?t.slice(0,-1):t}function ry(e){return e.includes(0)||!BT(e)}function Zh(e){return WT.has(jT(e).toLowerCase())}function YT(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,HT,GT,WT,Uu=h(()=>{"use strict";N();Zt();Be();Xh=8*1024,Hu=10,HT=8,GT=2,WT=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:()=>iO});import{constants as XT}from"node:fs";import{access as ZT,copyFile as QT,mkdir as sy,readFile as eO,rename as tO,writeFile as oy}from"node:fs/promises";import{dirname as rO,join as ls,resolve as nO}from"node:path";async function iO(e,t={}){let r=nO(e),n=ls(r,".red"),s=ls(n,"config.yaml"),o=ls(r,Vu);await sy(n,{recursive:!0}),await sy(rO(o),{recursive:!0});let i="";try{i=await eO(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=ls(r,sO),m=ls(r,oO);if(await qu(f))await tO(f,o),p=!0;else if(await qu(m))await QT(m,o),l=!0;else{let{provisionElisionStore:w}=await Promise.resolve().then(()=>(Ro(),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=aO(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: ${ci(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ci(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ci(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ci(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
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Yy(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 rA(e){if(Yy(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 n=e.slice(1);return{executable:"cargo",args:n.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function sA(e){let t=rA(e),n=zO(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function oA(e){let t=Qy(e);if(!$t(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Dt(t.numTotalTests),o=Dt(t.numFailedTests),i=lA(Dt(t.startTime),Dt(t.endTime));for(let a of n){if(!$t(a))continue;let c=rt(a.name)||rt(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)$t(l)&&l.status==="failed"&&r.push({suite:c,name:rt(l.fullName)||rt(l.title)||rt(l.name),excerpt:cA(l.failureMessages)||rt(l.failureMessage)})}return s||=n.reduce((a,c)=>!$t(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=r.length,i||=n.reduce((a,c)=>$t(c)?a+Dt(c.perfStats&&$t(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:n.length||1,durationSeconds:i,failures:r}}function iA(e){let t=e.split(`
128
+ `).filter(Boolean).map(c=>Qy(c)).filter($t);if(t.length===0)return null;let n=[],r=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,r+=Dt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Dt(c.failed),i+=Dt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:rt(c.name).split("::").slice(0,-1).join("::"),name:rt(c.name),excerpt:rt(c.stdout)});continue}if(c.reason==="compiler-message"&&$t(c.message)){let u=rt(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
129
+ `)}),o||=1,r||=1,s||=1),s||=n.length,o||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:o,durationSeconds:i,failures:n}}async function aA(e,t,n){let r=Buffer.from(e);if(r.length<=ll)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let s=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),o=r.subarray(0,ll).toString("utf8").replace(/\uFFFD$/,""),i=r.length-Buffer.byteLength(o);return{text:`${o}
130
+ \u2026 elided ${i} bytes (+${r.length}) \u2014 ${He(s)}`,handle:s,bytesElided:r.length}}function Qy(e){try{return JSON.parse(e)}catch{return null}}function cA(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
131
+ `):""}function uA(e){return`${Number(e.toFixed(1))}s`}function lA(e,t){return e>0&&t>e?(t-e)/1e3:0}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function rt(e){return typeof e=="string"?e:""}function $t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ll,YO,QO,XO,pl=g(()=>{"use strict";V();N();un();wr();Ve();ll=320,YO=160,QO=ll,XO=3});var hl={};B(hl,{parseCatCommand:()=>gl,renderCatContract:()=>bA,runCatWrapper:()=>yA});import{isUtf8 as dA}from"node:buffer";import{readFile as fA}from"node:fs/promises";import{extname as pA}from"node:path";async function yA(e,t){let n=gl(e),r;try{r=await fA(n.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=$e(e.join(" "),"",o);return{stdout:D({...i,help:`ls ${n.file}`}),stderr:Buffer.from(`${o}
132
+ `),status:1,signal:null}}return rb(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await nb(e,n,r,t)}async function bA(e,t,n){if((t.status??0)!==0||t.signal){let i=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let r=gl(e),s=Buffer.from(t.stdout,"utf8");return rb(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await nb(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function gl(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,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"){n=a.slice(2),r=tb(t[++i],ml);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=tb(u,ml);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:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function nb(e,t,n,r){let s=n.toString("utf8"),o=RA(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let i=r.level!=="lossless"||n.length>eb(r.heavyByteThreshold,Xy)||o.truncated;if(!Zy(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Zy(t.file)?wA(e,t.file,n,s,r.level,o):_A(e,t.file,n,s,o),c=`${C(a)}
133
+ `;if(!i&&Buffer.byteLength(c)<=eb(r.heavyByteThreshold,Xy))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${He(u)}
134
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function wA(e,t,n,r,s,o){let i=Ci(r),a=s==="terse"?gA:mA,c=Ci(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:n.length,lines:i.length,symbols:kA(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function _A(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Ci(r).length,content:Ci(s.text),truncated:s.truncated}}function RA(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
135
+ `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,o=t.limit??ml,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
136
+ `)}${r&&i.length>0?`
137
+ `:""}`,truncated:i.length<s.length}}function kA(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].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:n+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:n+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&&!SA(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Ci(e){let t=e.split(`
138
+ `);return t.at(-1)===""?t.slice(0,-1):t}function rb(e){return e.includes(0)||!dA(e)}function Zy(e){return hA.has(pA(e).toLowerCase())}function SA(e){return["for","if","switch","while"].includes(e)}function eb(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function tb(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Xy,ml,mA,gA,hA,yl=g(()=>{"use strict";N();un();Ve();Xy=8*1024,ml=10,mA=8,gA=2,hA=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var db={};B(db,{REPO_STORE_PATH:()=>_l,mergeRspBlock:()=>cb,provisionRspRepoStore:()=>LA});import{constants as EA}from"node:fs";import{access as xA,copyFile as vA,mkdir as ob,readFile as CA,rename as TA,writeFile as ib}from"node:fs/promises";import{dirname as OA,join as Es,resolve as AA}from"node:path";async function LA(e,t={}){let n=AA(e),r=Es(n,".red"),s=Es(r,"config.yaml"),o=Es(n,_l);await ob(r,{recursive:!0}),await ob(OA(o),{recursive:!0});let i="";try{i=await CA(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=cb(i,{enabled:!0,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be,heavyGitByteThreshold:t.heavyGitByteThreshold??mt}),c=a!==i;c&&await ib(s,a,"utf8");let u=!await wl(o),l=!1,f=!1;if(u){let m=Es(n,PA),p=Es(n,IA);if(await wl(m))await TA(m,o),f=!0;else if(await wl(p))await vA(p,o),l=!0;else{let{provisionElisionStore:b}=await Promise.resolve().then(()=>(Go(),qm)),_=process.env.REDDB_BIN;try{await b({uri:`file://${o}`,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=$A(a,_l);return d!==a&&await ib(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function cb(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Ti(t.ttlDays,Ne)}`,` ephemeralTtlHours: ${Ti(t.ephemeralTtlHours,Me)}`,` byteBudget: ${Ti(t.byteBudget,Be)}`,` heavyGitByteThreshold: ${Ti(t.heavyGitByteThreshold,mt)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
139
+ `),s=ub(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
134
140
  `)}
135
- `}let o=Ku(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
141
+ `}let o=Rl(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(o)].join(`
136
142
  `)}
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 ci(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function aO(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(`
143
+ `}function ub(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Sl(r)&&kl(r)===0&&lb(r)===t)return n}return-1}function Rl(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Sl(e[s])&&kl(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function kl(e){return(e.match(/^ */)?.[0]??"").length}function Sl(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function lb(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $A(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
144
+ `),r=ub(n,"plugins");if(r===-1)return e;let s=Rl(n,r,0),o=ab(n,"memory",r+1,s,2);if(o===-1)return e;let i=Rl(n,o,2),a=[...n],c=ab(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
139
145
  `)}
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 ZT(e,XT.F_OK),!0}catch{return!1}}var Vu,sO,oO,dy=h(()=>{"use strict";me();Ae();Vu=Ha,sO=Xl,oO=".red/memory/graph.rdb"});var yy={};F(yy,{runRspMcpServer:()=>uO});import{createInterface as cO}from"node:readline";async function uO(){let e=Pe(process.cwd(),process.env),t=cO({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 lO(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 lO(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=bO(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(dO(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await pO(r.arguments,n)}]}}return{}}function nr(e){return`${U(e)}
141
- `}function dO(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function pO(e,t){let r=mO(e?.payload);try{return await fO(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return hy(r)}}async function fO(e,t,r){let n=gO(t?.level),s=await su(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return hy(s.output);let o=Wo(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 hO(o,i.length,a,n)}function mO(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function gO(e){return e==="terse"?"terse":"brief"}function hO(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:yO(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function hy(e){return e.endsWith(`
146
+ `}function ab(e,t,n,r,s){for(let o=n;o<r;o++){let i=e[o];if(Sl(i)&&kl(i)===s&&lb(i)===t)return o}return-1}async function wl(e){try{return await xA(e,EA.F_OK),!0}catch{return!1}}var _l,PA,IA,fb=g(()=>{"use strict";Re();je();_l=mc,PA=Ud,IA=".red/memory/graph.rdb"});var bb={};B(bb,{runRspMcpServer:()=>NA});import{createInterface as DA}from"node:readline";async function NA(){let e=Fe(process.cwd(),process.env),t=DA({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let s=await MA(r,e);gb({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){gb({jsonrpc:"2.0",id:typeof hb(n)?.id>"u"?null:hb(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function MA(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 n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:mb(t)}]};if(!t.enabled)return{content:[{type:"text",text:mb(t)}],isError:!0};let r=qA(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:mn({tool:"rsp_stats",...await r.accountingStats(t.telemetryByteBudget)})}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),o=await r.get(s);return o?"status"in o?{content:[{type:"text",text:mn({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:mn({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:mn(BA(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await FA(n.arguments,r)}]}}return{}}function mn(e){return`${J(e)}
147
+ `}function BA(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function FA(e,t){let n=GA(e?.payload);try{return await jA(n,e,t)}catch(r){if(process.env.RSP_DEBUG==="1")throw r;return yb(n)}}async function jA(e,t,n){let r=HA(t?.level),s=await Pu(e,{level:r,command:"rsp mcp compress",store:n});if(s.detected)return yb(s.output);let o=ui(e);if(r==="brief"&&Buffer.byteLength(o)<=2*1024)return mn({tool:"rsp_compress",level:r,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await n.mint(i,{command:"rsp mcp compress",loss:{level:r,bytes_elided:i.length}});return WA(o,i.length,a,r)}function GA(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function HA(e){return e==="terse"?"terse":"brief"}function WA(e,t,n,r){let s=r==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=pb(o.subarray(0,i)),c=pb(o.subarray(Math.max(0,o.length-i)));return mn({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:UA(o),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function yb(e){return e.endsWith(`
142
148
  `)?e:`${e}
143
- `}function py(e){return e.toString("utf8").replace(/�$/g,"")}function yO(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 bO(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();Zn();Gt()});var _y={};F(_y,{renderShellInit:()=>wO});function wO(e,t=os){if(e==="fish")return _O(t);if(e==="bash"||e==="zsh")return RO(e,t);throw new Error(`unsupported shell: ${e}`)}function _O(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(li))].map(r=>` abbr --add --position command -- ${r} '${xO(`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 RO(e,t){let r=SO(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ui("git",r.get("git")??[]),...ui("gh",r.get("gh")??[]),...ui("vitest",r.get("vitest")??[]),...ui("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 ui(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(li),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(li)),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 kO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${EO(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 kO(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 SO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!li(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function li(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function EO(e){return e.replace(/'/g,"'\\''")}function xO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ry=h(()=>{"use strict";is()});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"&&vO(t.chosenOption)&&CO(t.outcome)&&TO(t.cost)}function vO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function CO(e){return e==="success"||e==="failure"||e==="escalated"}function TO(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 OO}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 IO(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):di(e)?e:{}}function Dy(e){let t=e==="contact"?"person":e;if(PO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ny(e){if(AO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function LO(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 di(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 di(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zu(e){return e!=null}function $O(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function DO(e){return OO("sha256").update(JSON.stringify(e)).digest("hex")}function NO(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 MO(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 BO(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 FO(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 jO(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 HO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,PO,AO,Qu,Fy=h(()=>{"use strict";ky();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},PO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),AO=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:HO(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=$O(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=DO([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=`${NO(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:di(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=MO(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:BO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:FO(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 jO(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:di(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=LO(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(IO).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:()=>zO});import{randomUUID as qr}from"node:crypto";import{execFileSync as GO,spawn as WO}from"node:child_process";import{existsSync as UO}from"node:fs";import{mkdir as qy,rename as JO,rm as jy,writeFile as Vy}from"node:fs/promises";import{createServer as qO}from"node:net";import{dirname as sl,join as pi}from"node:path";import{fileURLToPath as VO,pathToFileURL as KO}from"node:url";async function zO(e){await qy(sl(e.socketPath),{recursive:!0});let t=cP();aP();let r=e.telemetryDrainTimeoutMs??Ky,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Xs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=qO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),gP(R,async(T,B)=>{m();let Re=await hP(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=iP(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=()=>{fi(),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??zs,byteBudget:e.telemetryByteBudget??e.byteBudget??Ys});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??pi(W(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await As(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"),fi(),e.pidPath&&await jy(e.pidPath,{force:!0}),await Is(y)}async function tP(e,t,r=new Date){let n=await ko(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=pi(W(t),QO),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 JO(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 rP(e){let t=[];for(let r of eP){let n=await nP(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await sP(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 nP(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 sP(e,t,r){let n=oP(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${zy(t)}`)}function oP(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 iP(e){return e&&clearTimeout(e),setTimeout(()=>{fi(),process.exit(0)},ZO)}function aP(){Hy||(Hy=!0,process.on("exit",()=>fi()))}function cP(){if(process.platform==="win32")return;let t=WO(process.execPath,["-e",`
149
+ `}function pb(e){return e.toString("utf8").replace(/�$/g,"")}function UA(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function qA(e){return Ga(process.cwd(),e)}function mb(e){let t=e.enabled?kt(process.cwd(),e.overhead):null;return mn({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(n=>n.family)??[],help:e.enabled?[]:["/red-setup"]})}function gb(e){process.stdout.write(`${JSON.stringify(e)}
150
+ `)}function hb(e){try{return JSON.parse(e)}catch{return null}}var wb=g(()=>{"use strict";ct();je();V();fs();Xt()});var Rb={};B(Rb,{renderShellInit:()=>JA});function JA(e,t=ws){if(e==="fish")return VA(t);if(e==="bash"||e==="zsh")return KA(e,t);throw new Error(`unsupported shell: ${e}`)}function VA(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(n=>n.command[0]).filter(Ai))].map(n=>` abbr --add --position command -- ${n} '${XA(`rsp ${n}`)}'`)," 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(`
151
+ `)}function KA(e,t){let n=YA(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Oi("git",n.get("git")??[]),...Oi("gh",n.get("gh")??[]),...Oi("vitest",n.get("vitest")??[]),...Oi("cargo",n.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(`
152
+ `)}function Oi(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 n=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(Ai),r=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(Ai)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let o=n.map(i=>_b(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of zA(r)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${QA(u)}' ]`).join(" && ")).join(" || ");s.push(` ${_b(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function zA(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function YA(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Ai(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Ai(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function _b(e){return e.replace(/[\\|)&;]/g,"\\$&")}function QA(e){return e.replace(/'/g,"'\\''")}function XA(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var kb=g(()=>{"use strict";_s()});function El(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"&&ZA(t.chosenOption)&&eP(t.outcome)&&tP(t.cost)}function ZA(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function eP(e){return e==="success"||e==="failure"||e==="escalated"}function tP(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 Sb=g(()=>{});import{createHash as nP}from"node:crypto";function Db(e,t){return new vl(e,t)}function Eb(e){let t=Number(e.red_entity_id??e.rid),n=Cl(e.properties??e.PROPERTIES),r=Nb(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let s=String(n.id??e.label??e.LABEL??t),o=String(n.title??e.label??e.LABEL??s),i=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:r,properties:{...n,id:s,title:o,content:i,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function xb(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),s=Mb(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:s,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Cl(e.properties??e.PROPERTIES)}}function oP(e){let t=Number(e.red_entity_id??e.rid),n=Cl(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!El(n)?null:{rid:t,event:n}}function Cl(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Pi(e)?e:{}}function Nb(e){let t=e==="contact"?"person":e;if(rP.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Mb(e){if(sP.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function iP(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function vb(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function hn(e){return Pi(e)?e:{}}function Cb(e,t){return hn(e)[t]}function Tb(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ob(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ab(e){let t=hn(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ye(e){return typeof e=="string"&&e.length>0?e:void 0}function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xl(e){return e!=null}function aP(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function cP(e){return nP("sha256").update(JSON.stringify(e)).digest("hex")}function uP(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Pb(e){return`artifact-hash:${e}`}function Ib(e,t,n){return`connection:${e}:${t}:${n}`}function Lb(){return"model-tier-bandit:v1"}function lP(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function $b(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Bb(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+$b(n,a)*3+$b(r,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 dP(e,t,n,r){let s=0;for(let o of n){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=r.get(i);if(!a)continue;let c=Fb({...Bb(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return gn(s)}function Fb(e){return{...e,lexical:gn(e.lexical),tags:gn(e.tags),kind:gn(e.kind),connections:gn(e.connections),vector:gn(e.vector),total:gn(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function gn(e){return Math.round(e*1e3)/1e3}function fP(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(o=>n.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function pP(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=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:n,missing_evidence:r}}function mP(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var st,rP,sP,vl,jb=g(()=>{"use strict";Sb();st={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},rP=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),sP=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),vl=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(hn(n));if(t==="getArtifact")return await this.getArtifact(Cb(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=hn(n);return await this.search(Tb(r,"query"),Ob(r,"limit")??10,Ab(r.options))}if(t==="think"){let r=hn(n);return await this.think(Tb(r,"query"),Ob(r,"limit")??8,Ab(r.options))}if(t==="link")return await this.link(hn(n));if(t==="backlinks")return await this.backlinks(Cb(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(hn(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);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 ${st.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${st.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${st.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:mP(t.map(r=>r.kind))}}async capture(t){let n=ye(t.title)||"Untitled artifact",r=ye(t.content);if(!r)throw new Error("brain capture requires content");let s=Nb(ye(t.kind)||"note"),o=aP(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=cP([s,n,r,o,ye(t.sourcePath),ye(t.sourceSession)]),c=await this.kv().get(Pb(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${uP(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:o,source_agent:ye(t.sourceAgent),source_runner:ye(t.sourceRunner),source_session:ye(t.sourceSession),source_path:ye(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:Pi(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${st.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 m=Eb(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Pb(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${st.artifacts}`)).rows.map(Eb).filter(xl)}async search(t,n,r={}){let s=lP(t),o=new Set(r.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=Bb(u,s),f=Fb({...l,connections:dP(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:fP(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,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return pP(t,s)}async link(t){let n=await this.getArtifact(vb(t.from)),r=await this.getArtifact(vb(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=Mb(ye(t.kind)||"related_to"),o=await this.findConnection(n.rid,r.rid,s);if(o!=null){let l=(await this.listConnections()).find(f=>f.rid===o);if(l)return l}let i={reason:ye(t.reason),confidence:ye(t.confidence)||"explicit",created_at:Date.now(),metadata:Pi(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${st.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=xb(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ib(n.rid,r.rid,s),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${st.connections}`)).rows.map(xb).filter(xl)}async eventKpis(t){let n=(await this.listArtifacts()).filter(o=>o.kind==="event"),r=iP(ye(t.interval)||"day"),s=ye(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:s,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!El(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${st.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 ${st.outcomeEvents}`)).rows.map(oP).filter(xl).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Lb());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Lb(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let s=await this.kv().get(Ib(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(st.kv)}}});var Xb={};B(Xb,{runResidentServer:()=>kP});import{randomUUID as ar}from"node:crypto";import{execFileSync as gP,spawn as hP}from"node:child_process";import{existsSync as yP}from"node:fs";import{mkdir as Vb,rename as bP,rm as Gb,writeFile as Kb}from"node:fs/promises";import{createServer as wP}from"node:net";import{dirname as Pl,join as Ii}from"node:path";import{fileURLToPath as _P,pathToFileURL as RP}from"node:url";async function kP(e){await Vb(Pl(e.socketPath),{recursive:!0});let t=DP();$P();let n=e.telemetryDrainTimeoutMs??zb,r={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??bo,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=wP(k=>{l.add(k),k.once("close",()=>l.delete(k)),p(),HP(k,async(T,M)=>{p();let Te=await WP(r,T,e.storeUri,e.residentVersion??"0.0.0-dev"),we={id:T.id,ok:!0,value:Te,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};M(we),T.op==="handover"&&setImmediate(()=>m())})});function m(){o=!0,u=!0,c=LP(c),d.close();for(let k of l)k.destroy()}function p(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(k=>{let T=()=>{Li(),d.close();for(let M of l)M.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(k,T),{signal:k,handler:T}});await new Promise((k,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),k()})}),(async()=>{let k=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(de=>setTimeout(de,T));let M=await an.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Te=Number(process.hrtime.bigint()-k)/1e6,we=new Al(M,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??ho,byteBudget:e.telemetryByteBudget??e.byteBudget??yo});if(o){await M.close();return}if(await Tl(we,n),o){await M.close();return}r={kind:"ready",store:M,telemetry:we,storeOpenCount:1,storeElapsedMs:Te},s=setInterval(()=>{let de=r.kind==="ready"?r:void 0;de&&Tl(de.telemetry,n)},f),s.unref(),p()})().catch(k=>{r={kind:"failed",error:k instanceof Error?k:new Error(String(k))},p()}),e.pidPath&&await Kb(e.pidPath,`${process.pid}
153
+ `,{encoding:"utf8",mode:384});let h=e.residentVersion??"0.0.0-dev",y=e.registryPath??Ii(q(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Qs(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:h})}catch{}await new Promise(k=>d.once("close",k)),a&&clearTimeout(a),s&&clearInterval(s),await Gb(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Tl(w.telemetry,n,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:k,handler:T}of _)process.off(k,T);t?.kill("SIGTERM"),Li(),e.pidPath&&await Gb(e.pidPath,{force:!0}),await Xs(y)}async function TP(e,t,n=new Date){let r=await Ho(e,1,n),s=n.toISOString().slice(0,10),o=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=r.savings.tokens_saved>0?o/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Ii(q(t),vP),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:r.health.show_total,updated_at:n.toISOString()};r.health.show_total>0&&(u.show_hit_rate=r.health.show_hit_rate),r.decisions.seen>0&&(u.decisions={seen:r.decisions.seen,contributed:r.decisions.contributed}),await Vb(Pl(a),{recursive:!0}),await Kb(c,`${J(u)}
154
+ `,{encoding:"utf8",mode:384}),await bP(c,a)}async function Tl(e,t=zb,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Qb(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
155
+ `)}}async function OP(e){let t=[];for(let n of CP){let r=await AP(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await PP(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Yb(n)}`))}return t}async function AP(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let s=r.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(r))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 n}}async function PP(e,t,n){let r=IP(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Yb(t)}`)}function IP(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 Yb(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function LP(e){return e&&clearTimeout(e),setTimeout(()=>{Li(),process.exit(0)},xP)}function $P(){Hb||(Hb=!0,process.on("exit",()=>Li()))}function DP(){if(process.platform==="win32")return;let t=hP(process.execPath,["-e",`
150
156
  const { execFileSync } = require("node:child_process");
151
157
  const parentPid = Number(process.argv[1]);
152
158
  const known = new Set();
@@ -187,23 +193,23 @@ const timer = setInterval(() => {
187
193
  clearInterval(timer);
188
194
  process.exit(0);
189
195
  }, 500);
190
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function fi(){for(let e of uP())try{process.kill(e,"SIGTERM")}catch{}}function uP(){if(process.platform==="win32")return[];let e="";try{e=GO("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 lP(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<=YO)try{return await Yy((async()=>({tokens:(await dP())("cl100k_base").encode(e).length,estimated:!1}))(),XO,"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 dP(){return Wy??=import(KO(pP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Wy}function pP(){let e=sl(VO(import.meta.url)),r=[pi(e,"..","node_modules","js-tiktoken","dist","index.js"),pi(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>UO(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 fP(e){try{return JSON.parse(e)}catch{return e}}function mP(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 gP(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 hP(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 ko(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 bP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await yP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function yP(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 bP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var YO,XO,Ky,ZO,QO,eP,nl,Hy,Wy,Zy=h(()=>{"use strict";me();Ls();vs();Qe();Ro();Fy();Ie();Ae();YO=256*1024,XO=500,Ky=2e3,ZO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),QO="rsp-status-summary.json",eP=[ce,X,he,Ue,xn],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 rP(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 tP(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 lP(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(xn).get("index:v1"),n=typeof r=="string"?fP(r):r;return mP(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(xn).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});_i();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}=wi(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 gs.unknownFlag(n);let s=wi(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 gs=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 gs(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 Ni(e){return zr(e,yw).values}var Gl={since:{kind:"value",coerce:ww},full:{kind:"boolean"}};function hs(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}Mi();Be();import{existsSync as wP}from"node:fs";import{fileURLToPath as _P}from"node:url";Qe();sn();J();He();import{existsSync as Ax}from"node:fs";import{fileURLToPath as Ix}from"node:url";Qe();fa();J();import{existsSync as H_}from"node:fs";import{fileURLToPath as G_}from"node:url";async function hr(e,t){let r={stats:W_(e.telemetryByteBudget),telemetry:ba(t)};if(!e.storeUri.startsWith("file://"))return r;let n=G_(e.storeUri);if(!H_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),gn)),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??$s(),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:U_(t.savings),dollars_saved_estimate_usd_display:J_(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 W_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:$s()}}function $s(){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 U_(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 J_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?mn(e.dollars_saved_estimate_usd):`${mn(e.dollars_saved_low_usd)}-${mn(e.dollars_saved_high_usd)} (estimate_midpoint: ${mn(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([Lx(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=Hi({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??$s()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},$x(e));return`${U(r)}
195
- `}async function Lx(e){if(!e.storeUri.startsWith("file://"))return[];let t=Ix(e.storeUri);if(!Ax(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Gt(),gn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function $x(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 r0}from"node:fs";import{fileURLToPath as n0}from"node:url";Ie();import{spawn as Uo}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 bC(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(()=>(Do(),$o)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(rs(),ts)).then(i=>i.parseExecCommandLine(e));r=Uo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Uo(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 ss(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=wC(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Jn));qo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Jo(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})),qo(i(n,{collection:c,ts:new Date().toISOString(),command:Jo(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(),Jn)),a={ts:new Date().toISOString(),command:Jo(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 qo(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})),qo(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: ${Vo()}, passing through
198
- `),await Jg(e)}function Vo(){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 Jo(e.positional)}function Jo(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 ns(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function bC(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 wC(e,t,r){let n=t[0]??"unknown",s=_C(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:kC(r)??1,stderrHead:RC(s,240)}}function _C(e){return e instanceof Error?ns(e.message):ns(String(e??""))}function RC(e,t){let r=ns(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 kC(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 qo(e){e.catch(()=>{})}async function Jg(e){if(e[0]==="exec"||e[0]==="proxy")return await SC(e);let t=e[0];if(!t)return 2;let r=Uo(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 SC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Do(),$o));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(rs(),ts));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
200
- `),2}let r=Uo(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 s0(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(o0(await o(t))),n.push(i0(e)),lh(e)){let{telemetry:i}=await hr(e,r);n.push(a0(i,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(c0(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 s0(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(()=>(is(),Qo)),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?ns(t.message):"unknown error"}`,"rsp setup")}}function o0(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 i0(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 a0(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})`,u0(s,t))}function c0(e){return e.verdict==="green"?K("overhead_budget",e.summary):er("overhead_budget",e.summary,"rsp status")}function u0(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 r0(n0(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:Di({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`${p0(t).join(`
196
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of NP())try{process.kill(e,"SIGTERM")}catch{}}function NP(){if(process.platform==="win32")return[];let e="";try{e=gP("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),o=Number(r[2]),i=r[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function MP(e){if(e.collection!==Se)return e;let t=await Wb(e.raw_text,qb(e.raw_bytes)),n=await Wb(e.emitted_text,qb(e.emitted_bytes)),{raw_text:r,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Wb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=SP)try{return await Qb((async()=>({tokens:(await BP())("cl100k_base").encode(e).length,estimated:!1}))(),EP,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function BP(){return Ub??=import(RP(FP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Ub}function FP(){let e=Pl(_P(import.meta.url)),n=[Ii(e,"..","node_modules","js-tiktoken","dist","index.js"),Ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>yP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function qb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ol(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Qb(e,t,n){let r;try{return await Promise.race([e,new Promise((s,o)=>{r=setTimeout(()=>o(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function jP(e){try{return JSON.parse(e)}catch{return e}}function GP(e){return Jb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jb(t)&&(t.collection===pe||t.collection===te||t.collection===Se||t.collection===Ze)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function HP(e,t){hf(e,(n,r)=>t(n,r),(n,r,s)=>{s({id:r?.id??ar(),ok:!1,error:n instanceof Error?n.message:String(n)})})}async function WP(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await ou(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ho(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await iu(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return qP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await UP(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function UP(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Db(s,t).request(n,r)}function qP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var SP,EP,zb,xP,vP,CP,Al,Hb,Ub,Zb=g(()=>{"use strict";Re();Zs();Js();ct();Go();jb();Ge();je();SP=256*1024,EP=500,zb=2e3,xP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),vP="rsp-status-summary.json",CP=[pe,te,Se,Ze,Fr],Al=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await OP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)o.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await xc(this.opts.rootDir,async a=>{let c=Un(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await TP(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof n.id=="string"&&n.id.trim()!==""?n.id:ar(),a={...await MP(n),id:i,created_at:s,expires_at:o};return await t.kv(n.collection).put(i,a),{collection:n.collection,key:i,created_at:s,expires_at:o,bytes:n.collection===pe?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===pe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Ol(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Ze?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Ol(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ze,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:pe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Ol(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?jP(n):n;return GP(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Fr).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),o=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||o.length<n.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Hb=!1});ji();Ve();var Ad={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},N_={json:{kind:"boolean"}},M_={help:{kind:"boolean",aliases:["h"]}},B_={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 Pd(e){let{command:t,args:n}=Fi(e,F_);return t==="--version"?{kind:"version",json:lr(n,N_).values.json===!0}:j_(e)?{kind:"help"}:{kind:"command"}}var F_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function j_(e){return Gt(e,M_).values.help===!0}function Id(e){let{values:t,rest:n}=H_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,B_).command,o=[...n],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:n[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var Ds=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:G_})}},G_=Object.keys(Ad).map(e=>`--${e}`);function H_(e){try{return Gt(e,Ad)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function Ld(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function $d(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var W_={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:Rt},"ephemeral-ttl-hours":{kind:"value",coerce:Rt},"byte-budget":{kind:"value",coerce:Rt},"telemetry-ttl-days":{kind:"value",coerce:Rt},"telemetry-byte-budget":{kind:"value",coerce:Rt},"telemetry-drain-interval-ms":{kind:"value",coerce:Rt},"telemetry-drain-timeout-ms":{kind:"value",coerce:Rt},"idle-ms":{kind:"value",coerce:Rt}};function ua(e){return lr(e,W_).values}var Dd={since:{kind:"value",coerce:q_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Dd).values.since??t}function Nd(e){return lr(e,Dd).values.full===!0}var U_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Md(e){let{values:t,rest:n}=Gt(e,U_),r=n[1];if(!r)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:r,params:s}}function Rt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function q_(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:void 0}la();Ve();import{existsSync as JP}from"node:fs";import{fileURLToPath as VP}from"node:url";ct();wr();V();Ye();import{existsSync as s0}from"node:fs";import{fileURLToPath as o0}from"node:url";ct();ja();V();import{existsSync as pk}from"node:fs";import{fileURLToPath as mk}from"node:url";async function Pn(e,t){let n={stats:gk(e.telemetryByteBudget),telemetry:qa(t)};if(!e.storeUri.startsWith("file://"))return n;let r=mk(e.storeUri);if(!pk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Xt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:qa(t)}}catch{return n}finally{await o.close()}}function Ja(e,t=qa(30),n=!1,r=Uf()){return`${J(Va(e,t,n,r))}
197
+ `}function Wf(e,t){return`${J({...e,overhead:qf(t)})}
198
+ `}function Uf(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:De,breaching_families:[],disabled_families:[],families:[]}}function qf(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 Va(e,t,n,r=Uf()){let s=t.savings.top_commands.slice(0,n?10:3),o=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??eo(),a=t.health.recent_failures.slice(0,n?20:5),c=t.decisions.top_pass_reasons.slice(0,n?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:hk(t.savings),dollars_saved_estimate_usd_display:yk(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:qf(r),health:{overhead_verdict:r.verdict,overhead_summary:r.summary,...t.health,degradation_rate_display:Ua(t.health.degradation_rate),show_hit_rate_display:Ua(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:Ua(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:n?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:n?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Wa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Wa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Wa(t.latency.store_elapsed_ms_avg)}}}function Jf(e){return`${J(e)}
199
+ `}function qa(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 gk(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:eo()}}function eo(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Ka(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
200
+ `)}function hk(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 yk(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function Ua(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Qg(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([i0(e),Promise.resolve().then(()=>(Eu(),Su)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:kt(ze(process.cwd()).rootDir,e.overhead)}}function Xg(e){let t=Va(e.stats,e.telemetry,!1,e.overhead),n=ma({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},a0(e));return`${J(n)}
201
+ `}async function i0(e){if(!e.storeUri.startsWith("file://"))return[];let t=o0(e.storeUri);if(!s0(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Xt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function a0(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"]}ct();V();Ve();import{existsSync as OT}from"node:fs";import{fileURLToPath as AT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function jh(e,t,n){let r=process.hrtime.bigint(),s=await Gh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return qC(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Gh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
202
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(i,a)=>o({stdoutBytes:r,stderrBytes:s,status:i,signal:a}))})}function Hh(e){return e>0&&Math.random()<e}async function bs(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
203
+ `);let s=await Jh(t);if(r){let o=JC(e,t,n),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ge(),os));fi(i(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:di(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),fi(i(r,{collection:c,ts:new Date().toISOString(),command:di(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Wh(e,t,n){let r=await Gh(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ge(),os)),a={ts:new Date().toISOString(),command:di(e),reason:"overhead-ceiling-self-disabled",wrapper_family:n.family,wrapper_exit_code:r.status??0,stderr_head:n.disabled_reason??n.reasons.join(",")};return fi(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:r.stdoutBytes+r.stderrBytes,emitted_bytes:r.stdoutBytes+r.stderrBytes,degradation_reason:a.reason,...a})),fi(s(t,{collection:i,accounting_recorded:!0,...a})),r.signal?(process.kill(process.pid,r.signal),128):r.status??0}async function Uh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${pi()}, passing through
204
+ `),await Jh(e)}function pi(){return"rsp is not enabled in this directory; run /red-setup"}function qh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function et(e){return di(e.positional)}function di(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function ys(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function qC(e,t,n,r,s){let o=n.stdoutBytes+n.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:r};Et(e,{collection:"rsp_accounting_events_v1",...i}),Et(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function JC(e,t,n){let r=t[0]??"unknown",s=VC(n)||e;return{reason:Fh(n)==="ENOENT"||Fh(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:zC(n)??1,stderrHead:KC(s,240)}}function VC(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function KC(e,t){let n=ys(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Fh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function zC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function fi(e){e.catch(()=>{})}async function Jh(e){if(e[0]==="exec"||e[0]==="proxy")return await YC(e);let t=e[0];if(!t)return 2;let n=li(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
205
+ `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function YC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:r}=await Promise.resolve().then(()=>(ti(),ei));t=r(e)}else{let{parseExecCommandLine:r}=await Promise.resolve().then(()=>(hs(),gs));t=r(e)}}catch(r){return process.stderr.write(`${r instanceof Error?r.message:String(r)}
206
+ `),2}let n=li(t,{shell:!0,stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
207
+ `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function uy(e,t,n){let r=[],s=!e.enabled;if(r.push(s?Q("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Q("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(Q("hook_wiring","skipped because rsp is disabled"),Q("proxy_mode","skipped because rsp is disabled"),Q("resident_liveness","skipped because rsp is disabled"),Q("store_provisioning","skipped because rsp is disabled"),Q("recent_degradation_rate","skipped because rsp is disabled"),Q("overhead_budget","skipped because rsp is disabled")),cy("disabled",r,n);r.push(await PT(e)),r.push(e.proxyEnabled?Q("proxy_mode","proxy routing enabled for pre-exec rewrites"):dn("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ye(),Qt));if(r.push(IT(await o(t))),r.push(LT(e)),dy(e)){let{telemetry:i}=await Pn(e,n);r.push($T(i,n))}else r.push(Q("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return r.push(DT(kt(process.cwd(),e.overhead))),cy(r.some(i=>!i.pass)?"fail":"pass",r,n)}function ly(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
208
+ `}async function PT(e){try{if(e.proxyEnabled)return Q("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(_s(),wi)),n=t("git status");return n.kind==="rewrite"?Q("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):dn("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return dn("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ys(t.message):"unknown error"}`,"rsp setup")}}function IT(e){return e.state==="registered-alive-socket-healthy"?Q("resident_liveness","resident registry points at a healthy socket"):dn("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function LT(e){return e.storeUri.startsWith("file://")?dy(e)?Q("store_provisioning","rsp store exists for this directory"):dn("store_provisioning","rsp store is not provisioned","rsp setup"):Q("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function $T(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return Q("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",o=n?.count??r;return dn("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,NT(s,t))}function DT(e){return e.verdict==="green"?Q("overhead_budget",e.summary):dn("overhead_budget",e.summary,"rsp status")}function NT(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 dy(e){if(!e.storeUri.startsWith("file://"))return!0;try{return OT(AT(e.storeUri))}catch{return!1}}function Q(e,t){return{name:e,pass:!0,finding:t}}function dn(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:ca({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function cy(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}Uu();function gy(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${FT(t).join(`
203
209
  `)}
204
- `}function p0(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 f0}from"node:child_process";import{createHash as m0}from"node:crypto";import{existsSync as g0,readFileSync as h0,statSync as y0}from"node:fs";import{tmpdir as b0}from"node:os";import{dirname as w0,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&&R0(s,o);let c=_0(e,t,a);return an(s,c,i),n?tr(x0(s,e,t,c,i,n.lastResponseMetrics())):v0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function _0(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 ri(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Jn));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 R0(e,t){try{let r=it(e),n=y0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!E0(r,Date.now()-s))return;let o=k0(e),i=S0(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");f0(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 k0(e){let t=e;for(;;){if(g0(kt(t,".git")))return t;let r=w0(t);if(r===t)return e;t=r}}function S0(e){let t=m0("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(b0(),`red-skills-${n}`,t)}function E0(e,t){try{let r=h0(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 x0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=Ss(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ie(),Jn));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 v0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=Ss(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(()=>(rs(),ts)),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 ss("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ss("wrapper failed",e.positional,n,r)}async function Qy(e=process.argv.slice(2)){let t=ys("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(()=>(is(),Qo));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(is(),Qo));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Zn(),iu));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Zn(),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,hs(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(`${Vo()}
207
- `),0);if(n.command==="git"&&ei(n.positional)){let g=process.hrtime.bigint();return await se(n,await ti(),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(),xs)),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=Ni(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(`${Vo()}
208
- `),0)}if(n.command==="warm-resident"){let g=a(process.cwd()),y=Ni(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(()=>(Do(),$o));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(()=>(En(),Mp));await B(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:R}=await Promise.resolve().then(()=>(J(),xs)),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(()=>(So(),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://")&&!wP(_P(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(),gn)),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,hs(n.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(J(),xs));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(hs(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()),ei(n.positional)){let T=process.hrtime.bigint();return await se(n,await ti(),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(()=>(rs(),ts)),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 ri(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 ri(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 ri(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 ss("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};
210
+ `}function FT(e){switch(e){case"stats":return F("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 F("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 F("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 F("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 F("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 F("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 F("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 F("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 F('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 F("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 F("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return F("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return F("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 F("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return F("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return F("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return F("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 F("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 F("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 F("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return F("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 F(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function F(e,t,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}Re();V();Ge();import{spawn as jT}from"node:child_process";import{createHash as GT}from"node:crypto";import{existsSync as HT,readFileSync as WT,statSync as UT}from"node:fs";import{tmpdir as qT}from"node:os";import{dirname as JT,join as Pt}from"node:path";async function le(e,t,n,r,s=process.cwd(),o,i=o?.overhead??De){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-n)/1e6;r&&o&&KT(s,o);let c=VT(e,t,a);return Rr(s,c,i),r?fn(XT(s,e,t,c,i,r.lastResponseMetrics())):ZT(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function VT(e,t,n){let r=Sr(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:n,childMs:r.childMs,selfStateBytesRead:r.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function fn(e){e.catch(()=>{})}async function ki(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ge(),os));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:n,loss:"lossless",raw_bytes:n?r:0,emitted_bytes:r})}function KT(e,t){try{let n=gt(e),r=UT(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!QT(n,Date.now()-s))return;let o=zT(e),i=YT(o),a=Pt(i,"rsp.sock"),c=Pt(i,"rsp.pid"),u=Pt(q(o),"rsp-resident.pid.json"),l=Pt(o,".red","tmp","rsp","wake.lock");jT(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 zT(e){let t=e;for(;;){if(HT(Pt(t,".git")))return t;let n=JT(t);if(n===t)return e;t=n}}function YT(e){let t=GT("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=Pt(n,"red-skills",t);if(Pt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Pt(qT(),`red-skills-${r}`,t)}function QT(e,t){try{let n=WT(e,"utf8");kr(Buffer.byteLength(n));for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),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 XT(e,t,n,r,s,o){let i=Buffer.concat([n.stdout,n.stderr]),a=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),c=Ws(r,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:f}=await Promise.resolve().then(()=>(Ge(),os));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:f,ts:new Date().toISOString(),command:et(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.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}),n.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:et(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function ZT(e,t,n,r,s){try{let o=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),a=Ws(r,s);Et(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),Et(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:et(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Nt=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}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}},bl=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function sb(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new bl,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(Uu(),my));if(i(e.positional))return await le(e,await a(),o,s,n,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(un(),Ou)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await le(e,u,o,s,n,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(ul(),cl)),a=await i(e.positional,{level:e.level,store:s});return await le(e,a,o,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(pl(),fl)),a=await i(e.positional,{level:e.level,store:s});return await le(e,a,o,s,n,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(yl(),hl)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await le(e,a,o,s,n,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(hs(),gs)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await le(e,a,o,s)}}catch(i){return Cn(i)?(process.stdout.write(i.render()),2):await bs("wrapper failed",e.positional,i,n)}finally{await s.close()}return await bs("wrapper failed",e.positional,r,n)}async function ew(e=process.argv.slice(2)){let t=Ms("rsp"),n=Pd(e);if(n.kind==="version")return process.stdout.write(n.json?`${JSON.stringify(t)}
211
+ `:`${Bd(t)}
212
+ `),0;if(n.kind==="help")return process.stdout.write(gy(e)),0;let r;try{r=Id(e)}catch(h){if($d(h))return process.stdout.write(Ld(h)),2;throw h}if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:h}=await Promise.resolve().then(()=>(_s(),wi));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:h}=await Promise.resolve().then(()=>(_s(),wi));return await h()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:h}=await Promise.resolve().then(()=>(fs(),Lu));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:h}=await Promise.resolve().then(()=>(fs(),Lu));return await h()}if(r.command==="setup"){let{provisionRspRepoStore:h}=await Promise.resolve().then(()=>(fb(),db)),y=await h(process.cwd());return process.stdout.write(Ka(y)),0}if(r.command==="mcp"){let{runRspMcpServer:h}=await Promise.resolve().then(()=>(wb(),bb));return await h(),0}if(r.command==="wait"){let{runWait:h}=await Promise.resolve().then(()=>(Eu(),Su));return await h(r.positional)}if(r.command==="shell-init"){let h=r.positional[1];if(h!=="fish"&&h!=="bash"&&h!=="zsh")return process.stdout.write(D({command:r.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(()=>(kb(),Rb));return process.stdout.write(y(h)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(je(),Mp)),o=s(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:h}=await Promise.resolve().then(()=>(Ye(),Qt)),y=h(process.cwd()),w=await uy(o,y,Ns(r.positional,1));return process.stdout.write(ly(w)),w.exitCode}let i=qh(r.command);if(!o.enabled)return i?await Uh(r.positional):(process.stdout.write(`${pi()}
213
+ `),0);if(r.command==="git"&&_i(r.positional)){let h=process.hrtime.bigint();return await le(r,await Ri(),h,void 0,await Wu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ye(),Qt)),u=a(process.cwd());if(i&&r.command){let{overheadFamilyDisabled:h}=await Promise.resolve().then(()=>(V(),qs)),y=h(u.rootDir,r.command);if(y)return await Wh(r.positional,u.rootDir,y)}if(i&&Hh(o.measurementHoldoutShare))return await jh(r,u.rootDir,o.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:h}=await Promise.resolve().then(()=>(Zb(),Xb)),y=a(process.cwd()),w=ua(r.positional),k=s(process.cwd(),process.env,r.storeUri);return k.enabled?(await h({socketPath:w.socket??y.socketPath,pidPath:w["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:k.storeUri,ttlDays:w["ttl-days"]??k.ttlDays,ephemeralTtlHours:w["ephemeral-ttl-hours"]??k.ephemeralTtlHours,byteBudget:w["byte-budget"]??k.byteBudget,telemetryTtlDays:w["telemetry-ttl-days"]??k.telemetryTtlDays,telemetryByteBudget:w["telemetry-byte-budget"]??k.telemetryByteBudget,telemetryDrainIntervalMs:w["telemetry-drain-interval-ms"]??k.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:w["telemetry-drain-timeout-ms"]??k.telemetryDrainTimeoutMs,idleMs:w["idle-ms"]??k.idleMs,residentVersion:w["resident-version"]??t.version,registryPath:w.registry??y.registryPath}),0):(process.stdout.write(`${pi()}
214
+ `),0)}if(r.command==="warm-resident"){let h=a(process.cwd()),y=ua(r.positional),w=s(process.cwd(),process.env,r.storeUri);if(!w.enabled)return 0;let{warmResidentServer:k}=await Promise.resolve().then(()=>(Ye(),Qt));return await k({...h,socketPath:y.socket??h.socketPath,wakeLockPath:y["wake-lock"]??h.wakeLockPath},{storeUri:w.storeUri,ttlDays:y["ttl-days"]??w.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??w.ephemeralTtlHours,byteBudget:y["byte-budget"]??w.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??w.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??w.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??w.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:h}=await Promise.resolve().then(()=>(ti(),ei));return await h(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:h,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ye(),Qt)),w=r.command==="sweep"?await y(u):await h(u);if(r.command==="sweep"){let{sweepGhEtagCache:M}=await Promise.resolve().then(()=>(Br(),Pp));await M(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:k}=await Promise.resolve().then(()=>(V(),qs)),T=k(u.rootDir,o.overhead);return process.stdout.write(Wf(w,T)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:h}=await Promise.resolve().then(()=>(Wo(),Qm)),y=Md(r.positional);if(!y)return process.stdout.write(D({command:r.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 w=await h({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
215
+ `),w.status}if(r.command==="dashboard"){let h=await Qg(o);return process.stdout.write(Xg(h)),0}if(!r.storeUri&&o.storeUri.startsWith("file://")&&!JP(VP(o.storeUri)))return i?await sb(r,o,u.rootDir):(process.stdout.write(D({command:et(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:f,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Xt(),Or)),m=(h=!0)=>Promise.resolve(f(process.cwd(),o,{ensureResident:h,paths:u})),p=()=>c(u,l(o,t.version)).catch(h=>void d(h)),b=()=>m(),_;try{if(r.command==="stats"){let{stats:h,telemetry:y}=await Pn(o,Ns(r.positional,30)),{overheadHealth:w}=await Promise.resolve().then(()=>(V(),qs));return process.stdout.write(Ja(h,y,Nd(r.positional),w(u.rootDir,o.overhead))),0}if(r.command==="gains"){let h=await b();_=()=>h.close();let y;try{y=await h.telemetryGains(Ns(r.positional,28))}catch(w){return process.stdout.write(D({command:`rsp ${r.positional.join(" ")}`.trim(),category:"real-error",error:w instanceof Error?w.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Jf(y)),0}if(r.command==="git"){if(fn(p()),_i(r.positional)){let T=process.hrtime.bigint();return await le(r,await Ri(),T,void 0,u.rootDir,o)}let{runGitWrapper:h}=await Promise.resolve().then(()=>(un(),Ou)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="gh"){fn(p());let{runGhWrapper:h}=await Promise.resolve().then(()=>(ul(),cl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="vitest"||r.command==="cargo"){fn(p());let{runTestWrapper:h}=await Promise.resolve().then(()=>(pl(),fl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="cat"){fn(p());let{runCatWrapper:h}=await Promise.resolve().then(()=>(yl(),hl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="exec"){fn(p());let{runExecWrapper:h}=await Promise.resolve().then(()=>(hs(),gs)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="show"&&r.handle){let h=await b();_=()=>h.close();let y=await h.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ki(u.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let k=D({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(k),await ki(u.rootDir,r.handle,!1,k.length),1}let w=D({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(w),await ki(u.rootDir,r.handle,!1,w.length),1}return process.stdout.write(D({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(h){if(Cn(h))return process.stdout.write(h.render()),2;if(i)return await bs("wrapper failed",r.positional,h,u.rootDir);throw h}finally{await _?.()}}Ve();import.meta.url===`file://${process.argv[1]}`&&ew().then(e=>process.exit(e),e=>{Cn(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{ew as main,Ka as renderSetupResult,Ja as renderStats};