@reddb-io/red-skills 3.4.0 → 3.4.2

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,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var iw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{for(var n in t)iw(e,n,{get:t[n],enumerable:!0})};function cw(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 uw(e=$l){return Object.entries(e).map(([t,n])=>cw(t,n)).sort((t,n)=>n.separator.length-t.separator.length)}function lw(e){return/^-\d+(\.\d+)?$/.test(e)}function wn(e){return!(!e||e.startsWith("-")&&!lw(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 Dl(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=>Dl(n.trim())):e}function Gt(e,t){switch(t){case"boolean":return dw(e);case"number":return fw(e);case"array":return e.split(",").map(n=>vs(n.trim()));case"string":default:return e}}function dw(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function fw(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 pw(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 mw(e){let t=[],n=hw(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",n),$("newline",`
3
+ var aw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{for(var n in t)aw(e,n,{get:t[n],enumerable:!0})};function uw(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 lw(e=$l){return Object.entries(e).map(([t,n])=>uw(t,n)).sort((t,n)=>n.separator.length-t.separator.length)}function dw(e){return/^-\d+(\.\d+)?$/.test(e)}function wn(e){return!(!e||e.startsWith("-")&&!dw(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 Dl(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=>Dl(n.trim())):e}function Ut(e,t){switch(t){case"boolean":return pw(e);case"number":return fw(e);case"array":return e.split(",").map(n=>vs(n.trim()));case"string":default:return e}}function pw(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function fw(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 mw(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 gw(e){let t=[],n=yw(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
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
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 r=yw(e.options);t.push(...r)}return t}function gw(e,t){let n=mw(e);return pw(n,t)}function hw(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 yw(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 Nl(e){let t=Ew(e.options??{},e.autoShort??!1),n=uw(e.separators??$l);return{schema:e,parse(r){return bw(r,e,t,n)},help(){return gw(e,e.formatter)}}}function bw(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?Gt(p,d.type):p),c++}s.positional[d.name]=m,i++}else{let m=d.type?Gt(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=kw(l,c,e,s,n,t);continue}if(l.startsWith("-")&&l.length>1&&!Ow(l)){c=Sw(l,c,e,s,n,t);continue}let f=ww(l,r);if(f){let{key:d,value:m,config:p}=f,b=s,_=b[p.to]??(b[p.to]={});_[d]=p.typed?Dl(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?Gt(b,d.type):b),c++}s.positional[d.name]=p,i++;continue}let m=d.type?Gt(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 vw(s,t,n),Cw(s,t,a),Tw(s,t,n),s}function ww(e,t){if(aw.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(_w(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(Rw(s,o,n))return{key:s,value:o,config:n}}}return null}function _w(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function Rw(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 kw(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 Sw(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?Gt(_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?Gt(_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 Ew(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=xw(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 xw(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 vw(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?Gt(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 Cw(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 Tw(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 Ow(e){return/^-\d+(\.\d+)?$/.test(e)}var $l,aw,Ml=g(()=>{$l={"=":"data",":=":{to:"data",typed:!0},":":"meta"},aw=/^[a-z][a-z0-9+.-]*:\/\//i});function Aw(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 Pw(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=Nl({options:Aw(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=Pw(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 $w(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 Ht(e,t,n={}){let r=$w(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=Iw.exec(c)??Lw.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,Iw,Lw,ur,ji=g(()=>{Ml();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}};Iw=/^--([^=]+)(?:=([\s\S]*))?$/,Lw=/^-([^-=])(?:=([\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 Fl(e){return Dw.test(e)}var Dw,Bl,jl=g(()=>{Dw=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,Bl="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});var Gl=g(()=>{});function R(e,t){return new _n(e,t)}function P(e,t){return new Ut(e,t)}function Rn(e){return e instanceof Ut?e:e instanceof _n?new Ut(e.line,e.reason):new Ut(0,String(e&&e.message?e.message:e))}var _n,Ut,ot=g(()=>{_n=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},Ut=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});var Hl,Wt,Ul,kn=g(()=>{Hl=["type","kind","event"],Wt="|",Ul=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 We(e){return R(e,"invalid quoted string")}function _e(e,t){if(e==="")return"";if(e.startsWith('"'))return Jl(e,t);if(e.includes('"'))throw We(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Nw(e)?Number(e):e}function Pe(e,t){let n=e.trim();if(n.startsWith('"'))return[Jl(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function Jl(e,t){if(e.charCodeAt(0)!==34)throw We(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 We(t)}if(s[0]!=="\\")throw We(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 We(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw We(t);n+=String.fromCharCode(a),r+=4;break}default:throw We(t)}}throw We(t)}function Vl(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 We(n);t=s+2;continue}if(r===-1)throw We(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=Vl(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=Vl(e,s+1,n)}return-1}function Nw(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Mw(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Bw(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 Bw(e);if(typeof e=="string")return jw(e,t);throw R(0,"not a primitive")}function Fw(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function K(e){return Fw(e)?e:Os(e)}function jw(e,t){return Gi(e,t)?Os(e):e}function Gi(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Mw(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Os(e){let t='"',n=0;ql.lastIndex=0;let r;for(;(r=ql.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,ql,qt=g(()=>{ot();G=",";Wl=/["\\\u0000-\u0008\u000a-\u001f]/g;ql=/["\\\u0000-\u001f]/g});function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dr=g(()=>{});function Kl(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 zl(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(()=>{ot();qt();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=Gw(r,1);if(s===void 0)return e;Le(t,n,s)}return t}function Gw(e,t){if(!H(e)||!Hw(e))return;let{order:n,discriminator:r,rows:s}=e;if(typeof n!="string"||typeof r!="string"||!Number.isSafeInteger(s)||s<0)throw Q(t);let o=Uw(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 Zl(t);let c=new Map;for(let[f,d]of Object.entries(e))if(!Ul.has(f)){if(!Array.isArray(d)||!d.every(H))throw Q(t);c.set(f,d)}if(c.size===0)throw Q(t);let u=new Map,l=o.map((f,d)=>{let m=c.get(f);if(m===void 0)throw Ui(t);let p=u.get(f)??0,b=m[p];if(b===void 0)throw Ui(t);return u.set(f,p+1),Ww(r,f,a[d],b,t)});for(let[f,d]of c)if((u.get(f)??0)!==d.length)throw Ui(t);return l}function Hw(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Uw(e,t,n){if(!e.startsWith("cycle("))throw Q(n);let r=e.slice(6),s=r.indexOf(")*");if(s===-1)throw Q(n);let o=r.slice(0,s),i=r.slice(s+2);if(o===""||i.includes("+tail("))throw Q(n);let a=o.split(",").map(l=>Kw(l,n));if(a.some(l=>l===""))throw Q(n);let c=Vw(i,n),u=a.length*c;if(!Number.isSafeInteger(u))throw Q(n);if(u!==t)throw Zl(n);return Array.from({length:u},(l,f)=>a[f%a.length])}function Ww(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 Q(s);Le(o,i,a)}for(let[i,a]of Object.entries(qw(r,s))){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw Q(s);Le(o,i,a)}return o}function qw(e,t){let n={};for(let[r,s]of Object.entries(e))Jw(n,r.split("."),s,t);return As(n,t)}function Jw(e,t,n,r){if(t.some(o=>o===""))throw Q(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 Q(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 Q(t);return As(e[String(r)],t)}):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,As(r,t)])):e}function Vw(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw Q(t);let n=Number(e);if(!Number.isSafeInteger(n))throw Q(t);return n}function Kw(e,t){try{return decodeURIComponent(e)}catch{throw Q(t)}}function Yl(e){return encodeURIComponent(e)}function Q(e){return R(e,"invalid cyclic array wire")}function Zl(e){return R(e,"cyclic array length mismatch")}function Ui(e){return R(e,"cyclic array group length mismatch")}function ed(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=zw(o);if(i===void 0)return;n.push([s,i])}let r=[];for(let[s,o]of n)Zw(r,s,o);return r.join("")}function zw(e){if(!Array.isArray(e)||e.length===0||!e.every(H))return;let t=Yw(e);if(t===void 0)return;let n=e.map(a=>a[t]),r=Xw(n);if(r===void 0)return;let s=Qw(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)&&!Wi(f,l,u))return;o.get(c).push(u)}let i=[];for(let a of r.cycle){let c=o.get(a),u=t_(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 Yw(e){return Hl.find(t=>e.every(n=>typeof n[t]=="string"))}function Xw(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(Yl).join(","),o=`cycle(${n.map(Yl).join(",")})*${r}`;if(o.length<=s.length*.4)return{cycle:n,encoded:o,repeats:r}}}function Qw(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(!e_(o)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,o))||!e.every(i=>qe(i[o])))break;n.push(o)}return n}function Zw(e,t,n){e.push(K(t),`:
14
- `),e.push(" order: ",ie(n.order.encoded,Wt),`
15
- `),e.push(" discriminator: ",ie(n.discriminator,Wt),`
10
+ `));let r=bw(e.options);t.push(...r)}return t}function hw(e,t){let n=gw(e);return mw(n,t)}function yw(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 bw(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 p=[],d=b=>{p.includes(b)||p.push(b)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let b of l.aliases??[])b.length===1?d(`-${b}`):d(`--${b}`);let m=p.join(", "),f=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;r.push({flags:m,type:f,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),p=" ".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",p)),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 Nl(e){let t=xw(e.options??{},e.autoShort??!1),n=lw(e.separators??$l);return{schema:e,parse(r){return ww(r,e,t,n)},help(){return hw(e,e.formatter)}}}function ww(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 f=e[c];m.push(d.type?Ut(f,d.type):f),c++}s.positional[d.name]=m,i++}else{let m=d.type?Ut(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=Sw(l,c,e,s,n,t);continue}if(l.startsWith("-")&&l.length>1&&!Aw(l)){c=Ew(l,c,e,s,n,t);continue}let p=_w(l,r);if(p){let{key:d,value:m,config:f}=p,b=s,_=b[f.to]??(b[f.to]={});_[d]=f.typed?Dl(m):_t(m),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let f=[];for(;c<e.length&&!e[c].startsWith("-");){let b=e[c];f.push(d.type?Ut(b,d.type):b),c++}s.positional[d.name]=f,i++;continue}let m=d.type?Ut(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 Cw(s,t,n),Tw(s,t,a),Ow(s,t,n),s}function _w(e,t){if(cw.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(Rw(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(kw(s,o,n))return{key:s,value:o,config:n}}}return null}function Rw(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function kw(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 Sw(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 Ew(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?Ut(_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?Ut(_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 xw(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=vw(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 vw(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 Cw(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?Ut(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 Tw(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 Ow(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 Aw(e){return/^-\d+(\.\d+)?$/.test(e)}var $l,cw,Ml=g(()=>{$l={"=":"data",":=":{to:"data",typed:!0},":":"meta"},cw=/^[a-z][a-z0-9+.-]*:\/\//i});function Pw(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 Iw(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=Nl({options:Pw(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=Iw(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(p=>u.coerce(p)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Dw(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 Wt(e,t,n={}){let r=Dw(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=Lw.exec(c)??$w.exec(c),l=u===null?void 0:r.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&&wn(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(p.type==="array"){let m=o[l]??[];m.push(p.coerce(d)),o[l]=m}else o[l]=p.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,Lw,$w,ur,ji=g(()=>{Ml();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}};Lw=/^--([^=]+)(?:=([\s\S]*))?$/,$w=/^-([^-=])(?:=([\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 Fl(e){return Nw.test(e)}var Nw,Bl,jl=g(()=>{Nw=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,Bl="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});var Gl=g(()=>{});function R(e,t){return new _n(e,t)}function P(e,t){return new qt(e,t)}function Rn(e){return e instanceof qt?e:e instanceof _n?new qt(e.line,e.reason):new qt(0,String(e&&e.message?e.message:e))}var _n,qt,ot=g(()=>{_n=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},qt=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});var Hl,Jt,Ul,kn=g(()=>{Hl=["type","kind","event"],Jt="|",Ul=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 We(e){return R(e,"invalid quoted string")}function _e(e,t){if(e==="")return"";if(e.startsWith('"'))return Jl(e,t);if(e.includes('"'))throw We(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Mw(e)?Number(e):e}function Pe(e,t){let n=e.trim();if(n.startsWith('"'))return[Jl(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function Jl(e,t){if(e.charCodeAt(0)!==34)throw We(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 We(t)}if(s[0]!=="\\")throw We(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 We(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw We(t);n+=String.fromCharCode(a),r+=4;break}default:throw We(t)}}throw We(t)}function Vl(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 We(n);t=s+2;continue}if(r===-1)throw We(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=Vl(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=Vl(e,s+1,n)}return-1}function Mw(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Bw(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Fw(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 Fw(e);if(typeof e=="string")return Gw(e,t);throw R(0,"not a primitive")}function jw(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function K(e){return jw(e)?e:Os(e)}function Gw(e,t){return Gi(e,t)?Os(e):e}function Gi(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Bw(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Os(e){let t='"',n=0;ql.lastIndex=0;let r;for(;(r=ql.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,ql,Vt=g(()=>{ot();G=",";Wl=/["\\\u0000-\u0008\u000a-\u001f]/g;ql=/["\\\u0000-\u001f]/g});function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dr=g(()=>{});function Kl(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 zl(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(()=>{ot();Vt();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=Hw(r,1);if(s===void 0)return e;Le(t,n,s)}return t}function Hw(e,t){if(!H(e)||!Uw(e))return;let{order:n,discriminator:r,rows:s}=e;if(typeof n!="string"||typeof r!="string"||!Number.isSafeInteger(s)||s<0)throw Q(t);let o=Ww(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 Zl(t);let c=new Map;for(let[p,d]of Object.entries(e))if(!Ul.has(p)){if(!Array.isArray(d)||!d.every(H))throw Q(t);c.set(p,d)}if(c.size===0)throw Q(t);let u=new Map,l=o.map((p,d)=>{let m=c.get(p);if(m===void 0)throw Ui(t);let f=u.get(p)??0,b=m[f];if(b===void 0)throw Ui(t);return u.set(p,f+1),qw(r,p,a[d],b,t)});for(let[p,d]of c)if((u.get(p)??0)!==d.length)throw Ui(t);return l}function Uw(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Ww(e,t,n){if(!e.startsWith("cycle("))throw Q(n);let r=e.slice(6),s=r.indexOf(")*");if(s===-1)throw Q(n);let o=r.slice(0,s),i=r.slice(s+2);if(o===""||i.includes("+tail("))throw Q(n);let a=o.split(",").map(l=>zw(l,n));if(a.some(l=>l===""))throw Q(n);let c=Kw(i,n),u=a.length*c;if(!Number.isSafeInteger(u))throw Q(n);if(u!==t)throw Zl(n);return Array.from({length:u},(l,p)=>a[p%a.length])}function qw(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 Q(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 Q(s);Le(o,i,a)}return o}function Jw(e,t){let n={};for(let[r,s]of Object.entries(e))Vw(n,r.split("."),s,t);return As(n,t)}function Vw(e,t,n,r){if(t.some(o=>o===""))throw Q(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 Q(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 Q(t);return As(e[String(r)],t)}):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,As(r,t)])):e}function Kw(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw Q(t);let n=Number(e);if(!Number.isSafeInteger(n))throw Q(t);return n}function zw(e,t){try{return decodeURIComponent(e)}catch{throw Q(t)}}function Yl(e){return encodeURIComponent(e)}function Q(e){return R(e,"invalid cyclic array wire")}function Zl(e){return R(e,"cyclic array length mismatch")}function Ui(e){return R(e,"cyclic array group length mismatch")}function ed(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=Yw(o);if(i===void 0)return;n.push([s,i])}let r=[];for(let[s,o]of n)e_(r,s,o);return r.join("")}function Yw(e){if(!Array.isArray(e)||e.length===0||!e.every(H))return;let t=Xw(e);if(t===void 0)return;let n=e.map(a=>a[t]),r=Qw(n);if(r===void 0)return;let s=Zw(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,p]of Object.entries(a))if(l!==t&&!s.includes(l)&&!Wi(p,l,u))return;o.get(c).push(u)}let i=[];for(let a of r.cycle){let c=o.get(a),u=n_(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 Xw(e){return Hl.find(t=>e.every(n=>typeof n[t]=="string"))}function Qw(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(Yl).join(","),o=`cycle(${n.map(Yl).join(",")})*${r}`;if(o.length<=s.length*.4)return{cycle:n,encoded:o,repeats:r}}}function Zw(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(!t_(o)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,o))||!e.every(i=>qe(i[o])))break;n.push(o)}return n}function e_(e,t,n){e.push(K(t),`:
14
+ `),e.push(" order: ",ie(n.order.encoded,Jt),`
15
+ `),e.push(" discriminator: ",ie(n.discriminator,Jt),`
16
16
  `),e.push(" rows: ",String(n.rows.length),`
17
- `),n.common.length>0&&Xl(e,"common",n.common,n.commonRows);for(let r of n.groups)Xl(e,r.label,r.fields,r.rows)}function Xl(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 e_(e){return e!==""&&qi(e)}function Wi(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)=>Wi(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(".")&&Wi(i,`${t}.${o}`,n,r));return r.delete(e),s}return!1}function t_(e){let t=Object.keys(e[0]??{});if(e.every(n=>n_(Object.keys(n),t)))return t.every(qi)?t:void 0}function n_(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(()=>{ot();qt();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=s_(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 td(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=r_(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 r_(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(!nd(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(rd(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 s_(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 _=o_(b);if(_!==void 0){if(_.delimiter!==n)throw R(0,"invalid array header");m.fixedLength=_.len,m.fixedDelimiter=_.delimiter}else if(nd(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(rd(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 o_(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 nd(e,t){return e.length===1&&e!==t&&!/[ \t\r\n"[\]{}:]/.test(e)}function rd(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 sd=g(()=>{ot();qt()});function L(e,t){let n=Kl(t),r=zl(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 c_(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}=i_(e,t,n,r);dd(s,i,a,c,r,o.number)}return s}function i_(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=td(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=a_(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=Xi(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 a_(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)}),dd(o,c,u,f,s,i.number),n.index+=1}return o}function c_(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=Xi(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 Xi(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 u_(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 h_(e,n,r,s+1,o)}function u_(e,t,n,r,s,o){if(e.fieldTree!==void 0&&m_(e.fieldTree))return l_(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 l_(e,t,n,r,s){return od(e.len,e.fieldTree,e.delimiter,t,n,r,s,!0)}function od(e,t,n,r,s,o,i,a){let c=[],u=ad(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=id(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(p_(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 id(e,t,n,r,s,o,i,a){let c={};return e.forEach((u,l)=>{let f=e.slice(l+1),d=d_(u,f,t,n,r,s,o,i,a);xn(c,[u.key],d,a,n)}),c}function d_(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=ud(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+g_(t)):_){if(d===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,od(d,e.children,a,s,{get index(){return o.nextIndex},set index(y){o.nextIndex=y}},i,c,!1)}return id(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 ad(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=cd(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 cd(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=f_(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 f_(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=ud(n[c]);if(d===void 0)return;c+=1;let m=ad(d,f.children,r,s,u,i,a);if(m===void 0)return;let p=cd(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 p_(e,t,n){return n&&e.length===1&&e[0].fixedLength!==void 0?t[e[0].key]:t}function ud(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function m_(e){return e.some(t=>t.fixedLength!==void 0||t.children!==void 0)}function $s(e){return e.reduce((t,n)=>t+ld(n),0)}function ld(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?$s(e.children):1}function g_(e){return e.reduce((t,n)=>n.children!==void 0?t+1:t+ld(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 h_(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(y_(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 y_(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 Xi(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 dd(e,t,n,r,s,o){if(s.expandPaths&&!n&&t.includes(".")){let i=t.split(".");if(i.every(b_)){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 b_(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var fd=g(()=>{ot();qt();kn();dr();Hi();Ji();sd()});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=ed(e);if(i!==void 0)return i}let o=[];return Array.isArray(e)?ta(o,void 0,e,0,!1,s):H(e)?pd(o,e,0,s):o.push(ie(e,r)),o.join("")}function vn(e,t){e.push(" ".repeat(t*2))}function pd(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?__(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),`}:
17
+ `),n.common.length>0&&Xl(e,"common",n.common,n.commonRows);for(let r of n.groups)Xl(e,r.label,r.fields,r.rows)}function Xl(e,t,n,r){e.push(" ",K(t),"[",String(r.length),Jt,"]{",n.map(K).join(Jt),`}:
18
+ `);for(let s of r)e.push(" ",n.map(o=>ie(s[o],Jt)).join(Jt),`
19
+ `)}function t_(e){return e!==""&&qi(e)}function Wi(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)=>Wi(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(".")&&Wi(i,`${t}.${o}`,n,r));return r.delete(e),s}return!1}function n_(e){let t=Object.keys(e[0]??{});if(e.every(n=>r_(Object.keys(n),t)))return t.every(qi)?t:void 0}function r_(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(()=>{ot();Vt();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),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw R(0,"invalid array header")}let d=i.slice(a+1),m,f;if(d==="")m=void 0,f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=o_(d.slice(1,-1),p),m=Ki(f)}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:p,fields:m,fieldTree:f}}function td(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=s_(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 s_(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 p=s;for(;s<e.length;){let f=e[s];if(f==='"'){i();continue}if(f===t||f==="{"||f==="}"||f==="[")break;s+=1}let[d,m]=Pe(e.slice(p,s),0);if(d===""&&!m)throw R(0,"invalid array header");if(l+=1,e[s]==="["){s+=1;let f=s;for(;s<e.length&&e[s]!=="]";)s+=1;if(s>=e.length)throw R(0,"invalid array header");let b=e.slice(f,s);if(!nd(b,n))throw R(0,"invalid array header");s+=1,r.push({path:[...c,d],listDelimiter:b})}else if(e[s]==="{"){s+=1;let f=r.length;if(o([...c,d],!0),e[s]!=="}"||r.length===f)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(rd(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 o_(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 f=e[r];if(f==='"'){o();continue}if(f===t||f==="{"||f==="}"||f==="[")break;r+=1}let[p,d]=Pe(e.slice(l,r),0);if(p===""&&!d)throw R(0,"invalid array header");let m={key:p};if(e[r]==="["){r+=1;let f=r;for(;r<e.length&&e[r]!=="]";)r+=1;if(r>=e.length)throw R(0,"invalid array header");let b=e.slice(f,r);r+=1;let _=i_(b);if(_!==void 0){if(_.delimiter!==n)throw R(0,"invalid array header");m.fixedLength=_.len,m.fixedDelimiter=_.delimiter}else if(nd(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(rd(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 i_(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 nd(e,t){return e.length===1&&e!==t&&!/[ \t\r\n"[\]{}:]/.test(e)}function rd(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 sd=g(()=>{ot();Vt()});function L(e,t){let n=Kl(t),r=zl(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 u_(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}=a_(e,t,n,r);dd(s,i,a,c,r,o.number)}return s}function a_(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 f;try{f=td(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=c_(f,e,t,n+1,r);return{key:f.key,quoted:f.keyQuoted,value:b}}if(u!==-1){mr(a,s.number,r);let f;try{f=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(f.key===""&&!f.keyQuoted)throw R(s.number,"expected non-empty field name");let b=Xi(f,c,e,t,n,r);return{key:f.key,quoted:f.keyQuoted,value:b}}let[p,d]=Pe(a,s.number);if(p===""&&!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:p,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 c_(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 p={};e.fields.forEach((d,m)=>{xn(p,d.path,Is(d,l[m],i.number),s,i.number)}),dd(o,c,u,p,s,i.number),n.index+=1}return o}function u_(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=Xi(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 Xi(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 l_(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 y_(e,n,r,s+1,o)}function l_(e,t,n,r,s,o){if(e.fieldTree!==void 0&&g_(e.fieldTree))return d_(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((p,d)=>{xn(l,p.path,Is(p,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 d_(e,t,n,r,s){return od(e.len,e.fieldTree,e.delimiter,t,n,r,s,!0)}function od(e,t,n,r,s,o,i,a){let c=[],u=ad(e,t,n,r,s.index,o,i);for(;c.length<e;){let p=r[s.index];if(p===void 0)throw Sn(r,s.index);if(p.depth<o)break;if(p.depth>o)throw R(p.number,"invalid indentation");if(p.blankBefore&&i.strict)throw R(p.number,"blank line inside array");if(!En(p.content,n,p.number))break;let d=Ie(p.content,n,p.number),m={cellIndex:0,nextIndex:s.index+1,flatWidth:$s(t),childTableFields:u},f=id(t,d,p.number,r,m,o+1,n,i);if(m.cellIndex!==d.length)throw R(p.number,"array row length mismatch");c.push(m_(t,f,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 id(e,t,n,r,s,o,i,a){let c={};return e.forEach((u,l)=>{let p=e.slice(l+1),d=p_(u,p,t,n,r,s,o,i,a);xn(c,[u.key],d,a,n)}),c}function p_(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(p=>_e(p,r));return o.cellIndex+=e.fixedLength,l}if(e.children!==void 0){let l=$s(e.children),p=n[o.cellIndex],d=ud(p),m=n.length-o.cellIndex-1,f=s[o.nextIndex],b=f!==void 0&&f.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+h_(t)):_){if(d===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,od(d,e.children,a,s,{get index(){return o.nextIndex},set index(y){o.nextIndex=y}},i,c,!1)}return id(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 ad(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 p=new Set;a.forEach((m,f)=>{l&1<<f&&p.add(m)});let d=cd(e,t,p,n,r,s,o,i);d!==void 0&&(c===void 0||d.consumedChildRows>c.consumedChildRows||d.consumedChildRows===c.consumedChildRows&&p.size<c.childTableFields.size)&&(c={childTableFields:p,consumedChildRows:d.consumedChildRows})}return c?.childTableFields}function cd(e,t,n,r,s,o,i,a){let c=o,u=0;try{for(let p=0;p<e;p+=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),f=f_(t,n,m,r,s,c+1,i+1,a);if(f===void 0||s[f.nextIndex]?.depth>i)return;u+=f.consumedChildRows,c=f.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 f_(e,t,n,r,s,o,i,a){let c=0,u=o,l=0;for(let p of e){if(p.fixedLength!==void 0)c+=p.fixedLength;else if(p.children!==void 0)if(t.has(p)){let d=ud(n[c]);if(d===void 0)return;c+=1;let m=ad(d,p.children,r,s,u,i,a);if(m===void 0)return;let f=cd(d,p.children,m,r,s,u,i,a);if(f===void 0)return;u=f.nextIndex,l+=d+f.consumedChildRows}else c+=$s(p.children);else c+=1;if(c>n.length)return}if(c===n.length)return{nextIndex:u,consumedChildRows:l}}function m_(e,t,n){return n&&e.length===1&&e[0].fixedLength!==void 0?t[e[0].key]:t}function ud(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function g_(e){return e.some(t=>t.fixedLength!==void 0||t.children!==void 0)}function $s(e){return e.reduce((t,n)=>t+ld(n),0)}function ld(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?$s(e.children):1}function h_(e){return e.reduce((t,n)=>n.children!==void 0?t+1:t+ld(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 y_(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(b_(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 b_(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 Xi(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 dd(e,t,n,r,s,o){if(s.expandPaths&&!n&&t.includes(".")){let i=t.split(".");if(i.every(w_)){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 w_(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var pd=g(()=>{ot();Vt();kn();dr();Hi();Ji();sd()});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=ed(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?R_(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
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
21
  `),e.push(...c)}return}e.push(K(t),`:
22
- `),pd(e,n,r+1,s);return}e.push(K(t),": ",ie(n,s.delimiter),`
22
+ `),fd(e,n,r+1,s);return}e.push(K(t),": ",ie(n,s.delimiter),`
23
23
  `)}function ta(e,t,n,r,s,o){if(Je(r,0,o),n.length===0){t!==void 0?e.push(K(t),`: []
24
24
  `):s?e.push(`[0]:
25
25
  `):e.push(`[]
@@ -27,135 +27,135 @@ var iw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{fo
27
27
  `);return}let i=s?void 0:md(n,o,r+1);if(i!==void 0){Qi(e,t,n.length,i.fields,o.delimiter),e.push(`
28
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
29
  `),e.push(...c)}return}Qi(e,t,n.length,void 0,o.delimiter),e.push(`
30
- `);for(let a of n)vn(e,r+1),w_(e,a,r+1,o)}function w_(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(`-
30
+ `);for(let a of n)vn(e,r+1),__(e,a,r+1,o)}function __(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
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 Qi(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 md(e,t,n){let r=R_(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 __(e,t,n){let r=Object.values(e);if(!(r.length<2))return md(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=gd(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 R_(e,t){if(!t.objectArrayColumns)return;let n=gd(e);return n===void 0?void 0:{fields:[{key:"values",fixedLength:n.fixedLength,fixedDelimiter:t.delimiter}],paths:[{path:[],fixedLength:n.fixedLength}]}}function gd(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?(k_(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=>S_(i,n,t.listDelimiter)).join(t.listDelimiter)}function k_(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 S_(e,t,n){return typeof e!="string"?ie(e,t):Gi(e,t)||e.includes(n)?Os(e):e}var hd=g(()=>{ot();qt();kn();dr();Hi();Ji()});var hr=g(()=>{kn();fd();dr();hd()});var yd=g(()=>{hr()});function C_(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 Td(e,t){if(!Cd.test(e))throw P(t,"invalid tag")}function T_(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Cd.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 O_(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(!xd.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),Td(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 A_(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 bd(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 P_(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 I_(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=C_(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=O_(e,t);if(s!==null)return s.continuation?(A_(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=T_(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:bd(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:bd(e,n.delimiter,n.fields.length,t)}}function L_(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>=vd)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=I_(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 Jt(e){return L_(e).flatMap(t=>t.rows.map(n=>P_(t.fields,n,0)))}function $_(e){if(!xd.includes(e))throw P(0,"invalid header delimiter")}function wd(e,t,n=!1){return`[${`${n?"~":""}${e===G?"":e}`}]{${t}}:
32
+ `)}function Qi(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 md(e,t,n){let r=k_(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 R_(e,t,n){let r=Object.values(e);if(!(r.length<2))return md(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=gd(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(p=>({value:p}))),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 k_(e,t){if(!t.objectArrayColumns)return;let n=gd(e);return n===void 0?void 0:{fields:[{key:"values",fixedLength:n.fixedLength,fixedDelimiter:t.delimiter}],paths:[{path:[],fixedLength:n.fixedLength}]}}function gd(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?(S_(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=>E_(i,n,t.listDelimiter)).join(t.listDelimiter)}function S_(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 E_(e,t,n){return typeof e!="string"?ie(e,t):Gi(e,t)||e.includes(n)?Os(e):e}var hd=g(()=>{ot();Vt();kn();dr();Hi();Ji()});var hr=g(()=>{kn();pd();dr();hd()});var yd=g(()=>{hr()});function T_(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 Td(e,t){if(!Cd.test(e))throw P(t,"invalid tag")}function O_(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Cd.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 A_(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(!xd.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),Td(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),p;try{p=Ie(l,a,t).map(d=>Pe(d,t)[0])}catch(d){throw Rn(d)}if(p.length===0||p.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function P_(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 bd(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 I_(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 L_(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=T_(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=A_(e,t);if(s!==null)return s.continuation?(P_(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=O_(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:bd(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:bd(e,n.delimiter,n.fields.length,t)}}function $_(e,t={}){let n=[],r=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(m,f){let b=o.at(-1);if(b!==void 0&&b.lane===m.lane&&b.delimiter===m.delimiter&&b.fieldText===m.fieldText){b.rows.push(f);return}o.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(m,f,b){let _=r.get(m);if(_===void 0){if(r.size>=vd)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:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},_.delimiter=f.delimiter,_.fields=f.fields,_.fieldText=f.fieldText}if(Ts(e).forEach((m,f)=>{let b=f+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=L_(m,b,_);if(h.kind==="trailer"){l(),i=null;return}if(h.kind!=="continuation"){if(h.kind==="tag-header"){c=!0,p(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 f=r.get(m);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function Rt(e){return $_(e).flatMap(t=>t.rows.map(n=>I_(t.fields,n,0)))}function D_(e){if(!xd.includes(e))throw P(0,"invalid header delimiter")}function wd(e,t,n=!1){return`[${`${n?"~":""}${e===G?"":e}`}]{${t}}:
34
34
  `}function _d(e,t){return`[]<${e}>{${t}}:
35
- `}function aa(e,t){return t.map(K).join(e)}function D_(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 Rd(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function kd(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function N_(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Sd(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 M_(e){return JSON.stringify([...e].sort())}function Ed(e,t){let n=M_(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function Vt({delimiter:e=G,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){$_(e),kd(n),kd(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=()=>N_(d,c,u)?(c=0,u=0,wd(e,o,!0)):"",b=_=>{Td(_,0);let h=l.get(_);if(h===void 0){if(l.size>=vd)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=Ed(Sd(_),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+=wd(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=D_(h),w=aa(G,y),k=b(_);return Rd(k.fields,y)?"":(k.fields=y,_d(_,w))},pushTagged(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=b(_),w=Ed(Sd(h),y.fieldsByShape),k=aa(G,w),T=w.map(Te=>ie(h[Te],G)),M="";return Rd(y.fields,w)||(y.fields=w,M+=_d(_,k)),`${M}${_}:${T.join(G)}
38
- `},end(){return f?"":(f=!0,m())}}}var xd,vd,Cd,cL,uL,Od=g(()=>{ot();hr();qt();xd=[G,"|"," "],vd=8,Cd=/^[A-Za-z0-9_-]+$/,cL=new TextEncoder,uL=new TextDecoder});var N=g(()=>{Gl();ot();hr();hr();yd();Od()});function F_(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C(ca(e))}
39
- `)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??F_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=j_(e.diagnostics,3)),t}function $e(e,t,n){let s=([n,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Fl(s)?{command:e,category:"transient",error:yr(s)||"GitHub API rate limit exceeded",help:Bl,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:yr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:yr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:yr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Ad(e,t,n,r){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function j_(e,t){return e.split(/\r?\n/).slice(0,t).join(`
40
- `).trim()}var Ve=g(()=>{"use strict";jl();N()});function Ms(e){let t={app:e,version:X_(Tn("__RED_BUILD_VERSION__",()=>"3.4.0")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"fcb63eef6c1ba0ca04107accdd7336499b338205")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-03T21:27:55Z")??"unknown",bundleAsset:Tn("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Tn("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Tn("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function X_(e){return e.startsWith("v")?e.slice(1):e}function Fd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as Q_,join as it,resolve as da}from"node:path";function tR(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Gd(e){return it(tR(e),jd)}function Hd(e){return it(Gd(e),"state")}function Ud(e){return it(Gd(e),"tmp")}function q(e){return it(Hd(e),"rsp")}function nR(e){return it(Hd(e),"red-skills.rdb")}function rR(e){return it(Ud(e),"red-skills.rdb")}function Jd(e,t){let n=nR(e);if(t(n))return n;let r=rR(e);if(t(r))throw sR();return n}function sR(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Vd(e){return it(Ud(e),"waits")}function Kd(e){let t=e.overrideEnvVars??fa;for(let r of t){let s=e.env[r];if(s)return Q_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(it(n,jd)))return n;let r=it(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var jd,Z_,eR,fa,Wd,qd,Re=g(()=>{jd=".red",Z_="MEMORY_ROOT",eR="RED_BRAIN_ROOT",fa=[Z_,eR];Wd=".red/state/red-skills.rdb";qd=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var oR,iR,qL,at=g(()=>{N();Re();oR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],iR=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],qL=[...oR,...iR]});function br(e){let{values:t,rest:n}=Ht(e,{query:zd.query},Yd);return{argv:n,query:t.query?.trim()||void 0}}function Xd(e){let{values:t,rest:n}=Ht(e,zd,Yd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function aR(e,t){if(!t)return!0;let n=pa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>aR(n,t)):[...e]}function ct(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function pa(e){return Array.isArray(e)?e.map(pa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(pa).join(" "):String(e??"")}var zd,Yd,wr=g(()=>{"use strict";ji();zd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Yd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>mR,RSP_OVERHEAD_LEDGER_FILE:()=>ef,RSP_OVERHEAD_SCHEMA_VERSION:()=>tf,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>rf,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>kt,overheadLedgerPath:()=>ba,overheadMsOf:()=>nf,overheadTelemetryFields:()=>Us,readOverheadLedger:()=>_r,readSelfStateFile:()=>Ws,readSelfStateFileSync:()=>yR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>hR,resetOverheadLedger:()=>gR,startChildProcessTimer:()=>ce});import{existsSync as cR,mkdirSync as uR,readFileSync as Qd,renameSync as lR,writeFileSync as dR}from"node:fs";import{readFile as fR}from"node:fs/promises";import{dirname as pR,join as Zd}from"node:path";function nf(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=nf(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Us(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Zd(q(e),ef)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=RR(t);if(kR(n))return n}catch{}return{version:1,families:{}}}function Rr(e,t,n=De,r=Date.now()){let s=_r(e),o=ya(t,n),i=s.families[t.family]??_R(t.family,r),a=ka(i,r)?sf(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(r).toISOString()};return o.breached?c>=n.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(r).toISOString(),u.disabled_until=new Date(r+n.cooldownMs).toISOString(),u.disabled_reason=bR(t.family,c,o,n)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,of(e,s),u}function wa(e,t,n=Date.now()){let r=_r(e).families[t];return!r?.disabled||ka(r,n)?null:r}function gR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},of(e,n),n}function kt(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?sf(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=r.filter(a=>a.disabled),o=r.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:tf,verdict:i,summary:wR(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function rf(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function hR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,rf(Number(process.hrtime.bigint()-e)/1e6))}}async function Ws(e){let t=await fR(e,"utf8");return kr(Buffer.byteLength(t)),t}function yR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function bR(e,t,n,r){let s=n.reasons.map(o=>o==="wall-clock-ceiling"?`added ${n.overhead_ms}ms > ${r.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${r.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function wR(e,t,n){if(e==="green")return"every wrapper family is inside its overhead ceiling";let r=[];return t.length>0&&r.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),n.length>0&&r.push(`breaching: ${n.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),r.join("; ")}function ka(e,t){if(!e.disabled||!e.disabled_until)return!1;let n=Date.parse(e.disabled_until);return Number.isFinite(n)&&n<=t}function sf(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function _R(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function of(e,t){try{let n=ba(e);if(!cR(Zd(e,".red")))return;uR(pR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;dR(r,`${C(t)}
41
- `,{encoding:"utf8",mode:384}),lR(r,n)}catch{}}function RR(e){try{return JSON.parse(e)}catch{return L(e)}}function kR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(SR)}function SR(e){return ga(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function ga(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ha(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var ef,tf,Bs,Fs,js,Gs,Hs,mR,De,_a,Ra,V=g(()=>{"use strict";Re();N();ef="overhead-budget.toon",tf="red.rsp.overhead.v1",Bs=250,Fs=1024*1024,js=64*1024,Gs=3,Hs=6*60*60*1e3,mR=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],De={maxOverheadMs:Bs,maxSelfStateBytes:Fs,netLossFloorBytes:js,consecutiveBreaches:Gs,cooldownMs:Hs};_a=0,Ra=0});function uf(e){return e.trimStart().startsWith("{")?"json":"toon"}function Ea(e){let t=0;for(;e[t]===`
42
- `||e[t]==="\r";)t+=1;let n=e.slice(t);if(n==="")return null;let r=uf(n);if(r==="json"){let o=n.indexOf(`
35
+ `}function aa(e,t){return t.map(K).join(e)}function N_(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 Rd(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function kd(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function M_(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Sd(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 B_(e){return JSON.stringify([...e].sort())}function Ed(e,t){let n=B_(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function kt({delimiter:e=G,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){D_(e),kd(n),kd(r);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:n,continuationEveryBytes:r},m=()=>s===null||!t?"":`[=${a}]
36
+ `,f=()=>M_(d,c,u)?(c=0,u=0,wd(e,o,!0)):"",b=_=>{Td(_,0);let h=l.get(_);if(h===void 0){if(l.size>=vd)throw P(0,"too many tagged lanes");h={fields:null,fieldsByShape:new Map},l.set(_,h)}return h};return{push(_){if(p)throw P(0,"TOONL encoder is closed");let h=Ed(Sd(_),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+=wd(e,o));let w=s.map(T=>ie(_[T],e));y+=f();let k=`${w.join(e)}
37
+ `;return y+=k,a+=1,c+=1,u+=k.length,y},declareLane(_,h){if(p)throw P(0,"TOONL encoder is closed");let y=N_(h),w=aa(G,y),k=b(_);return Rd(k.fields,y)?"":(k.fields=y,_d(_,w))},pushTagged(_,h){if(p)throw P(0,"TOONL encoder is closed");let y=b(_),w=Ed(Sd(h),y.fieldsByShape),k=aa(G,w),T=w.map(Te=>ie(h[Te],G)),M="";return Rd(y.fields,w)||(y.fields=w,M+=_d(_,k)),`${M}${_}:${T.join(G)}
38
+ `},end(){return p?"":(p=!0,m())}}}var xd,vd,Cd,uL,lL,Od=g(()=>{ot();hr();Vt();xd=[G,"|"," "],vd=8,Cd=/^[A-Za-z0-9_-]+$/,uL=new TextEncoder,lL=new TextDecoder});var D=g(()=>{Gl();ot();hr();hr();yd();Od()});function j_(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${C(ca(e))}
39
+ `)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??j_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=G_(e.diagnostics,3)),t}function $e(e,t,n){let s=([n,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Fl(s)?{command:e,category:"transient",error:yr(s)||"GitHub API rate limit exceeded",help:Bl,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:yr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:yr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:yr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Ad(e,t,n,r){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function G_(e,t){return e.split(/\r?\n/).slice(0,t).join(`
40
+ `).trim()}var Ve=g(()=>{"use strict";jl();D()});function Ms(e){let t={app:e,version:Q_(Tn("__RED_BUILD_VERSION__",()=>"3.4.2")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"15372f2fce172cf74ac5ca45cdcbde3d18536c54")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-04T04:36:05Z")??"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 Q_(e){return e.startsWith("v")?e.slice(1):e}function Fd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as Z_,join as it,resolve as da}from"node:path";function nR(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Gd(e){return it(nR(e),jd)}function Hd(e){return it(Gd(e),"state")}function Ud(e){return it(Gd(e),"tmp")}function q(e){return it(Hd(e),"rsp")}function rR(e){return it(Hd(e),"red-skills.rdb")}function sR(e){return it(Ud(e),"red-skills.rdb")}function Jd(e,t){let n=rR(e);if(t(n))return n;let r=sR(e);if(t(r))throw oR();return n}function oR(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Vd(e){return it(Ud(e),"waits")}function Kd(e){let t=e.overrideEnvVars??pa;for(let r of t){let s=e.env[r];if(s)return Z_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(it(n,jd)))return n;let r=it(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var jd,eR,tR,pa,Wd,qd,Re=g(()=>{jd=".red",eR="MEMORY_ROOT",tR="RED_BRAIN_ROOT",pa=[eR,tR];Wd=".red/state/red-skills.rdb";qd=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var iR,aR,JL,at=g(()=>{D();Re();iR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],aR=[{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"}],JL=[...iR,...aR]});function br(e){let{values:t,rest:n}=Wt(e,{query:zd.query},Yd);return{argv:n,query:t.query?.trim()||void 0}}function Xd(e){let{values:t,rest:n}=Wt(e,zd,Yd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function cR(e,t){if(!t)return!0;let n=fa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>cR(n,t)):[...e]}function ct(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function fa(e){return Array.isArray(e)?e.map(fa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(fa).join(" "):String(e??"")}var zd,Yd,wr=g(()=>{"use strict";ji();zd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Yd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>gR,RSP_OVERHEAD_LEDGER_FILE:()=>ep,RSP_OVERHEAD_SCHEMA_VERSION:()=>tp,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>rp,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>Et,overheadLedgerPath:()=>ba,overheadMsOf:()=>np,overheadTelemetryFields:()=>Us,readOverheadLedger:()=>_r,readSelfStateFile:()=>Ws,readSelfStateFileSync:()=>bR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>yR,resetOverheadLedger:()=>hR,startChildProcessTimer:()=>ce});import{existsSync as uR,mkdirSync as lR,readFileSync as Qd,renameSync as dR,writeFileSync as pR}from"node:fs";import{readFile as fR}from"node:fs/promises";import{dirname as mR,join as Zd}from"node:path";function np(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=np(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Us(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Zd(q(e),ep)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=kR(t);if(SR(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]??RR(t.family,r),a=ka(i,r)?sp(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=wR(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,op(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 hR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},op(e,n),n}function Et(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?sp(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:tp,verdict:i,summary:_R(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function rp(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function yR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,rp(Number(process.hrtime.bigint()-e)/1e6))}}async function Ws(e){let t=await fR(e,"utf8");return kr(Buffer.byteLength(t)),t}function bR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function wR(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 _R(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 sp(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function RR(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 op(e,t){try{let n=ba(e);if(!uR(Zd(e,".red")))return;lR(mR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;pR(r,`${C(t)}
41
+ `,{encoding:"utf8",mode:384}),dR(r,n)}catch{}}function kR(e){try{return JSON.parse(e)}catch{return L(e)}}function SR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(ER)}function ER(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 ep,tp,Bs,Fs,js,Gs,Hs,gR,De,_a,Ra,V=g(()=>{"use strict";Re();D();ep="overhead-budget.toon",tp="red.rsp.overhead.v1",Bs=250,Fs=1024*1024,js=64*1024,Gs=3,Hs=6*60*60*1e3,gR=["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 cp(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=cp(n);if(r==="json"){let o=n.indexOf(`
43
43
  `);return o<0?null:{frame:n.slice(0,o),dialect:r,rest:n.slice(o+1)}}let s=n.indexOf(`
44
44
 
45
- `);return s<0?null:{frame:n.slice(0,s+1),dialect:r,rest:n.slice(s+2)}}function xa(e){let t=uf(e)==="json"?Sa:af,n=t===Sa?af:Sa;try{return t(e)}catch(r){try{return n(e)}catch{throw r}}}function Sa(e){return JSON.parse(e)}function af(e){return L(e)}function va(e,t){if(t==="toon"){let n=xR(e);if(n!==null)return n.endsWith(`
45
+ `);return s<0?null:{frame:n.slice(0,s+1),dialect:r,rest:n.slice(s+2)}}function xa(e){let t=cp(e)==="json"?Sa:ip,n=t===Sa?ip:Sa;try{return t(e)}catch(r){try{return n(e)}catch{throw r}}}function Sa(e){return JSON.parse(e)}function ip(e){return L(e)}function va(e,t){if(t==="toon"){let n=vR(e);if(n!==null)return n.endsWith(`
46
46
  `)?`${n}
47
47
  `:`${n}
48
48
 
49
49
  `}return`${JSON.stringify(e)}
50
- `}function xR(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 lf(e,t){return!cf(e)||!cf(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function cf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ff(e){return df.has(e)?"json":ER}function pf(e){df.add(e)}var ER,df,mf=g(()=>{N();ER="toon";df=new Set});import{createHash as vR}from"node:crypto";import{constants as Ca}from"node:fs";import{mkdir as hf,open as CR,readFile as TR,rm as yf,stat as OR}from"node:fs/promises";import{createConnection as AR}from"node:net";import{tmpdir as PR}from"node:os";import{dirname as bf,join as Er}from"node:path";async function wf(e,t,n="resident server"){let r=e.wire,s=r??ff(e.socketPath),o=await gf(e,t,n,s);return r||s==="json"||!lf(t,o)?o:(pf(e.socketPath),await gf(e,t,n,"json"))}async function gf(e,t,n,r){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=AR(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 _f(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 Ta(e){await hf(bf(e),{recursive:!0,mode:448});try{return await CR(e,Ca.O_CREAT|Ca.O_EXCL|Ca.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}async function kf(e,t={}){let n=t.maxAgeMs??LR,r=t.now??Date.now,s=t.pid??process.pid,o=t.isPidAlive??St;await hf(bf(e),{recursive:!0,mode:448});let i=[];for(let a=0;;a+=1){let c=await Ta(e);if(c)return await c.writeFile(`${Rf} pid=${s} taken=${new Date(r()).toISOString()}
51
- `).catch(()=>{}),{acquired:!0,lockPath:e,handle:c,reaped:i};let u=await NR(e),l=await BR(e,u,r());if(a>=$R||l==null)return{acquired:!1,lockPath:e,holder:u,ageMs:l};let f=DR(u,l,n,o);if(f==null)return{acquired:!1,lockPath:e,holder:u,ageMs:l};let d={lockPath:e,reason:f,holder:u,ageMs:l};await yf(e,{force:!0}),i.push(d),t.onReap?.(d)}}async function Sf(e){await e.handle.close().catch(()=>{}),await yf(e.lockPath,{force:!0})}function DR(e,t,n,r){return e==null?t>n?"unattributed":null:r(e.pid)?t>n?"aged-out":null:"holder-dead"}function Ef(e){let t=e.ageMs==null?"of unknown age":`taken ${Math.round(e.ageMs/1e3)}s ago`,n=e.holder==null?"an owner it does not name":`pid ${e.holder.pid} (at ${e.holder.takenAt})`;return`no spawn was attempted: the spawn lock ${JSON.stringify(e.lockPath)} is held by ${n}, ${t}. If that process is gone, remove the file to clear it`}async function NR(e){try{return MR(await TR(e,"utf8"))}catch{return null}}function MR(e){let t=e.split(`
52
- `,1)[0]?.trim()??"";if(!t.startsWith(Rf))return null;let n=Number(/\bpid=(\d+)\b/.exec(t)?.[1]??""),r=/\btaken=(\S+)/.exec(t)?.[1]??"";return!Number.isInteger(n)||n<=0||!Number.isFinite(Date.parse(r))?null:{pid:n,takenAt:r}}async function BR(e,t,n){let r=t==null?Number.NaN:Date.parse(t.takenAt);if(Number.isFinite(r))return Math.max(0,n-r);try{return Math.max(0,n-(await OR(e)).mtimeMs)}catch{return null}}function St(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Oa(e,t=1e3){if(!St(e))return;try{process.kill(e,"SIGTERM")}catch{return}let n=Date.now()+t;for(;Date.now()<n;){if(!St(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}function xf(e){let t=e.env??process.env,n=vR("sha256").update(e.key).digest("hex").slice(0,20),r=c=>Er(c,e.socketFileName).length<IR,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(PR(),i);return r(a)||process.platform==="win32"?a:Er(FR,i)}var IR,LR,Rf,$R,FR,Js=g(()=>{mf();IR=108;LR=6e4,Rf="resident-spawn-lock v1",$R=3;FR="/tmp"});async function On(e,t){return await wf(e,t,"resident rsp server")}var Aa=g(()=>{Js()});var vf=g(()=>{"use strict";Aa()});import{existsSync as jR,readdirSync as GR}from"node:fs";import{homedir as HR}from"node:os";import{basename as Ia,dirname as Pa,join as ke,resolve as Vs}from"node:path";function UR(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??jR,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&&JR(i))return a(Vs(i),"caller-entry");let c=[];for(let[u,l]of KR(i,t.rootDir,n,t.listDir??QR))if(c.push(u),r(u))return a(u,l);return{diagnostic:ut,searched:c,...i?{callerEntry:Vs(i)}:{}}}function Tf(e={},t={}){let n=Ks(e,t);if(UR(n))return n;throw new An(n)}function JR(e){let t=Ia(e);return t===Kt||La.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:VR(Vs(e))}function VR(e){let t=Pa(e);for(let n=0;n<4;n++){if(Ia(t)==="rsp")return!0;let r=Pa(t);if(r===t)return!1;t=r}return!1}function*KR(e,t,n,r){if(e){let o=Pa(Vs(e));yield[ke(o,Kt),"caller-sibling-bundle"];let i=WR.exec(Ia(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 qR){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=zR(n);yield[ke(s,Kt),"bundle-cache"];for(let o of YR(s,r))yield[ke(s,o),"bundle-cache"]}function zR(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ke(e.HOME||HR(),".cache");return ke(t,"red-skills","bundles")}function YR(e,t){return t(e).filter(n=>La.test(n)).sort((n,r)=>XR(Cf(r),Cf(n)))}function Cf(e){return La.exec(e)?.[1]??""}function XR(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 QR(e){try{return GR(e)}catch{return[]}}var ut,An,Kt,WR,La,qR,$a=g(()=>{ut="rsp-resident-entry-unresolved";An=class extends Error{code=ut;searched;callerEntry;constructor(t){super(`${ut}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
50
+ `}function vR(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 up(e,t){return!ap(e)||!ap(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function ap(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function dp(e){return lp.has(e)?"json":xR}function pp(e){lp.add(e)}var xR,lp,fp=g(()=>{D();xR="toon";lp=new Set});import{createHash as CR}from"node:crypto";import{constants as Ca}from"node:fs";import{mkdir as gp,open as TR,readFile as OR,rm as hp,stat as AR}from"node:fs/promises";import{createConnection as PR}from"node:net";import{tmpdir as IR}from"node:os";import{dirname as yp,join as Er}from"node:path";async function bp(e,t,n="resident server"){let r=e.wire,s=r??dp(e.socketPath),o=await mp(e,t,n,s);return r||s==="json"||!up(t,o)?o:(pp(e.socketPath),await mp(e,t,n,"json"))}async function mp(e,t,n,r){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=PR(e.socketPath),c=!1,u="",l=setTimeout(()=>{p(()=>i(new Error(`${n} timed out`))),a.destroy()},s);function p(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,p(()=>{try{o(xa(m.frame))}catch(f){i(f)}}),a.end())}),a.on("error",d=>p(()=>i(d))),a.on("close",()=>{c||p(()=>i(new Error(`${n} closed without response`)))})})}function wp(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 Ta(e){await gp(yp(e),{recursive:!0,mode:448});try{return await TR(e,Ca.O_CREAT|Ca.O_EXCL|Ca.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}async function Rp(e,t={}){let n=t.maxAgeMs??$R,r=t.now??Date.now,s=t.pid??process.pid,o=t.isPidAlive??xt;await gp(yp(e),{recursive:!0,mode:448});let i=[];for(let a=0;;a+=1){let c=await Ta(e);if(c)return await c.writeFile(`${_p} pid=${s} taken=${new Date(r()).toISOString()}
51
+ `).catch(()=>{}),{acquired:!0,lockPath:e,handle:c,reaped:i};let u=await MR(e),l=await FR(e,u,r());if(a>=DR||l==null)return{acquired:!1,lockPath:e,holder:u,ageMs:l};let p=NR(u,l,n,o);if(p==null)return{acquired:!1,lockPath:e,holder:u,ageMs:l};let d={lockPath:e,reason:p,holder:u,ageMs:l};await hp(e,{force:!0}),i.push(d),t.onReap?.(d)}}async function kp(e){await e.handle.close().catch(()=>{}),await hp(e.lockPath,{force:!0})}function NR(e,t,n,r){return e==null?t>n?"unattributed":null:r(e.pid)?t>n?"aged-out":null:"holder-dead"}function Sp(e){let t=e.ageMs==null?"of unknown age":`taken ${Math.round(e.ageMs/1e3)}s ago`,n=e.holder==null?"an owner it does not name":`pid ${e.holder.pid} (at ${e.holder.takenAt})`;return`no spawn was attempted: the spawn lock ${JSON.stringify(e.lockPath)} is held by ${n}, ${t}. If that process is gone, remove the file to clear it`}async function MR(e){try{return BR(await OR(e,"utf8"))}catch{return null}}function BR(e){let t=e.split(`
52
+ `,1)[0]?.trim()??"";if(!t.startsWith(_p))return null;let n=Number(/\bpid=(\d+)\b/.exec(t)?.[1]??""),r=/\btaken=(\S+)/.exec(t)?.[1]??"";return!Number.isInteger(n)||n<=0||!Number.isFinite(Date.parse(r))?null:{pid:n,takenAt:r}}async function FR(e,t,n){let r=t==null?Number.NaN:Date.parse(t.takenAt);if(Number.isFinite(r))return Math.max(0,n-r);try{return Math.max(0,n-(await AR(e)).mtimeMs)}catch{return null}}function xt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Oa(e,t=1e3){if(!xt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let n=Date.now()+t;for(;Date.now()<n;){if(!xt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}function Ep(e){let t=e.env??process.env,n=CR("sha256").update(e.key).digest("hex").slice(0,20),r=c=>Er(c,e.socketFileName).length<LR,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(IR(),i);return r(a)||process.platform==="win32"?a:Er(jR,i)}var LR,$R,_p,DR,jR,Js=g(()=>{fp();LR=108;$R=6e4,_p="resident-spawn-lock v1",DR=3;jR="/tmp"});async function On(e,t){return await bp(e,t,"resident rsp server")}var Aa=g(()=>{Js()});var xp=g(()=>{"use strict";Aa()});import{existsSync as GR,readdirSync as HR}from"node:fs";import{homedir as UR}from"node:os";import{basename as Ia,dirname as Pa,join as ke,resolve as Vs}from"node:path";function WR(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??GR,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&&VR(i))return a(Vs(i),"caller-entry");let c=[];for(let[u,l]of zR(i,t.rootDir,n,t.listDir??ZR))if(c.push(u),r(u))return a(u,l);return{diagnostic:ut,searched:c,...i?{callerEntry:Vs(i)}:{}}}function Cp(e={},t={}){let n=Ks(e,t);if(WR(n))return n;throw new An(n)}function VR(e){let t=Ia(e);return t===Kt||La.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:KR(Vs(e))}function KR(e){let t=Pa(e);for(let n=0;n<4;n++){if(Ia(t)==="rsp")return!0;let r=Pa(t);if(r===t)return!1;t=r}return!1}function*zR(e,t,n,r){if(e){let o=Pa(Vs(e));yield[ke(o,Kt),"caller-sibling-bundle"];let i=qR.exec(Ia(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 JR){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=YR(n);yield[ke(s,Kt),"bundle-cache"];for(let o of XR(s,r))yield[ke(s,o),"bundle-cache"]}function YR(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ke(e.HOME||UR(),".cache");return ke(t,"red-skills","bundles")}function XR(e,t){return t(e).filter(n=>La.test(n)).sort((n,r)=>QR(vp(r),vp(n)))}function vp(e){return La.exec(e)?.[1]??""}function QR(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 ZR(e){try{return HR(e)}catch{return[]}}var ut,An,Kt,qR,La,JR,$a=g(()=>{ut="rsp-resident-entry-unresolved";An=class extends Error{code=ut;searched;callerEntry;constructor(t){super(`${ut}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
53
53
  searched:
54
54
  ${t.searched.map(n=>` ${n}`).join(`
55
- `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",WR=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,La=/^rsp-(.+)\.bundle\.min\.mjs$/,qR=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as Lf}from"node:crypto";import{spawn as $f}from"node:child_process";import{readFileSync as ZR}from"node:fs";import{mkdir as Ma,readFile as Df,rename as ek,rm as dt,stat as tk,writeFile as nk}from"node:fs/promises";import{dirname as zt,join as lt,resolve as Ba}from"node:path";import{fileURLToPath as rk}from"node:url";function Ke(e){let t=gk(e)??Ba(e),n=mk(t),r=q(t);return{rootDir:t,socketPath:lt(n,"rsp.sock"),pidPath:lt(n,"rsp.pid"),lockPath:lt(n,"rsp.lock"),wakeLockPath:lt(t,".red","tmp","rsp","wake.lock"),summaryPath:lt(r,"rsp-status-summary.json"),registryPath:lt(r,"rsp-resident.pid.json")}}async function zs(e,t){if(await Ma(zt(e.socketPath),{recursive:!0,mode:448}),await Pf(e.socketPath,t))return;await Af(e,t);let n=await kf(e.lockPath,{onReap:r=>process.stderr.write(`rsp: reaped the resident spawn lock ${JSON.stringify(r.lockPath)} (${r.reason}, ${Math.round(r.ageMs/1e3)}s old)
56
- `)});if(n.acquired)try{if(await Pf(e.socketPath,t))return;await Af(e,t),await ik(e.socketPath);let r=ck(e,t);await Of(e.socketPath,r);return}finally{await Sf(n)}try{await Of(e.socketPath)}catch(r){throw new Error(`${r instanceof Error?r.message:String(r)}; ${Ef(n)}`)}}async function Yt(e,t=200){try{return await Mf(e,t)!=null}catch{return!1}}async function Mf(e,t=200){let n=await On({socketPath:e,timeoutMs:t},{id:Lf(),op:"ping"});return n.ok?Hf(n.value)?{version:wk(n.value.version)}:{}:null}async function Ys(e,t){if(await Ma(zt(e.socketPath),{recursive:!0,mode:448}),await Yt(e.socketPath,50))return!1;let n=await ak(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=jf(e,t);return $f(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 Bf(e,t){try{await zs(e,t)}finally{await dt(e.wakeLockPath,{force:!0})}}async function vr(e){try{let t=dk(await Df(e,"utf8"));return _k(t)?t:null}catch{return null}}async function Xs(e,t){let n={version:Nf,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 Ma(zt(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await nk(r,`${C(n)}
57
- `,{encoding:"utf8",mode:384}),await ek(r,e)}async function Qs(e,t=process.pid){try{let n=await vr(e);if(n&&n.pid!==t)return;await dt(e,{force:!0})}catch{}}async function xr(e){let t=await vr(e.registryPath);if(!t)try{return await Df(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!St(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await Yt(t.socket_path,100);return n&&await pk(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 Ff(e){let t=await xr(e);return t.state==="registered-dead"||t.state==="invalid"?(await dt(e.registryPath,{force:!0}),await xr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Oa(t.entry.pid),await dt(e.registryPath,{force:!0}),await dt(t.entry.socket_path,{force:!0}),await xr(e)):t}async function Of(e,t){let n=Date.now()+ok(),r;for(;Date.now()<n;){if(await Yt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Da("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Da("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Da("resident rsp server did not start",t):"resident rsp server did not start")}function ok(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:sk}async function ik(e){await dt(e,{force:!0})}function ck(e,t){let[n,r]=jf(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=$f(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=lk(`${i}${c}`,uk)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function Da(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
+ `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",qR=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,La=/^rsp-(.+)\.bundle\.min\.mjs$/,JR=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as Ip}from"node:crypto";import{spawn as Lp}from"node:child_process";import{readFileSync as ek}from"node:fs";import{mkdir as Ma,readFile as $p,rename as tk,rm as dt,stat as nk,writeFile as rk}from"node:fs/promises";import{dirname as zt,join as lt,resolve as Ba}from"node:path";import{fileURLToPath as sk}from"node:url";function Ke(e){let t=hk(e)??Ba(e),n=gk(t),r=q(t);return{rootDir:t,socketPath:lt(n,"rsp.sock"),pidPath:lt(n,"rsp.pid"),lockPath:lt(n,"rsp.lock"),wakeLockPath:lt(t,".red","tmp","rsp","wake.lock"),summaryPath:lt(r,"rsp-status-summary.json"),registryPath:lt(r,"rsp-resident.pid.json")}}async function zs(e,t){if(await Ma(zt(e.socketPath),{recursive:!0,mode:448}),await Ap(e.socketPath,t))return;await Op(e,t);let n=await Rp(e.lockPath,{onReap:r=>process.stderr.write(`rsp: reaped the resident spawn lock ${JSON.stringify(r.lockPath)} (${r.reason}, ${Math.round(r.ageMs/1e3)}s old)
56
+ `)});if(n.acquired)try{if(await Ap(e.socketPath,t))return;await Op(e,t),await ak(e.socketPath);let r=uk(e,t);await Tp(e.socketPath,r);return}finally{await kp(n)}try{await Tp(e.socketPath)}catch(r){throw new Error(`${r instanceof Error?r.message:String(r)}; ${Sp(n)}`)}}async function Yt(e,t=200){try{return await Np(e,t)!=null}catch{return!1}}async function Np(e,t=200){let n=await On({socketPath:e,timeoutMs:t},{id:Ip(),op:"ping"});return n.ok?Gp(n.value)?{version:_k(n.value.version)}:{}:null}async function Ys(e,t){if(await Ma(zt(e.socketPath),{recursive:!0,mode:448}),await Yt(e.socketPath,50))return!1;let n=await ck(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Fp(e,t);return Lp(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 Mp(e,t){try{await zs(e,t)}finally{await dt(e.wakeLockPath,{force:!0})}}async function vr(e){try{let t=pk(await $p(e,"utf8"));return Rk(t)?t:null}catch{return null}}async function Xs(e,t){let n={version:Dp,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 Ma(zt(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await rk(r,`${C(n)}
57
+ `,{encoding:"utf8",mode:384}),await tk(r,e)}async function Qs(e,t=process.pid){try{let n=await vr(e);if(n&&n.pid!==t)return;await dt(e,{force:!0})}catch{}}async function xr(e){let t=await vr(e.registryPath);if(!t)try{return await $p(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!xt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await Yt(t.socket_path,100);return n&&await mk(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 Bp(e){let t=await xr(e);return t.state==="registered-dead"||t.state==="invalid"?(await dt(e.registryPath,{force:!0}),await xr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Oa(t.entry.pid),await dt(e.registryPath,{force:!0}),await dt(t.entry.socket_path,{force:!0}),await xr(e)):t}async function Tp(e,t){let n=Date.now()+ik(),r;for(;Date.now()<n;){if(await Yt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Da("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Da("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Da("resident rsp server did not start",t):"resident rsp server did not start")}function ik(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:ok}async function ak(e){await dt(e,{force:!0})}function uk(e,t){let[n,r]=Fp(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Lp(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=dk(`${i}${c}`,lk)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function Da(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:
58
58
  ${s}`),r.join(`
59
- `)}function lk(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function dk(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Af(e,t){try{let n=await vr(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!St(n.pid)){await dt(e.registryPath,{force:!0});return}if(await Yt(n.socket_path,100))return;if(Gf(t.clientVersion,n.resident_version)&&(await fk(n.pid,1500),!St(n.pid))){await dt(e.registryPath,{force:!0});return}await Oa(n.pid),await dt(e.registryPath,{force:!0})}catch{}}async function fk(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!St(e))return;await new Promise(r=>setTimeout(r,50))}}async function pk(e){if(!e.startsWith("file://"))return!1;try{return await tk(rk(e)),!1}catch(t){return t.code==="ENOENT"}}function jf(e,t){let n=Tf(t,{rootDir:e.rootDir});return[n.command,n.args]}function mk(e){return xf({key:e,socketFileName:"rsp.sock"})}function gk(e){let t=Ba(e);for(let n=0;n<32;n++){try{let s=Na(lt(t,".git"));if(s!=null)return hk(t,s)??t;if(Na(lt(t,".git","HEAD"))!=null||Na(lt(t,".red","config.yaml"))!=null)return t}catch{}let r=zt(t);if(r===t)return null;t=r}return null}function hk(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ba(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?zt(zt(zt(r))):null}function Na(e){try{return ZR(e,"utf8")}catch{return null}}async function Pf(e,t){let n=await Mf(e).catch(()=>null);return n?Gf(t.clientVersion,n.version)?(await yk(e,t.clientVersion),await Rk(e),!1):!0:!1}async function yk(e,t){try{await On({socketPath:e,timeoutMs:200},{id:Lf(),op:"handover",clientVersion:t})}catch{}}function Gf(e,t){return!e||!t?!1:bk(e,t)>0}function bk(e,t){let n=If(e),r=If(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function If(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 Hf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function wk(e){return typeof e=="string"&&e.length>0?e:void 0}function _k(e){return Hf(e)&&e.version===Nf&&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 Rk(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Yt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Nf,sk,ak,uk,Zs=g(()=>{N();Re();Js();Aa();$a();$a();Nf=1,sk=5e3;ak=Ta;uk=8*1024});var Xt={};B(Xt,{RSP_ENTRY_UNRESOLVED:()=>ut,ResidentRspElisionStore:()=>Cr,RspResidentEntryError:()=>An,ensureResidentServer:()=>zs,kickResidentServer:()=>Ys,pingResident:()=>Yt,readResidentRegistry:()=>vr,removeResidentRegistry:()=>Qs,residentRegistryStatus:()=>xr,resolveResidentPaths:()=>Ke,resolveRspEntry:()=>Ks,sweepResidentRegistry:()=>Ff,warmResidentServer:()=>Bf,writeResidentRegistry:()=>Xs});import{randomUUID as kk}from"node:crypto";function Uf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cr,ze=g(()=>{"use strict";vf();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?Uf(n)&&n.status==="expired"?n:!Uf(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:kk()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});function ja(e,t,n=Wf){let r=Math.max(0,Math.floor(e)),s=n in qf?n:Wf,o=qf[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:Fa(r,o),dollars_saved_low_usd:i==null?null:Fa(i,o),dollars_saved_high_usd:a==null?null:Fa(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Sk}}function Fa(e,t){return Ek(Math.max(0,e)/1e6*t)}function Tr(e){return`$${e.toFixed(6)}`}function Ek(e){return Math.round(e*1e6)/1e6}var Wf,qf,Sk,Ga=g(()=>{"use strict";Wf="gpt-5",qf={"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},Sk="estimate derived from byte-based token estimate when token counts are estimated"});var Or={};B(Or,{isResidentEntryUnresolved:()=>Kf,reportResidentEntryDiagnostic:()=>Ua,residentConfigFor:()=>Vf,residentElisionStore:()=>Ha});function Vf(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 Ha(e,t,n={}){let r=n.paths??Ke(e);return new Cr(r,Vf(t,Ms("rsp").version),{ensureResident:n.ensureResident})}function Ua(e){return Kf(e)?(Jf||(Jf=!0,process.stderr.write(`rsp: ${ut} \u2014 elision is off until an rsp entry is installed
59
+ `)}function dk(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function pk(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Op(e,t){try{let n=await vr(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!xt(n.pid)){await dt(e.registryPath,{force:!0});return}if(await Yt(n.socket_path,100))return;if(jp(t.clientVersion,n.resident_version)&&(await fk(n.pid,1500),!xt(n.pid))){await dt(e.registryPath,{force:!0});return}await Oa(n.pid),await dt(e.registryPath,{force:!0})}catch{}}async function fk(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!xt(e))return;await new Promise(r=>setTimeout(r,50))}}async function mk(e){if(!e.startsWith("file://"))return!1;try{return await nk(sk(e)),!1}catch(t){return t.code==="ENOENT"}}function Fp(e,t){let n=Cp(t,{rootDir:e.rootDir});return[n.command,n.args]}function gk(e){return Ep({key:e,socketFileName:"rsp.sock"})}function hk(e){let t=Ba(e);for(let n=0;n<32;n++){try{let s=Na(lt(t,".git"));if(s!=null)return yk(t,s)??t;if(Na(lt(t,".git","HEAD"))!=null||Na(lt(t,".red","config.yaml"))!=null)return t}catch{}let r=zt(t);if(r===t)return null;t=r}return null}function yk(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ba(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?zt(zt(zt(r))):null}function Na(e){try{return ek(e,"utf8")}catch{return null}}async function Ap(e,t){let n=await Np(e).catch(()=>null);return n?jp(t.clientVersion,n.version)?(await bk(e,t.clientVersion),await kk(e),!1):!0:!1}async function bk(e,t){try{await On({socketPath:e,timeoutMs:200},{id:Ip(),op:"handover",clientVersion:t})}catch{}}function jp(e,t){return!e||!t?!1:wk(e,t)>0}function wk(e,t){let n=Pp(e),r=Pp(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Pp(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 Gp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _k(e){return typeof e=="string"&&e.length>0?e:void 0}function Rk(e){return Gp(e)&&e.version===Dp&&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 kk(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Yt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Dp,ok,ck,lk,Zs=g(()=>{D();Re();Js();Aa();$a();$a();Dp=1,ok=5e3;ck=Ta;lk=8*1024});var Xt={};B(Xt,{RSP_ENTRY_UNRESOLVED:()=>ut,ResidentRspElisionStore:()=>Cr,RspResidentEntryError:()=>An,ensureResidentServer:()=>zs,kickResidentServer:()=>Ys,pingResident:()=>Yt,readResidentRegistry:()=>vr,removeResidentRegistry:()=>Qs,residentRegistryStatus:()=>xr,resolveResidentPaths:()=>Ke,resolveRspEntry:()=>Ks,sweepResidentRegistry:()=>Bp,warmResidentServer:()=>Mp,writeResidentRegistry:()=>Xs});import{randomUUID as Sk}from"node:crypto";function Hp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cr,ze=g(()=>{"use strict";xp();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?Hp(n)&&n.status==="expired"?n:!Hp(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:Sk()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});function ja(e,t,n=Up){let r=Math.max(0,Math.floor(e)),s=n in Wp?n:Up,o=Wp[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:Fa(r,o),dollars_saved_low_usd:i==null?null:Fa(i,o),dollars_saved_high_usd:a==null?null:Fa(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Ek}}function Fa(e,t){return xk(Math.max(0,e)/1e6*t)}function Tr(e){return`$${e.toFixed(6)}`}function xk(e){return Math.round(e*1e6)/1e6}var Up,Wp,Ek,Ga=g(()=>{"use strict";Up="gpt-5",Wp={"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},Ek="estimate derived from byte-based token estimate when token counts are estimated"});var Or={};B(Or,{isResidentEntryUnresolved:()=>Vp,reportResidentEntryDiagnostic:()=>Ua,residentConfigFor:()=>Jp,residentElisionStore:()=>Ha});function Jp(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 Ha(e,t,n={}){let r=n.paths??Ke(e);return new Cr(r,Jp(t,Ms("rsp").version),{ensureResident:n.ensureResident})}function Ua(e){return Vp(e)?(qp||(qp=!0,process.stderr.write(`rsp: ${ut} \u2014 elision is off until an rsp entry is installed
60
60
  `),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
61
- `)),!0):!1}function Kf(e){return typeof e=="object"&&e!==null&&e.code===ut}var Jf,Qt=g(()=>{"use strict";la();ze();Jf=!1});function Qa(e){return e==="success"?0:e==="failure"?1:2}function Za(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 Zf,ep,tp,Ya,np,rp,sp,op,Xa,Zt=g(()=>{"use strict";Zf="rsp.wait.result",ep="rsp.wait.registry",tp="rsp.wait.list",Ya={cmd:18e5,pr:27e5,run:27e5,release:72e5},np=16*1024,rp=1e4,sp=2e3,op=6e4,Xa={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 Ak,readFile as Pk}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(ip(e,"SIGTERM"),to(r,"SIGTERM"),await ap(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await no(n)])];ip(e,"SIGKILL"),to(o,"SIGKILL");let i=Math.max(1e3,t);await Ik(e,i);let a=await ap(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(en)}}function ip(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 Ik(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 ap(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(e.every(r=>!en(r)))return!0;await Lk(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 Ak("/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 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 cp(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 cp(e){if(process.platform!=="linux")return null;try{let t=await Pk(`/proc/${e}/stat`,"utf8"),n=t.lastIndexOf(")");return n<0?null:t.slice(n+2).trim().split(/\s+/)}catch{return null}}async function Lk(e){await new Promise(t=>setTimeout(t,e))}var pt=g(()=>{"use strict"});import{constants as $k}from"node:os";async function up(e){let t=e[1],n={timeoutMs:Ya.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:rp,terminateGraceMs:sp,probeTimeoutMs:op,format:"toon",captureBytes:np},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=Ya[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=Mk(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=Nk(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 Dk(n),t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function Dk(e){if(!(e.signal in $k.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 Nk(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Mk(e){return e.startsWith("SIG")?e:`SIG${e}`}var lp=g(()=>{"use strict";Zt();pt()});import{existsSync as ec,readFileSync as Bk,statSync as Fk}from"node:fs";import{basename as dp,dirname as ro,isAbsolute as jk,join as fp,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 Kd({startDir:n,env:t,exists:ec});let s=Hk(n),o=Gk(n,s);return o||(s??n)}function Gk(e,t){let n=e;for(;;){if(ec(fp(n,".red")))return n;if(t&&n===t)return null;let r=Lr(n,"..");if(r===n)return null;n=r}}function Hk(e){let t=e;for(;;){let n=fp(t,".git");if(ec(n))return qk(n)?t:Uk(n)??t;let r=Lr(t,"..");if(r===t)return null;t=r}}function Uk(e){let t=Wk(e);if(!t)return null;let n=ro(t),r=ro(n);return dp(n)!=="worktrees"||dp(r)!==".git"?null:ro(r)}function Wk(e){let t;try{t=Bk(e,"utf8")}catch{return null}let n=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!n)return null;let r=n[1].trim();return jk(r)?Lr(r):Lr(ro(e),r)}function qk(e){try{return Fk(e).isDirectory()}catch{return!1}}var tc=g(()=>{Re()});import{join as Jk}from"node:path";function Kk(e,t=process.env){return so(e,t)}function Dn(e,t=process.env){return Vd(Kk(e,t))}function pp(e,t=process.env){return Jk(Dn(e,t),Vk)}var Vk,nc=g(()=>{"use strict";Re();tc();Vk="spool"});import{randomUUID as zk}from"node:crypto";import{existsSync as Yk}from"node:fs";import{mkdir as Xk,readdir as Qk,readFile as Zk,rename as eS,rm as rc,writeFile as tS}from"node:fs/promises";import{dirname as nS,join as gp}from"node:path";function hp(e,t,n=process.env){return gp(Dn(e,n),`${t}${rS}`)}async function Nn(e,t){await sc(e,`${J(t)}
62
- `)}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(!Yk(n))return[];let r=await Qk(n).catch(()=>[]),s=[];for(let o of r.filter(i=>sS.some(a=>i.endsWith(a)))){let i=gp(n,o),a=await oS(i);if(!a){await rc(i,{force:!0});continue}if(!await iS(a)){await rc(i,{force:!0});continue}s.push(a)}return s}async function oS(e){let t;try{t=await Zk(e,"utf8")}catch{return null}let n=t.trim();if(!n)return null;let r=aS(n);return r&&Object.keys(r).length>0?r:null}async function iS(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 aS(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 sc(e,t){await Xk(nS(e),{recursive:!0});let n=`${e}.tmp-${process.pid}-${zk()}`;try{await tS(n,t,"utf8"),await eS(n,e)}finally{await rc(n,{force:!0})}}function oc(e){return{schema:ep,version:1,...e}}function mp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rS,sS,Dr=g(()=>{"use strict";N();at();Zt();nc();pt();rS=".toon",sS=[".toon",".json"]});function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(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 ic(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 cS}from"node:child_process";import{resolve as uS}from"node:path";async function yp(e,t,n){let r=[];if(e.signalPid){let s=await lS(e);s&&r.push(s)}if(e.notifyCmd?.trim()){let s=await dS(e,t,n);s&&r.push({hook:"notify-cmd",...s})}return r.length===0?{status:"success"}:{status:"failure",errors:r}}async function lS(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:bp(n),pid:t,signal:e.signal}}}async function dS(e,t,n){let r=Ye(t.wait),s=Ye(t.verdict);return await fS(e.notifyCmd,n,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?uS(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 fS(e,t,n,r,s){return await new Promise(o=>{let i=!1,a=!1,c=f=>{i||(i=!0,o(f))},u=cS(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:bp(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 bp(e){return e instanceof Error?e.message:String(e)}var wp=g(()=>{"use strict";co();pt()});import{resolve as pS}from"node:path";async function _p(e){let{kind:t,entry:n,options:r,cwd:s}=e,o=mS(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 yp(r,a,s),u=Nr(t,n,o,c,i);return await Mr(r.resultFile,u,r.format),{result:u,exitCode:Rp(o,c)}}function Rp(e,t){return t.status!=="success"||e.status==="running"?2:Qa(e.status)}function mS(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:Zf,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:Rp(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 sc(pS(e),Fn(t,n))}function Fn(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
61
+ `)),!0):!1}function Vp(e){return typeof e=="object"&&e!==null&&e.code===ut}var qp,Qt=g(()=>{"use strict";la();ze();qp=!1});function Qa(e){return e==="success"?0:e==="failure"?1:2}function Za(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function pt(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 Qp,Zp,ef,Ya,tf,nf,rf,sf,Xa,Zt=g(()=>{"use strict";Qp="rsp.wait.result",Zp="rsp.wait.registry",ef="rsp.wait.list",Ya={cmd:18e5,pr:27e5,run:27e5,release:72e5},tf=16*1024,nf=1e4,rf=2e3,sf=6e4,Xa={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 Pk,readFile as Ik}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(of(e,"SIGTERM"),to(r,"SIGTERM"),await af(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await no(n)])];of(e,"SIGKILL"),to(o,"SIGKILL");let i=Math.max(1e3,t);await Lk(e,i);let a=await af(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(en)}}function of(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 Lk(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 af(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(e.every(r=>!en(r)))return!0;await $k(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 Pk("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await cf(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 cf(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 cf(e){if(process.platform!=="linux")return null;try{let t=await Ik(`/proc/${e}/stat`,"utf8"),n=t.lastIndexOf(")");return n<0?null:t.slice(n+2).trim().split(/\s+/)}catch{return null}}async function $k(e){await new Promise(t=>setTimeout(t,e))}var ft=g(()=>{"use strict"});import{constants as Dk}from"node:os";async function uf(e){let t=e[1],n={timeoutMs:Ya.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:nf,terminateGraceMs:rf,probeTimeoutMs:sf,format:"toon",captureBytes:tf},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=Ya[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=Bk(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=Mk(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 Nk(n),t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function Nk(e){if(!(e.signal in Dk.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 Mk(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Bk(e){return e.startsWith("SIG")?e:`SIG${e}`}var lf=g(()=>{"use strict";Zt();ft()});import{existsSync as ec,readFileSync as Fk,statSync as jk}from"node:fs";import{basename as df,dirname as ro,isAbsolute as Gk,join as pf,resolve as Lr}from"node:path";function so(e,t=process.env){let n=Lr(e);if(pa.map(i=>t[i]).find(Boolean))return Kd({startDir:n,env:t,exists:ec});let s=Uk(n),o=Hk(n,s);return o||(s??n)}function Hk(e,t){let n=e;for(;;){if(ec(pf(n,".red")))return n;if(t&&n===t)return null;let r=Lr(n,"..");if(r===n)return null;n=r}}function Uk(e){let t=e;for(;;){let n=pf(t,".git");if(ec(n))return Jk(n)?t:Wk(n)??t;let r=Lr(t,"..");if(r===t)return null;t=r}}function Wk(e){let t=qk(e);if(!t)return null;let n=ro(t),r=ro(n);return df(n)!=="worktrees"||df(r)!==".git"?null:ro(r)}function qk(e){let t;try{t=Fk(e,"utf8")}catch{return null}let n=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!n)return null;let r=n[1].trim();return Gk(r)?Lr(r):Lr(ro(e),r)}function Jk(e){try{return jk(e).isDirectory()}catch{return!1}}var tc=g(()=>{Re()});import{join as Vk}from"node:path";function zk(e,t=process.env){return so(e,t)}function Dn(e,t=process.env){return Vd(zk(e,t))}function ff(e,t=process.env){return Vk(Dn(e,t),Kk)}var Kk,nc=g(()=>{"use strict";Re();tc();Kk="spool"});import{randomUUID as Yk}from"node:crypto";import{existsSync as Xk}from"node:fs";import{mkdir as Qk,readdir as Zk,readFile as eS,rename as tS,rm as rc,writeFile as nS}from"node:fs/promises";import{dirname as rS,join as gf}from"node:path";function hf(e,t,n=process.env){return gf(Dn(e,n),`${t}${sS}`)}async function Nn(e,t){await sc(e,`${J(t)}
62
+ `)}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(!Xk(n))return[];let r=await Zk(n).catch(()=>[]),s=[];for(let o of r.filter(i=>oS.some(a=>i.endsWith(a)))){let i=gf(n,o),a=await iS(i);if(!a){await rc(i,{force:!0});continue}if(!await aS(a)){await rc(i,{force:!0});continue}s.push(a)}return s}async function iS(e){let t;try{t=await eS(e,"utf8")}catch{return null}let n=t.trim();if(!n)return null;let r=cS(n);return r&&Object.keys(r).length>0?r:null}async function aS(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 cS(e){try{let t=L(e);if(mf(t))return t}catch{}try{let t=JSON.parse(e);if(mf(t))return t}catch{}return null}async function sc(e,t){await Qk(rS(e),{recursive:!0});let n=`${e}.tmp-${process.pid}-${Yk()}`;try{await nS(n,t,"utf8"),await tS(n,e)}finally{await rc(n,{force:!0})}}function oc(e){return{schema:Zp,version:1,...e}}function mf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var sS,oS,Dr=g(()=>{"use strict";D();at();Zt();nc();ft();sS=".toon",oS=[".toon",".json"]});function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(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 ic(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 uS}from"node:child_process";import{resolve as lS}from"node:path";async function yf(e,t,n){let r=[];if(e.signalPid){let s=await dS(e);s&&r.push(s)}if(e.notifyCmd?.trim()){let s=await pS(e,t,n);s&&r.push({hook:"notify-cmd",...s})}return r.length===0?{status:"success"}:{status:"failure",errors:r}}async function dS(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:bf(n),pid:t,signal:e.signal}}}async function pS(e,t,n){let r=Ye(t.wait),s=Ye(t.verdict);return await fS(e.notifyCmd,n,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?lS(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 fS(e,t,n,r,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=uS(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,Ln(u,r).then(p=>c({error:`timed out after ${n}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},n);u.once("error",p=>{clearTimeout(l),c({error:bf(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 bf(e){return e instanceof Error?e.message:String(e)}var wf=g(()=>{"use strict";co();ft()});import{resolve as mS}from"node:path";async function _f(e){let{kind:t,entry:n,options:r,cwd:s}=e,o=gS(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 yf(r,a,s),u=Nr(t,n,o,c,i);return await Mr(r.resultFile,u,r.format),{result:u,exitCode:Rf(o,c)}}function Rf(e,t){return t.status!=="success"||e.status==="running"?2:Qa(e.status)}function gS(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:Qp,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:Rf(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 sc(mS(e),Fn(t,n))}function Fn(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
63
63
  `:`${J(e)}
64
- `}var kp=g(()=>{"use strict";at();Zt();Dr();wp()});import{createWriteStream as gS,mkdirSync as hS}from"node:fs";import{readFile as yS,rm as bS}from"node:fs/promises";import{dirname as wS}from"node:path";import{join as Sp}from"node:path";function Ep(e,t,n){return{stdout:new uo(n,Sp(e,`${t}.stdout.bin`)),stderr:new uo(n,Sp(e,`${t}.stderr.bin`))}}function _S(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!RS(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function RS(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var uo,xp=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,..._S(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 yS(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{hS(wS(this.spoolPath),{recursive:!0}),t=gS(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 bS(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as kS,readFileSync as ID}from"node:fs";import{dirname as SS,join as ES}from"node:path";function vp(e,t){let n=e;for(let r=0;r<16;r++){let s=ES(n,t);if(kS(s))return s;let o=SS(n);if(o===n)break;n=o}return null}function xS(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(`
65
- `)){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 xS(u)}}var Cp=g(()=>{});var Mp={};B(Mp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Gn,GH_ETAG_CACHE_DIR_NAME:()=>Pp,LEGACY_GH_ETAG_CACHE_FILE:()=>Ip,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Lp,enforceGhEtagCacheCeiling:()=>fc,ghEtagCacheDir:()=>fo,ghEtagEntryPath:()=>po,isCacheEntry:()=>go,legacyGhEtagCachePaths:()=>uc,migrateLegacyGhEtagCache:()=>mc,readGhEtagCache:()=>mo,readGhEtagEntry:()=>lc,resetGhEtagCacheMigrationMemo:()=>IS,sweepGhEtagCache:()=>pc,writeGhEtagEntry:()=>dc});import{existsSync as vS}from"node:fs";import{mkdir as CS,readdir as TS,rename as OS,rm as Tp,stat as Op,unlink as Ap,writeFile as AS}from"node:fs/promises";import{dirname as PS,join as jn}from"node:path";function fo(e){return jn(q(e),Pp)}function po(e,t){return jn(fo(e),`${NS(t)}.toon`)}function uc(e){let t=q(e);return[jn(t,Ip),jn(t,Lp)]}async function lc(e,t){await mc(e);try{let n=Np(await Ws(po(e,t)));return go(n)?n:void 0}catch{return}}async function dc(e,t,n={}){return await Dp(po(e,t.key),t),await fc(e,n.maxBytes??Gn)}async function fc(e,t=Gn){let n=await $S(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 Ap(o.path),r-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:r}}async function pc(e,t={}){let n=await mc(e,{force:!0}),r=await LS(e);return{...await fc(e,t.maxBytes??Gn),reclaimedTmp:r,migratedEntries:n}}async function mo(e){for(let t of uc(e))try{let n=Np(await Ws(t));if(MS(n))return n}catch{}return{version:1,entries:{}}}async function mc(e,t={}){if(!t.force&&ac.has(e))return 0;ac.add(e);let n=uc(e).filter(o=>vS(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 DS(a)||(await Dp(a,{...i,key:o}),s+=1)}for(let o of n)await Tp(o,{force:!0});return s}function IS(){ac.clear()}async function LS(e){let t=0;for(let n of[q(e),fo(e)])for(let r of await $p(n))if(r.endsWith(".tmp"))try{await Ap(jn(n,r)),t+=1}catch{}return t}async function $S(e){let t=fo(e),n=[];for(let r of await $p(t)){if(!r.endsWith(".toon"))continue;let s=jn(t,r);try{let o=await Op(s);o.isFile()&&n.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return n}async function $p(e){try{return await TS(e)}catch{return[]}}async function DS(e){try{return await Op(e),!0}catch{return!1}}async function Dp(e,t){await CS(PS(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await AS(n,`${C(t)}
66
- `,{encoding:"utf8",mode:384}),await OS(n,e)}catch(r){throw await Tp(n,{force:!0}),r}}function NS(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 MS(e){return cc(e)&&e.version===1&&cc(e.entries)&&Object.values(e.entries).every(go)}function go(e){return cc(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function cc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pp,Ip,Lp,Gn,ac,Br=g(()=>{"use strict";Re();N();V();Pp="gh-etag",Ip="gh-etag-cache.toon",Lp="gh-etag-cache.json",Gn=4*1024*1024;ac=new Set});var Up={};B(Up,{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:()=>Hp,DEFAULT_RSP_STORE_PATH:()=>gc,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>yo,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>ho,DEFAULT_RSP_TTL_DAYS:()=>Ne,MIN_RSP_IDLE_MS:()=>Gp,resolveRspConfig:()=>Fe});import{existsSync as BS,readFileSync as FS}from"node:fs";import{join as jS,resolve as Bp}from"node:path";function Fe(e,t,n){let r=vp(Bp(e),jS(".red","config.yaml")),s=r?FS(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"),Fp),p=ue(Xe(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(s,"rsp.telemetryDrainTimeoutMs"),jp),b=GS(Xe(t.RSP_IDLE_MS)??z(s,"rsp.idleMs"),bo,Gp),_=ue(Xe(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(s,"rsp.heavyGitByteThreshold"),mt),h=HS(Xe(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??z(s,"rsp.measurement.holdoutShare"),Hp),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=Ke(e).rootDir,T=n??t.RSP_STORE_URI??`file://${Jd(Bp(k),BS)}`;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 GS(e,t,n){let r=ue(e,t);return Math.max(r,n)}function HS(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,gc,Ne,Me,Be,ho,yo,Fp,jp,bo,Gp,Hp,je=g(()=>{"use strict";Cp();Re();Zs();V();Br();mt=8*1024,gc=Wd,Ne=7,Me=6,Be=64*1024*1024,ho=90,yo=4*1024*1024,Fp=3e4,jp=2e3,bo=5*6e4,Gp=5e3,Hp=0});function Wp(e,t=process.env){return{async mint(n,r){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(e,Fe(e,t));try{return await o.mint(n,r)}finally{await o.close()}}}}var qp=g(()=>{"use strict";je()});import{spawn as US}from"node:child_process";async function Vp(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??Wp(r),c=Ep(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=US(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 ${Kp(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:WS(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=hc(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 qS(m,i,p)}return await oo(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kp(n)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:hc(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 hc(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function WS(e,t,n){return Z("wait interrupted",{attempts:t,last_poll_at:n??null,...e?{last_observation:hc(e)}:{}})}async function qS(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 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=g(()=>{"use strict";xp();qp();Zt();pt();Dr()});var yc,bc,wc,pe,te,Se,Qe,Fr,_o=g(()=>{"use strict";yc="rsp-telemetry.spool.toonl",bc="rsp-telemetry.spool.jsonl",wc="rsp-telemetry.spool.corrections.toonl",pe="rsp_accounting_events_v1",te="rsp_decisions_v1",Se="rsp_telemetry_invocations_v1",Qe="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 Et(e)??0}function Et(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var _c=g(()=>{"use strict"});import{randomUUID as kc,createHash as JS}from"node:crypto";import{appendFileSync as em,existsSync as VS,mkdirSync as tm}from"node:fs";import{mkdir as nm,readdir as KS,readFile as rm,rename as zS,rm as sm,writeFile as Sc}from"node:fs/promises";import{basename as Rc,dirname as jr,join as Un,resolve as Yp}from"node:path";function ko(e){if(!e)return null;let t=Yp(e);for(;;){if(VS(Un(t,".red")))return t;let n=Yp(Un(t,".."));if(n===t)break;t=n}return null}function gt(e){return Un(q(e),yc)}function So(e){return Un(q(e),bc)}function xc(e){return Un(q(e),wc)}async function ht(e,t){xt(e,t)}function xt(e,t){try{let n=ko(e);if(!n)return;let r=gt(n);tm(jr(r),{recursive:!0}),em(r,tE({spool_id:kc(),event:XS(t)}),{encoding:"utf8",mode:384})}catch{}}function XS(e){return Xp(Xp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xp(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=YS)return e;let o={...e};return delete o[t],Ee(o[n])===0&&(o[n]=s),o.estimated=!0,o}async function QS(e){let t=ko(e);if(!t)return[];let n=gt(t);await nm(jr(n),{recursive:!0}).catch(()=>{});let r=await am(t),s=[...await cm(t),...await rE(r)];return await Promise.all(r.map(o=>sm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function vc(e,t){let n=ko(e);if(!n)return;let r=gt(n);await nm(jr(r),{recursive:!0}).catch(()=>{}),await nE(n);for(let s of await ZS(n))await Qp(n,s,t);for(let s of await cm(n))await om(n,s,t,!0);for(let s of await am(n))await Qp(n,s,t)}async function ZS(e){let t=[gt(e),So(e)],n=jr(t[0]);return(await KS(n).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Rc(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Rc(c)}.`));if(!o)return!1;let i=`${Rc(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&eE(a))}).sort().map(s=>Un(n,s))}function eE(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Qp(e,t,n){try{let r=await im(t);for(let s of um(r))await om(e,s,n,!1)}finally{await sm(t,{force:!0})}}async function om(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Zp(e,{correction_id:kc(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Zp(e,{correction_id:kc(),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 im(e){let t="";for(let n=0;n<5;n++){let r=await rm(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Wn(e){try{let t=JSON.parse(e);return!Hn(t)||t.collection!==pe&&t.collection!==te&&t.collection!==Se&&t.collection!==Qe?null:t}catch{return null}}function tE(e){return Vt().push(iE(e))}function Zp(e,t){try{let n=ko(e);if(!n)return;let r=xc(n);tm(jr(r),{recursive:!0});let s=Vt();em(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 am(e){let t=[gt(e),So(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await zS(r,s),await Sc(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return n}async function nE(e){await Promise.all([Sc(gt(e),"",{flag:"a"}),Sc(So(e),"",{flag:"a"})]).catch(()=>{})}async function rE(e){let t=[];for(let n of e)t.push(...um(await im(n)));return t}async function cm(e){let t=await rm(xc(e),"utf8").catch(()=>""),n=new Map;for(let r of sE(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:Wn(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function um(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=Wn(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 Jt(`${n}
64
+ `}var kf=g(()=>{"use strict";at();Zt();Dr();wf()});import{createWriteStream as hS,mkdirSync as yS}from"node:fs";import{readFile as bS,rm as wS}from"node:fs/promises";import{dirname as _S}from"node:path";import{join as Sf}from"node:path";function Ef(e,t,n){return{stdout:new uo(n,Sf(e,`${t}.stdout.bin`)),stderr:new uo(n,Sf(e,`${t}.stderr.bin`))}}function RS(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!kS(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function kS(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var uo,xf=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,...RS(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 bS(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{yS(_S(this.spoolPath),{recursive:!0}),t=hS(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 wS(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as SS,readFileSync as LD}from"node:fs";import{dirname as ES,join as xS}from"node:path";function vf(e,t){let n=e;for(let r=0;r<16;r++){let s=xS(n,t);if(SS(s))return s;let o=ES(n);if(o===n)break;n=o}return null}function vS(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(`
65
+ `)){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(p=>p.key).join(".")===t)return vS(u)}}var Cf=g(()=>{});var Mf={};B(Mf,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Gn,GH_ETAG_CACHE_DIR_NAME:()=>Pf,LEGACY_GH_ETAG_CACHE_FILE:()=>If,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Lf,enforceGhEtagCacheCeiling:()=>pc,ghEtagCacheDir:()=>po,ghEtagEntryPath:()=>fo,isCacheEntry:()=>go,legacyGhEtagCachePaths:()=>uc,migrateLegacyGhEtagCache:()=>mc,readGhEtagCache:()=>mo,readGhEtagEntry:()=>lc,resetGhEtagCacheMigrationMemo:()=>LS,sweepGhEtagCache:()=>fc,writeGhEtagEntry:()=>dc});import{existsSync as CS}from"node:fs";import{mkdir as TS,readdir as OS,rename as AS,rm as Tf,stat as Of,unlink as Af,writeFile as PS}from"node:fs/promises";import{dirname as IS,join as jn}from"node:path";function po(e){return jn(q(e),Pf)}function fo(e,t){return jn(po(e),`${MS(t)}.toon`)}function uc(e){let t=q(e);return[jn(t,If),jn(t,Lf)]}async function lc(e,t){await mc(e);try{let n=Nf(await Ws(fo(e,t)));return go(n)?n:void 0}catch{return}}async function dc(e,t,n={}){return await Df(fo(e,t.key),t),await pc(e,n.maxBytes??Gn)}async function pc(e,t=Gn){let n=await DS(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 Af(o.path),r-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:r}}async function fc(e,t={}){let n=await mc(e,{force:!0}),r=await $S(e);return{...await pc(e,t.maxBytes??Gn),reclaimedTmp:r,migratedEntries:n}}async function mo(e){for(let t of uc(e))try{let n=Nf(await Ws(t));if(BS(n))return n}catch{}return{version:1,entries:{}}}async function mc(e,t={}){if(!t.force&&ac.has(e))return 0;ac.add(e);let n=uc(e).filter(o=>CS(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=fo(e,o);await NS(a)||(await Df(a,{...i,key:o}),s+=1)}for(let o of n)await Tf(o,{force:!0});return s}function LS(){ac.clear()}async function $S(e){let t=0;for(let n of[q(e),po(e)])for(let r of await $f(n))if(r.endsWith(".tmp"))try{await Af(jn(n,r)),t+=1}catch{}return t}async function DS(e){let t=po(e),n=[];for(let r of await $f(t)){if(!r.endsWith(".toon"))continue;let s=jn(t,r);try{let o=await Of(s);o.isFile()&&n.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return n}async function $f(e){try{return await OS(e)}catch{return[]}}async function NS(e){try{return await Of(e),!0}catch{return!1}}async function Df(e,t){await TS(IS(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await PS(n,`${C(t)}
66
+ `,{encoding:"utf8",mode:384}),await AS(n,e)}catch(r){throw await Tf(n,{force:!0}),r}}function MS(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Nf(e){try{return JSON.parse(e)}catch{return L(e)}}function BS(e){return cc(e)&&e.version===1&&cc(e.entries)&&Object.values(e.entries).every(go)}function go(e){return cc(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function cc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pf,If,Lf,Gn,ac,Br=g(()=>{"use strict";Re();D();V();Pf="gh-etag",If="gh-etag-cache.toon",Lf="gh-etag-cache.json",Gn=4*1024*1024;ac=new Set});var Uf={};B(Uf,{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:()=>Hf,DEFAULT_RSP_STORE_PATH:()=>gc,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>yo,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Ff,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jf,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>ho,DEFAULT_RSP_TTL_DAYS:()=>Ne,MIN_RSP_IDLE_MS:()=>Gf,resolveRspConfig:()=>Fe});import{existsSync as FS,readFileSync as jS}from"node:fs";import{join as GS,resolve as Bf}from"node:path";function Fe(e,t,n){let r=vf(Bf(e),GS(".red","config.yaml")),s=r?jS(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),p=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"),Ff),f=ue(Xe(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(s,"rsp.telemetryDrainTimeoutMs"),jf),b=HS(Xe(t.RSP_IDLE_MS)??z(s,"rsp.idleMs"),bo,Gf),_=ue(Xe(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(s,"rsp.heavyGitByteThreshold"),mt),h=US(Xe(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??z(s,"rsp.measurement.holdoutShare"),Hf),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=Ke(e).rootDir,T=n??t.RSP_STORE_URI??`file://${Jd(Bf(k),FS)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:f,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 HS(e,t,n){let r=ue(e,t);return Math.max(r,n)}function US(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,gc,Ne,Me,Be,ho,yo,Ff,jf,bo,Gf,Hf,je=g(()=>{"use strict";Cf();Re();Zs();V();Br();mt=8*1024,gc=Wd,Ne=7,Me=6,Be=64*1024*1024,ho=90,yo=4*1024*1024,Ff=3e4,jf=2e3,bo=5*6e4,Gf=5e3,Hf=0});function Wf(e,t=process.env){return{async mint(n,r){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(e,Fe(e,t));try{return await o.mint(n,r)}finally{await o.close()}}}}var qf=g(()=>{"use strict";je()});import{spawn as WS}from"node:child_process";async function Vf(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??Wf(r),c=Ef(e.spoolDir,o.id,n.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async h=>{l||(l=!0,i.removeEventListener("abort",b),await oo(s,o,h.verdict.status).catch(()=>{}),u(h))},m=WS(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 f=async(h,y)=>{if(l||p)return;p=!0,clearTimeout(_);let w=await Ln(m,n.terminateGraceMs),k=await Jf(null,null,c,a,t);await d({verdict:{status:h,exitCode:2,summary:y,details:k},cleanupProven:w.cleaned,survivors:w.survivors})},b=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",b,{once:!0});let _=setTimeout(()=>{f("timeout",`command timed out after ${Kf(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||p)return;let w=h===0;Jf(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:qS(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=hc(l),await Nn(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await oo(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(r*4,Math.round(r*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),m=Math.min(p+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await JS(m,i,f)}return await oo(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kf(n)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:hc(u)}:{attempts:c}}}}async function Jf(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 hc(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function qS(e,t,n){return Z("wait interrupted",{attempts:t,last_poll_at:n??null,...e?{last_observation:hc(e)}:{}})}async function JS(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 Kf(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var zf=g(()=>{"use strict";xf();qf();Zt();ft();Dr()});var yc,bc,wc,fe,te,Se,Qe,Fr,_o=g(()=>{"use strict";yc="rsp-telemetry.spool.toonl",bc="rsp-telemetry.spool.jsonl",wc="rsp-telemetry.spool.corrections.toonl",fe="rsp_accounting_events_v1",te="rsp_decisions_v1",Se="rsp_telemetry_invocations_v1",Qe="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 vt(e)??0}function vt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var _c=g(()=>{"use strict"});import{randomUUID as kc,createHash as VS}from"node:crypto";import{appendFileSync as em,existsSync as KS,mkdirSync as tm}from"node:fs";import{mkdir as nm,readdir as zS,readFile as rm,rename as YS,rm as sm,writeFile as Sc}from"node:fs/promises";import{basename as Rc,dirname as jr,join as Un,resolve as Yf}from"node:path";function ko(e){if(!e)return null;let t=Yf(e);for(;;){if(KS(Un(t,".red")))return t;let n=Yf(Un(t,".."));if(n===t)break;t=n}return null}function gt(e){return Un(q(e),yc)}function So(e){return Un(q(e),bc)}function xc(e){return Un(q(e),wc)}async function ht(e,t){Ct(e,t)}function Ct(e,t){try{let n=ko(e);if(!n)return;let r=gt(n);tm(jr(r),{recursive:!0}),em(r,nE({spool_id:kc(),event:QS(t)}),{encoding:"utf8",mode:384})}catch{}}function QS(e){return Xf(Xf(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xf(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=XS)return e;let o={...e};return delete o[t],Ee(o[n])===0&&(o[n]=s),o.estimated=!0,o}async function ZS(e){let t=ko(e);if(!t)return[];let n=gt(t);await nm(jr(n),{recursive:!0}).catch(()=>{});let r=await am(t),s=[...await cm(t),...await sE(r)];return await Promise.all(r.map(o=>sm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function vc(e,t){let n=ko(e);if(!n)return;let r=gt(n);await nm(jr(r),{recursive:!0}).catch(()=>{}),await rE(n);for(let s of await eE(n))await Qf(n,s,t);for(let s of await cm(n))await om(n,s,t,!0);for(let s of await am(n))await Qf(n,s,t)}async function eE(e){let t=[gt(e),So(e)],n=jr(t[0]);return(await zS(n).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Rc(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Rc(c)}.`));if(!o)return!1;let i=`${Rc(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&tE(a))}).sort().map(s=>Un(n,s))}function tE(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Qf(e,t,n){try{let r=await im(t);for(let s of um(r))await om(e,s,n,!1)}finally{await sm(t,{force:!0})}}async function om(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Zf(e,{correction_id:kc(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Zf(e,{correction_id:kc(),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 im(e){let t="";for(let n=0;n<5;n++){let r=await rm(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Wn(e){try{let t=JSON.parse(e);return!Hn(t)||t.collection!==fe&&t.collection!==te&&t.collection!==Se&&t.collection!==Qe?null:t}catch{return null}}function nE(e){return kt().push(aE(e))}function Zf(e,t){try{let n=ko(e);if(!n)return;let r=xc(n);tm(jr(r),{recursive:!0});let s=kt();em(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 am(e){let t=[gt(e),So(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await YS(r,s),await Sc(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return n}async function rE(e){await Promise.all([Sc(gt(e),"",{flag:"a"}),Sc(So(e),"",{flag:"a"})]).catch(()=>{})}async function sE(e){let t=[];for(let n of e)t.push(...um(await im(n)));return t}async function cm(e){let t=await rm(xc(e),"utf8").catch(()=>""),n=new Map;for(let r of oE(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:Wn(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function um(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=Wn(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 Rt(`${n}
67
67
  ${s}
68
- `))Ec(o)&&aE(o)&&t.push({spool_id:o.spool_id,event:lm(o)})}catch{s.startsWith("{")&&t.push({spool_id:Ro(s),raw_line:s})}}}return t}function sE(e){return oE(e).map(cE).filter(t=>t!==null)}function oE(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let o=JSON.parse(s);Ec(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let o of Jt(`${n}
68
+ `))Ec(o)&&cE(o)&&t.push({spool_id:o.spool_id,event:lm(o)})}catch{s.startsWith("{")&&t.push({spool_id:Ro(s),raw_line:s})}}}return t}function oE(e){return iE(e).map(uE).filter(t=>t!==null)}function iE(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let o=JSON.parse(s);Ec(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let o of Rt(`${n}
69
69
  ${s}
70
- `))Ec(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${JS("sha256").update(e).digest("hex").slice(0,24)}`}function iE(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 lm(e){let{spool_id:t,...n}=e;return Wn(JSON.stringify(n))}function aE(e){return typeof e.spool_id=="string"&&lm(e)!==null}function cE(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 Ec(e){return Hn(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var YS,dm=g(()=>{"use strict";Re();N();_o();_c();YS=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(uE)}function uE(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 Ur=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 Oc}from"node:crypto";import{existsSync as lE}from"node:fs";import{mkdir as dE,readFile as fE,readdir as fm,rename as pE,writeFile as mE}from"node:fs/promises";import{homedir as gE}from"node:os";import{basename as hE,dirname as yE,join as Wr}from"node:path";import{fileURLToPath as bE}from"node:url";import{gunzipSync as wE,gzipSync as _E}from"node:zlib";function Vr(e,t){return`el:${Oc("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 vt(e){return`record:${e.slice(3)}`}function sn(e){return`expired:${e.slice(3)}`}function To(){return"index:v1"}function RE(e){return`blob:${e}`}function pm(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 mm(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function Ac(e){let t=EE(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=mm(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 Pc(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:kE(o),storage_class:mm(s),recover:`rsp show ${s.handle}`}})}function kE(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 Ic(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 Lc(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:SE(n),original_bytes:e.length}:null}function SE(e){let t=Cc(e,["rev-parse","HEAD"])||"unborn",n=Cc(e,["write-tree"])||"no-index",r=Cc(e,["status","--porcelain=v1","-z"])||"";return Oc("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Cc(e,t){let n=Jr("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function $c(e,t){let n=Eo(t);if(!Oo(n))return null;let r=bm(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 Oc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Dc(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 Nc(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 Mc(e,t,n){let r=_E(e);return{key:RE(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function gm(e){try{let t=wE(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function hm(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 ym(e){if(!Oo(e.argv))return null;let t=bm(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
71
- `,"utf8"),t]):null}function bm(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 EE(){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 wm(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 _m(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 Rm(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 fm(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Wr(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 km(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=vE(e.derivation_recipe),r=CE(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||Fc(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"&&xE(e.loss)&&(e.storage_class===void 0||Lo(e.storage_class))}function Bc(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)&&Fc(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 xE(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 vE(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 CE(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"&&Fc(e.content_hash)}function Fc(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 Sm(e){try{let r=(await fE(e,"utf8")).trim();if(r==="")return vo();let s;try{s=JSON.parse(r)}catch{s=L(r)}if(TE(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 Em(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function xm(e){return hE(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?Wr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Wr(gE(),".cache","red-skills","bundles")),t=Wr(e,"reddb"),n;try{n=await fm(t)}catch{return}n.sort().reverse();for(let r of n){let s=Wr(t,r,process.platform==="win32"?"red.exe":"red");if(lE(s)){process.env.REDDB_BIN=s;return}}}async function Jn(e,t){await dE(yE(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await mE(n,`${C(Tc(t))}
72
- `,"utf8"),await pE(n,e)}function Tc(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=>Tc(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Tc(r));return t}return String(e)}function vo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function TE(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)&&Bc(e.index)}function vm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return bE(e)}var Do=g(()=>{"use strict";N();Ur();xo()});async function Cm(e,t){return OE?IE(e,t):AE?$E(e,t):PE(e,t)}async function PE(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 IE(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:LE(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*LE(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 $E(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:DE(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*DE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var OE,AE,Tm=g(()=>{OE=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",AE=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as NE}from"node:fs";import{join as ME}from"node:path";function Om(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=ME(n,"bin",t);if(NE(o))return o;throw new Error(`reddb: binary "${t}" not found.
70
+ `))Ec(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${VS("sha256").update(e).digest("hex").slice(0,24)}`}function aE(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 lm(e){let{spool_id:t,...n}=e;return Wn(JSON.stringify(n))}function cE(e){return typeof e.spool_id=="string"&&lm(e)!==null}function uE(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 Ec(e){return Hn(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var XS,dm=g(()=>{"use strict";Re();D();_o();_c();XS=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(lE)}function lE(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 Ur=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 Oc}from"node:crypto";import{existsSync as dE}from"node:fs";import{mkdir as pE,readFile as fE,readdir as pm,rename as mE,writeFile as gE}from"node:fs/promises";import{homedir as hE}from"node:os";import{basename as yE,dirname as bE,join as Wr}from"node:path";import{fileURLToPath as wE}from"node:url";import{gunzipSync as _E,gzipSync as RE}from"node:zlib";function Vr(e,t){return`el:${Oc("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 Tt(e){return`record:${e.slice(3)}`}function sn(e){return`expired:${e.slice(3)}`}function To(){return"index:v1"}function kE(e){return`blob:${e}`}function fm(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 mm(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function Ac(e){let t=xE(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=mm(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 Pc(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:SE(o),storage_class:mm(s),recover:`rsp show ${s.handle}`}})}function SE(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 Ic(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 Lc(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:EE(n),original_bytes:e.length}:null}function EE(e){let t=Cc(e,["rev-parse","HEAD"])||"unborn",n=Cc(e,["write-tree"])||"no-index",r=Cc(e,["status","--porcelain=v1","-z"])||"";return Oc("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Cc(e,t){let n=Jr("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function $c(e,t){let n=Eo(t);if(!Oo(n))return null;let r=bm(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 Oc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Dc(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 Nc(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 Mc(e,t,n){let r=RE(e);return{key:kE(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function gm(e){try{let t=_E(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function hm(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 ym(e){if(!Oo(e.argv))return null;let t=bm(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
71
+ `,"utf8"),t]):null}function bm(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 xE(){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 wm(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 _m(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 Rm(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 pm(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Wr(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 km(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=CE(e.derivation_recipe),r=TE(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||Fc(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"&&vE(e.loss)&&(e.storage_class===void 0||Lo(e.storage_class))}function Bc(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)&&Fc(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 vE(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 CE(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 TE(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"&&Fc(e.content_hash)}function Fc(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 Sm(e){try{let r=(await fE(e,"utf8")).trim();if(r==="")return vo();let s;try{s=JSON.parse(r)}catch{s=L(r)}if(OE(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 Em(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function xm(e){return yE(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?Wr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Wr(hE(),".cache","red-skills","bundles")),t=Wr(e,"reddb"),n;try{n=await pm(t)}catch{return}n.sort().reverse();for(let r of n){let s=Wr(t,r,process.platform==="win32"?"red.exe":"red");if(dE(s)){process.env.REDDB_BIN=s;return}}}async function Jn(e,t){await pE(bE(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await gE(n,`${C(Tc(t))}
72
+ `,"utf8"),await mE(n,e)}function Tc(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=>Tc(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Tc(r));return t}return String(e)}function vo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function OE(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)&&Bc(e.index)}function vm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return wE(e)}var Do=g(()=>{"use strict";D();Ur();xo()});async function Cm(e,t){return AE?LE(e,t):PE?DE(e,t):IE(e,t)}async function IE(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 LE(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:$E(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*$E(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 DE(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:NE(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*NE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var AE,PE,Tm=g(()=>{AE=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",PE=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as ME}from"node:fs";import{join as BE}from"node:path";function Om(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=BE(n,"bin",t);if(ME(o))return o;throw new Error(`reddb: binary "${t}" not found.
73
73
  expected at: ${o}
74
74
  override: set ${r}=/path/to/${t}
75
75
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
76
- or check the postinstall log for a download error.`)}var Am=g(()=>{});import{fileURLToPath as BE}from"node:url";import{dirname as FE,resolve as jE,join as NN}from"node:path";function UE(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Pm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Om({name:UE(),packageRoot:HE,envVar:"REDDB_BIN"})}var GE,HE,Im=g(()=>{Am();GE=FE(BE(import.meta.url)),HE=jE(GE,"..")});var WE,qE,v,No,Ct=g(()=>{WE=new TextEncoder,qE=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(WE.encode(s+`
77
- `)).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(qE.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 Gc(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:/"?JE(e):VE(e)}function JE(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=KE(s),a=n.port?Number(n.port):jc(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 VE(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):jc(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):jc(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 KE(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 jc(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 Hc=g(()=>{Ct()});function YE(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Lm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Lm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Lm(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 XE(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 zE,Xr,Uc=g(()=>{Ct();zE=new Set(["embedded"]),Xr=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&zE.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:XE(r.value)}async put(t,n,r,s={}){this._guard("put");let o=YE(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`${qc(e)}.${QE(t)}`}function qc(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 QE(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function ZE(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 $m(e){return`'${String(e).replace(/'/g,"''")}'`}var Vn,Jc=g(()=>{Ct();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($m).join(", ")}]`:"",i=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Wc(s,t)} = ${ZE(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 ${qc(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($m).join(", ")}] FROM ${qc(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(`
76
+ or check the postinstall log for a download error.`)}var Am=g(()=>{});import{fileURLToPath as FE}from"node:url";import{dirname as jE,resolve as GE,join as MN}from"node:path";function WE(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Pm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Om({name:WE(),packageRoot:UE,envVar:"REDDB_BIN"})}var HE,UE,Im=g(()=>{Am();HE=jE(FE(import.meta.url)),UE=GE(HE,"..")});var qE,JE,v,No,Ot=g(()=>{qE=new TextEncoder,JE=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(qE.encode(s+`
77
+ `)).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(JE.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 Gc(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:/"?VE(e):KE(e)}function VE(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=zE(s),a=n.port?Number(n.port):jc(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 KE(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):jc(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):jc(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 zE(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 jc(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 Hc=g(()=>{Ot()});function XE(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Lm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Lm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Lm(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 QE(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 YE,Xr,Uc=g(()=>{Ot();YE=new Set(["embedded"]),Xr=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&YE.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:QE(r.value)}async put(t,n,r,s={}){this._guard("put");let o=XE(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`${qc(e)}.${ZE(t)}`}function qc(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 ZE(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function ex(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 $m(e){return`'${String(e).replace(/'/g,"''")}'`}var Vn,Jc=g(()=>{Ot();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($m).join(", ")}]`:"",i=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Wc(s,t)} = ${ex(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 ${qc(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($m).join(", ")}] FROM ${qc(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(`
78
78
 
79
79
  `)){let l=u.split(`
80
- `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function ex(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?Kc(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 Kc(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 tx(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function nx(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 ${tx(e.priority)}`),e.key!=null&&(t+=` KEY ${zc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${zc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function rx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?zc(e):JSON.stringify(e)}function zc(e){return`'${String(e).replace(/'/g,"''")}'`}function Vc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Qr,Yc=g(()=>{Ct();Qr=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=nx(r);return this.client.call("query",{sql:`QUEUE PUSH ${bt(t)} ${rx(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${bt(t)}${Kc(n)}`});return Vc(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${bt(t)}${Kc(n)}`});return Vc(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=ex(t,n,r),o=await this.client.call("query",{sql:s});return Vc(o)}}});function Dm(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function sx(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(Nm).join(".")}function Nm(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 ox(e){return Mm(JSON.stringify(e))}function ix(e){return JSON.stringify(e)}function ax(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ox(e):Mm(e)}function Mm(e){return`'${String(e).replace(/'/g,"''")}'`}var Zr,Xc=g(()=>{Ct();Zr=class{constructor(t){this.db=t}async insert(t,n){Dm(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Mo(t)} DOCUMENT VALUES (${ix(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=sx(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){Dm(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])=>`${Nm(c)} = ${ax(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 cx(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Tt(n)}.${Tt(r)})`}return lx(e)}function ux(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 Tt(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 lx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Bm(e)}function Bm(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={}){ux(r,"config");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Bm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Tt(s)} ${Tt(t)} = ${cx(n,r)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Tt(r)} ${Tt(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Tt(r)} ${Tt(t)}`})}}});function dx(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 fx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Fm(e)}function Fm(e){return`'${String(e).replace(/'/g,"''")}'`}var ts,Zc=g(()=>{ts=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){dx(r,"vault");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Fm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Kn(s)}.${Kn(t)} = ${fx(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 Gm(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(px)}async function Hm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gx(t)}`)).rows??[]).some(r=>r.name===String(t))}function px(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function jm(e){return String(e).split(".").map(mx).join(".")}function mx(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 gx(e){return`'${String(e).replace(/'/g,"''")}'`}var ns,eu=g(()=>{Ct();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(jm).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${jm(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=Gc(e);if(xx(n),n.kind==="embedded"){let r=Ex(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=Sx(n),o=t.binary??Pm(),i=await Cm(o,s),a=new No(i);return await a.call("version",{}),new nu(a,{transport:"embedded"})}}function Wm(e){return bx(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:_x(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&kx(e)?{$uuid:e}:e}function bx(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 wx(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Wm):e.map(Wm)}function _x(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 Rx(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 kx(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 Rx(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 Sx(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ex(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 xx(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",hx)}function ru(){return new v(Um,`${Um}: nested transactions are not supported on one connection`)}function Jm(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vx(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qm} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Cx(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 >= ${qm} 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 hx,yx,qm,Um,Fo,tu,nu,Vm=g(()=>{Tm();Im();Ct();Hc();Uc();Jc();Yc();Xc();Qc();Zc();eu();Uc();Jc();Yc();Xc();Qc();Zc();eu();Hc();hx="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yx="1.0",qm="1.0.9",Um="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 ru()}},tu=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ru();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}}},nu=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=yx,this.cache=new Xr(t,this.transport),this.queue=new Qr(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=wx(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 vx(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 Cx(r,n.length)}tx(){return new tu(this)}async transaction(t){if(this.inTransaction)throw ru();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 Hm(this,t)}list(){return Gm(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 Tx}from"node:crypto";import{existsSync as Km}from"node:fs";import{mkdir as Ox,readFile as Ax,rename as su,rm as rs,stat as ou}from"node:fs/promises";import{basename as Px,dirname as Ix}from"node:path";async function zm(e){await(await an.open({...e,allowResidentOpen:!0})).close()}var an,Ym=g(()=>{"use strict";Vm();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=vm(t.uri),r=await Em(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 xm(r)?(await $o(),await Ox(Ix(r),{recursive:!0}),s.db=await jo(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Sm(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=vt(i),c=yt(n.command),u=c==="derivable"?Lc(r,n.command):null,l=c==="re-executable"?$c(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ic(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Mc(r,m,o):null,b=Dc(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[vt(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:vt(r.handle),bytes:Nc(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:Ac(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Pc(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 hm(t.derivation_recipe);if(t.reexecution_recipe)return ym(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)?gm(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 ou(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)}
81
- `,"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=vt(i),c=yt(n.command),u=c==="derivable"?Lc(r,n.command):null,l=c==="re-executable"?$c(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ic(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Mc(r,m,o):null,b=Dc(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(vt(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:vt(r.handle),bytes:Nc(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:Ac(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return Pc(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=wm(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=_m(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 Rm(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let i=(await Ax(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Px(s),c=Tx("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=>km(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(`
82
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(To());return Bc(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 ou(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 ${pm(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 ou(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 su(this.path,i),await su(o,this.path),await rs(i,{force:!0})}catch(u){throw!Km(this.path)&&Km(i)&&await su(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(vt(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 Xm={};B(Xm,{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:()=>zm,storageClassForCommand:()=>yt});var Go=g(()=>{"use strict";xo();Do();Do();Ym()});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 eg(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),st=Ee(E.emitted_bytes),Bt=Math.max(0,I-st),yn=Xn(E,"raw"),S=Xn(E,"emitted"),O=Math.max(0,yn.tokens-S.tokens);p||=(E.estimated===!0||yn.estimated||S.estimated)&&O>0,f+=I,d+=st,m+=O;let Ft=cn(E).slice(0,10);Ft&&b.set(Ft,(b.get(Ft)??0)+O);let jt=A(E.command)||"unknown",Oe=_.get(jt)??{command:jt,invocations:0,bytes_saved:0,tokens_saved:0};Oe.invocations++,Oe.bytes_saved+=Bt,Oe.tokens_saved+=O,_.set(jt,Oe);let Ae=Et(E.wrapper_ms);Ae!=null&&h.push(Ae),y+=Ee(E.store_open_count);let bn=Et(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",st=A(E.wrapper_family)||xe(A(E.command));T.set(I,(T.get(I)??0)+1),M.set(st,(M.get(st)??0)+1);let Bt=cn(E);Te.push({timestamp:Bt,family:st,command:A(E.command)||"unknown",reason:I,exit_code:Et(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!we||Bt>we.timestamp)&&(we={timestamp:Bt,reason:I,command:A(E.command)||"unknown"})}let de=a.length+u.length,wt=c.filter(E=>E.hit===!0).length,fe=ja(m,p),cr=Lx(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 Lx(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 iu(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:Hx(s)}}async function au(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 eg(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)/Xx()))),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),Ft=O.slice(0,10),jt=O.slice(0,16),Oe=xe(A(S.command)),Ae=Math.max(0,Xn(S,"raw").tokens-Xn(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=Et(S.wrapper_ms);if($i!=null){b.push($i);let Ll=_.get(Oe)??[];Ll.push($i),_.set(Oe,Ll)}Ft&&h.set(Ft,(h.get(Ft)??0)+1),jt&&y.set(jt,(y.get(jt)??0)+1);let Di=Jx(O);Di&&w.set(Di,(w.get(Di)??0)+1);let Ni=zx(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=Mx(cr),st=Nx(l),Bt=Fx([...T.values()],st,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:Zm(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,...Zm(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:Vx(w)},savings:{tokens:ja(M,Te),measured_control_holdout:$x(c,u),weekly_tokens_saved:Yx(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:st,degradation_clusters:I,threshold_tuning_suggestions:Bt}}}async function eg(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,Qe)).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 Xn(e,t){let n=Et(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 $x(e,t){let n=Gx(t.map(a=>Et(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(Qm).filter(a=>a!=null),s=t.map(Qm).filter(a=>a!=null),o=r.length>0?r:s,i=o.length===0?null:ne(jx(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:Dx(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qm(e){let t=Xn(e,"raw").tokens;if(t<=0)return null;let n=Xn(e,"emitted").tokens;return Math.max(0,t-n)/t}function Dx(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 Nx(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 Mx(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:Bx(n)}))}function Bx(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 Fx(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 jx(e){return e.reduce((t,n)=>t+n,0)/e.length}function Gx(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function Hx(e){let t=Wx();for(let n of e){if(A(n.event_type)==="show"||A(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Ux(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 Ux(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Wx(){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=>qx(r.value)).filter(r=>Hn(r))}function qx(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 Zm(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 Jx(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Kx(t.getUTCDay())}:${t.getUTCHours()}`:null}function Vx(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 Kx(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function zx(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 Yx(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 Xx(){return 24*60*60*1e3}var tg=g(()=>{"use strict";Ur();Go();Ga();_o();_c()});var os={};B(os,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>pe,RSP_DECISIONS_COLLECTION:()=>te,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Qe,RSP_TELEMETRY_INDEX_COLLECTION:()=>Fr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>bc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>wc,RSP_TELEMETRY_SPOOL_FILE:()=>yc,appendTelemetryEvent:()=>ht,appendTelemetryEventSync:()=>xt,drainTelemetrySpool:()=>vc,parseTelemetryEvent:()=>Wn,readAccountingLaneStats:()=>iu,readTelemetryGainsReport:()=>au,readTelemetryStats:()=>Ho,takeTelemetrySpool:()=>QS,telemetryLegacySpoolPath:()=>So,telemetrySpoolCorrectionsPath:()=>xc,telemetrySpoolPath:()=>gt});var Ge=g(()=>{"use strict";_o();dm();tg()});var rg={};B(rg,{readGhConditionalJson:()=>me,readGhEtagCache:()=>mo,sweepGhEtagCache:()=>pc});import{spawn as Qx}from"node:child_process";import{createHash as Zx,randomUUID as ev}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=tv(e.path,e.params),i=nv(o),c=wa(n,"gh-api-json")?void 0:await lc(n,i),u=["api","--include","--method","GET",e.path];for(let[p,b]of ng(e.params))u.push("-f",`${p}=${String(b)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await rv(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=sv(l.stdout);if(d.statusCode===304&&!!c)return f(Buffer.byteLength(c.body)),await cu(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 dc(n,{key:i,request:o,etag:p,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),f(0),await cu(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 cu(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function ng(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function tv(e,t){return JSON.stringify({method:"GET",path:e,params:ng(t)})}function nv(e){return Zx("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function rv(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=Qx("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 sv(e){let t=e.replace(/\r\n/g,`
80
+ `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function tx(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?Kc(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 Kc(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 nx(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function rx(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 ${nx(e.priority)}`),e.key!=null&&(t+=` KEY ${zc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${zc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function sx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?zc(e):JSON.stringify(e)}function zc(e){return`'${String(e).replace(/'/g,"''")}'`}function Vc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Qr,Yc=g(()=>{Ot();Qr=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=rx(r);return this.client.call("query",{sql:`QUEUE PUSH ${bt(t)} ${sx(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${bt(t)}${Kc(n)}`});return Vc(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${bt(t)}${Kc(n)}`});return Vc(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=tx(t,n,r),o=await this.client.call("query",{sql:s});return Vc(o)}}});function Dm(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function ox(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(Nm).join(".")}function Nm(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 ix(e){return Mm(JSON.stringify(e))}function ax(e){return JSON.stringify(e)}function cx(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ix(e):Mm(e)}function Mm(e){return`'${String(e).replace(/'/g,"''")}'`}var Zr,Xc=g(()=>{Ot();Zr=class{constructor(t){this.db=t}async insert(t,n){Dm(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Mo(t)} DOCUMENT VALUES (${ax(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=ox(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){Dm(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])=>`${Nm(c)} = ${cx(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 ux(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${At(n)}.${At(r)})`}return dx(e)}function lx(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 At(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 dx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Bm(e)}function Bm(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={}){lx(r,"config");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Bm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${At(s)} ${At(t)} = ${ux(n,r)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${At(r)} ${At(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${At(r)} ${At(t)}`})}}});function px(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 fx(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Fm(e)}function Fm(e){return`'${String(e).replace(/'/g,"''")}'`}var ts,Zc=g(()=>{ts=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){px(r,"vault");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Fm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Kn(s)}.${Kn(t)} = ${fx(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 Gm(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(mx)}async function Hm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${hx(t)}`)).rows??[]).some(r=>r.name===String(t))}function mx(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function jm(e){return String(e).split(".").map(gx).join(".")}function gx(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 hx(e){return`'${String(e).replace(/'/g,"''")}'`}var ns,eu=g(()=>{Ot();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(jm).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${jm(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=Gc(e);if(vx(n),n.kind==="embedded"){let r=xx(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=Ex(n),o=t.binary??Pm(),i=await Cm(o,s),a=new No(i);return await a.call("version",{}),new nu(a,{transport:"embedded"})}}function Wm(e){return wx(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:Rx(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Sx(e)?{$uuid:e}:e}function wx(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 _x(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Wm):e.map(Wm)}function Rx(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 kx(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 Sx(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 kx(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 Ex(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function xx(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 vx(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",yx)}function ru(){return new v(Um,`${Um}: nested transactions are not supported on one connection`)}function Jm(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Cx(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qm} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Tx(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 >= ${qm} 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 yx,bx,qm,Um,Fo,tu,nu,Vm=g(()=>{Tm();Im();Ot();Hc();Uc();Jc();Yc();Xc();Qc();Zc();eu();Uc();Jc();Yc();Xc();Qc();Zc();eu();Hc();yx="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",bx="1.0",qm="1.0.9",Um="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 ru()}},tu=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ru();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}}},nu=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=bx,this.cache=new Xr(t,this.transport),this.queue=new Qr(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=_x(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 Cx(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 Tx(r,n.length)}tx(){return new tu(this)}async transaction(t){if(this.inTransaction)throw ru();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 Hm(this,t)}list(){return Gm(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 Ox}from"node:crypto";import{existsSync as Km}from"node:fs";import{mkdir as Ax,readFile as Px,rename as su,rm as rs,stat as ou}from"node:fs/promises";import{basename as Ix,dirname as Lx}from"node:path";async function zm(e){await(await an.open({...e,allowResidentOpen:!0})).close()}var an,Ym=g(()=>{"use strict";Vm();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=vm(t.uri),r=await Em(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 xm(r)?(await $o(),await Ax(Lx(r),{recursive:!0}),s.db=await jo(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Sm(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=Tt(i),c=yt(n.command),u=c==="derivable"?Lc(r,n.command):null,l=c==="re-executable"?$c(r,n.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ic(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),f=p==="ephemeral"?Mc(r,m,o):null,b=Dc(r,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,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:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.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:p,blob_key:f?.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[Tt(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:Tt(r.handle),bytes:Nc(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:Ac(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Pc(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 hm(t.derivation_recipe);if(t.reexecution_recipe)return ym(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)?gm(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 ou(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)}
81
+ `,"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=Tt(i),c=yt(n.command),u=c==="derivable"?Lc(r,n.command):null,l=c==="re-executable"?$c(r,n.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ic(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),f=p==="ephemeral"?Mc(r,m,o):null,b=Dc(r,u,l,f);f&&!Po(await this.kvGet(f.key))&&await this.kv().put(f.key,f);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:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.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:p,blob_key:f?.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(Tt(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:Tt(r.handle),bytes:Nc(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:Ac(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return Pc(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=wm(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=_m(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 Rm(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let i=(await Px(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Ix(s),c=Ox("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),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=>km(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(`
82
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(To());return Bc(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 ou(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 ${fm(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 ou(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 su(this.path,i),await su(o,this.path),await rs(i,{force:!0})}catch(u){throw!Km(this.path)&&Km(i)&&await su(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(Tt(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 Xm={};B(Xm,{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:()=>zm,storageClassForCommand:()=>yt});var Go=g(()=>{"use strict";xo();Do();Do();Ym()});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 eg(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,p=0,d=0,m=0,f=!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),st=Ee(E.emitted_bytes),jt=Math.max(0,I-st),yn=Xn(E,"raw"),S=Xn(E,"emitted"),O=Math.max(0,yn.tokens-S.tokens);f||=(E.estimated===!0||yn.estimated||S.estimated)&&O>0,p+=I,d+=st,m+=O;let Gt=cn(E).slice(0,10);Gt&&b.set(Gt,(b.get(Gt)??0)+O);let Ht=A(E.command)||"unknown",Oe=_.get(Ht)??{command:Ht,invocations:0,bytes_saved:0,tokens_saved:0};Oe.invocations++,Oe.bytes_saved+=jt,Oe.tokens_saved+=O,_.set(Ht,Oe);let Ae=vt(E.wrapper_ms);Ae!=null&&h.push(Ae),y+=Ee(E.store_open_count);let bn=vt(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",st=A(E.wrapper_family)||xe(A(E.command));T.set(I,(T.get(I)??0)+1),M.set(st,(M.get(st)??0)+1);let jt=cn(E);Te.push({timestamp:jt,family:st,command:A(E.command)||"unknown",reason:I,exit_code:vt(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!we||jt>we.timestamp)&&(we={timestamp:jt,reason:I,command:A(E.command)||"unknown"})}let de=a.length+u.length,wt=c.filter(E=>E.hit===!0).length,pe=ja(m,f),cr=$x(i);return{window_days:r,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:m,tokens_saved_estimated:pe.tokens_saved_estimated,token_estimate_range_pct:pe.token_estimate_range_pct,tokens_saved_low:pe.tokens_saved_low,tokens_saved_high:pe.tokens_saved_high,dollars_saved_estimate_usd:pe.dollars_saved_estimate_usd,dollars_saved_low_usd:pe.dollars_saved_low_usd,dollars_saved_high_usd:pe.dollars_saved_high_usd,pricing_model_family:pe.pricing_model_family,pricing_input_usd_per_million_tokens:pe.pricing_input_usd_per_million_tokens,pricing_note:pe.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 $x(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 p=A(a.reason)||"unknown";o.set(p,(o.get(p)??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 iu(e,t,n=new Date){let s=(await ss(e,fe)).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:Ux(s)}}async function au(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 eg(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"),p=a.filter(S=>A(S.degradation_reason)!==""),d=[...c,...p].map(Yn).filter(S=>Number.isFinite(S)&&S>0),m=d.length===0?null:Math.min(...d),f=m==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-m)/Qx()))),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,pe=0;for(let S of c){let O=cn(S),Gt=O.slice(0,10),Ht=O.slice(0,16),Oe=xe(A(S.command)),Ae=Math.max(0,Xn(S,"raw").tokens-Xn(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=vt(S.wrapper_ms);if($i!=null){b.push($i);let Ll=_.get(Oe)??[];Ll.push($i),_.set(Oe,Ll)}Gt&&h.set(Gt,(h.get(Gt)??0)+1),Ht&&y.set(Ht,(y.get(Ht)??0)+1);let Di=Vx(O);Di&&w.set(Di,(w.get(Di)??0)+1);let Ni=Yx(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&&pe++),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=p.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=Bx(cr),st=Mx(l),jt=jx([...T.values()],st,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:f,since:o,until:s,label:`window: ${r}d, data: ${f}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:Zm(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,...Zm(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:Kx(w)},savings:{tokens:ja(M,Te),measured_control_holdout:Dx(c,u),weekly_tokens_saved:Xx(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:pe,warm_hits:wt===0?null:Math.max(0,wt-pe)},mining:{recovery_usage_by_family:st,degradation_clusters:I,threshold_tuning_suggestions:jt}}}async function eg(e,t){let n=(await ss(e,fe)).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,Qe)).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 Xn(e,t){let n=vt(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 Dx(e,t){let n=Hx(t.map(a=>vt(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(Qm).filter(a=>a!=null),s=t.map(Qm).filter(a=>a!=null),o=r.length>0?r:s,i=o.length===0?null:ne(Gx(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:Nx(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qm(e){let t=Xn(e,"raw").tokens;if(t<=0)return null;let n=Xn(e,"emitted").tokens;return Math.max(0,t-n)/t}function Nx(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 Mx(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 Bx(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:Fx(n)}))}function Fx(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 jx(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 Gx(e){return e.reduce((t,n)=>t+n,0)/e.length}function Hx(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function Ux(e){let t=qx();for(let n of e){if(A(n.event_type)==="show"||A(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Wx(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 Wx(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function qx(){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=>Jx(r.value)).filter(r=>Hn(r))}function Jx(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 Zm(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 Vx(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${zx(t.getUTCDay())}:${t.getUTCHours()}`:null}function Kx(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 zx(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Yx(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 Xx(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 Qx(){return 24*60*60*1e3}var tg=g(()=>{"use strict";Ur();Go();Ga();_o();_c()});var os={};B(os,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>fe,RSP_DECISIONS_COLLECTION:()=>te,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Qe,RSP_TELEMETRY_INDEX_COLLECTION:()=>Fr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>bc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>wc,RSP_TELEMETRY_SPOOL_FILE:()=>yc,appendTelemetryEvent:()=>ht,appendTelemetryEventSync:()=>Ct,drainTelemetrySpool:()=>vc,parseTelemetryEvent:()=>Wn,readAccountingLaneStats:()=>iu,readTelemetryGainsReport:()=>au,readTelemetryStats:()=>Ho,takeTelemetrySpool:()=>ZS,telemetryLegacySpoolPath:()=>So,telemetrySpoolCorrectionsPath:()=>xc,telemetrySpoolPath:()=>gt});var Ge=g(()=>{"use strict";_o();dm();tg()});var rg={};B(rg,{readGhConditionalJson:()=>me,readGhEtagCache:()=>mo,sweepGhEtagCache:()=>fc});import{spawn as Zx}from"node:child_process";import{createHash as ev,randomUUID as tv}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=nv(e.path,e.params),i=rv(o),c=wa(n,"gh-api-json")?void 0:await lc(n,i),u=["api","--include","--method","GET",e.path];for(let[f,b]of ng(e.params))u.push("-f",`${f}=${String(b)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await sv(u,t,e.env,e.signal),p=f=>{let b=Sr();Rr(n,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-r)/1e6,childMs:b.childMs,selfStateBytesRead:b.selfStateBytesRead,bytesSaved:f},s)},d=ov(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await cu(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 f=d.headers.get("etag");return f&&await dc(n,{key:i,request:o,etag:f,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await cu(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:f??void 0,quotaFree:!1}}return p(0),await cu(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function ng(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function nv(e,t){return JSON.stringify({method:"GET",path:e,params:ng(t)})}function rv(e){return ev("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function sv(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=Zx("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=[],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 ov(e){let t=e.replace(/\r\n/g,`
83
83
  `),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(`
84
84
 
85
85
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
86
- `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function cu(e,t,n){await ht(e,{collection:te,id:ev(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}var Uo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as ov}from"node:child_process";async function is(e,t){return await iv(t,async n=>{let r=await cv(e,t.cwd,n);return r||await av(e,t.cwd,n)})}async function iv(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let n=new AbortController,r=setTimeout(()=>n.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,n.signal]);try{let o=await t(s);return n.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(r)}}async function av(e,t,n){return n.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(r=>{let s=!1,o=l=>{s||(s=!0,n.removeEventListener("abort",a),r(l))},i=ov("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&no(l).then(f=>to(f,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function cv(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await uv(e[2],t,n);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await me({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Bn(s,"database_id")||Bn(s,"id"),status:ee(s,"status").toUpperCase(),conclusion:ee(s,"conclusion").toUpperCase(),workflowName:ee(s,"workflow_name")||ee(s,"name"),headBranch:ee(s,"head_branch"),url:ee(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=ao(e,"--branch"),s=ao(e,"--limit")??"20",o=await me({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:s},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=tn(Ye(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Bn(a,"database_id")||Bn(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=ao(e,"--limit")??"20",s=await me({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=tn(JSON.parse(s.stdout)).map(i=>({tagName:ee(i,"tag_name"),publishedAt:ee(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function uv(e,t,n){let r=await me({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:n,command:`gh pr view ${e}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Ye(s.head),"sha"),[i,a]=o?await Promise.all([me({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:n,command:`gh pr view ${e} status`}),me({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:n,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?tn(Ye(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Ye(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,a.stderr].filter(Boolean).join(`
87
- `),stdout:JSON.stringify({number:Bn(s,"number"),state:ee(s,"state").toUpperCase(),mergeable:lv(s),statusCheckRollup:[...c.map(l=>({conclusion:ee(l,"state").toUpperCase()})),...u.map(l=>({status:ee(l,"status").toUpperCase(),conclusion:ee(l,"conclusion").toUpperCase()}))],url:ee(s,"html_url")})}}function lv(e){let t=ee(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var sg=g(()=>{"use strict";Uo();co();pt()});function ig(e,t,n){let r=Date.now();return()=>dv(e,t,n,r)}async function dv(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return Z("missing PR number");let s=await is(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Z(s.stderr||"gh pr view failed");let o=ic(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(fv),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(o.state)!=="OPEN")return ft("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return ft("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return ft("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return In(`PR #${e} has ${l} pending checks`);if(i.length===0){let f=Date.now()-r;return a==="UNKNOWN"||a==="BLOCKED"||f<n.emptyChecksGraceMs?In(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:f}):ft("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?In(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):ft("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function ag(e,t){if(!e)return Z("missing run id");let n=await is(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return Z(n.stderr||"gh run view failed");let r=ic(n.stdout),s=String(r.status??"").toLowerCase(),o=String(r.conclusion??"").toLowerCase();return s!=="completed"?In(`run ${e} is ${s||"pending"}`):o==="success"?ft("success",`run ${e} succeeded`,og(r)):ft("failure",`run ${e} concluded ${o||"unknown"}`,og(r))}async function cg(e,t){let n=await is(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return Mn(s)&&s.databaseId!=null?String(s.databaseId):""}async function ug(e,t,n){let r=await is(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return Z(r.stderr||"gh release list failed");let o=tn(JSON.parse(r.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||pv(e,a))&&c>=t});return o?ft("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):In("no matching release is published yet")}function fv(e){let t=Mn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function og(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function pv(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var lg=g(()=>{"use strict";Zt();sg();co()});function as(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
88
- `)}var uu=g(()=>{"use strict"});var dg=g(()=>{"use strict";N()});var fg=g(()=>{"use strict"});function mv(e){return Object.keys(e)}function Qn(e){return{...e,fields:mv(e.fields)}}var pg,mg,gg,gv,hv,yv,hg,lu=g(()=>{"use strict";pg="red.castle.lane.v1",mg="red.castle.state.v1",gg="red.castle.history.v1",gv="red.castle.validation.v2",hv="red.castle.envelope.v1",yv="red.castle.hitl-card.v1",hg=[Qn({schemaId:pg,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Qn({schemaId:mg,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Qn({schemaId:gg,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Qn({schemaId:gv,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Qn({schemaId:hv,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Qn({schemaId:yv,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var lB,Wo=g(()=>{"use strict";N();lu();lB=new Map(hg.map(e=>[e.schemaId,new Set(e.fields)]))});var yg=g(()=>{"use strict";fg();Wo()});var bg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var du=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as _v,mkdir as Rv,readFile as kv}from"node:fs/promises";import{dirname as Sv,join as Ev}from"node:path";function fu(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function wg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:fu(t.at,"at"),singleton:fu(t.singleton,"singleton"),kind:fu(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function xv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function vv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function Cv(e){return Ev(e.castleStateRoot,"singleton-events.toonl")}function pu(e,t={}){let n=t.fs??{appendFile:_v,mkdir:Rv,readFile:kv},r=t.clock??(()=>new Date().toISOString()),s=Cv(e);return{path:s,async append(o){let i=wg({at:o.at??r(),...o});return await n.mkdir(Sv(s),{recursive:!0}),await n.appendFile(s,Vt().push(xv(i)),"utf8"),i},async read(o={}){vv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Jt(i).map(wg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var mu=g(()=>{"use strict";N()});var Vo=g(()=>{"use strict";N();Jo();mu()});var _g=g(()=>{"use strict";qo();du();Vo()});var Rg=g(()=>{"use strict"});var KB,kg=g(()=>{"use strict";N();KB=24*60*60*1e3});var Sg=g(()=>{"use strict";Wo()});var QB,ZB,Eg=g(()=>{"use strict";QB=15*6e4,ZB=30*6e4});var xg=g(()=>{"use strict"});var Ov,Av,n1,r1,vg=g(()=>{"use strict";Ov=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],Av={pre_worktree:["cargo","gradle"]},n1=Object.values(Av).flat(),r1=new Set(Ov)});var Cg=g(()=>{"use strict"});var Tg=g(()=>{"use strict";Vo()});var Og=g(()=>{"use strict"});var Ag=g(()=>{"use strict"});var Pg=g(()=>{"use strict"});var gu=g(()=>{"use strict"});var Ig=g(()=>{"use strict";N();gu()});var Lg=g(()=>{"use strict";N()});var hu=g(()=>{"use strict"});var yu=g(()=>{"use strict"});import{resolve as re}from"node:path";function $g(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,Pv),workersRoot:i,worker:u=>re(i,u),workerSteerFile:u=>re(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>re(a,u),worktreesRoot:c,worktreeLane:u=>re(c,u)}}var Pv,Dg=g(()=>{"use strict";Pv="default"});var Ng=g(()=>{"use strict";Jo()});var Mg=g(()=>{"use strict"});var Bg=g(()=>{"use strict";hu();yu()});import{mkdir as Iv,readFile as Lv,rename as $v,rm as Dv,writeFile as Nv}from"node:fs/promises";import{dirname as Mv,join as Bv}from"node:path";function jv(e){if(!Fv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Gv(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Hv(e){return e.code==="ENOENT"}function Uv(e){return e.code==="EEXIST"}function Wv(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function bu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return jv(t),Bv(e.castleStateRoot,"singletons",t,"lease.toon")}function Fg(e,t={}){let n=t.fs??{mkdir:Iv,readFile:Lv,rename:$v,rm:Dv,writeFile:Nv},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Gv;async function o(a){try{return Wv(L(await n.readFile(a,"utf8")))}catch(c){if(Hv(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await n.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await n.rename(u,a)}return{read(a){return o(Ko(e,a))},async acquire(a,c){let u=Ko(e,a);await n.mkdir(Mv(u),{recursive:!0});let l=!1;for(;;){let f=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:f,renewed_at:f};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!Uv(p))throw p}let m=await o(u);if(m){if(bu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!bu(l,c))throw new zo(a);let f={...l,renewed_at:r()};return await i(u,f),f},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!bu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,Fv,jg=g(()=>{"use strict";N();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},Fv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var wu=g(()=>{"use strict"});var Gg=g(()=>{"use strict"});var qv,Jv,Vv,G1,Hg=g(()=>{"use strict";qv={refreshCadenceS:270,tolerance:3},Jv=270,Vv=2700,G1={...qv,claimGraceS:Jv,recentCommitProtectionS:Vv}});var Ug=g(()=>{"use strict"});function Wg(e){return e==="single-object"?"rest":"graphql"}function U(e,t,n,r,s){return{key:e,kind:"read",cardinality:t,surface:s??Wg(t),budget:n,...s?{only:s}:{},why:r}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var qg,U1,Jg=g(()=>{qg=[U("issue view","single-object","rest","one issue by number; REST answers it in one request against the idle pool"),U("pr view","single-object","rest","one pull request by number, polled per Worker per iteration"),U("repo view","single-object","rest","one repository's own metadata"),U("run view","single-object","rest","one Actions run; the Actions API has no GraphQL surface either way"),U("release view","single-object","rest","one release by tag"),U("pr diff","single-object","rest","one pull request's diff, served by a REST media type"),U("issue list","multi-node","graphql","a connection of issues; one GraphQL query beats N REST pages"),U("pr list","multi-node","graphql","a connection of pull requests; one GraphQL query beats N REST pages"),U("pr checks","multi-node","graphql","every check context on one commit, which is a connection, not an object"),U("release list","multi-node","rest","Releases have no GraphQL connection gh reads; REST pages them","rest"),U("run list","multi-node","rest","the Actions API has no GraphQL surface, so a listing draws the request pool","rest"),U("label list","multi-node","graphql","a connection of labels inside one repository"),U("issue list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("pr list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("search issues","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search prs","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search repos","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("api graphql","multi-node","graphql","the caller wrote the query; `gh api graphql` is GraphQL by construction"),U("api rest","single-object","rest","any `gh api <path>` that is not `graphql` is a REST request"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],U1=new Map(qg.map(e=>[e.key,e]))});var Vg=g(()=>{});var Kg=g(()=>{});var zg=g(()=>{});var Yg=g(()=>{Jg();Vg();Kg();zg()});import{execFile as Qv}from"node:child_process";import{promisify as Zv}from"node:util";var MF,Xg=g(()=>{"use strict";Yg();wu();MF=Zv(Qv)});var Qg=g(()=>{"use strict";dg();yg();bg();qo();_g();Rg();kg();Sg();Wo();Eg();xg();vg();Cg();du();Tg();Og();Ag();Pg();Vo();Ig();Lg();lu();hu();yu();Dg();Ng();Mg();Bg();Jo();gu();mu();jg();wu();Gg();Hg();Ug();Xg()});import{EventEmitter as eC}from"node:events";import{spawn as tC}from"node:child_process";function Xo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Qo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,_u,nC,rC,sC,oC,Yo,Ru=g(()=>{cs="github-webhook",_u="github.webhook.delivery";nC="pull_request,pull_request_review,check_run,check_suite,workflow_run",rC=3,sC=1e3,oC=/no extension matched|unknown command|command not found/i,Yo=class extends eC{constructor(n,r){super();this.opts=n;this.terminate=r}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let n=this.child;this.child=void 0,n&&(this.stopping=this.terminate(n,sC).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Xo(c,r):Qo(c,r))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let n=this.opts.ghBin??"gh",r;try{r=tC(n,["webhook","forward",`--events=${nC}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
89
- `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");oC.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(n){let r;try{r=JSON.parse(n)}catch{this.emit("malformed-delivery",n);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",r)}scheduleRestart(){if(this._dead||this.restarts>=rC)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Zg=g(()=>{"use strict";Ru();Ru();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as iC}from"node:events";import{join as aC}from"node:path";function Su(e){let t=so(e.cwd),n=$g(aC(t,".red"));return new ku({...e,leases:e.leases??Fg(n),lane:e.lane??pu(n),makeForwarder:e.makeForwarder??((r,s)=>new Zo({cwd:r,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(r=>$n(r.pid,r.start_time))})}var ku,eh=g(()=>{"use strict";Qg();Zg();pt();tc();ku=class extends iC{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Xo(a,r):Qo(a,r))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===_u&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Eu={};B(Eu,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>lC});import{randomUUID as th}from"node:crypto";import{mkdir as cC,rm as uC}from"node:fs/promises";async function lC(e,t=process.cwd()){let n;try{n=await up(e)}catch(r){return await gC(e,r)}if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(as()),0;if(n.kind==="ls"){let r={schema:tp,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Za(n.kind)?await dC({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function dC(e,t){let n=e.kind,r=oc({id:th(),kind:n,target:mC(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Xa[n],status:"running",attempts:0}),s=hp(t,r.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await cC(Dn(t),{recursive:!0}),await Nn(s,r);let l=await fC(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let f=await _p({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(f.result,e.options.format)),f.exitCode}catch(l){let f=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,f,{status:"success"},new Date().toISOString());return await Mr(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Fn(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await uC(s,{force:!0}).catch(()=>{})}}async function fC(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:pp(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:ig(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await pC(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>ag(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>ug(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function pC(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await cg(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function mC(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function gC(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Za(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=oc({id:th(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Xa[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var xu=g(()=>{"use strict";lp();kp();zp();Zt();nc();lg();pt();Dr();uu();eh();Dr();uu()});import{existsSync as _C}from"node:fs";import{join as RC}from"node:path";function kC(){for(let e of(process.env.PATH??"").split(":"))if(e&&_C(RC(e,"rsp")))return!0;return!1}function us(){return kC()?["rsp"]:[process.execPath,process.argv[1]]}var vu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>ih,rewriteProxyCommandLine:()=>oh,runProxy:()=>xC});import{spawn as SC}from"node:child_process";function EC(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function xC(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=ih(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=oh(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await vC(t.telemetryRoot,n,c),await sh(n);throw c}for(let c of s)await CC(t.telemetryRoot,c);let i=await sh(r||n),a=Number(process.hrtime.bigint()-o)/1e6;return await ht(t.telemetryRoot,{collection:Se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function oh(e,t="lossless",n=us()){let r=LC(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||IC(r,a)==="|")return i.text;let c=TC(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function ih(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function vC(e,t,n){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:xe(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function CC(e,t){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function sh(e){let t=SC(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
90
- `),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function TC(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=DC(o);if(!i)return null;let a=PC(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(nn(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=OC(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(EC),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function OC(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:AC(t,n)}function AC(e,t){return e[0]==="cat"&&e.length===2&&Cu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Cu(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Cu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Cu(e){return!!e&&!e.startsWith("-")}function PC(e){let t=0;for(;t<e.length&&qn(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&qn(e[t].value);)t+=1;return t}function IC(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function LC(e){let t=[],n=0,r,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(r){i===r&&(r=void 0);continue}if(i==="'"||i==='"'){r=i;continue}let a=$C(e,o);a&&(o>n&&t.push({kind:"segment",text:e.slice(n,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,n=o+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function $C(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function DC(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Ur();vu();Ge()});function uh(e,t={}){let n=NC(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Tu(o),u=Tu(i),l=Tu(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>HC(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Ou(d.length,c)+Ou(d.tokens.length,u)+Ou(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+jC(d.tokens,r,n.length)+GC(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function NC(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(ah(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(ah(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function ah(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:MC(r),tokens:BC(r),numbers:FC(r),length:r.length}}function MC(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function BC(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function FC(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function jC(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(o=>Math.log2(n/Math.max(1,t.get(o)??n))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function GC(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Tu(e){let t=ch(e),n=ch(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Ou(e,t){return Math.abs(e-t.median)/t.mad}function ch(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function HC(e,t,n,r){return e<r&&n<t}var lh=g(()=>{"use strict"});var Au={};B(Au,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>fh,StructuredUsageError:()=>ni,cleanStatusPayload:()=>hh,recoveryInstruction:()=>He,renderGitContract:()=>ph,runGitWrapper:()=>WC});import{spawn as UC}from"node:child_process";async function WC(e,t){let n=mh(e),r=gh(n.argv),s=await KC(r,n.argv.slice(1));return ph(e,s,t)}async function ph(e,t,n){let r=mh(e);if((t.status??0)!==0||t.signal){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=gh(r.argv),o;try{o=zC(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ri)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let i=C(o);if(qC(s,i,r.full,n))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=p0(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await n.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${He(u)}
86
+ `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function cu(e,t,n){await ht(e,{collection:te,id:tv(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}var Uo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as iv}from"node:child_process";async function is(e,t){return await av(t,async n=>{let r=await uv(e,t.cwd,n);return r||await cv(e,t.cwd,n)})}async function av(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 cv(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=iv("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&no(l).then(p=>to(p,"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 uv(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await lv(e[2],t,n);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await me({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Bn(s,"database_id")||Bn(s,"id"),status:ee(s,"status").toUpperCase(),conclusion:ee(s,"conclusion").toUpperCase(),workflowName:ee(s,"workflow_name")||ee(s,"name"),headBranch:ee(s,"head_branch"),url:ee(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=ao(e,"--branch"),s=ao(e,"--limit")??"20",o=await me({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:s},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=tn(Ye(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Bn(a,"database_id")||Bn(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=ao(e,"--limit")??"20",s=await me({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=tn(JSON.parse(s.stdout)).map(i=>({tagName:ee(i,"tag_name"),publishedAt:ee(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function lv(e,t,n){let r=await me({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:n,command:`gh pr view ${e}`});if(r.status!==0)return r;let s=Ye(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Ye(s.head),"sha"),[i,a]=o?await Promise.all([me({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:n,command:`gh pr view ${e} status`}),me({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:n,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?tn(Ye(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Ye(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,a.stderr].filter(Boolean).join(`
87
+ `),stdout:JSON.stringify({number:Bn(s,"number"),state:ee(s,"state").toUpperCase(),mergeable:dv(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 dv(e){let t=ee(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var sg=g(()=>{"use strict";Uo();co();ft()});function ig(e,t,n){let r=Date.now();return()=>pv(e,t,n,r)}async function pv(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return Z("missing PR number");let s=await is(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Z(s.stderr||"gh pr view failed");let o=ic(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(fv),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return pt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return pt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return pt("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 p=Date.now()-r;return a==="UNKNOWN"||a==="BLOCKED"||p<n.emptyChecksGraceMs?In(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):pt("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}):pt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function ag(e,t){if(!e)return Z("missing run id");let n=await is(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return Z(n.stderr||"gh run view failed");let r=ic(n.stdout),s=String(r.status??"").toLowerCase(),o=String(r.conclusion??"").toLowerCase();return s!=="completed"?In(`run ${e} is ${s||"pending"}`):o==="success"?pt("success",`run ${e} succeeded`,og(r)):pt("failure",`run ${e} concluded ${o||"unknown"}`,og(r))}async function cg(e,t){let n=await is(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return Mn(s)&&s.databaseId!=null?String(s.databaseId):""}async function ug(e,t,n){let r=await is(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return Z(r.stderr||"gh release list failed");let o=tn(JSON.parse(r.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||mv(e,a))&&c>=t});return o?pt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):In("no matching release is published yet")}function fv(e){let t=Mn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function og(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function mv(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var lg=g(()=>{"use strict";Zt();sg();co()});function as(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
88
+ `)}var uu=g(()=>{"use strict"});var dg=g(()=>{"use strict";D()});var pg=g(()=>{"use strict"});function gv(e){return Object.keys(e)}function Qn(e){return{...e,fields:gv(e.fields)}}var fg,mg,gg,hv,yv,bv,hg,lu=g(()=>{"use strict";fg="red.castle.lane.v1",mg="red.castle.state.v1",gg="red.castle.history.v1",hv="red.castle.validation.v2",yv="red.castle.envelope.v1",bv="red.castle.hitl-card.v1",hg=[Qn({schemaId:fg,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Qn({schemaId:mg,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Qn({schemaId:gg,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Qn({schemaId:hv,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Qn({schemaId:yv,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Qn({schemaId:bv,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 d1,Wo=g(()=>{"use strict";D();lu();d1=new Map(hg.map(e=>[e.schemaId,new Set(e.fields)]))});var yg=g(()=>{"use strict";pg();Wo()});var bg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var du=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as Rv,mkdir as kv,readFile as Sv}from"node:fs/promises";import{dirname as Ev,join as xv}from"node:path";function pu(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function wg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:pu(t.at,"at"),singleton:pu(t.singleton,"singleton"),kind:pu(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function vv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function Cv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function Tv(e){return xv(e.castleStateRoot,"singleton-events.toonl")}function fu(e,t={}){let n=t.fs??{appendFile:Rv,mkdir:kv,readFile:Sv},r=t.clock??(()=>new Date().toISOString()),s=Tv(e);return{path:s,async append(o){let i=wg({at:o.at??r(),...o});return await n.mkdir(Ev(s),{recursive:!0}),await n.appendFile(s,kt().push(vv(i)),"utf8"),i},async read(o={}){Cv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Rt(i).map(wg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var mu=g(()=>{"use strict";D()});var Vo=g(()=>{"use strict";D();Jo();mu()});var _g=g(()=>{"use strict";qo();du();Vo()});var Rg=g(()=>{"use strict"});var z1,kg=g(()=>{"use strict";D();z1=24*60*60*1e3});var Sg=g(()=>{"use strict";Wo()});var Z1,eB,Eg=g(()=>{"use strict";Z1=15*6e4,eB=30*6e4});var xg=g(()=>{"use strict"});var Av,Pv,rB,sB,vg=g(()=>{"use strict";Av=["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"],Pv={pre_worktree:["cargo","gradle"]},rB=Object.values(Pv).flat(),sB=new Set(Av)});var Cg=g(()=>{"use strict"});var Tg=g(()=>{"use strict";Vo()});var Og=g(()=>{"use strict"});var Ag=g(()=>{"use strict"});var Pg=g(()=>{"use strict"});var gu=g(()=>{"use strict"});var Ig=g(()=>{"use strict";D();gu()});var Lg=g(()=>{"use strict";D()});var hu=g(()=>{"use strict"});var yu=g(()=>{"use strict"});import{resolve as re}from"node:path";function $g(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,Iv),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 Iv,Dg=g(()=>{"use strict";Iv="default"});var Ng=g(()=>{"use strict";Jo()});var Mg=g(()=>{"use strict"});var Bg=g(()=>{"use strict";hu();yu()});import{mkdir as Lv,readFile as $v,rename as Dv,rm as Nv,writeFile as Mv}from"node:fs/promises";import{dirname as Bv,join as Fv}from"node:path";function Gv(e){if(!jv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Hv(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Uv(e){return e.code==="ENOENT"}function Wv(e){return e.code==="EEXIST"}function qv(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function bu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return Gv(t),Fv(e.castleStateRoot,"singletons",t,"lease.toon")}function Fg(e,t={}){let n=t.fs??{mkdir:Lv,readFile:$v,rename:Dv,rm:Nv,writeFile:Mv},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Hv;async function o(a){try{return qv(L(await n.readFile(a,"utf8")))}catch(c){if(Uv(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(Bv(u),{recursive:!0});let l=!1;for(;;){let p=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!Wv(f))throw f}let m=await o(u);if(m){if(bu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!bu(l,c))throw new zo(a);let p={...l,renewed_at:r()};return await i(u,p),p},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!bu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,jv,jg=g(()=>{"use strict";D();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},jv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var wu=g(()=>{"use strict"});var Gg=g(()=>{"use strict"});var Jv,Vv,Kv,HB,Hg=g(()=>{"use strict";Jv={refreshCadenceS:270,tolerance:3},Vv=270,Kv=2700,HB={...Jv,claimGraceS:Vv,recentCommitProtectionS:Kv}});var Ug=g(()=>{"use strict"});function Wg(e){return e==="single-object"?"rest":"graphql"}function U(e,t,n,r,s,o){return{key:e,kind:"read",cardinality:t,volatility:n,surface:o??Wg(t),budget:r,...o?{only:o}:{},why:s}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var qg,WB,Jg=g(()=>{qg=[U("issue view","single-object","stable-poll","rest","one issue by number, repeatedly polled while usually unchanged; REST answers in one request"),U("pr view","single-object","stable-poll","rest","one pull request by number, polled per Worker per iteration"),U("repo view","single-object","stable-poll","rest","one repository's own metadata, repeatedly read while usually unchanged"),U("run view","single-object","stable-poll","rest","one Actions run repeatedly polled to terminal; Actions has no GraphQL surface"),U("release view","single-object","stable-poll","rest","one release by tag, repeatedly checked while usually absent or unchanged"),U("pr diff","single-object","one-shot","rest","one pull request's diff, read once for review and served by a REST media type"),U("issue list","multi-node","stable-poll","graphql","a repeatedly polled, usually-unchanged issue connection; GraphQL avoids N REST pages"),U("pr list","multi-node","stable-poll","graphql","a repeatedly polled, usually-unchanged pull-request connection; GraphQL avoids N REST pages"),U("pr checks","multi-node","stable-poll","graphql","check contexts form a connection repeatedly polled while awaiting terminal state"),U("release list","multi-node","stable-poll","rest","release waits poll a usually-unchanged list; Releases has no GraphQL connection gh reads","rest"),U("run list","multi-node","stable-poll","rest","run waits poll a usually-unchanged list; Actions has no GraphQL surface","rest"),U("label list","multi-node","one-shot","graphql","a label connection loaded once for the current operation"),U("issue list (search)","multi-node","stable-poll","search","queue discovery polls usually-unchanged search results through the 30/min search connection"),U("pr list (search)","multi-node","stable-poll","search","PR discovery polls usually-unchanged search results through the 30/min search connection"),U("search issues","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("search prs","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("search repos","multi-repository","one-shot","search","a one-shot cross-repository read through the REST search endpoint, metered 30/min","rest"),U("api graphql","multi-node","one-shot","graphql","the caller supplies one explicit GraphQL query rather than a routed poll"),U("api rest","single-object","one-shot","rest","the caller supplies one explicit REST path rather than a routed poll"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],WB=new Map(qg.map(e=>[e.key,e]))});var Vg=g(()=>{D()});var Kg=g(()=>{});var zg=g(()=>{});var Yg=g(()=>{});var Xg=g(()=>{Jg();Vg();Kg();zg();Yg()});import{execFile as Zv}from"node:child_process";import{promisify as e0}from"node:util";var HF,Qg=g(()=>{"use strict";Xg();wu();HF=e0(Zv)});var Zg=g(()=>{"use strict";dg();yg();bg();qo();_g();Rg();kg();Sg();Wo();Eg();xg();vg();Cg();du();Tg();Og();Ag();Pg();Vo();Ig();Lg();lu();hu();yu();Dg();Ng();Mg();Bg();Jo();gu();mu();jg();wu();Gg();Hg();Ug();Qg()});import{EventEmitter as t0}from"node:events";import{spawn as n0}from"node:child_process";function Xo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Qo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,_u,r0,s0,o0,i0,Yo,Ru=g(()=>{cs="github-webhook",_u="github.webhook.delivery";r0="pull_request,pull_request_review,check_run,check_suite,workflow_run",s0=3,o0=1e3,i0=/no extension matched|unknown command|command not found/i,Yo=class extends t0{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,o0).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Xo(c,r):Qo(c,r))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let n=this.opts.ghBin??"gh",r;try{r=n0(n,["webhook","forward",`--events=${r0}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
89
+ `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");i0.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>=s0)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,eh=g(()=>{"use strict";Ru();Ru();ft();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as a0}from"node:events";import{join as c0}from"node:path";function Su(e){let t=so(e.cwd),n=$g(c0(t,".red"));return new ku({...e,leases:e.leases??Fg(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 ku,th=g(()=>{"use strict";Zg();eh();ft();tc();ku=class extends a0{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Xo(a,r):Qo(a,r))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===_u&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Eu={};B(Eu,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>d0});import{randomUUID as nh}from"node:crypto";import{mkdir as u0,rm as l0}from"node:fs/promises";async function d0(e,t=process.cwd()){let n;try{n=await uf(e)}catch(r){return await h0(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:ef,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Za(n.kind)?await p0({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function p0(e,t){let n=e.kind,r=oc({id:nh(),kind:n,target:g0(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Xa[n],status:"running",attempts:0}),s=hf(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 u0(Dn(t),{recursive:!0}),await Nn(s,r);let l=await f0(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let p=await _f({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(p.result,e.options.format)),p.exitCode}catch(l){let p=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,p,{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 l0(s,{force:!0}).catch(()=>{})}}async function f0(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vf({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:ff(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:ig(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await m0(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=Su({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>ag(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>ug(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function m0(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await cg(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function g0(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 h0(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Za(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=oc({id:nh(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Xa[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var xu=g(()=>{"use strict";lf();kf();zf();Zt();nc();lg();ft();Dr();uu();th();Dr();uu()});import{existsSync as R0}from"node:fs";import{join as k0}from"node:path";function S0(){for(let e of(process.env.PATH??"").split(":"))if(e&&R0(k0(e,"rsp")))return!0;return!1}function us(){return S0()?["rsp"]:[process.execPath,process.argv[1]]}var vu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>ah,rewriteProxyCommandLine:()=>ih,runProxy:()=>v0});import{spawn as E0}from"node:child_process";function x0(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function v0(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=ah(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=ih(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await C0(t.telemetryRoot,n,c),await oh(n);throw c}for(let c of s)await T0(t.telemetryRoot,c);let i=await oh(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 ih(e,t="lossless",n=us()){let r=$0(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||L0(r,a)==="|")return i.text;let c=O0(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function ah(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 C0(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 T0(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 oh(e){let t=E0(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
90
+ `),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function O0(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=N0(o);if(!i)return null;let a=I0(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(nn(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=A0(c);if(!l)return null;let p=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],m=[...p,...n.map(x0),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function A0(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}:P0(t,n)}function P0(e,t){return e[0]==="cat"&&e.length===2&&Cu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Cu(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Cu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Cu(e){return!!e&&!e.startsWith("-")}function I0(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 L0(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function $0(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=D0(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 D0(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 N0(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Ur();vu();Ge()});function lh(e,t={}){let n=M0(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Tu(o),u=Tu(i),l=Tu(a),p=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!p.some(m=>U0(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Ou(d.length,c)+Ou(d.tokens.length,u)+Ou(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+G0(d.tokens,r,n.length)+H0(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 M0(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(ch(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(ch(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function ch(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:B0(r),tokens:F0(r),numbers:j0(r),length:r.length}}function B0(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 F0(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function j0(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function G0(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 H0(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Tu(e){let t=uh(e),n=uh(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Ou(e,t){return Math.abs(e-t.median)/t.mad}function uh(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 U0(e,t,n,r){return e<r&&n<t}var dh=g(()=>{"use strict"});var Au={};B(Au,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>fh,StructuredUsageError:()=>ni,cleanStatusPayload:()=>yh,recoveryInstruction:()=>He,renderGitContract:()=>mh,runGitWrapper:()=>q0});import{spawn as W0}from"node:child_process";async function q0(e,t){let n=gh(e),r=hh(n.argv),s=await z0(r,n.argv.slice(1));return mh(e,s,t)}async function mh(e,t,n){let r=gh(e);if((t.status??0)!==0||t.signal){let p=$e(e.join(" "),t.stdout,t.stderr);return{stdout:N(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=hh(r.argv),o;try{o=Y0(s,r.argv,t.stdout,r.query)}catch(p){if(p 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:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=C(o);if(J0(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=mC(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await n.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${He(u)}
91
91
  `;return{stdout:Buffer.from(`${C(a.payload)}
92
- ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function mh(e){let{argv:t,query:n,full:r}=Xd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function qC(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!JC(e)||r.level!=="lossless")return!0;let s=f0(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function JC(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function gh(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function VC(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${fh.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function KC(e,t){let n=UC("git",VC(e,t),{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function zC(e,t,n,r){switch(e){case"status":return YC(t,n,r);case"log":return s0(t,n,r);case"diff":return o0(t,n,r);case"commit":return Ot(i0(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ot(a0(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return c0(t,n,r);case"branch":return u0(t,n,r);case"show":return l0(t,n,r)}}function YC(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of XC(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){r=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){r=e0(u),o=!0;continue}let l=QC(u);if(l){o=!0,s.push(l);continue}let f=ZC(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return hh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=yh(a,"state");return Ot({command:e.join(" "),branch:r,rows:a,summary:r0(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function XC(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function QC(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return ls(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(10).join(" "),n)}return e.startsWith("? ")?ls(e.slice(2),"??"):null}function ZC(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(t0(e.slice(3),t),t):null}function ls(e,t){let n=dh(t[0]??"."),r=dh(t[1]??".");return{path:n0(e),index:n,worktree:r,state:d0(`${n}${r}`)}}function dh(e){return e===" "?".":e}function e0(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function t0(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function n0(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function r0(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function hh(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function s0(e,t,n){let r=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=ae(r,n);return Ot({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function o0(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=ae(s,n),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Ot({command:e.join(" "),files:o,summary:`${n?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function i0(e,t){let n=t.split(`
93
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),f=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function a0(e,t){let n=t.split(`
94
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${i} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${i} -> ${r} +${a} commits`}}function c0(e,t,n){let r=t.split(`
95
- `),s=[],o=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=o.commit.slice(0,12);l&&l.commit===f&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:f,path:o.path}),o=null}let i=ae(s,n),a=yh(i,"author");return Ot({command:e.join(" "),ranges:i,authors:a,summary:`${n?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function u0(e,t,n){let r=t.split(`
96
- `).filter(Boolean).map(i=>{let[a,c,u,l,f,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=ae(r,n),o=s.find(i=>i.current)?.name??"";return Ot({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${o?`, current ${o}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function l0(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,o=r>=0&&s>=0?t.slice(r+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=o.split(""),m=[];for(let y of i.split(`
97
- `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!w)continue;let k=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...k].filter(T=>T==="+").length,deleted:[...k].filter(T=>T==="-").length,binary:k.startsWith("Bin")})}let p=ae(m,n),b=0,_=0,h=0;for(let y of p)b+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,h+=typeof y.deleted=="number"?y.deleted:0;return Ot({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
98
- `).length:0,files:p,summary:`${n?`${p.length}/${m.length}`:p.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ot(e,t,n){return t?ct(e,n):e}function d0(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function yh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function f0(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function p0(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var fh,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();fh=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Ad(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var $u={};B($u,{NORMALIZATION_ALLOWLIST:()=>Eh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>Sh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Oh,formatNormalizeDecision:()=>Th,hookDecisionFromClaudePostExecJson:()=>xh,hookDecisionFromCodexPostExecJson:()=>vh,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Iu,runClaudePostExecHook:()=>h0,runCodexPostExecHook:()=>y0,transcodeJsonToToon:()=>kh});import{readFileSync as si}from"node:fs";function kh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Pu(o,a)?i.trimEnd():e}async function Iu(e,t={}){let n=R0(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:C(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,o=Rh(t.minTokens,m0),i=Rh(t.maxItems,g0);if(!(s>i&&v0(e)>=o))return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??ds)(r,i)}catch(b){return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:C0(b)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[f,m,p].filter(Boolean).join(`
99
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=k0(e),s=new Set;r&&e.forEach((a,c)=>{Lu(a)!==r&&s.add(c)});let o=S0(e,r);for(let a of s)n.add(a);for(let a of o)n.add(a);let i=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function ui(e){let t=e;for(let n of Eh)t=n.apply(t);return t}async function xh(e,t){return await Ch(e,t)}async function vh(e,t){return await Ch(e,t)}async function Ch(e,t){let n=_0(e),r=T0(n,["cwd"])||t.cwd;if(!await(t.isEnabled??w0)(r))return{kind:"passthrough",reason:"disabled"};let o=O0(n,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??ui)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Th(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Oh(e){return{stdout:"",status:0}}async function h0(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await xh(t,{cwd:process.cwd()}),r=Th(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function y0(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await vh(t,{cwd:process.cwd()}),r=Oh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function b0(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let o=e.charCodeAt(n);if(o===7){n++;break}if(o===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&bh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function bh(e){return e>=32&&e<=63}function w0(e){return Fe(e,process.env).enabled}function _0(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function R0(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Zn(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function k0(e){let t=new Map;for(let s of e){let o=Lu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Lu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${wh(e[t])}`).join("|"):wh(e)}function S0(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Lu(s)!==t))for(let[i,a]of Ah(s)){let c=r.get(i)??[];c.push({index:o,value:a}),r.set(i,c)}});for(let s of r.values()){for(let o of E0(s))n.add(o);for(let o of x0(s))n.add(o)}return n}function E0(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=_h(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=_h(s);if(o===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-r)>i).map(a=>a.index)}function x0(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function Ah(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Zn(e)?Object.entries(e).flatMap(([n,r])=>Ah(r,t?`${t}.${n}`:n)):[]}function wh(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function _h(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function v0(e){return Math.ceil(e.length/4)}function Rh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function C0(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function T0(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function O0(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Pu(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Pu(n[i],r[i]))}var oi,ii,ai,ci,Sh,m0,g0,Eh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:b0},ii={id:"cr-progress",apply:e=>e.split(`
92
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function gh(e){let{argv:t,query:n,full:r}=Xd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function J0(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!V0(e)||r.level!=="lossless")return!0;let s=fC(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function V0(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function hh(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 K0(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${fh.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function z0(e,t){let n=W0("git",K0(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 Y0(e,t,n,r){switch(e){case"status":return X0(t,n,r);case"log":return oC(t,n,r);case"diff":return iC(t,n,r);case"commit":return Pt(aC(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Pt(cC(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return uC(t,n,r);case"branch":return lC(t,n,r);case"show":return dC(t,n,r)}}function X0(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of Q0(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=tC(u),o=!0;continue}let l=Z0(u);if(l){o=!0,s.push(l);continue}let p=eC(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return yh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=bh(a,"state");return Pt({command:e.join(" "),branch:r,rows:a,summary:sC(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Q0(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Z0(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 eC(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(nC(e.slice(3),t),t):null}function ls(e,t){let n=ph(t[0]??"."),r=ph(t[1]??".");return{path:rC(e),index:n,worktree:r,state:pC(`${n}${r}`)}}function ph(e){return e===" "?".":e}function tC(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function nC(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function rC(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function sC(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 yh(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 oC(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 Pt({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 iC(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 Pt({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 aC(e,t){let n=t.split(`
93
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function cC(e,t){let n=t.split(`
94
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",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: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 uC(e,t,n){let r=t.split(`
95
+ `),s=[],o=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),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=ae(s,n),a=bh(i,"author");return Pt({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 lC(e,t,n){let r=t.split(`
96
+ `).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=ae(r,n),o=s.find(i=>i.current)?.name??"";return Pt({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 dC(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,p,d=""]=o.split(""),m=[];for(let y of i.split(`
97
+ `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!w)continue;let k=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...k].filter(T=>T==="+").length,deleted:[...k].filter(T=>T==="-").length,binary:k.startsWith("Bin")})}let f=ae(m,n),b=0,_=0,h=0;for(let y of f)b+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,h+=typeof y.deleted=="number"?y.deleted:0;return Pt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
98
+ `).length:0,files:f,summary:`${n?`${f.length}/${m.length}`:f.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Pt(e,t,n){return t?ct(e,n):e}function pC(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function bh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function fC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mC(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var fh,ni,ri,un=g(()=>{"use strict";V();D();je();wr();Ve();je();fh=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Ad(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var $u={};B($u,{NORMALIZATION_ALLOWLIST:()=>xh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>Eh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Ah,formatNormalizeDecision:()=>Oh,hookDecisionFromClaudePostExecJson:()=>vh,hookDecisionFromCodexPostExecJson:()=>Ch,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Iu,runClaudePostExecHook:()=>yC,runCodexPostExecHook:()=>bC,transcodeJsonToToon:()=>Sh});import{readFileSync as si}from"node:fs";function Sh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Pu(o,a)?i.trimEnd():e}async function Iu(e,t={}){let n=kC(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=kh(t.minTokens,gC),i=kh(t.maxItems,hC);if(!(s>i&&CC(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:TC(b)}}}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 m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,f=C(l).trimEnd();return{output:[p,m,f].filter(Boolean).join(`
99
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=SC(e),s=new Set;r&&e.forEach((a,c)=>{Lu(a)!==r&&s.add(c)});let o=EC(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 xh)t=n.apply(t);return t}async function vh(e,t){return await Th(e,t)}async function Ch(e,t){return await Th(e,t)}async function Th(e,t){let n=RC(e),r=OC(n,["cwd"])||t.cwd;if(!await(t.isEnabled??_C)(r))return{kind:"passthrough",reason:"disabled"};let o=AC(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 Oh(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Ah(e){return{stdout:"",status:0}}async function yC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await vh(t,{cwd:process.cwd()}),r=Oh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function bC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await Ch(t,{cwd:process.cwd()}),r=Ah(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function wC(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&&wh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&wh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function wh(e){return e>=32&&e<=63}function _C(e){return Fe(e,process.env).enabled}function RC(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function kC(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 SC(e){let t=new Map;for(let s of e){let o=Lu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Lu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${_h(e[t])}`).join("|"):_h(e)}function EC(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Lu(s)!==t))for(let[i,a]of Ph(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 xC(s))n.add(o);for(let o of vC(s))n.add(o)}return n}function xC(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=Rh(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=Rh(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 vC(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 Ph(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])=>Ph(r,t?`${t}.${n}`:n)):[]}function _h(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Rh(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 CC(e){return Math.ceil(e.length/4)}function kh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function TC(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 OC(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function AC(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Pu(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Pu(n[i],r[i]))}var oi,ii,ai,ci,Eh,gC,hC,xh,ps=g(()=>{"use strict";D();je();oi={id:"ansi",apply:wC},ii={id:"cr-progress",apply:e=>e.split(`
100
100
  `).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
101
101
  `)},ai={id:"trailing-whitespace",apply:e=>e.split(`
102
102
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
103
103
  `)},ci={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
104
104
 
105
- `)};Sh={id:"json-to-toon",apply:e=>kh(e)},m0=200,g0=15;Eh=[oi,ii,ai,ci,Sh]});var gs={};B(gs,{parseExecCommandLine:()=>Nh,renderExecContract:()=>Dh,runExecWrapper:()=>$0});import{isUtf8 as A0}from"node:buffer";import{spawn as P0}from"node:child_process";async function $0(e,t){let n=Nh(e),r=await D0(n);return await Dh(n,r,t)}async function Dh(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=$e(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let o=N0(r),i=o.kind==="text"?Buffer.from(o.text):r,a=nT(n.heavyByteThreshold,I0);if(i.length<=a&&n.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=o.kind==="text"?B0(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):F0(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Nh(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function D0(e){let t=P0(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function N0(e){return A0(e)?{kind:"text",text:M0(e.toString("utf8"))}:{kind:"bytes"}}function M0(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function B0(e,t,n,r,s,o=z0,i=ds){let c=Math.max(1,Math.floor((r==="terse"?$h:L0)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=K0(e,c,l,o),d=j0(e),m=G0(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Mh(s,d,t,tT(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Uh(f.error)}:m.degradation;return{text:Hh(p),degradation:b}}function F0(e,t,n,r){let s=Math.max(1,Math.floor($h/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Hh(Mh(r,"bytes",t,0,n,o))}}function Mh(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function j0(e){let t=e.trim();return t?Fh(t)?"json":jh(e)?"jsonl":Y0(e)?"unified-diff":Gh(e)?"tabular":X0(e)?"log-like":Q0(e)?"prose":"untyped":"untyped"}function G0(e,t,n,r,s,o,i=ds){switch(e){case"json":return H0(t,i);case"jsonl":return{summary:U0(t)};case"unified-diff":return{summary:W0(t)};case"tabular":return{summary:q0(t)};case"log-like":return{summary:J0(t,o)};case"prose":return{summary:V0(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Bh(n,r,s,o)}}}function H0(e,t){let n=Fh(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(At),item_keys:Nu(n)}}}catch(r){return{summary:Ih(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Uh(r)}}}return{summary:Ih(n)}}if(ms(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,o])=>[s,At(o)]))}}}return{summary:{root_type:typeof n,value:At(n)}}}function Ih(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(At),item_keys:Nu(e)}}function U0(e){let t=jh(e)??[],n=Z0(t,"level");return{records:t.length,keys:Nu(t),levels:n,first:At(t[0]),last:At(t.at(-1))}}function W0(e){let t=new Map,n="",r=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,n&&t.get(n).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(r++,n&&t.get(n).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:r,deleted_lines:s}}function q0(e){let t=Gh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Bh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function J0(e,t){let n=ps(e);return{entries:n.length,levels:eT(n),first:ln(n[0]??""),last:ln(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:ln(r.text)}))}}function V0(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:ln(t[0]??""),closing:ln(t.at(-1)??"")}}function Bh(e,t,n,r){let s=Lh(e.subarray(0,t)),o=Lh(e.subarray(n));return{head:s,tail:o,outliers:r.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:ln(i.text)}))}}function K0(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function z0(e,t){return uh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Fh(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return ms(n)||Array.isArray(n)?n:null}catch{return null}}function jh(e){let t=ps(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function Y0(e){let t=ps(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return r&&s&&o}function Gh(e){let t=ps(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function X0(e){let t=ps(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function Q0(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function ps(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Nu(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function Z0(e,t){let n=new Map;for(let r of e){if(!ms(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();n.set(o,(n.get(o)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function eT(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function At(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(At):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,At(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Ph?t:`${t.slice(0,Ph-1)}\u2026`}function Hh(e){let t=C(e).trimEnd(),n=L(t);if(!Du(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
106
- `}function Du(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Du(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Du(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Uh(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Lh(e){return e.toString("utf8").replace(/�$/g,"")}function tT(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function nT(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var I0,L0,$h,Ph,hs=g(()=>{"use strict";V();N();lh();un();fs();Ve();I0=8*1024,L0=2*1024,$h=1024,Ph=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>pT,formatCodexHookDecision:()=>ny,formatHookDecision:()=>ty,hookDecisionFromClaudePreExecJson:()=>wT,hookDecisionFromCodexPreExecJson:()=>_T,rewriteCommand:()=>Zh,rewriteTableFromCapabilities:()=>Qh,runClaudePreExecHook:()=>RT,runCodexPreExecHook:()=>kT});import{accessSync as uT,constants as lT,existsSync as dT,readFileSync as yi}from"node:fs";import{fileURLToPath as fT}from"node:url";function pT(){hi=void 0,Mu=!1}function mT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return uT(`${t}/rsp`,lT.X_OK),!0}catch{}return!1}function gT(e){return hi===void 0&&(hi=e()),hi}function hT(){Mu||(Mu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Qh(e){let t=new Map;for(let n of e)t.set(jT(n.command),["rsp",...n.wrapper]);return t}function Zh(e,t=us()){let n=PT(e);if(n)return n;let r=OT(e);if(!r)return gi(e,t);let s=r.tokens.map(u=>u.text);if(s.length>0&&qn(s[0]))return gi(e,t);let o=bT(r,t);if(o)return o;if(r.tokens.some(u=>u.quoted))return gi(e,t);let i=[...ws].sort((u,l)=>l.command.length-u.command.length).find(u=>AT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ay(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(Pt),...c].join(" "),capabilityId:i.id}}function bT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ay(e.redirectSuffix),o=t.map(Pt);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",Pt(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",Pt(n[1]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===4&&n[1]==="-n"&&/^[1-9][0-9]*$/.test(n[2])&&mi(n[3])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[2],Pt(n[3]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===3&&/^-[1-9][0-9]*$/.test(n[1])&&mi(n[2])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[1].slice(1),Pt(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function wT(e,t){return await ey(e,t)}async function _T(e,t){return await ey(e,t)}async function ey(e,t){return(await Fu(e,t,"pre-exec")).decision}async function Fu(e,t,n){let r=dy(e);if(!r.ok){let p={kind:"passthrough",reason:r.reason};return{decision:p,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:p,reason:r.reason})}}let s=r.payload,o=Ue(s,["cwd"])||Ue(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ST)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:Bu(s),decision:p,reason:"disabled"})}}let a=Bu(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"missing-command"})}}if(!gT(t.resolveBinary??mT)){hT();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Fe(o,process.env),f=t.rspInvocationPrefix??us(),d=l.proxyEnabled?IT(a,f):(t.rewrite??(p=>Zh(p,f)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:m})}}return await xT(o,t.wakeResident??ET),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function ty(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ny(e){return e.kind==="rewrite"?ry(e.command):{stdout:"",status:0}}function ry(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
107
- `,status:0}}async function RT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"claude-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;oy("claude-pre-exec",r);let s=ty(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),sy("claude-pre-exec",t,n)),iy("claude-pre-exec",n),0}}async function kT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"codex-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;oy("codex-pre-exec",r);let s=ny(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),sy("codex-pre-exec",t,n)),iy("codex-pre-exec",n),0}}function bi(e,t){ht(e,t).catch(()=>{})}function er(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:xe(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function sy(e,t,n){let r=dy(t),s=r.ok?Bu(r.payload):"";return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:xe(s),decision:"failed-open",reason:"hook-exception",error:ju(n)}}function ST(e){return Fe(e,process.env).enabled}async function ET(e){let t=Fe(e,process.env);if(!t.enabled||!TT(t))return;let n=Ke(e);await Ys(n,CT(t))}async function xT(e,t){try{await Promise.resolve(t(e))}catch(n){vT(n)}}function oy(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
105
+ `)};Eh={id:"json-to-toon",apply:e=>Sh(e)},gC=200,hC=15;xh=[oi,ii,ai,ci,Eh]});var gs={};B(gs,{parseExecCommandLine:()=>Mh,renderExecContract:()=>Nh,runExecWrapper:()=>DC});import{isUtf8 as PC}from"node:buffer";import{spawn as IC}from"node:child_process";async function DC(e,t){let n=Mh(e),r=await NC(n);return await Nh(n,r,t)}async function Nh(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:N(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=MC(r),i=o.kind==="text"?Buffer.from(o.text):r,a=rT(n.heavyByteThreshold,LC);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 p=o.kind==="text"?FC(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):jC(r,r.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:p.degradation}}function Mh(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 NC(e){let t=IC(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 MC(e){return PC(e)?{kind:"text",text:BC(e.toString("utf8"))}:{kind:"bytes"}}function BC(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function FC(e,t,n,r,s,o=YC,i=ds){let c=Math.max(1,Math.floor((r==="terse"?Dh:$C)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=zC(e,c,l,o),d=GC(e),m=HC(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),f=Bh(s,d,t,nT(u),n,m.summary),b=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Wh(p.error)}:m.degradation;return{text:Uh(f),degradation:b}}function jC(e,t,n,r){let s=Math.max(1,Math.floor(Dh/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Uh(Bh(r,"bytes",t,0,n,o))}}function Bh(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function GC(e){let t=e.trim();return t?jh(t)?"json":Gh(e)?"jsonl":XC(e)?"unified-diff":Hh(e)?"tabular":QC(e)?"log-like":ZC(e)?"prose":"untyped":"untyped"}function HC(e,t,n,r,s,o,i=ds){switch(e){case"json":return UC(t,i);case"jsonl":return{summary:WC(t)};case"unified-diff":return{summary:qC(t)};case"tabular":return{summary:JC(t)};case"log-like":return{summary:VC(t,o)};case"prose":return{summary:KC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Fh(n,r,s,o)}}}function UC(e,t){let n=jh(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(It),item_keys:Nu(n)}}}catch(r){return{summary:Lh(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Wh(r)}}}return{summary:Lh(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,It(o)]))}}}return{summary:{root_type:typeof n,value:It(n)}}}function Lh(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(It),item_keys:Nu(e)}}function WC(e){let t=Gh(e)??[],n=eT(t,"level");return{records:t.length,keys:Nu(t),levels:n,first:It(t[0]),last:It(t.at(-1))}}function qC(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 JC(e){let t=Hh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Fh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function VC(e,t){let n=fs(e);return{entries:n.length,levels:tT(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 KC(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 Fh(e,t,n,r){let s=$h(e.subarray(0,t)),o=$h(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 zC(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function YC(e,t){return lh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function jh(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 Gh(e){let t=fs(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 XC(e){let t=fs(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 Hh(e){let t=fs(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 QC(e){let t=fs(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 ZC(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 fs(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Nu(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function eT(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 tT(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 It(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(It):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,It(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Ih?t:`${t.slice(0,Ih-1)}\u2026`}function Uh(e){let t=C(e).trimEnd(),n=L(t);if(!Du(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
106
+ `}function Du(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>Du(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Du(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wh(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 $h(e){return e.toString("utf8").replace(/�$/g,"")}function nT(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 rT(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var LC,$C,Dh,Ih,hs=g(()=>{"use strict";V();D();dh();un();ps();Ve();LC=8*1024,$C=2*1024,Dh=1024,Ih=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>mT,formatCodexHookDecision:()=>ry,formatHookDecision:()=>ny,hookDecisionFromClaudePreExecJson:()=>_T,hookDecisionFromCodexPreExecJson:()=>RT,rewriteCommand:()=>ey,rewriteTableFromCapabilities:()=>Zh,runClaudePreExecHook:()=>kT,runCodexPreExecHook:()=>ST});import{accessSync as lT,constants as dT,existsSync as pT,readFileSync as yi}from"node:fs";import{fileURLToPath as fT}from"node:url";function mT(){hi=void 0,Mu=!1}function gT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return lT(`${t}/rsp`,dT.X_OK),!0}catch{}return!1}function hT(e){return hi===void 0&&(hi=e()),hi}function yT(){Mu||(Mu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Zh(e){let t=new Map;for(let n of e)t.set(GT(n.command),["rsp",...n.wrapper]);return t}function ey(e,t=us()){let n=IT(e);if(n)return n;let r=AT(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=wT(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=>PT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=cy(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(Lt),...c].join(" "),capabilityId:i.id}}function wT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=cy(e.redirectSuffix),o=t.map(Lt);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",Lt(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",Lt(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],Lt(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),Lt(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function _T(e,t){return await ty(e,t)}async function RT(e,t){return await ty(e,t)}async function ty(e,t){return(await Fu(e,t,"pre-exec")).decision}async function Fu(e,t,n){let r=py(e);if(!r.ok){let f={kind:"passthrough",reason:r.reason};return{decision:f,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:f,reason:r.reason})}}let s=r.payload,o=Ue(s,["cwd"])||Ue(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ET)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:er({hook:n,command:Bu(s),decision:f,reason:"disabled"})}}let a=Bu(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:er({hook:n,command:a,decision:f,reason:"missing-command"})}}let c=t.rspInvocationPrefix??us();if(!hT(t.resolveBinary??(()=>t.rspInvocationPrefix!==void 0||c[0]!=="rsp"||gT()))){yT();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:er({hook:n,command:a,decision:f,reason:"binary-unresolved"})}}let l=process.hrtime.bigint(),d=Fe(o,process.env).proxyEnabled?LT(a,c):(t.rewrite??(f=>ey(f,c)))(a),m=Number(process.hrtime.bigint()-l)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:er({hook:n,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:m})}}return await vT(o,t.wakeResident??xT),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function ny(e){return e.kind==="rewrite"?sy(e.command):{stdout:"",status:0}}function ry(e){return e.kind==="rewrite"?sy(e.command):{stdout:"",status:0}}function sy(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
107
+ `,status:0}}async function kT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"claude-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;iy("claude-pre-exec",r);let s=ny(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),oy("claude-pre-exec",t,n)),ay("claude-pre-exec",n),0}}async function ST(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Fu(t,{cwd:process.cwd()},"codex-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;iy("codex-pre-exec",r);let s=ry(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),oy("codex-pre-exec",t,n)),ay("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 oy(e,t,n){let r=py(t),s=r.ok?Bu(r.payload):"";return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:xe(s),decision:"failed-open",reason:"hook-exception",error:ju(n)}}function ET(e){return Fe(e,process.env).enabled}async function xT(e){let t=Fe(e,process.env);if(!t.enabled||!OT(t))return;let n=Ke(e);await Ys(n,TT(t))}async function vT(e,t){try{await Promise.resolve(t(e))}catch(n){CT(n)}}function iy(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
108
108
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
109
- `)}}function iy(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ju(t)}
110
- `)}function vT(e){Ua(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ju(e)}
111
- `)}function ju(e){return e instanceof Error?e.name||"Error":typeof e}function CT(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 TT(e){if(!e.storeUri.startsWith("file://"))return!0;try{return dT(fT(e.storeUri))}catch{return!1}}function Bu(e){return Ue(e,["tool_input","command"])||Ue(e,["tool_input","cmd"])||Ue(e,["tool_input","args","command"])||Ue(e,["input","command"])||Ue(e,["input","cmd"])||Ue(e,["arguments","command"])||Ue(e,["arguments","cmd"])||Ue(e,["command"])||Ue(e,["cmd"])}function OT(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Gu(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 Gu(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 AT(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function PT(e){let t=Gu(e.trim()).map(n=>n.text);return nn(t)?{kind:"passthrough",reason:yT}:null}function ay(e){return e.map(t=>t.text)}function Pt(e){return/[^\w@%+=:,./-]/.test(e)?Hu(e):e}function IT(e,t){let n=$T(e);return n?{kind:"passthrough",reason:n}:{kind:"rewrite",command:`${t.map(Pt).join(" ")} proxy -- ${Hu(e.trim())}`,capabilityId:"proxy:universal"}}function LT(e){if(!process.argv[1])return!1;let t=Gu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function $T(e){let t=e.trim();if(!t)return"missing-command";if(uy(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"||LT(t))return"opt-out";if(n&&cy.has(n))return"interactive"}function gi(e,t){let n=e.trim();return DT(n)?{kind:"rewrite",command:`${t.map(Pt).join(" ")} exec -- ${Hu(n)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function DT(e){return!(!e||!NT(e)||!MT(e)||uy(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||BT(e,"rsp")||ly(e,cy)||FT(e))}function NT(e){return/&&|[;|]/.test(e)}function uy(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 MT(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 ly(e,t){return Gr(e).some(n=>{let r=Hr(n)[0];return r?t.has(r):!1})}function BT(e,t){return ly(e,new Set([t]))}function FT(e){return Gr(e).some(t=>{let n=Hr(t);return n[0]==="grep"&&n.includes("-q")})}function Hu(e){return`'${e.replace(/'/g,"'\\''")}'`}function jT(e){return e.join("\0")}function dy(e){try{let t=JSON.parse(e);return fy(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Ue(e,t){let n=e;for(let r of t){if(!fy(n))return"";n=n[r]}return typeof n=="string"?n:""}function fy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hi,Mu,ws,ZG,yT,cy,_s=g(()=>{"use strict";Ur();je();ze();Qt();vu();Ge();Mu=!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"]}],ZG=Qh(ws),yT="lossless-gh-json-jq";cy=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var wy={};B(wy,{fastTelemetryRoot:()=>Wu,isFastGitStatus:()=>_i,runFastGitStatus:()=>Ri});import{spawnSync as yy}from"node:child_process";import{existsSync as by,readdirSync as zT}from"node:fs";function _i(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ri(){if(YT(process.cwd()))return{stdout:Uu(),stderr:Buffer.alloc(0),status:0,signal:null};if(yy("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Uu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=yy("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?Uu():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(()=>(ze(),Xt));return t(e).rootDir}catch{return e}}function Uu(){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"})}
112
- `)}function YT(e){try{return!by(`${e}/.git`)||by(`${e}/.git/index`)?!1:zT(e).every(t=>t===".git")}catch{return!1}}var qu=g(()=>{"use strict";at()});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 ky(e,t,n,r={}){pO(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=mO(["id","number",...n]).map(d=>gO(fO[d],6)).join(`
109
+ `)}}function ay(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ju(t)}
110
+ `)}function CT(e){Ua(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ju(e)}
111
+ `)}function ju(e){return e instanceof Error?e.name||"Error":typeof e}function TT(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 OT(e){if(!e.storeUri.startsWith("file://"))return!0;try{return pT(fT(e.storeUri))}catch{return!1}}function Bu(e){return Ue(e,["tool_input","command"])||Ue(e,["tool_input","cmd"])||Ue(e,["tool_input","args","command"])||Ue(e,["input","command"])||Ue(e,["input","cmd"])||Ue(e,["arguments","command"])||Ue(e,["arguments","cmd"])||Ue(e,["command"])||Ue(e,["cmd"])}function AT(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Gu(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 Gu(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 PT(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function IT(e){let t=Gu(e.trim()).map(n=>n.text);return nn(t)?{kind:"passthrough",reason:bT}:null}function cy(e){return e.map(t=>t.text)}function Lt(e){return/[^\w@%+=:,./-]/.test(e)?Hu(e):e}function LT(e,t){let n=DT(e);return n?{kind:"passthrough",reason:n}:{kind:"rewrite",command:`${t.map(Lt).join(" ")} proxy -- ${Hu(e.trim())}`,capabilityId:"proxy:universal"}}function $T(e){if(!process.argv[1])return!1;let t=Gu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function DT(e){let t=e.trim();if(!t)return"missing-command";if(ly(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"||$T(t))return"opt-out";if(n&&uy.has(n))return"interactive"}function gi(e,t){let n=e.trim();return NT(n)?{kind:"rewrite",command:`${t.map(Lt).join(" ")} exec -- ${Hu(n)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function NT(e){return!(!e||!MT(e)||!BT(e)||ly(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||FT(e,"rsp")||dy(e,uy)||jT(e))}function MT(e){return/&&|[;|]/.test(e)}function ly(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 BT(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 dy(e,t){return Gr(e).some(n=>{let r=Hr(n)[0];return r?t.has(r):!1})}function FT(e,t){return dy(e,new Set([t]))}function jT(e){return Gr(e).some(t=>{let n=Hr(t);return n[0]==="grep"&&n.includes("-q")})}function Hu(e){return`'${e.replace(/'/g,"'\\''")}'`}function GT(e){return e.join("\0")}function py(e){try{let t=JSON.parse(e);return fy(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Ue(e,t){let n=e;for(let r of t){if(!fy(n))return"";n=n[r]}return typeof n=="string"?n:""}function fy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hi,Mu,ws,sH,bT,uy,_s=g(()=>{"use strict";Ur();je();ze();Qt();vu();Ge();Mu=!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"]}],sH=Zh(ws),bT="lossless-gh-json-jq";uy=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var _y={};B(_y,{fastTelemetryRoot:()=>Wu,isFastGitStatus:()=>_i,runFastGitStatus:()=>Ri});import{spawnSync as by}from"node:child_process";import{existsSync as wy,readdirSync as YT}from"node:fs";function _i(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ri(){if(XT(process.cwd()))return{stdout:Uu(),stderr:Buffer.alloc(0),status:0,signal:null};if(by("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Uu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=by("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?Uu():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(()=>(ze(),Xt));return t(e).rootDir}catch{return e}}function Uu(){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"})}
112
+ `)}function XT(e){try{return!wy(`${e}/.git`)||wy(`${e}/.git/index`)?!1:YT(e).every(t=>t===".git")}catch{return!1}}var qu=g(()=>{"use strict";at()});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 Sy(e,t,n,r={}){mO(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=gO(["id","number",...n]).map(d=>hO(fO[d],6)).join(`
113
113
  `),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
114
- `)),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(`
115
- `);return{kind:e,query:f,aliases:o,labelAliases:i}}function Sy(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(vy(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:Cy(u?.message)||"not found"}})}function Ey(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: ${Lt(o.nodeId)}, labelIds: ${Ry(t)}, clientMutationId: ${Lt(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: ${Lt(o.nodeId)}, labelIds: ${Ry(n)}, clientMutationId: ${Lt(String(o.number))} }) { clientMutationId }`)}}),{aliases:r,query:["mutation RspEditLabels {",...s,"}"].join(`
116
- `)}}function xy(e,t){let n=t.map((s,o)=>({alias:`link${o}`,number:s.number})),r=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${Lt(e.nodeId)}, subIssueId: ${Lt(s.nodeId)}, clientMutationId: ${Lt(String(s.number))} }) { clientMutationId }`);return{aliases:n,query:["mutation RspLinkSubIssues {",...r,"}"].join(`
117
- `)}}function Ju(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,Cy(i.message)||"mutation failed")}return s}function pO(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 mO(e){return[...new Set(e)]}function gO(e,t){let n=" ".repeat(t);return e.split(`
114
+ `)),l=i.map(({alias:d,name:m})=>` ${d}: label(name: ${JSON.stringify(m)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
115
+ `);return{kind:e,query:p,aliases:o,labelAliases:i}}function Ey(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(Cy(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:Ty(u?.message)||"not found"}})}function xy(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: ${Dt(o.nodeId)}, labelIds: ${ky(t)}, clientMutationId: ${Dt(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: ${Dt(o.nodeId)}, labelIds: ${ky(n)}, clientMutationId: ${Dt(String(o.number))} }) { clientMutationId }`)}}),{aliases:r,query:["mutation RspEditLabels {",...s,"}"].join(`
116
+ `)}}function vy(e,t){let n=t.map((s,o)=>({alias:`link${o}`,number:s.number})),r=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${Dt(e.nodeId)}, subIssueId: ${Dt(s.nodeId)}, clientMutationId: ${Dt(String(s.number))} }) { clientMutationId }`);return{aliases:n,query:["mutation RspLinkSubIssues {",...r,"}"].join(`
117
+ `)}}function Ju(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,Ty(i.message)||"mutation failed")}return s}function mO(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 gO(e){return[...new Set(e)]}function hO(e,t){let n=" ".repeat(t);return e.split(`
118
118
  `).map(r=>`${n}${r}`).join(`
119
- `)}function Lt(e){return JSON.stringify(e)}function Ry(e){return`[${e.map(Lt).join(", ")}]`}function tr(e){return vy(e)?e:{}}function vy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cy(e){return typeof e=="string"?e:""}var fO,Ty=g(()=>{fO={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(`
120
- `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as yO,spawnSync as bO}from"node:child_process";function zu(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Py(e,t={}){let n=IO(e),r=n.repo??t.repo??process.env.GH_REPO??$O();if(!r||!r.includes("/"))return Qu(e,"repository is required; pass --repo owner/repo");let s=t.exec??DO,o=Math.max(1,Math.floor(t.restConcurrency??Ay));return n.verb==="issues"||n.verb==="prs"?await RO(n,r,s,o,e):n.verb==="edit-labels"?await SO(n,r,s,o,e):await xO(n,r,s,o,e)}async function RO(e,t,n,r,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Iy(e),a=[],c=[];for(let l of Xu(e.numbers,100)){let f=ky(o,l,i.query),d=await Yu(n,t,f.query);if(el(d))return await kO(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(...Sy(f,$t(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:CO(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(`
121
- `))}async function kO(e,t,n,r,s){let o=Iy(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=et($t(l.stdout));if(e.verb==="prs"&&o.output.some(Ly)){let d=W(et(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:OO(et($t(m.stdout)),et($t(p.stdout)))}}return{number:u,value:TO(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 SO(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([$y(e.numbers,t,n,r),nr(o,r,async d=>{let m=await n(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:W(et($t(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,Zu(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 Xu(f,100)){let m=Ey(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),p=await Yu(n,t,m.query);if(el(p))return await EO(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=Ju(m.aliases,$t(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,Dy(e.numbers,l),"graphql")}async function EO(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 xO(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 $y(e.numbers,t,n,r),c=a[0],u=c?.nodeId;if(!u)return sr(s,i,Zu(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 Xu(f,100)){let m=xy({number:o,nodeId:u},d),p=await Yu(n,t,m.query);if(el(p))return await vO(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=Ju(m.aliases,$t(p.stdout));for(let _ of m.aliases){let h=b.get(_.alias);l.set(_.number,h?{error:h}:{ok:!0})}}return sr(s,i,Dy(i,l),"graphql")}async function vO(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??Ay}:{},order:[...t],issues:n,summary:`${t.length-o}/${t.length} mutated`})}function Iy(e){if(e.verb==="issues"){let n=e.fields.length>0?e.fields:["title","state","labels","body"];return Oy(n,wO),{output:n,query:n}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Oy(t,_O),{output:t,query:t.map(n=>["checkRollup","statusCheckRollup"].includes(n)?"checks":n)}}function Oy(e,t){let n=e.find(r=>!t.has(r));if(n)throw new Error(`unknown GitHub batch field: ${n}`)}function CO(e,t,n){let r={};for(let s of n)s==="labels"?r.labels=Vu(t.labels).map(o=>W(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?r[s]=PO(t.commits):s==="state"||s==="mergeable"?r[s]=W(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(r[s]=Ny(t[s]));return"number"in r||(r.number=tl(t.number)),r}function TO(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=>W(i.name)).filter(Boolean)}else if(Ly(s))r[s]=et(t.restCheckRollup);else if(s==="state")r.state=W(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;r.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else r[s]=Ny(t[s]);return"number"in r||(r.number=tl(t.number)),r}function OO(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:W(o.name),state:(W(o.conclusion)||W(o.status)).toLowerCase()})),...r.map(o=>({name:W(o.context),state:W(o.state).toLowerCase()}))];return{state:W(t.state).toLowerCase()||AO(s.map(o=>o.state)),contexts:s}}function AO(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 Ly(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function PO(e){let t=Vu(e).at(-1),n=et(et(t?.commit).statusCheckRollup);return{state:W(n.state).toLowerCase(),contexts:Vu(n.contexts).map(r=>({name:W(r.name)||W(r.context),state:(W(r.conclusion)||W(r.status)||W(r.state)).toLowerCase()}))}}async function Yu(e,t,n){let[r,s]=LO(t);return await e(["api","graphql","-f",`query=${n}`,"-F",`owner=${r}`,"-F",`repo=${s}`])}async function $y(e,t,n,r){return await nr(e,r,async s=>{let o=await n(["api",`repos/${t}/issues/${s}`]),i=et($t(o.stdout)),a=W(i.node_id),c=tl(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 Xu(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function IO(e){if(!zu(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)}
122
- `),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 Zu(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 Dy(e,t){return Zu(e,n=>t.get(n)??{error:"mutation skipped"})}function el(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
119
+ `)}function Dt(e){return JSON.stringify(e)}function ky(e){return`[${e.map(Dt).join(", ")}]`}function tr(e){return Cy(e)?e:{}}function Cy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ty(e){return typeof e=="string"?e:""}var fO,Oy=g(()=>{fO={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(`
120
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as bO,spawnSync as wO}from"node:child_process";function zu(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Iy(e,t={}){let n=LO(e),r=n.repo??t.repo??process.env.GH_REPO??DO();if(!r||!r.includes("/"))return Qu(e,"repository is required; pass --repo owner/repo");let s=t.exec??NO,o=Math.max(1,Math.floor(t.restConcurrency??Py));return n.verb==="issues"||n.verb==="prs"?await kO(n,r,s,o,e):n.verb==="edit-labels"?await EO(n,r,s,o,e):await vO(n,r,s,o,e)}async function kO(e,t,n,r,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Ly(e),a=[],c=[];for(let l of Xu(e.numbers,100)){let p=Sy(o,l,i.query),d=await Yu(n,t,p.query);if(el(d))return await SO(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(...Ey(p,Nt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:TO(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(`
121
+ `))}async function SO(e,t,n,r,s){let o=Ly(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 p=et(Nt(l.stdout));if(e.verb==="prs"&&o.output.some($y)){let d=W(et(p.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 f=await n(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:Ce(f)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:AO(et(Nt(m.stdout)),et(Nt(f.stdout)))}}return{number:u,value:OO(e.verb,p,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 EO(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([Dy(e.numbers,t,n,r),nr(o,r,async d=>{let m=await n(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:W(et(Nt(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,Zu(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 Xu(p,100)){let m=xy(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),f=await Yu(n,t,m.query);if(el(f))return await xO(e,t,n,r,s);if(f.code!==0){for(let _ of d)l.set(_.number,{error:Ce(f)||"label mutation failed"});continue}let b=Ju(m.aliases,Nt(f.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,Ny(e.numbers,l),"graphql")}async function xO(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 vO(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 Dy(e.numbers,t,n,r),c=a[0],u=c?.nodeId;if(!u)return sr(s,i,Zu(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 Xu(p,100)){let m=vy({number:o,nodeId:u},d),f=await Yu(n,t,m.query);if(el(f))return await CO(o,i,t,n,r,s);if(f.code!==0){for(let _ of d)l.set(_.number,{error:Ce(f)||"sub-issue mutation failed"});continue}let b=Ju(m.aliases,Nt(f.stdout));for(let _ of m.aliases){let h=b.get(_.alias);l.set(_.number,h?{error:h}:{ok:!0})}}return sr(s,i,Ny(i,l),"graphql")}async function CO(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??Py}:{},order:[...t],issues:n,summary:`${t.length-o}/${t.length} mutated`})}function Ly(e){if(e.verb==="issues"){let n=e.fields.length>0?e.fields:["title","state","labels","body"];return Ay(n,_O),{output:n,query:n}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Ay(t,RO),{output:t,query:t.map(n=>["checkRollup","statusCheckRollup"].includes(n)?"checks":n)}}function Ay(e,t){let n=e.find(r=>!t.has(r));if(n)throw new Error(`unknown GitHub batch field: ${n}`)}function TO(e,t,n){let r={};for(let s of n)s==="labels"?r.labels=Vu(t.labels).map(o=>W(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?r[s]=IO(t.commits):s==="state"||s==="mergeable"?r[s]=W(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(r[s]=My(t[s]));return"number"in r||(r.number=tl(t.number)),r}function OO(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=>W(i.name)).filter(Boolean)}else if($y(s))r[s]=et(t.restCheckRollup);else if(s==="state")r.state=W(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;r.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else r[s]=My(t[s]);return"number"in r||(r.number=tl(t.number)),r}function AO(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:W(o.name),state:(W(o.conclusion)||W(o.status)).toLowerCase()})),...r.map(o=>({name:W(o.context),state:W(o.state).toLowerCase()}))];return{state:W(t.state).toLowerCase()||PO(s.map(o=>o.state)),contexts:s}}function PO(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 $y(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function IO(e){let t=Vu(e).at(-1),n=et(et(t?.commit).statusCheckRollup);return{state:W(n.state).toLowerCase(),contexts:Vu(n.contexts).map(r=>({name:W(r.name)||W(r.context),state:(W(r.conclusion)||W(r.status)||W(r.state)).toLowerCase()}))}}async function Yu(e,t,n){let[r,s]=$O(t);return await e(["api","graphql","-f",`query=${n}`,"-F",`owner=${r}`,"-F",`repo=${s}`])}async function Dy(e,t,n,r){return await nr(e,r,async s=>{let o=await n(["api",`repos/${t}/issues/${s}`]),i=et(Nt(o.stdout)),a=W(i.node_id),c=tl(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 Xu(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function LO(e){if(!zu(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)}
122
+ `),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 Zu(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 Ny(e,t){return Zu(e,n=>t.get(n)??{error:"mutation skipped"})}function el(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
123
123
  ${e.stdout}`)}function Ce(e){return(e.stderr||e.stdout).trim().split(`
124
- `)[0]?.slice(0,240)??""}function $t(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Vu(e){let t=et(e).nodes;return Array.isArray(t)?t.filter(or):[]}function Ny(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function tl(e){let t=Number(e);return Number.isFinite(t)?t:0}function rr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function LO(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Ei(e){return`rsp ${e.join(" ")}`}function $O(){let e=bO("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 DO(e){let t=yO("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 et(e){return or(e)?e:{}}function or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){return typeof e=="string"?e:""}var Ay,wO,_O,My=g(()=>{"use strict";V();N();Ty();Ay=4,wO=new Set(["number","title","state","labels","body"]),_O=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var ul={};B(ul,{renderGhContract:()=>Uy,runGhWrapper:()=>GO});import{spawn as NO}from"node:child_process";async function GO(e,t){if(zu(e))return await Py(e);let n=Wy(e),r=await UO(n);return Uy(e,r,t)}async function Uy(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=Wy(e),s=ks(t.stdout),o=XO(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=oA(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=iA(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)}
124
+ `)[0]?.slice(0,240)??""}function Nt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Vu(e){let t=et(e).nodes;return Array.isArray(t)?t.filter(or):[]}function My(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function tl(e){let t=Number(e);return Number.isFinite(t)?t:0}function rr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function $O(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Ei(e){return`rsp ${e.join(" ")}`}function DO(){let e=wO("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 NO(e){let t=bO("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 et(e){return or(e)?e:{}}function or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){return typeof e=="string"?e:""}var Py,_O,RO,By=g(()=>{"use strict";V();D();Oy();Py=4,_O=new Set(["number","title","state","labels","body"]),RO=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var ul={};B(ul,{renderGhContract:()=>Wy,runGhWrapper:()=>HO});import{spawn as MO}from"node:child_process";async function HO(e,t){if(zu(e))return await Iy(e);let n=qy(e),r=await WO(n);return Wy(e,r,t)}async function Wy(e,t,n){if((t.status??0)!==0||t.signal){let m=$e(e.join(" "),t.stdout,t.stderr);return{stdout:N(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let r=qy(e),s=ks(t.stdout),o=QO(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=iA(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=aA(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 n.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 ${He(p)}
125
125
  `;return{stdout:Buffer.from(`${C(u.payload)}
126
- ${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 Wy(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=Fy(l[++m]??""):p.startsWith("--fields=")?u=Fy(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 HO(d),d}function By(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?BO[t]:MO[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Fy(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function HO(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=jO[t];for(let r of e.fields)if(!n.includes(r))throw new xi(e,`unknown field: ${r}`,n)}async function UO(e){if(e.action==="combined")return await WO(e);let t=qO(e);if(!t)return await YO(By(e));let n=await me({...t,command:["gh",...By(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await JO(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function WO(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=Jy(ks(n.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:be(ks(s.stdout)).map(KO)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function qO(e){let t=Vy(e.passthrough),n=zO(e.passthrough,"--limit")??30,r=tt(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:tt(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 JO(e,t){let n=ks(t);switch(`${e.kind}:${e.action}`){case"pr:list":return be(n).map(qy);case"pr:view":return Jy(n);case"issue:list":return be(n).filter(r=>!pn(r.pull_request)).map(jy);case"issue:view":return jy(n);case"run:list":return{items:be(j(n).workflow_runs).map(Gy),total:he(j(n),"total_count")};case"run:view":{let r=Gy(n),s=Vy(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(VO):[]}}default:return n}}function qy(e){let t=j(e);return{number:he(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:al(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 Jy(e){return qy(e)}function jy(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:al(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Gy(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 VO(e){let t=j(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function KO(e){let t=j(e);return{author:al(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function al(e){let t=j(e);return{login:x(t,"login")}}function Vy(e){return e.find(t=>!t.startsWith("-"))}function tt(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function zO(e,t){let n=tt(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function YO(e){let t=NO("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 XO(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=nl(n,"prs"),o=s.rows.map(c=>Ky(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):ir({...r,prs:i,aggregate:a,summary:`${ol(i.length,o.length,e.query)} ${Hy(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ir({...r,pr:zy(j(n),e),summary:`PR #${he(j(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return QO(e,t,j(n));case"issue:list":{let s=nl(n,"issues"),o=s.rows.map(c=>Yy(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(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:`${ol(i.length,o.length,e.query)} ${Hy(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ir({...r,issue:rA(j(n),e),summary:`issue #${he(j(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=nl(n,"runs"),o=s.rows.map(c=>Xy(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(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:`${ol(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:sA(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 QO(e,t,n){let r=zy(j(n.view),{...e,action:"view",wide:!0}),s=ae(be(n.checks).map(ZO),e.query),o=j(n.comments).comments,i=ae(be(o).map(eA).slice(-3),e.query);return ct({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 ZO(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 eA(e){return{author:Zy(e.author),body:vi(e,"body",il,!1),created:x(e,"createdAt")}}function nl(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 rl(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function sl(e,t,n,r,s){return ct({...e,empty:!0,scope:tA(t),[n]:[],aggregate:r,summary:`0 ${nA(t)}`},s)}function tA(e){let t=tt(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let o=tt(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${n}`}let r=tt(e.passthrough,"--branch")??tt(e.passthrough,"-b"),s=tt(e.passthrough,"--workflow")??tt(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function nA(e){let t=tt(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Ky(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),draft:!!e.isDraft};return cl(n,e,t,["author","labels","url","updated"]),n}function zy(e,t){let n=Ky(e,t);return n.body=vi(e,"body",il,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function Yy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),labels:Qy(e.labels)};return cl(n,e,t,["author","url","updated"]),n}function rA(e,t){let n=Yy(e,t);return n.body=vi(e,"body",il,t.full),n}function Xy(e,t){let n={id:he(e,"databaseId"),name:x(e,"name"),status:Ss(e),conclusion:x(e,"conclusion")};return cl(n,e,t,["event","branch","workflow","created"]),n}function sA(e,t){let n=Xy(e,t),r=be(e.jobs).map(s=>({name:x(s,"name"),status:Ss(s),conclusion:x(s,"conclusion"),log:vi(s,"log",FO,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 oA(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 iA(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 Hy(e,t){return e.every(n=>n.state===t)?t:"returned"}function ol(e,t,n){return n?`${e}/${t}`:String(e)}function ir(e,t,n){return t.query?ct(e,n):e}function Ss(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function cl(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=Zy(t.author):s==="labels"?e.labels=Qy(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 Qy(e){return Array.isArray(e)?e.map(t=>pn(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Zy(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 MO,BO,il,FO,jO,xi,ll=g(()=>{"use strict";V();N();Uo();My();un();wr();Ve();MO={"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"]},BO={"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"]},il=160,FO=160,jO={"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 pl={};B(pl,{renderTestContract:()=>eb,runTestWrapper:()=>dA});import{spawn as aA}from"node:child_process";async function dA(e,t){let n=br(e),r=await hA(n.argv);return await eb(e,r,t)}async function eb(e,t,n){let r=br(e),o=tb(r.argv)==="vitest"?yA(t.stdout):bA(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 ${RA(o.durationSeconds)}`,c=ae(o.failures,r.query);if(n.level==="terse")return await fA(r.argv,t,{...o,failures:c},i,a,n,r.query);let u=[],l,f=0;for(let p of c){let b=await wA(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?ct(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:fl(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 fA(e,t,n,r,s,o,i){let a=pA(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?ct(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:fl(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}
127
- ${y}`),stderr:Buffer.from(t.stderr),status:fl(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:b,rowsElided:f,rawOutput:Buffer.from(p)}}function fl(e){return e===0||e===null?0:1}function pA(e){let t=[],n=uA;for(let r of e.slice(0,lA)){let s=mA(r.excerpt,Math.min(cA,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function mA(e,t){if(t<=0)return"";let n=e.split(`
126
+ ${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 qy(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 f=l[m]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=jy(l[++m]??""):f.startsWith("--fields=")?u=jy(f.slice(9)):i.push(f)}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 UO(d),d}function Fy(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?FO[t]:BO[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function jy(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function UO(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=GO[t];for(let r of e.fields)if(!n.includes(r))throw new xi(e,`unknown field: ${r}`,n)}async function WO(e){if(e.action==="combined")return await qO(e);let t=JO(e);if(!t)return await XO(Fy(e));let n=await me({...t,command:["gh",...Fy(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await VO(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function qO(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=Vy(ks(n.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:be(ks(s.stdout)).map(zO)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function JO(e){let t=Ky(e.passthrough),n=YO(e.passthrough,"--limit")??30,r=tt(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:tt(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 VO(e,t){let n=ks(t);switch(`${e.kind}:${e.action}`){case"pr:list":return be(n).map(Jy);case"pr:view":return Vy(n);case"issue:list":return be(n).filter(r=>!fn(r.pull_request)).map(Gy);case"issue:view":return Gy(n);case"run:list":return{items:be(j(n).workflow_runs).map(Hy),total:he(j(n),"total_count")};case"run:view":{let r=Hy(n),s=Ky(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(KO):[]}}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:al(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 Vy(e){return Jy(e)}function Gy(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:al(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Hy(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 KO(e){let t=j(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function zO(e){let t=j(e);return{author:al(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function al(e){let t=j(e);return{login:x(t,"login")}}function Ky(e){return e.find(t=>!t.startsWith("-"))}function tt(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function YO(e,t){let n=tt(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function XO(e){let t=MO("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 QO(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=nl(n,"prs"),o=s.rows.map(c=>zy(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):ir({...r,prs:i,aggregate:a,summary:`${ol(i.length,o.length,e.query)} ${Uy(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ir({...r,pr:Yy(j(n),e),summary:`PR #${he(j(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return ZO(e,t,j(n));case"issue:list":{let s=nl(n,"issues"),o=s.rows.map(c=>Xy(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(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:`${ol(i.length,o.length,e.query)} ${Uy(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ir({...r,issue:sA(j(n),e),summary:`issue #${he(j(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=nl(n,"runs"),o=s.rows.map(c=>Qy(c,e)),i=ae(o,e.query),a=rl(i.length,o.length,s.total,e.query);return i.length===0?sl(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:`${ol(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:oA(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 ZO(e,t,n){let r=Yy(j(n.view),{...e,action:"view",wide:!0}),s=ae(be(n.checks).map(eA),e.query),o=j(n.comments).comments,i=ae(be(o).map(tA).slice(-3),e.query);return ct({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 eA(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 tA(e){return{author:eb(e.author),body:vi(e,"body",il,!1),created:x(e,"createdAt")}}function nl(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 rl(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function sl(e,t,n,r,s){return ct({...e,empty:!0,scope:nA(t),[n]:[],aggregate:r,summary:`0 ${rA(t)}`},s)}function nA(e){let t=tt(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let o=tt(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${n}`}let r=tt(e.passthrough,"--branch")??tt(e.passthrough,"-b"),s=tt(e.passthrough,"--workflow")??tt(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function rA(e){let t=tt(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function zy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),draft:!!e.isDraft};return cl(n,e,t,["author","labels","url","updated"]),n}function Yy(e,t){let n=zy(e,t);return n.body=vi(e,"body",il,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function Xy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),labels:Zy(e.labels)};return cl(n,e,t,["author","url","updated"]),n}function sA(e,t){let n=Xy(e,t);return n.body=vi(e,"body",il,t.full),n}function Qy(e,t){let n={id:he(e,"databaseId"),name:x(e,"name"),status:Ss(e),conclusion:x(e,"conclusion")};return cl(n,e,t,["event","branch","workflow","created"]),n}function oA(e,t){let n=Qy(e,t),r=be(e.jobs).map(s=>({name:x(s,"name"),status:Ss(s),conclusion:x(s,"conclusion"),log:vi(s,"log",jO,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 iA(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(fn(n)){if(fn(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 aA(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 Uy(e,t){return e.every(n=>n.state===t)?t:"returned"}function ol(e,t,n){return n?`${e}/${t}`:String(e)}function ir(e,t,n){return t.query?ct(e,n):e}function Ss(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function cl(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=eb(t.author):s==="labels"?e.labels=Zy(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 Zy(e){return Array.isArray(e)?e.map(t=>fn(t)?x(t,"name"):String(t)).filter(Boolean):[]}function eb(e){return fn(e)?x(e,"login"):""}function ks(e){return e.trim()?JSON.parse(e):null}function be(e){return Array.isArray(e)?e.filter(fn):[]}function j(e){return fn(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 fn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var BO,FO,il,jO,GO,xi,ll=g(()=>{"use strict";V();D();Uo();By();un();wr();Ve();BO={"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"]},FO={"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"]},il=160,jO=160,GO={"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 N({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:()=>tb,runTestWrapper:()=>pA});import{spawn as cA}from"node:child_process";async function pA(e,t){let n=br(e),r=await yA(n.argv);return await tb(e,r,t)}async function tb(e,t,n){let r=br(e),o=nb(r.argv)==="vitest"?bA(t.stdout):wA(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${kA(o.durationSeconds)}`,c=ae(o.failures,r.query);if(n.level==="terse")return await fA(r.argv,t,{...o,failures:c},i,a,n,r.query);let u=[],l,p=0;for(let f of c){let b=await _A(f.excerpt,r.argv.join(" "),n.store);u.push({suite:f.suite,name:f.name,excerpt:b.text}),l??=b.handle,p+=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?ct(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:pl(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function fA(e,t,n,r,s,o,i){let a=mA(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?ct(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,n.failures.length-a.length),d=a.some((w,k)=>w.excerpt!==n.failures[k].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:pl(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 f=C(m),b=Buffer.byteLength(f),_=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:b}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${b}) \u2014 ${He(_)}`;return{stdout:Buffer.from(`${l}
127
+ ${y}`),stderr:Buffer.from(t.stderr),status:pl(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:b,rowsElided:p,rawOutput:Buffer.from(f)}}function pl(e){return e===0||e===null?0:1}function mA(e){let t=[],n=lA;for(let r of e.slice(0,dA)){let s=gA(r.excerpt,Math.min(uA,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function gA(e,t){if(t<=0)return"";let n=e.split(`
128
128
  `),r=n.length<=2?e:`${n[0]}
129
129
  \u2026
130
- ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function tb(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 gA(e){if(tb(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 hA(e){let t=gA(e),n=aA(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 yA(e){let t=nb(e);if(!Dt(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Nt(t.numTotalTests),o=Nt(t.numFailedTests),i=kA(Nt(t.startTime),Nt(t.endTime));for(let a of n){if(!Dt(a))continue;let c=nt(a.name)||nt(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Dt(l)&&l.status==="failed"&&r.push({suite:c,name:nt(l.fullName)||nt(l.title)||nt(l.name),excerpt:_A(l.failureMessages)||nt(l.failureMessage)})}return s||=n.reduce((a,c)=>!Dt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=r.length,i||=n.reduce((a,c)=>Dt(c)?a+Nt(c.perfStats&&Dt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:n.length||1,durationSeconds:i,failures:r}}function bA(e){let t=e.split(`
131
- `).filter(Boolean).map(c=>nb(c)).filter(Dt);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+=Nt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Nt(c.failed),i+=Nt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:nt(c.name).split("::").slice(0,-1).join("::"),name:nt(c.name),excerpt:nt(c.stdout)});continue}if(c.reason==="compiler-message"&&Dt(c.message)){let u=nt(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(`
132
- `)}),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 wA(e,t,n){let r=Buffer.from(e);if(r.length<=dl)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,dl).toString("utf8").replace(/\uFFFD$/,""),i=r.length-Buffer.byteLength(o);return{text:`${o}
133
- \u2026 elided ${i} bytes (+${r.length}) \u2014 ${He(s)}`,handle:s,bytesElided:r.length}}function nb(e){try{return JSON.parse(e)}catch{return null}}function _A(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
134
- `):""}function RA(e){return`${Number(e.toFixed(1))}s`}function kA(e,t){return e>0&&t>e?(t-e)/1e3:0}function Nt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function nt(e){return typeof e=="string"?e:""}function Dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dl,cA,uA,lA,ml=g(()=>{"use strict";V();N();un();wr();Ve();dl=320,cA=160,uA=dl,lA=3});var yl={};B(yl,{parseCatCommand:()=>hl,renderCatContract:()=>AA,runCatWrapper:()=>OA});import{isUtf8 as SA}from"node:buffer";import{readFile as EA}from"node:fs/promises";import{extname as xA}from"node:path";async function OA(e,t){let n=hl(e),r;try{r=await EA(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}
135
- `),status:1,signal:null}}return cb(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ab(e,n,r,t)}async function AA(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=hl(e),s=Buffer.from(t.stdout,"utf8");return cb(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ab(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function hl(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=ib(t[++i],gl);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=ib(u,gl);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 ab(e,t,n,r){let s=n.toString("utf8"),o=LA(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>ob(r.heavyByteThreshold,rb)||o.truncated;if(!sb(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=sb(t.file)?PA(e,t.file,n,s,r.level,o):IA(e,t.file,n,s,o),c=`${C(a)}
136
- `;if(!i&&Buffer.byteLength(c)<=ob(r.heavyByteThreshold,rb))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)}
137
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function PA(e,t,n,r,s,o){let i=Ci(r),a=s==="terse"?CA:vA,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:$A(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function IA(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 LA(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
130
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function nb(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 hA(e){if(nb(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 yA(e){let t=hA(e),n=cA(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 bA(e){let t=rb(e);if(!Mt(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Bt(t.numTotalTests),o=Bt(t.numFailedTests),i=SA(Bt(t.startTime),Bt(t.endTime));for(let a of n){if(!Mt(a))continue;let c=nt(a.name)||nt(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Mt(l)&&l.status==="failed"&&r.push({suite:c,name:nt(l.fullName)||nt(l.title)||nt(l.name),excerpt:RA(l.failureMessages)||nt(l.failureMessage)})}return s||=n.reduce((a,c)=>!Mt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=r.length,i||=n.reduce((a,c)=>Mt(c)?a+Bt(c.perfStats&&Mt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:n.length||1,durationSeconds:i,failures:r}}function wA(e){let t=e.split(`
131
+ `).filter(Boolean).map(c=>rb(c)).filter(Mt);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+=Bt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Bt(c.failed),i+=Bt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:nt(c.name).split("::").slice(0,-1).join("::"),name:nt(c.name),excerpt:nt(c.stdout)});continue}if(c.reason==="compiler-message"&&Mt(c.message)){let u=nt(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(`
132
+ `)}),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 _A(e,t,n){let r=Buffer.from(e);if(r.length<=dl)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,dl).toString("utf8").replace(/\uFFFD$/,""),i=r.length-Buffer.byteLength(o);return{text:`${o}
133
+ \u2026 elided ${i} bytes (+${r.length}) \u2014 ${He(s)}`,handle:s,bytesElided:r.length}}function rb(e){try{return JSON.parse(e)}catch{return null}}function RA(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
134
+ `):""}function kA(e){return`${Number(e.toFixed(1))}s`}function SA(e,t){return e>0&&t>e?(t-e)/1e3:0}function Bt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function nt(e){return typeof e=="string"?e:""}function Mt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dl,uA,lA,dA,ml=g(()=>{"use strict";V();D();un();wr();Ve();dl=320,uA=160,lA=dl,dA=3});var yl={};B(yl,{parseCatCommand:()=>hl,renderCatContract:()=>PA,runCatWrapper:()=>AA});import{isUtf8 as EA}from"node:buffer";import{readFile as xA}from"node:fs/promises";import{extname as vA}from"node:path";async function AA(e,t){let n=hl(e),r;try{r=await xA(n.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=$e(e.join(" "),"",o);return{stdout:N({...i,help:`ls ${n.file}`}),stderr:Buffer.from(`${o}
135
+ `),status:1,signal:null}}return ub(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await cb(e,n,r,t)}async function PA(e,t,n){if((t.status??0)!==0||t.signal){let i=$e(e.join(" "),t.stdout,t.stderr);return{stdout:N(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let r=hl(e),s=Buffer.from(t.stdout,"utf8");return ub(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await cb(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function hl(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=ab(t[++i],gl);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=ab(u,gl);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 cb(e,t,n,r){let s=n.toString("utf8"),o=$A(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>ib(r.heavyByteThreshold,sb)||o.truncated;if(!ob(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ob(t.file)?IA(e,t.file,n,s,r.level,o):LA(e,t.file,n,s,o),c=`${C(a)}
136
+ `;if(!i&&Buffer.byteLength(c)<=ib(r.heavyByteThreshold,sb))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)}
137
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function IA(e,t,n,r,s,o){let i=Ci(r),a=s==="terse"?TA:CA,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:DA(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function LA(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 $A(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
138
138
  `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,o=t.limit??gl,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
139
139
  `)}${r&&i.length>0?`
140
- `:""}`,truncated:i.length<s.length}}function $A(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&&!DA(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Ci(e){let t=e.split(`
141
- `);return t.at(-1)===""?t.slice(0,-1):t}function cb(e){return e.includes(0)||!SA(e)}function sb(e){return TA.has(xA(e).toLowerCase())}function DA(e){return["for","if","switch","while"].includes(e)}function ob(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ib(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var rb,gl,vA,CA,TA,bl=g(()=>{"use strict";N();un();Ve();rb=8*1024,gl=10,vA=8,CA=2,TA=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var hb={};B(hb,{REPO_STORE_PATH:()=>Rl,mergeRspBlock:()=>pb,provisionRspRepoStore:()=>qA});import{constants as NA}from"node:fs";import{access as MA,copyFile as BA,mkdir as lb,readFile as FA,rename as jA,writeFile as db}from"node:fs/promises";import{dirname as GA,join as Es,resolve as HA}from"node:path";async function qA(e,t={}){let n=HA(e),r=Es(n,".red"),s=Es(r,"config.yaml"),o=Es(n,Rl);await lb(r,{recursive:!0}),await lb(GA(o),{recursive:!0});let i="";try{i=await FA(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=pb(i,{enabled:!0,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be,heavyGitByteThreshold:t.heavyGitByteThreshold??mt}),c=a!==i;c&&await db(s,a,"utf8");let u=!await _l(o),l=!1,f=!1;if(u){let m=Es(n,UA),p=Es(n,WA);if(await _l(m))await jA(m,o),f=!0;else if(await _l(p))await BA(p,o),l=!0;else{let{provisionElisionStore:b}=await Promise.resolve().then(()=>(Go(),Xm)),_=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=JA(a,Rl);return d!==a&&await db(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function pb(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(`
142
- `),s=mb(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
140
+ `:""}`,truncated:i.length<s.length}}function DA(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&&!NA(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Ci(e){let t=e.split(`
141
+ `);return t.at(-1)===""?t.slice(0,-1):t}function ub(e){return e.includes(0)||!EA(e)}function ob(e){return OA.has(vA(e).toLowerCase())}function NA(e){return["for","if","switch","while"].includes(e)}function ib(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ab(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var sb,gl,CA,TA,OA,bl=g(()=>{"use strict";D();un();Ve();sb=8*1024,gl=10,CA=8,TA=2,OA=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var yb={};B(yb,{REPO_STORE_PATH:()=>Rl,mergeRspBlock:()=>mb,provisionRspRepoStore:()=>JA});import{constants as MA}from"node:fs";import{access as BA,copyFile as FA,mkdir as db,readFile as jA,rename as GA,writeFile as pb}from"node:fs/promises";import{dirname as HA,join as Es,resolve as UA}from"node:path";async function JA(e,t={}){let n=UA(e),r=Es(n,".red"),s=Es(r,"config.yaml"),o=Es(n,Rl);await db(r,{recursive:!0}),await db(HA(o),{recursive:!0});let i="";try{i=await jA(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=mb(i,{enabled:!0,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be,heavyGitByteThreshold:t.heavyGitByteThreshold??mt}),c=a!==i;c&&await pb(s,a,"utf8");let u=!await _l(o),l=!1,p=!1;if(u){let m=Es(n,WA),f=Es(n,qA);if(await _l(m))await GA(m,o),p=!0;else if(await _l(f))await FA(f,o),l=!0;else{let{provisionElisionStore:b}=await Promise.resolve().then(()=>(Go(),Xm)),_=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=VA(a,Rl);return d!==a&&await pb(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function mb(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(`
142
+ `),s=gb(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
143
143
  `)}
144
144
  `}let o=kl(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(o)].join(`
145
145
  `)}
146
- `}function mb(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(El(r)&&Sl(r)===0&&gb(r)===t)return n}return-1}function kl(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(El(e[s])&&Sl(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Sl(e){return(e.match(/^ */)?.[0]??"").length}function El(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function gb(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function JA(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
147
- `),r=mb(n,"plugins");if(r===-1)return e;let s=kl(n,r,0),o=fb(n,"memory",r+1,s,2);if(o===-1)return e;let i=kl(n,o,2),a=[...n],c=fb(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
146
+ `}function gb(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(El(r)&&Sl(r)===0&&hb(r)===t)return n}return-1}function kl(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(El(e[s])&&Sl(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Sl(e){return(e.match(/^ */)?.[0]??"").length}function El(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function hb(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function VA(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
147
+ `),r=gb(n,"plugins");if(r===-1)return e;let s=kl(n,r,0),o=fb(n,"memory",r+1,s,2);if(o===-1)return e;let i=kl(n,o,2),a=[...n],c=fb(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
148
148
  `)}
149
- `}function fb(e,t,n,r,s){for(let o=n;o<r;o++){let i=e[o];if(El(i)&&Sl(i)===s&&gb(i)===t)return o}return-1}async function _l(e){try{return await MA(e,NA.F_OK),!0}catch{return!1}}var Rl,UA,WA,yb=g(()=>{"use strict";Re();je();Rl=gc,UA=qd,WA=".red/memory/graph.rdb"});var Sb={};B(Sb,{runRspMcpServer:()=>KA});import{createInterface as VA}from"node:readline";async function KA(){let e=Fe(process.cwd(),process.env),t=VA({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 zA(r,e);_b({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){_b({jsonrpc:"2.0",id:typeof Rb(n)?.id>"u"?null:Rb(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function zA(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:wb(t)}]};if(!t.enabled)return{content:[{type:"text",text:wb(t)}],isError:!0};let r=rP(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(YA(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await XA(n.arguments,r)}]}}return{}}function mn(e){return`${J(e)}
150
- `}function YA(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function XA(e,t){let n=ZA(e?.payload);try{return await QA(n,e,t)}catch(r){if(process.env.RSP_DEBUG==="1")throw r;return kb(n)}}async function QA(e,t,n){let r=eP(t?.level),s=await Iu(e,{level:r,command:"rsp mcp compress",store:n});if(s.detected)return kb(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 tP(o,i.length,a,r)}function ZA(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function eP(e){return e==="terse"?"terse":"brief"}function tP(e,t,n,r){let s=r==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=bb(o.subarray(0,i)),c=bb(o.subarray(Math.max(0,o.length-i)));return mn({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:nP(o),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function kb(e){return e.endsWith(`
149
+ `}function fb(e,t,n,r,s){for(let o=n;o<r;o++){let i=e[o];if(El(i)&&Sl(i)===s&&hb(i)===t)return o}return-1}async function _l(e){try{return await BA(e,MA.F_OK),!0}catch{return!1}}var Rl,WA,qA,bb=g(()=>{"use strict";Re();je();Rl=gc,WA=qd,qA=".red/memory/graph.rdb"});var Eb={};B(Eb,{runRspMcpServer:()=>zA});import{createInterface as KA}from"node:readline";async function zA(){let e=Fe(process.cwd(),process.env),t=KA({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 YA(r,e);Rb({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Rb({jsonrpc:"2.0",id:typeof kb(n)?.id>"u"?null:kb(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function YA(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:_b(t)}]};if(!t.enabled)return{content:[{type:"text",text:_b(t)}],isError:!0};let r=sP(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(XA(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await QA(n.arguments,r)}]}}return{}}function mn(e){return`${J(e)}
150
+ `}function XA(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function QA(e,t){let n=eP(e?.payload);try{return await ZA(n,e,t)}catch(r){if(process.env.RSP_DEBUG==="1")throw r;return Sb(n)}}async function ZA(e,t,n){let r=tP(t?.level),s=await Iu(e,{level:r,command:"rsp mcp compress",store:n});if(s.detected)return Sb(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 nP(o,i.length,a,r)}function eP(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function tP(e){return e==="terse"?"terse":"brief"}function nP(e,t,n,r){let s=r==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=wb(o.subarray(0,i)),c=wb(o.subarray(Math.max(0,o.length-i)));return mn({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:rP(o),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function Sb(e){return e.endsWith(`
151
151
  `)?e:`${e}
152
- `}function bb(e){return e.toString("utf8").replace(/�$/g,"")}function nP(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 rP(e){return Ha(process.cwd(),e)}function wb(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 _b(e){process.stdout.write(`${JSON.stringify(e)}
153
- `)}function Rb(e){try{return JSON.parse(e)}catch{return null}}var Eb=g(()=>{"use strict";at();je();V();fs();Qt()});var vb={};B(vb,{renderShellInit:()=>sP});function sP(e,t=ws){if(e==="fish")return oP(t);if(e==="bash"||e==="zsh")return iP(e,t);throw new Error(`unsupported shell: ${e}`)}function oP(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} '${lP(`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(`
154
- `)}function iP(e,t){let n=cP(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(`
155
- `)}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=>xb(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of aP(r)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${uP(u)}' ]`).join(" && ")).join(" || ");s.push(` ${xb(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function aP(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 cP(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 xb(e){return e.replace(/[\\|)&;]/g,"\\$&")}function uP(e){return e.replace(/'/g,"'\\''")}function lP(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Cb=g(()=>{"use strict";_s()});function xl(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"&&dP(t.chosenOption)&&fP(t.outcome)&&pP(t.cost)}function dP(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function fP(e){return e==="success"||e==="failure"||e==="escalated"}function pP(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 Tb=g(()=>{});import{createHash as mP}from"node:crypto";function jb(e,t){return new Cl(e,t)}function Ob(e){let t=Number(e.red_entity_id??e.rid),n=Tl(e.properties??e.PROPERTIES),r=Gb(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 Ab(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=Hb(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:Tl(e.properties??e.PROPERTIES)}}function yP(e){let t=Number(e.red_entity_id??e.rid),n=Tl(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!xl(n)?null:{rid:t,event:n}}function Tl(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Pi(e)?e:{}}function Gb(e){let t=e==="contact"?"person":e;if(gP.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Hb(e){if(hP.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function bP(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Pb(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 Ib(e,t){return hn(e)[t]}function Lb(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function $b(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Db(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 vl(e){return e!=null}function wP(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function _P(e){return mP("sha256").update(JSON.stringify(e)).digest("hex")}function RP(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Nb(e){return`artifact-hash:${e}`}function Mb(e,t,n){return`connection:${e}:${t}:${n}`}function Bb(){return"model-tier-bandit:v1"}function kP(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Fb(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Ub(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+Fb(n,a)*3+Fb(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 SP(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=Wb({...Ub(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return gn(s)}function Wb(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 EP(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 xP(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 vP(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var rt,gP,hP,Cl,qb=g(()=>{"use strict";Tb();rt={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},gP=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),hP=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Cl=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(Ib(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=hn(n);return await this.search(Lb(r,"query"),$b(r,"limit")??10,Db(r.options))}if(t==="think"){let r=hn(n);return await this.think(Lb(r,"query"),$b(r,"limit")??8,Db(r.options))}if(t==="link")return await this.link(hn(n));if(t==="backlinks")return await this.backlinks(Ib(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 ${rt.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${rt.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${rt.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:vP(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=Gb(ye(t.kind)||"note"),o=wP(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=_P([s,n,r,o,ye(t.sourcePath),ye(t.sourceSession)]),c=await this.kv().get(Nb(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${RP(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 ${rt.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=Ob(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Nb(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 ${rt.artifacts}`)).rows.map(Ob).filter(vl)}async search(t,n,r={}){let s=kP(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=Ub(u,s),f=Wb({...l,connections:SP(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:EP(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 xP(t,s)}async link(t){let n=await this.getArtifact(Pb(t.from)),r=await this.getArtifact(Pb(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=Hb(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 ${rt.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=Ab(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Mb(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 ${rt.connections}`)).rows.map(Ab).filter(vl)}async eventKpis(t){let n=(await this.listArtifacts()).filter(o=>o.kind==="event"),r=bP(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(!xl(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${rt.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 ${rt.outcomeEvents}`)).rows.map(yP).filter(vl).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Bb());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Bb(),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(Mb(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(rt.kv)}}});var rw={};B(rw,{runResidentServer:()=>$P});import{randomUUID as ar}from"node:crypto";import{execFileSync as CP,spawn as TP}from"node:child_process";import{existsSync as OP}from"node:fs";import{mkdir as Qb,rename as AP,rm as Jb,writeFile as Zb}from"node:fs/promises";import{createServer as PP}from"node:net";import{dirname as Il,join as Ii}from"node:path";import{fileURLToPath as IP,pathToFileURL as LP}from"node:url";async function $P(e){await Qb(Il(e.socketPath),{recursive:!0});let t=VP();JP();let n=e.telemetryDrainTimeoutMs??ew,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=PP(k=>{l.add(k),k.once("close",()=>l.delete(k)),p(),eI(k,async(T,M)=>{p();let Te=await tI(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=qP(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 Pl(M,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??ho,byteBudget:e.telemetryByteBudget??e.byteBudget??yo});if(o){await M.close();return}if(await Ol(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&&Ol(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 Zb(e.pidPath,`${process.pid}
156
- `,{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 Xs(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 Jb(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Ol(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 Jb(e.pidPath,{force:!0}),await Qs(y)}async function jP(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),BP),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 Qb(Il(a),{recursive:!0}),await Zb(c,`${J(u)}
157
- `,{encoding:"utf8",mode:384}),await AP(c,a)}async function Ol(e,t=ew,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await nw(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
158
- `)}}async function GP(e){let t=[];for(let n of FP){let r=await HP(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await UP(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${tw(n)}`))}return t}async function HP(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 UP(e,t,n){let r=WP(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${tw(t)}`)}function WP(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 tw(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function qP(e){return e&&clearTimeout(e),setTimeout(()=>{Li(),process.exit(0)},MP)}function JP(){Vb||(Vb=!0,process.on("exit",()=>Li()))}function VP(){if(process.platform==="win32")return;let t=TP(process.execPath,["-e",`
152
+ `}function wb(e){return e.toString("utf8").replace(/�$/g,"")}function rP(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 sP(e){return Ha(process.cwd(),e)}function _b(e){let t=e.enabled?Et(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 Rb(e){process.stdout.write(`${JSON.stringify(e)}
153
+ `)}function kb(e){try{return JSON.parse(e)}catch{return null}}var xb=g(()=>{"use strict";at();je();V();ps();Qt()});var Cb={};B(Cb,{renderShellInit:()=>oP});function oP(e,t=ws){if(e==="fish")return iP(t);if(e==="bash"||e==="zsh")return aP(e,t);throw new Error(`unsupported shell: ${e}`)}function iP(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} '${dP(`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(`
154
+ `)}function aP(e,t){let n=uP(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(`
155
+ `)}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=>vb(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of cP(r)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${lP(u)}' ]`).join(" && ")).join(" || ");s.push(` ${vb(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function cP(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 uP(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 vb(e){return e.replace(/[\\|)&;]/g,"\\$&")}function lP(e){return e.replace(/'/g,"'\\''")}function dP(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Tb=g(()=>{"use strict";_s()});function xl(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"&&pP(t.chosenOption)&&fP(t.outcome)&&mP(t.cost)}function pP(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function fP(e){return e==="success"||e==="failure"||e==="escalated"}function mP(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 Ob=g(()=>{});import{createHash as gP}from"node:crypto";function Gb(e,t){return new Cl(e,t)}function Ab(e){let t=Number(e.red_entity_id??e.rid),n=Tl(e.properties??e.PROPERTIES),r=Hb(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 Pb(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=Ub(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:Tl(e.properties??e.PROPERTIES)}}function bP(e){let t=Number(e.red_entity_id??e.rid),n=Tl(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!xl(n)?null:{rid:t,event:n}}function Tl(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Pi(e)?e:{}}function Hb(e){let t=e==="contact"?"person":e;if(hP.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ub(e){if(yP.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function wP(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Ib(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 Lb(e,t){return hn(e)[t]}function $b(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Db(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Nb(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 vl(e){return e!=null}function _P(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function RP(e){return gP("sha256").update(JSON.stringify(e)).digest("hex")}function kP(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Mb(e){return`artifact-hash:${e}`}function Bb(e,t,n){return`connection:${e}:${t}:${n}`}function Fb(){return"model-tier-bandit:v1"}function SP(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function jb(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Wb(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+jb(n,a)*3+jb(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 EP(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=qb({...Wb(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return gn(s)}function qb(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 xP(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 vP(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 CP(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var rt,hP,yP,Cl,Jb=g(()=>{"use strict";Ob();rt={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},hP=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),yP=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Cl=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(Lb(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=hn(n);return await this.search($b(r,"query"),Db(r,"limit")??10,Nb(r.options))}if(t==="think"){let r=hn(n);return await this.think($b(r,"query"),Db(r,"limit")??8,Nb(r.options))}if(t==="link")return await this.link(hn(n));if(t==="backlinks")return await this.backlinks(Lb(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 ${rt.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${rt.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${rt.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:CP(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=Hb(ye(t.kind)||"note"),o=_P(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=RP([s,n,r,o,ye(t.sourcePath),ye(t.sourceSession)]),c=await this.kv().get(Mb(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${kP(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 ${rt.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=Ab(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Mb(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 ${rt.artifacts}`)).rows.map(Ab).filter(vl)}async search(t,n,r={}){let s=SP(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=Wb(u,s),p=qb({...l,connections:EP(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:xP(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 vP(t,s)}async link(t){let n=await this.getArtifact(Ib(t.from)),r=await this.getArtifact(Ib(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=Ub(ye(t.kind)||"related_to"),o=await this.findConnection(n.rid,r.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.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 ${rt.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=Pb(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Bb(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 ${rt.connections}`)).rows.map(Pb).filter(vl)}async eventKpis(t){let n=(await this.listArtifacts()).filter(o=>o.kind==="event"),r=wP(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(!xl(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${rt.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 ${rt.outcomeEvents}`)).rows.map(bP).filter(vl).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Fb());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Fb(),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(Bb(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(rt.kv)}}});var sw={};B(sw,{runResidentServer:()=>DP});import{randomUUID as ar}from"node:crypto";import{execFileSync as TP,spawn as OP}from"node:child_process";import{existsSync as AP}from"node:fs";import{mkdir as Zb,rename as PP,rm as Vb,writeFile as ew}from"node:fs/promises";import{createServer as IP}from"node:net";import{dirname as Il,join as Ii}from"node:path";import{fileURLToPath as LP,pathToFileURL as $P}from"node:url";async function DP(e){await Zb(Il(e.socketPath),{recursive:!0});let t=KP();VP();let n=e.telemetryDrainTimeoutMs??tw,r={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??bo,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=IP(k=>{l.add(k),k.once("close",()=>l.delete(k)),f(),tI(k,async(T,M)=>{f();let Te=await nI(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=JP(c),d.close();for(let k of l)k.destroy()}function f(){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 Pl(M,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??ho,byteBudget:e.telemetryByteBudget??e.byteBudget??yo});if(o){await M.close();return}if(await Ol(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&&Ol(de.telemetry,n)},p),s.unref(),f()})().catch(k=>{r={kind:"failed",error:k instanceof Error?k:new Error(String(k))},f()}),e.pidPath&&await ew(e.pidPath,`${process.pid}
156
+ `,{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 Xs(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 Vb(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Ol(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 Vb(e.pidPath,{force:!0}),await Qs(y)}async function GP(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),FP),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 Zb(Il(a),{recursive:!0}),await ew(c,`${J(u)}
157
+ `,{encoding:"utf8",mode:384}),await PP(c,a)}async function Ol(e,t=tw,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await rw(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
158
+ `)}}async function HP(e){let t=[];for(let n of jP){let r=await UP(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await WP(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${nw(n)}`))}return t}async function UP(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 WP(e,t,n){let r=qP(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${nw(t)}`)}function qP(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 nw(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function JP(e){return e&&clearTimeout(e),setTimeout(()=>{Li(),process.exit(0)},BP)}function VP(){Kb||(Kb=!0,process.on("exit",()=>Li()))}function KP(){if(process.platform==="win32")return;let t=OP(process.execPath,["-e",`
159
159
  const { execFileSync } = require("node:child_process");
160
160
  const parentPid = Number(process.argv[1]);
161
161
  const known = new Set();
@@ -196,23 +196,23 @@ const timer = setInterval(() => {
196
196
  clearInterval(timer);
197
197
  process.exit(0);
198
198
  }, 500);
199
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of KP())try{process.kill(e,"SIGTERM")}catch{}}function KP(){if(process.platform==="win32")return[];let e="";try{e=CP("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),o=Number(r[2]),i=r[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function zP(e){if(e.collection!==Se)return e;let t=await Kb(e.raw_text,Yb(e.raw_bytes)),n=await Kb(e.emitted_text,Yb(e.emitted_bytes)),{raw_text:r,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Kb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=DP)try{return await nw((async()=>({tokens:(await YP())("cl100k_base").encode(e).length,estimated:!1}))(),NP,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function YP(){return zb??=import(LP(XP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await zb}function XP(){let e=Il(IP(import.meta.url)),n=[Ii(e,"..","node_modules","js-tiktoken","dist","index.js"),Ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>OP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Yb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Al(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function nw(e,t,n){let r;try{return await Promise.race([e,new Promise((s,o)=>{r=setTimeout(()=>o(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function QP(e){try{return JSON.parse(e)}catch{return e}}function ZP(e){return Xb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Xb(t)&&(t.collection===pe||t.collection===te||t.collection===Se||t.collection===Qe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Xb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function eI(e,t){_f(e,(n,r)=>t(n,r),(n,r,s)=>{s({id:r?.id??ar(),ok:!1,error:n instanceof Error?n.message:String(n)})})}async function tI(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await iu(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ho(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await au(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return rI(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await nI(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function nI(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await jb(s,t).request(n,r)}function rI(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var DP,NP,ew,MP,BP,FP,Pl,Vb,zb,sw=g(()=>{"use strict";Re();Zs();Js();at();Go();qb();Ge();je();DP=256*1024,NP=500,ew=2e3,MP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),BP="rsp-status-summary.json",FP=[pe,te,Se,Qe,Fr],Pl=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await GP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)o.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await vc(this.opts.rootDir,async a=>{let c=Wn(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await jP(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof n.id=="string"&&n.id.trim()!==""?n.id:ar(),a={...await zP(n),id:i,created_at:s,expires_at:o};return await t.kv(n.collection).put(i,a),{collection:n.collection,key:i,created_at:s,expires_at:o,bytes:n.collection===pe?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===pe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Qe?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Qe,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:pe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Al(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?QP(n):n;return ZP(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Fr).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),o=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||o.length<n.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Vb=!1});ji();Ve();var Pd={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},G_={json:{kind:"boolean"}},H_={help:{kind:"boolean",aliases:["h"]}},U_={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Id(e){let{command:t,args:n}=Fi(e,W_);return t==="--version"?{kind:"version",json:lr(n,G_).values.json===!0}:q_(e)?{kind:"help"}:{kind:"command"}}var W_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function q_(e){return Ht(e,H_).values.help===!0}function Ld(e){let{values:t,rest:n}=V_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,U_).command,o=[...n],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:n[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var Ds=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:J_})}},J_=Object.keys(Pd).map(e=>`--${e}`);function V_(e){try{return Ht(e,Pd)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function $d(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Dd(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var K_={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:Rt},"ephemeral-ttl-hours":{kind:"value",coerce:Rt},"byte-budget":{kind:"value",coerce:Rt},"telemetry-ttl-days":{kind:"value",coerce:Rt},"telemetry-byte-budget":{kind:"value",coerce:Rt},"telemetry-drain-interval-ms":{kind:"value",coerce:Rt},"telemetry-drain-timeout-ms":{kind:"value",coerce:Rt},"idle-ms":{kind:"value",coerce:Rt}};function ua(e){return lr(e,K_).values}var Nd={since:{kind:"value",coerce:Y_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Nd).values.since??t}function Md(e){return lr(e,Nd).values.full===!0}var z_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Bd(e){let{values:t,rest:n}=Ht(e,z_),r=n[1];if(!r)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:r,params:s}}function Rt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function Y_(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:void 0}la();Ve();import{existsSync as sI}from"node:fs";import{fileURLToPath as oI}from"node:url";at();wr();V();ze();import{existsSync as hC}from"node:fs";import{fileURLToPath as yC}from"node:url";at();Ga();V();import{existsSync as xk}from"node:fs";import{fileURLToPath as vk}from"node:url";async function Pn(e,t){let n={stats:Ck(e.telemetryByteBudget),telemetry:Ja(t)};if(!e.storeUri.startsWith("file://"))return n;let r=vk(e.storeUri);if(!xk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:Ja(t)}}catch{return n}finally{await o.close()}}function Va(e,t=Ja(30),n=!1,r=Yf()){return`${J(Ka(e,t,n,r))}
200
- `}function zf(e,t){return`${J({...e,overhead:Xf(t)})}
201
- `}function Yf(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:De,breaching_families:[],disabled_families:[],families:[]}}function Xf(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function Ka(e,t,n,r=Yf()){let s=t.savings.top_commands.slice(0,n?10:3),o=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??eo(),a=t.health.recent_failures.slice(0,n?20:5),c=t.decisions.top_pass_reasons.slice(0,n?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:Tk(t.savings),dollars_saved_estimate_usd_display:Ok(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Xf(r),health:{overhead_verdict:r.verdict,overhead_summary:r.summary,...t.health,degradation_rate_display:qa(t.health.degradation_rate),show_hit_rate_display:qa(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:qa(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:n?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:n?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Wa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Wa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Wa(t.latency.store_elapsed_ms_avg)}}}function Qf(e){return`${J(e)}
202
- `}function Ja(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function Ck(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:eo()}}function eo(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function za(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
203
- `)}function Tk(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function Ok(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function qa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function nh(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([bC(e),Promise.resolve().then(()=>(xu(),Eu)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:kt(Ke(process.cwd()).rootDir,e.overhead)}}function rh(e){let t=Ka(e.stats,e.telemetry,!1,e.overhead),n=ma({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},wC(e));return`${J(n)}
204
- `}async function bC(e){if(!e.storeUri.startsWith("file://"))return[];let t=yC(e.storeUri);if(!hC(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Qt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function wC(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}at();V();Ve();import{existsSync as GT}from"node:fs";import{fileURLToPath as HT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function qh(e,t,n){let r=process.hrtime.bigint(),s=await Jh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return rT(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Jh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
205
- `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(i,a)=>o({stdoutBytes:r,stderrBytes:s,status:i,signal:a}))})}function Vh(e){return e>0&&Math.random()<e}async function bs(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
206
- `);let s=await Xh(t);if(r){let o=sT(e,t,n),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ge(),os));fi(i(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:di(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),fi(i(r,{collection:c,ts:new Date().toISOString(),command:di(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Kh(e,t,n){let r=await Jh(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ge(),os)),a={ts:new Date().toISOString(),command:di(e),reason:"overhead-ceiling-self-disabled",wrapper_family:n.family,wrapper_exit_code:r.status??0,stderr_head:n.disabled_reason??n.reasons.join(",")};return fi(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:r.stdoutBytes+r.stderrBytes,emitted_bytes:r.stdoutBytes+r.stderrBytes,degradation_reason:a.reason,...a})),fi(s(t,{collection:i,accounting_recorded:!0,...a})),r.signal?(process.kill(process.pid,r.signal),128):r.status??0}async function zh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${pi()}, passing through
207
- `),await Xh(e)}function pi(){return"rsp is not enabled in this directory; run /red-setup"}function Yh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Ze(e){return di(e.positional)}function di(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function ys(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function rT(e,t,n,r,s){let o=n.stdoutBytes+n.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Ze(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:r};xt(e,{collection:"rsp_accounting_events_v1",...i}),xt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function sT(e,t,n){let r=t[0]??"unknown",s=oT(n)||e;return{reason:Wh(n)==="ENOENT"||Wh(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:aT(n)??1,stderrHead:iT(s,240)}}function oT(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function iT(e,t){let n=ys(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Wh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function aT(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function fi(e){e.catch(()=>{})}async function Xh(e){if(e[0]==="exec"||e[0]==="proxy")return await cT(e);let t=e[0];if(!t)return 2;let n=li(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
208
- `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function cT(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)}
199
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of zP())try{process.kill(e,"SIGTERM")}catch{}}function zP(){if(process.platform==="win32")return[];let e="";try{e=TP("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 YP(e){if(e.collection!==Se)return e;let t=await zb(e.raw_text,Xb(e.raw_bytes)),n=await zb(e.emitted_text,Xb(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 zb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=NP)try{return await rw((async()=>({tokens:(await XP())("cl100k_base").encode(e).length,estimated:!1}))(),MP,"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 XP(){return Yb??=import($P(QP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Yb}function QP(){let e=Il(LP(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=>AP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Xb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Al(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function rw(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 ZP(e){try{return JSON.parse(e)}catch{return e}}function eI(e){return Qb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Qb(t)&&(t.collection===fe||t.collection===te||t.collection===Se||t.collection===Qe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Qb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tI(e,t){wp(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 nI(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await iu(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ho(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await au(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return sI(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await rI(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function rI(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Gb(s,t).request(n,r)}function sI(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var NP,MP,tw,BP,FP,jP,Pl,Kb,Yb,ow=g(()=>{"use strict";Re();Zs();Js();at();Go();Jb();Ge();je();NP=256*1024,MP=500,tw=2e3,BP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),FP="rsp-status-summary.json",jP=[fe,te,Se,Qe,Fr],Pl=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await HP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)o.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await vc(this.opts.rootDir,async a=>{let c=Wn(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await GP(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 YP(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===fe?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===fe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:fe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Qe?await this.writeEvent(t,{collection:fe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Al(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Qe,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:fe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Al(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?ZP(n):n;return eI(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})}};Kb=!1});ji();Ve();var Pd={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},H_={json:{kind:"boolean"}},U_={help:{kind:"boolean",aliases:["h"]}},W_={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Id(e){let{command:t,args:n}=Fi(e,q_);return t==="--version"?{kind:"version",json:lr(n,H_).values.json===!0}:J_(e)?{kind:"help"}:{kind:"command"}}var q_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function J_(e){return Wt(e,U_).values.help===!0}function Ld(e){let{values:t,rest:n}=K_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,W_).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 N({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:V_})}},V_=Object.keys(Pd).map(e=>`--${e}`);function K_(e){try{return Wt(e,Pd)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function $d(e){return N({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Dd(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var z_={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:St},"ephemeral-ttl-hours":{kind:"value",coerce:St},"byte-budget":{kind:"value",coerce:St},"telemetry-ttl-days":{kind:"value",coerce:St},"telemetry-byte-budget":{kind:"value",coerce:St},"telemetry-drain-interval-ms":{kind:"value",coerce:St},"telemetry-drain-timeout-ms":{kind:"value",coerce:St},"idle-ms":{kind:"value",coerce:St}};function ua(e){return lr(e,z_).values}var Nd={since:{kind:"value",coerce:X_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Nd).values.since??t}function Md(e){return lr(e,Nd).values.full===!0}var Y_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Bd(e){let{values:t,rest:n}=Wt(e,Y_),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 St(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function X_(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 oI}from"node:fs";import{fileURLToPath as iI}from"node:url";at();wr();V();ze();import{existsSync as y0}from"node:fs";import{fileURLToPath as b0}from"node:url";at();Ga();V();import{existsSync as vk}from"node:fs";import{fileURLToPath as Ck}from"node:url";async function Pn(e,t){let n={stats:Tk(e.telemetryByteBudget),telemetry:Ja(t)};if(!e.storeUri.startsWith("file://"))return n;let r=Ck(e.storeUri);if(!vk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:Ja(t)}}catch{return n}finally{await o.close()}}function Va(e,t=Ja(30),n=!1,r=zp()){return`${J(Ka(e,t,n,r))}
200
+ `}function Kp(e,t){return`${J({...e,overhead:Yp(t)})}
201
+ `}function zp(){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 Yp(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function Ka(e,t,n,r=zp()){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:Ok(t.savings),dollars_saved_estimate_usd_display:Ak(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:Yp(r),health:{overhead_verdict:r.verdict,overhead_summary:r.summary,...t.health,degradation_rate_display:qa(t.health.degradation_rate),show_hit_rate_display:qa(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:qa(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:n?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:n?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Wa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Wa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Wa(t.latency.store_elapsed_ms_avg)}}}function Xp(e){return`${J(e)}
202
+ `}function Ja(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function Tk(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:eo()}}function eo(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function za(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
203
+ `)}function Ok(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 Ak(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function qa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function rh(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([w0(e),Promise.resolve().then(()=>(xu(),Eu)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:Et(Ke(process.cwd()).rootDir,e.overhead)}}function sh(e){let t=Ka(e.stats,e.telemetry,!1,e.overhead),n=ma({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},_0(e));return`${J(n)}
204
+ `}async function w0(e){if(!e.storeUri.startsWith("file://"))return[];let t=b0(e.storeUri);if(!y0(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Qt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function _0(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}at();V();Ve();import{existsSync as HT}from"node:fs";import{fileURLToPath as UT}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 Vh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return sT(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Vh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
205
+ `;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 Kh(e){return e>0&&Math.random()<e}async function bs(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
206
+ `);let s=await Qh(t);if(r){let o=oT(e,t,n),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ge(),os));pi(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})),pi(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 zh(e,t,n){let r=await Vh(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 pi(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})),pi(s(t,{collection:i,accounting_recorded:!0,...a})),r.signal?(process.kill(process.pid,r.signal),128):r.status??0}async function Yh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${fi()}, passing through
207
+ `),await Qh(e)}function fi(){return"rsp is not enabled in this directory; run /red-setup"}function Xh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Ze(e){return di(e.positional)}function di(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function ys(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function sT(e,t,n,r,s){let o=n.stdoutBytes+n.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Ze(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:r};Ct(e,{collection:"rsp_accounting_events_v1",...i}),Ct(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function oT(e,t,n){let r=t[0]??"unknown",s=iT(n)||e;return{reason:qh(n)==="ENOENT"||qh(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:cT(n)??1,stderrHead:aT(s,240)}}function iT(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function aT(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 qh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function cT(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 pi(e){e.catch(()=>{})}async function Qh(e){if(e[0]==="exec"||e[0]==="proxy")return await uT(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)}
208
+ `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function uT(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)}
209
209
  `),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)}
210
- `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function my(e,t,n){let r=[],s=!e.enabled;if(r.push(s?X("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):X("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(X("hook_wiring","skipped because rsp is disabled"),X("proxy_mode","skipped because rsp is disabled"),X("resident_liveness","skipped because rsp is disabled"),X("store_provisioning","skipped because rsp is disabled"),X("recent_degradation_rate","skipped because rsp is disabled"),X("overhead_budget","skipped because rsp is disabled")),py("disabled",r,n);r.push(await UT(e)),r.push(e.proxyEnabled?X("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(()=>(ze(),Xt));if(r.push(WT(await o(t))),r.push(qT(e)),hy(e)){let{telemetry:i}=await Pn(e,n);r.push(JT(i,n))}else r.push(X("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return r.push(VT(kt(process.cwd(),e.overhead))),py(r.some(i=>!i.pass)?"fail":"pass",r,n)}function gy(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
211
- `}async function UT(e){try{if(e.proxyEnabled)return X("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"?X("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 WT(e){return e.state==="registered-alive-socket-healthy"?X("resident_liveness","resident registry points at a healthy socket"):dn("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function qT(e){return e.storeUri.startsWith("file://")?hy(e)?X("store_provisioning","rsp store exists for this directory"):dn("store_provisioning","rsp store is not provisioned","rsp setup"):X("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function JT(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return X("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})`,KT(s,t))}function VT(e){return e.verdict==="green"?X("overhead_budget",e.summary):dn("overhead_budget",e.summary,"rsp status")}function KT(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 hy(e){if(!e.storeUri.startsWith("file://"))return!0;try{return GT(HT(e.storeUri))}catch{return!1}}function X(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 py(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)}}qu();function _y(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${XT(t).join(`
210
+ `),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function gy(e,t,n){let r=[],s=!e.enabled;if(r.push(s?X("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):X("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(X("hook_wiring","skipped because rsp is disabled"),X("proxy_mode","skipped because rsp is disabled"),X("resident_liveness","skipped because rsp is disabled"),X("store_provisioning","skipped because rsp is disabled"),X("recent_degradation_rate","skipped because rsp is disabled"),X("overhead_budget","skipped because rsp is disabled")),my("disabled",r,n);r.push(await WT(e)),r.push(e.proxyEnabled?X("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(()=>(ze(),Xt));if(r.push(qT(await o(t))),r.push(JT(e)),yy(e)){let{telemetry:i}=await Pn(e,n);r.push(VT(i,n))}else r.push(X("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return r.push(KT(Et(process.cwd(),e.overhead))),my(r.some(i=>!i.pass)?"fail":"pass",r,n)}function hy(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
211
+ `}async function WT(e){try{if(e.proxyEnabled)return X("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"?X("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 qT(e){return e.state==="registered-alive-socket-healthy"?X("resident_liveness","resident registry points at a healthy socket"):dn("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function JT(e){return e.storeUri.startsWith("file://")?yy(e)?X("store_provisioning","rsp store exists for this directory"):dn("store_provisioning","rsp store is not provisioned","rsp setup"):X("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function VT(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return X("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})`,zT(s,t))}function KT(e){return e.verdict==="green"?X("overhead_budget",e.summary):dn("overhead_budget",e.summary,"rsp status")}function zT(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 yy(e){if(!e.storeUri.startsWith("file://"))return!0;try{return HT(UT(e.storeUri))}catch{return!1}}function X(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 my(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)}}qu();function Ry(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${QT(t).join(`
212
212
  `)}
213
- `}function XT(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 QT}from"node:child_process";import{createHash as ZT}from"node:crypto";import{existsSync as eO,readFileSync as tO,statSync as nO}from"node:fs";import{tmpdir as rO}from"node:os";import{dirname as sO,join as It}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&&iO(s,o);let c=oO(e,t,a);return Rr(s,c,i),r?fn(lO(s,e,t,c,i,r.lastResponseMetrics())):dO(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function oO(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 iO(e,t){try{let n=gt(e),r=nO(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!uO(n,Date.now()-s))return;let o=aO(e),i=cO(o),a=It(i,"rsp.sock"),c=It(i,"rsp.pid"),u=It(q(o),"rsp-resident.pid.json"),l=It(o,".red","tmp","rsp","wake.lock");QT(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 aO(e){let t=e;for(;;){if(eO(It(t,".git")))return t;let n=sO(t);if(n===t)return e;t=n}}function cO(e){let t=ZT("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=It(n,"red-skills",t);if(It(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return It(rO(),`red-skills-${r}`,t)}function uO(e,t){try{let n=tO(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 lO(e,t,n,r,s,o){let i=Buffer.concat([n.stdout,n.stderr]),a=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),c=Us(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:Ze(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:Ze(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:Ze(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:Ze(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function dO(e,t,n,r,s){try{let o=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),a=Us(r,s);xt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Ze(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}),xt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ze(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 Mt=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}},wl=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function ub(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new wl,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(qu(),wy));if(i(e.positional))return await le(e,await a(),o,s,n,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(un(),Au)),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(()=>(ll(),ul)),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(()=>(ml(),pl)),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(()=>(bl(),yl)),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 ow(e=process.argv.slice(2)){let t=Ms("rsp"),n=Id(e);if(n.kind==="version")return process.stdout.write(n.json?`${JSON.stringify(t)}
213
+ `}function QT(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 ZT}from"node:child_process";import{createHash as eO}from"node:crypto";import{existsSync as tO,readFileSync as nO,statSync as rO}from"node:fs";import{tmpdir as sO}from"node:os";import{dirname as oO,join as $t}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&&aO(s,o);let c=iO(e,t,a);return Rr(s,c,i),r?pn(dO(s,e,t,c,i,r.lastResponseMetrics())):pO(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function iO(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 pn(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 aO(e,t){try{let n=gt(e),r=rO(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!lO(n,Date.now()-s))return;let o=cO(e),i=uO(o),a=$t(i,"rsp.sock"),c=$t(i,"rsp.pid"),u=$t(q(o),"rsp-resident.pid.json"),l=$t(o,".red","tmp","rsp","wake.lock");ZT(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 cO(e){let t=e;for(;;){if(tO($t(t,".git")))return t;let n=oO(t);if(n===t)return e;t=n}}function uO(e){let t=eO("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=$t(n,"red-skills",t);if($t(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return $t(sO(),`red-skills-${r}`,t)}function lO(e,t){try{let n=nO(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 dO(e,t,n,r,s,o){let i=Buffer.concat([n.stdout,n.stderr]),a=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),c=Us(r,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ge(),os));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Ze(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:p,ts:new Date().toISOString(),command:Ze(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:Ze(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:Ze(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function pO(e,t,n,r,s){try{let o=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),a=Us(r,s);Ct(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Ze(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}),Ct(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ze(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 Ft=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}},wl=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function lb(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new wl,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(qu(),_y));if(i(e.positional))return await le(e,await a(),o,s,n,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(un(),Au)),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(()=>(ll(),ul)),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(()=>(ml(),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(()=>(bl(),yl)),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 iw(e=process.argv.slice(2)){let t=Ms("rsp"),n=Id(e);if(n.kind==="version")return process.stdout.write(n.json?`${JSON.stringify(t)}
214
214
  `:`${Fd(t)}
215
- `),0;if(n.kind==="help")return process.stdout.write(_y(e)),0;let r;try{r=Ld(e)}catch(h){if(Dd(h))return process.stdout.write($d(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(),$u));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:h}=await Promise.resolve().then(()=>(fs(),$u));return await h()}if(r.command==="setup"){let{provisionRspRepoStore:h}=await Promise.resolve().then(()=>(yb(),hb)),y=await h(process.cwd());return process.stdout.write(za(y)),0}if(r.command==="mcp"){let{runRspMcpServer:h}=await Promise.resolve().then(()=>(Eb(),Sb));return await h(),0}if(r.command==="wait"){let{runWait:h}=await Promise.resolve().then(()=>(xu(),Eu));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(()=>(Cb(),vb));return process.stdout.write(y(h)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(je(),Up)),o=s(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:h}=await Promise.resolve().then(()=>(ze(),Xt)),y=h(process.cwd()),w=await my(o,y,Ns(r.positional,1));return process.stdout.write(gy(w)),w.exitCode}let i=Yh(r.command);if(!o.enabled)return i?await zh(r.positional):(process.stdout.write(`${pi()}
216
- `),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(()=>(ze(),Xt)),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 Kh(r.positional,u.rootDir,y)}if(i&&Vh(o.measurementHoldoutShare))return await qh(r,u.rootDir,o.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:h}=await Promise.resolve().then(()=>(sw(),rw)),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()}
217
- `),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(()=>(ze(),Xt));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(()=>(ze(),Xt)),w=r.command==="sweep"?await y(u):await h(u);if(r.command==="sweep"){let{sweepGhEtagCache:M}=await Promise.resolve().then(()=>(Br(),Mp));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(zf(w,T)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:h}=await Promise.resolve().then(()=>(Uo(),rg)),y=Bd(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}
218
- `),w.status}if(r.command==="dashboard"){let h=await nh(o);return process.stdout.write(rh(h)),0}if(!r.storeUri&&o.storeUri.startsWith("file://")&&!sI(oI(o.storeUri)))return i?await ub(r,o,u.rootDir):(process.stdout.write(D({command:Ze(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(()=>(Qt(),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(Va(h,y,Md(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(Qf(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(),Au)),y=new Mt(()=>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(()=>(ll(),ul)),y=new Mt(()=>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(()=>(ml(),pl)),y=new Mt(()=>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(()=>(bl(),yl)),y=new Mt(()=>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 Mt(()=>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]}`&&ow().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{ow as main,za as renderSetupResult,Va as renderStats};
215
+ `),0;if(n.kind==="help")return process.stdout.write(Ry(e)),0;let r;try{r=Ld(e)}catch(h){if(Dd(h))return process.stdout.write($d(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(()=>(ps(),$u));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:h}=await Promise.resolve().then(()=>(ps(),$u));return await h()}if(r.command==="setup"){let{provisionRspRepoStore:h}=await Promise.resolve().then(()=>(bb(),yb)),y=await h(process.cwd());return process.stdout.write(za(y)),0}if(r.command==="mcp"){let{runRspMcpServer:h}=await Promise.resolve().then(()=>(xb(),Eb));return await h(),0}if(r.command==="wait"){let{runWait:h}=await Promise.resolve().then(()=>(xu(),Eu));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(N({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(()=>(Tb(),Cb));return process.stdout.write(y(h)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(je(),Uf)),o=s(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:h}=await Promise.resolve().then(()=>(ze(),Xt)),y=h(process.cwd()),w=await gy(o,y,Ns(r.positional,1));return process.stdout.write(hy(w)),w.exitCode}let i=Xh(r.command);if(!o.enabled)return i?await Yh(r.positional):(process.stdout.write(`${fi()}
216
+ `),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(()=>(ze(),Xt)),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 zh(r.positional,u.rootDir,y)}if(i&&Kh(o.measurementHoldoutShare))return await Jh(r,u.rootDir,o.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:h}=await Promise.resolve().then(()=>(ow(),sw)),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(`${fi()}
217
+ `),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(()=>(ze(),Xt));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(()=>(ze(),Xt)),w=r.command==="sweep"?await y(u):await h(u);if(r.command==="sweep"){let{sweepGhEtagCache:M}=await Promise.resolve().then(()=>(Br(),Mf));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(Kp(w,T)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:h}=await Promise.resolve().then(()=>(Uo(),rg)),y=Bd(r.positional);if(!y)return process.stdout.write(N({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}
218
+ `),w.status}if(r.command==="dashboard"){let h=await rh(o);return process.stdout.write(sh(h)),0}if(!r.storeUri&&o.storeUri.startsWith("file://")&&!oI(iI(o.storeUri)))return i?await lb(r,o,u.rootDir):(process.stdout.write(N({command:Ze(r)||"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(()=>(Qt(),Or)),m=(h=!0)=>Promise.resolve(p(process.cwd(),o,{ensureResident:h,paths:u})),f=()=>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(Va(h,y,Md(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(N({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(Xp(y)),0}if(r.command==="git"){if(pn(f()),_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(),Au)),y=new Ft(()=>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"){pn(f());let{runGhWrapper:h}=await Promise.resolve().then(()=>(ll(),ul)),y=new Ft(()=>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"){pn(f());let{runTestWrapper:h}=await Promise.resolve().then(()=>(ml(),fl)),y=new Ft(()=>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"){pn(f());let{runCatWrapper:h}=await Promise.resolve().then(()=>(bl(),yl)),y=new Ft(()=>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"){pn(f());let{runExecWrapper:h}=await Promise.resolve().then(()=>(hs(),gs)),y=new Ft(()=>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=N({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=N({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(N({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]}`&&iw().then(e=>process.exit(e),e=>{Cn(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{iw as main,za as renderSetupResult,Va as renderStats};