@reddb-io/red-skills 3.1.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var eb=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)eb(e,r,{get:t[r],enumerable:!0})};function rb(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function nb(e=il){return Object.entries(e).map(([t,r])=>rb(t,r)).sort((t,r)=>r.separator.length-t.separator.length)}function sb(e){return/^-\d+(\.\d+)?$/.test(e)}function cr(e){return!(!e||e.startsWith("-")&&!sb(e))}function ds(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function al(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(r=>al(r.trim())):e}function At(e,t){switch(t){case"boolean":return ob(e);case"number":return ib(e);case"array":return e.split(",").map(r=>ds(r.trim()));case"string":default:return e}}function ob(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function ib(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function dt(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function ab(e,t={}){return e.map(r=>{let n=t[r.type];return n?n(r.value):r.value}).join("")}function $(e,t){return{type:e,value:t}}function cb(e){let t=[],r=lb(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",r),$("newline",`
3
+ var eb=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)eb(e,r,{get:t[r],enumerable:!0})};function rb(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function nb(e=il){return Object.entries(e).map(([t,r])=>rb(t,r)).sort((t,r)=>r.separator.length-t.separator.length)}function sb(e){return/^-\d+(\.\d+)?$/.test(e)}function cr(e){return!(!e||e.startsWith("-")&&!sb(e))}function ps(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function al(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(r=>al(r.trim())):e}function At(e,t){switch(t){case"boolean":return ob(e);case"number":return ib(e);case"array":return e.split(",").map(r=>ps(r.trim()));case"string":default:return e}}function ob(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function ib(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function dt(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function ab(e,t={}){return e.map(r=>{let n=t[r.type];return n?n(r.value):r.value}).join("")}function $(e,t){return{type:e,value:t}}function cb(e){let t=[],r=lb(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",r),$("newline",`
4
4
  `),$("newline",`
5
5
  `)),e.positional&&e.positional.length>0){t.push($("section-header","Arguments:"),$("newline",`
6
6
  `));for(let n of e.positional)if(n.description){let s=n.variadic?`${n.name}...`:n.name;t.push($("indent"," "),$("positional-name",`<${s}>`)),n.required||t.push($("positional-optional"," (optional)")),t.push($("newline",`
@@ -8,145 +8,145 @@ var eb=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{fo
8
8
  `))}t.push($("newline",`
9
9
  `))}if(e.options&&Object.keys(e.options).length>0){t.push($("section-header","Options:"),$("newline",`
10
10
  `));let n=db(e.options);t.push(...n)}return t}function ub(e,t){let r=cb(e);return ab(r,t)}function lb(e){let t=["[options]"];if(e.positional)for(let r of e.positional)r.variadic?t.push(r.required?`<${r.name}...>`:`[${r.name}...]`):t.push(r.required?`<${r.name}>`:`[${r.name}]`);return t.join(" ")}function db(e,t=!1){let r=[],n=[],s=t?"global-option-flag":"option-flag",o=t?"global-option-type":"option-type",i=t?"global-option-default":"option-default",a=t?"global-option-description":"option-description";for(let[u,l]of Object.entries(e)){if(l.hidden)continue;let p=[],d=w=>{p.includes(w)||p.push(w)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let w of l.aliases??[])w.length===1?d(`-${w}`):d(`--${w}`);let f=p.join(", "),m=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;n.push({flags:f,type:m,desc:l.description??"",default:l.default!==void 0?String(l.default):void 0})}let c=Math.max(...n.map(u=>u.flags.length+(u.type?u.type.length+1:0)),20);for(let u of n){let l=u.flags.length+(u.type?u.type.length+1:0),p=" ".repeat(c-l+2);r.push($("indent"," ")),r.push($(s,u.flags)),u.type&&(r.push($("text"," ")),r.push($(o,u.type))),r.push($("text",p)),r.push($(a,u.desc)),u.default!==void 0&&(r.push($("text"," ")),r.push($(i,`(default: ${u.default})`))),r.push($("newline",`
11
- `))}return r}function cl(e){let t=bb(e.options??{},e.autoShort??!1),r=nb(e.separators??il);return{schema:e,parse(n){return pb(n,e,t,r)},help(){return ub(e,e.formatter)}}}function pb(e,t,r,n){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(n.map(l=>l.to));for(let l of o)s[l]={};let i=0,a=t.positional??[],c=0,u=!1;for(;c<e.length;){let l=e[c];if(t.stopEarly&&i>0){s.rest=e.slice(c);break}if(l==="--"&&!u){u=!0,c++;continue}if(u){if(i<a.length){let d=a[i];if(d.variadic){let f=[];for(;c<e.length;){let m=e[c];f.push(d.type?At(m,d.type):m),c++}s.positional[d.name]=f,i++}else{let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=hb(l,c,e,s,r,t);continue}if(l.startsWith("-")&&l.length>1&&!Sb(l)){c=yb(l,c,e,s,r,t);continue}let p=fb(l,n);if(p){let{key:d,value:f,config:m}=p,w=s,_=w[m.to]??(w[m.to]={});_[d]=m.typed?al(f):dt(f),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let m=[];for(;c<e.length&&!e[c].startsWith("-");){let w=e[c];m.push(d.type?At(w,d.type):w),c++}s.positional[d.name]=m,i++;continue}let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return _b(s,t,r),Rb(s,t,a),kb(s,t,r),s}function fb(e,t){if(tb.test(e))return null;for(let r of t){if(r.prefix&&e.startsWith(r.separator)){let s=e.slice(r.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(mb(i))return{key:i,value:a,config:r}}continue}let n=e.indexOf(r.separator);if(n>0){let s=e.slice(0,n),o=e.slice(n+r.separator.length);if(gb(s,o,r))return{key:s,value:o,config:r}}}return null}function mb(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function gb(e,t,r){return e?r.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((r.separator==="="||r.separator===":=")&&e.includes("/")):!1}function hb(e,t,r,n,s,o){let i=e.slice(2);if(i.startsWith("no-")){let c=i.slice(3),u=s.get(c);if(u?.negatable!==!1&&u?.type==="boolean")return n.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return ps(u,l,t+1,n,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option --${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}return o.strict?n.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(n.options[i]=!0),t+1}function yb(e,t,r,n,s,o){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),c=i.slice(0,a),u=i.slice(a+1),l=hi(c,s);return l?ps(l.name,u,t+1,n,s,o):(o.strict?n.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(n.options[c]=ds(dt(u))),t+1)}if(i.length===1){let a=hi(i,s);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?ps(a.name,c,t+2,n,s,o):(n.errors.push(`Option -${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}if(o.strict)n.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=r[t+1];if(cr(c))return n.options[i]=ds(dt(c)),t+2;n.options[i]=!0}return t+1}for(let a of i){let c=hi(a,s);c?c.type==="boolean"?n.options[c.name]=!0:n.errors.push(`Option -${a} requires a value`):o.strict?n.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(n.options[a]=!0)}return t+1}function ps(e,t,r,n,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?At(dt(t),i.type):dt(t);if(!i.choices.includes(c))return n.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),r}let a=i.type?At(dt(t),i.type):dt(t);if(i.type==="array"){let c=n.options[e];Array.isArray(c)?c.push(...a):n.options[e]=a}else n.options[e]=a}else o.strict?n.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(n.options[e]=ds(dt(t)));return r}function bb(e,t=!1){let r=new Map,n=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of n)o.short&&s.add(o.short);for(let[o,i]of n){let a=i.short??"";t&&!a&&(a=wb(o,s),a&&s.add(a));let c={name:o,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};r.set(o,c);for(let u of c.aliases)r.set(u,c)}return r}function wb(e,t){for(let r of e){if(!/[a-zA-Z]/.test(r))continue;let n=r.toLowerCase();if(!t.has(n))return n;let s=r.toUpperCase();if(!t.has(s))return s}return""}function hi(e,t){for(let r of t.values())if(r.short===e||r.aliases.includes(e))return r}function _b(e,t,r){for(let n of r.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let s=process.env[n.env];e.options[n.name]=n.type?At(s,n.type):s}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of t.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function Rb(e,t,r){if(t.options)for(let[n,s]of Object.entries(t.options))s.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of r)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function kb(e,t,r){for(let n of r.values()){let s=e.options[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}for(let n of t.positional??[]){let s=e.positional[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}}function Sb(e){return/^-\d+(\.\d+)?$/.test(e)}var il,tb,ul=h(()=>{il={"=":"data",":=":{to:"data",typed:!0},":":"meta"},tb=/^[a-z][a-z0-9+.-]*:\/\//i});function Eb(e){let t={};for(let[r,n]of Object.entries(e))t[r]={type:n.kind==="boolean"?"boolean":"string",...r.length===1?{short:r}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return t}function xb(e,t){let r=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){r.set(s,s);for(let i of o.aliases??[])r.set(i,s)}let n=new Map;for(let s=0;s<e.length;s+=1){let o=e[s];if(o==="--")break;let i=o.match(/^--([^=]+)(?:=(.*))?$/)??o.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=r.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&cr(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=n.get(a)??[];u.push(c),n.set(a,u)}return n}function zr(e,t,r={}){let s=cl({options:Eb(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=xb(e,t),a=s.errors.find(c=>/^Option --?\S+ requires a value$/.test(c));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(s.errors.length>0)throw new Error(s.errors[0]);if(r.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new yi(u.length===1?`-${u}`:`--${u}`,Object.keys(t).map(l=>l.length===1?`-${l}`:`--${l}`))}for(let[c,u]of Object.entries(t)){let l=s.options[c];l!==void 0&&(u.kind==="boolean"?o[c]=l:u.type==="array"?o[c]=(i.get(c)??[]).map(p=>u.coerce(p)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Tb(e){let t=new Map;for(let[r,n]of Object.entries(e)){t.set(r,r);for(let s of n.aliases??[])t.set(s,r)}return t}function It(e,t,r={}){let n=Tb(t),s=r.stopAtSeparator??!0,o={},i=[];for(let a=0;a<e.length;a+=1){let c=e[a];if(c==="--"&&s){i.push(...e.slice(a));break}let u=vb.exec(c)??Cb.exec(c),l=u===null?void 0:n.get(u[1]),p=l===void 0?void 0:t[l];if(l===void 0||p===void 0){i.push(c);continue}if(p.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&cr(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(p.type==="array"){let f=o[l]??[];f.push(p.coerce(d)),o[l]=f}else o[l]=p.coerce(d)}return{values:o,rest:i}}function bi(e,t){let[r,...n]=e;if(r!==void 0){for(let[o,i]of Object.entries(t.commands))if(r===o||(i.aliases??[]).includes(r))return{command:o,args:n};if(t.errorOnUnknownCommand&&!r.startsWith("-"))throw new Kr(r,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:n}}var yi,vb,Cb,Kr,wi=h(()=>{ul();yi=class extends Error{flag;known;constructor(t,r){super(`unknown flag '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=r}};vb=/^--([^=]+)(?:=([\s\S]*))?$/,Cb=/^-([^-=])(?:=([\s\S]*))?$/;Kr=class extends Error{token;known;constructor(t,r){super(`unknown command '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=r}}});function dl(e){return Ob.test(e)}var Ob,ll,pl=h(()=>{Ob=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,ll="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});function S(e,t){return new Yr(e,t)}function A(e,t){return new Lt(e,t)}function ur(e){return e instanceof Lt?e:e instanceof Yr?new Lt(e.line,e.reason):new Lt(0,String(e&&e.message?e.message:e))}var Yr,Lt,Xr=h(()=>{Yr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Lt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function fs(e){let t=e.split(`
11
+ `))}return r}function cl(e){let t=bb(e.options??{},e.autoShort??!1),r=nb(e.separators??il);return{schema:e,parse(n){return pb(n,e,t,r)},help(){return ub(e,e.formatter)}}}function pb(e,t,r,n){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(n.map(l=>l.to));for(let l of o)s[l]={};let i=0,a=t.positional??[],c=0,u=!1;for(;c<e.length;){let l=e[c];if(t.stopEarly&&i>0){s.rest=e.slice(c);break}if(l==="--"&&!u){u=!0,c++;continue}if(u){if(i<a.length){let d=a[i];if(d.variadic){let f=[];for(;c<e.length;){let m=e[c];f.push(d.type?At(m,d.type):m),c++}s.positional[d.name]=f,i++}else{let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=hb(l,c,e,s,r,t);continue}if(l.startsWith("-")&&l.length>1&&!Sb(l)){c=yb(l,c,e,s,r,t);continue}let p=fb(l,n);if(p){let{key:d,value:f,config:m}=p,w=s,_=w[m.to]??(w[m.to]={});_[d]=m.typed?al(f):dt(f),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let m=[];for(;c<e.length&&!e[c].startsWith("-");){let w=e[c];m.push(d.type?At(w,d.type):w),c++}s.positional[d.name]=m,i++;continue}let f=d.type?At(l,d.type):l;s.positional[d.name]=f,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return _b(s,t,r),Rb(s,t,a),kb(s,t,r),s}function fb(e,t){if(tb.test(e))return null;for(let r of t){if(r.prefix&&e.startsWith(r.separator)){let s=e.slice(r.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(mb(i))return{key:i,value:a,config:r}}continue}let n=e.indexOf(r.separator);if(n>0){let s=e.slice(0,n),o=e.slice(n+r.separator.length);if(gb(s,o,r))return{key:s,value:o,config:r}}}return null}function mb(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function gb(e,t,r){return e?r.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((r.separator==="="||r.separator===":=")&&e.includes("/")):!1}function hb(e,t,r,n,s,o){let i=e.slice(2);if(i.startsWith("no-")){let c=i.slice(3),u=s.get(c);if(u?.negatable!==!1&&u?.type==="boolean")return n.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return fs(u,l,t+1,n,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?fs(a.name,c,t+2,n,s,o):(n.errors.push(`Option --${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}return o.strict?n.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(n.options[i]=!0),t+1}function yb(e,t,r,n,s,o){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),c=i.slice(0,a),u=i.slice(a+1),l=yi(c,s);return l?fs(l.name,u,t+1,n,s,o):(o.strict?n.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(n.options[c]=ps(dt(u))),t+1)}if(i.length===1){let a=yi(i,s);if(a){if(a.type!=="boolean"){let c=r[t+1];return cr(c)?fs(a.name,c,t+2,n,s,o):(n.errors.push(`Option -${i} requires a value`),t+1)}return n.options[a.name]=!0,t+1}if(o.strict)n.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=r[t+1];if(cr(c))return n.options[i]=ps(dt(c)),t+2;n.options[i]=!0}return t+1}for(let a of i){let c=yi(a,s);c?c.type==="boolean"?n.options[c.name]=!0:n.errors.push(`Option -${a} requires a value`):o.strict?n.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(n.options[a]=!0)}return t+1}function fs(e,t,r,n,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?At(dt(t),i.type):dt(t);if(!i.choices.includes(c))return n.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),r}let a=i.type?At(dt(t),i.type):dt(t);if(i.type==="array"){let c=n.options[e];Array.isArray(c)?c.push(...a):n.options[e]=a}else n.options[e]=a}else o.strict?n.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(n.options[e]=ps(dt(t)));return r}function bb(e,t=!1){let r=new Map,n=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of n)o.short&&s.add(o.short);for(let[o,i]of n){let a=i.short??"";t&&!a&&(a=wb(o,s),a&&s.add(a));let c={name:o,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};r.set(o,c);for(let u of c.aliases)r.set(u,c)}return r}function wb(e,t){for(let r of e){if(!/[a-zA-Z]/.test(r))continue;let n=r.toLowerCase();if(!t.has(n))return n;let s=r.toUpperCase();if(!t.has(s))return s}return""}function yi(e,t){for(let r of t.values())if(r.short===e||r.aliases.includes(e))return r}function _b(e,t,r){for(let n of r.values())if(e.options[n.name]===void 0)if(n.env&&process.env[n.env]!==void 0){let s=process.env[n.env];e.options[n.name]=n.type?At(s,n.type):s}else n.default!==void 0&&(e.options[n.name]=n.default);for(let n of t.positional??[])e.positional[n.name]===void 0&&n.default!==void 0&&(e.positional[n.name]=n.default)}function Rb(e,t,r){if(t.options)for(let[n,s]of Object.entries(t.options))s.required&&e.options[n]===void 0&&e.errors.push(`Missing required option: --${n}`);for(let n of r)n.required&&e.positional[n.name]===void 0&&e.errors.push(`Missing required argument: <${n.name}>`)}function kb(e,t,r){for(let n of r.values()){let s=e.options[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}for(let n of t.positional??[]){let s=e.positional[n.name];if(n.validate&&s!==void 0){let o=n.validate(s);o!==!0&&e.errors.push(o)}}}function Sb(e){return/^-\d+(\.\d+)?$/.test(e)}var il,tb,ul=h(()=>{il={"=":"data",":=":{to:"data",typed:!0},":":"meta"},tb=/^[a-z][a-z0-9+.-]*:\/\//i});function Eb(e){let t={};for(let[r,n]of Object.entries(e))t[r]={type:n.kind==="boolean"?"boolean":"string",...r.length===1?{short:r}:{},...n.aliases===void 0?{}:{aliases:n.aliases}};return t}function xb(e,t){let r=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){r.set(s,s);for(let i of o.aliases??[])r.set(i,s)}let n=new Map;for(let s=0;s<e.length;s+=1){let o=e[s];if(o==="--")break;let i=o.match(/^--([^=]+)(?:=(.*))?$/)??o.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=r.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&cr(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=n.get(a)??[];u.push(c),n.set(a,u)}return n}function zr(e,t,r={}){let s=cl({options:Eb(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=xb(e,t),a=s.errors.find(c=>/^Option --?\S+ requires a value$/.test(c));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(s.errors.length>0)throw new Error(s.errors[0]);if(r.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new bi(u.length===1?`-${u}`:`--${u}`,Object.keys(t).map(l=>l.length===1?`-${l}`:`--${l}`))}for(let[c,u]of Object.entries(t)){let l=s.options[c];l!==void 0&&(u.kind==="boolean"?o[c]=l:u.type==="array"?o[c]=(i.get(c)??[]).map(p=>u.coerce(p)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Tb(e){let t=new Map;for(let[r,n]of Object.entries(e)){t.set(r,r);for(let s of n.aliases??[])t.set(s,r)}return t}function It(e,t,r={}){let n=Tb(t),s=r.stopAtSeparator??!0,o={},i=[];for(let a=0;a<e.length;a+=1){let c=e[a];if(c==="--"&&s){i.push(...e.slice(a));break}let u=vb.exec(c)??Cb.exec(c),l=u===null?void 0:n.get(u[1]),p=l===void 0?void 0:t[l];if(l===void 0||p===void 0){i.push(c);continue}if(p.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&cr(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(p.type==="array"){let f=o[l]??[];f.push(p.coerce(d)),o[l]=f}else o[l]=p.coerce(d)}return{values:o,rest:i}}function wi(e,t){let[r,...n]=e;if(r!==void 0){for(let[o,i]of Object.entries(t.commands))if(r===o||(i.aliases??[]).includes(r))return{command:o,args:n};if(t.errorOnUnknownCommand&&!r.startsWith("-"))throw new Kr(r,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:n}}var bi,vb,Cb,Kr,_i=h(()=>{ul();bi=class extends Error{flag;known;constructor(t,r){super(`unknown flag '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=r}};vb=/^--([^=]+)(?:=([\s\S]*))?$/,Cb=/^-([^-=])(?:=([\s\S]*))?$/;Kr=class extends Error{token;known;constructor(t,r){super(`unknown command '${t}'; expected one of: ${r.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=r}}});function dl(e){return Ob.test(e)}var Ob,ll,pl=h(()=>{Ob=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,ll="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});function S(e,t){return new Yr(e,t)}function A(e,t){return new Lt(e,t)}function ur(e){return e instanceof Lt?e:e instanceof Yr?new Lt(e.line,e.reason):new Lt(0,String(e&&e.message?e.message:e))}var Yr,Lt,Xr=h(()=>{Yr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Lt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function ms(e){let t=e.split(`
12
12
  `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function De(e){return S(e,"invalid quoted string")}function Ne(e,t){if(e==="")return"";if(e.startsWith('"'))return fl(e,t);if(e.includes('"'))throw De(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Pb(e)?Number(e):e}function Xe(e,t){let r=e.trim();if(r.startsWith('"'))return[fl(r,t),!0];if(r.includes('"')||/\s/.test(r))throw S(t,"expected non-empty field name");return[r,!1]}function fl(e,t){if(e[0]!=='"')throw De(t);let r="",n=1;for(;n<e.length;){let s=e[n];if(n+=1,s==='"'){if(e.slice(n).trim()==="")return r;throw De(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
13
13
  `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw De(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw De(t);r+=String.fromCharCode(a),n+=4;break}default:throw De(t)}continue}if(s<" "&&s!==" ")throw De(t);r+=s}throw De(t)}function $t(e,t,r){if(e==="")return[];let n=[],s=0,o=!1,i=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(i){i=!1;continue}c==="\\"&&o?i=!0:c==='"'?o=!o:c===t&&!o&&(n.push(e.slice(s,a).trim()),s=a+1)}if(o||i)throw De(r);return n.push(e.slice(s).trim()),n}function ae(e,t,r){let n=!1,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"&&n)s=!0;else if(i==='"')n=!n;else if(i===t&&!n)return o}if(n||s)throw De(r);return-1}function Pb(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ab(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ib(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw S(0,"number is not representable in TOON");return String(e)}function Zr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Me(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Ib(e);if(typeof e=="string")return $b(e,t);throw S(0,"not a primitive")}function Lb(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Ee(e){return Lb(e)?e:ml(e)}function $b(e,t){return Db(e,t)?ml(e):e}function Db(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ab(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ml(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
- `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function lr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var M,_i=h(()=>{Xr();M=","});function Nb(e={}){return{indent:Math.max(1,e.indent??Ci),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Mb(e,t){let r=[],n=!1;return fs(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw S(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function L(e,t){let r=Nb(t),n=Mb(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Pi(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw xi(l,s.number);u=void 0}if(u!==void 0)return jb(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Ne(s.content.trim(),s.number);let i={index:0},a=Ti(n,i,0,r),c=n[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Ti(e,t,r,n){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<r)break;if(o.depth>r)throw S(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=Bb(e,t,r,n);yl(s,i,a,c,n,o.number)}return s}function Bb(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw S(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let m;try{m=Ub(a)}catch(_){if(n.strict)throw xi(_,s.number);t.index+=1;let g=Ri(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(c.trim()!=="")throw S(s.number,"expected keyed map rows");let w=Fb(m,e,t,r+1,n);return{key:m.key,quoted:m.keyQuoted,value:w}}if(u!==-1){let m;try{m=Pi(a,i)}catch(_){if(n.strict)throw xi(_,s.number);t.index+=1;let g=Ri(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(m.key===""&&!m.keyQuoted)throw S(s.number,"expected non-empty field name");let w=Oi(m,c,e,t,r,n);return{key:m.key,quoted:m.keyQuoted,value:w}}let[p,d]=Xe(a,s.number);if(p===""&&!d)throw S(s.number,"expected non-empty field name");t.index+=1;let f=Ri(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function Ri(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ne(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Ti(e,t,r+1,o):{}}function Fb(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw S(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw S(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw S(i.number,"expected `key: value`");let[c,u]=Xe(i.content.slice(0,a),i.number);if(c===""&&!u)throw S(i.number,"expected non-empty field name");let l=$t(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw S(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,f)=>{Qr(p,d,Ne(l[f],i.number),s,i.number)}),yl(o,c,u,p,s,i.number),r.index+=1}return o}function jb(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw S(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Oi(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Oi(e,t,r,n,s,o){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw S(i,"expected tabular rows");return Hb(e,e.fields,r,n,s+1,o)}if(a!==""){let c=$t(a,e.delimiter,i).map(u=>Ne(u,i));if(c.length!==e.len)throw S(i,"array length mismatch");return c}return Gb(e,r,n,s+1,o)}function Hb(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Si(r,n.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw S(c.number,"blank line inside array");if(!gl(c.content,e.delimiter,c.number))break;let u=$t(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Qr(l,p,Ne(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Si(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&gl(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return i}function gl(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Gb(e,t,r,n,s){let o=[];for(;o.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw Si(t,r.index);if(a.depth>n)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");o.push(Wb(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw S(i.number,"array length mismatch");return o}function Wb(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=Pi(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Oi(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return Ti(i,{index:0},r+1,n)}return t.index+=1,Ne(o,s.number)}function Si(e,t){let r=e[t]??e[e.length-1];return S(r===void 0?1:r.number,"array length mismatch")}function Pi(e,t){if(t===-1)throw S(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw S(0,"invalid array header");let s,o;try{[s,o]=Xe(r.slice(0,n),0)}catch{throw S(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw S(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw S(0,"invalid array header");let l=Number.parseInt(u,10),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw S(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=hl(d.slice(1,-1),p)}catch(m){throw S(0,m.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw S(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Ub(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw S(0,"invalid keyed map header");let r,n;try{[r,n]=Xe(e.slice(0,t),0)}catch{throw S(0,"invalid keyed map header")}if(r===""&&!n)throw S(0,"expected non-empty field name");let s;try{s=hl(e.slice(t+1,-1),M)}catch(o){throw S(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:M,fields:s}}function hl(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw S(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[p]=Xe(e.slice(l,n),0);if(p==="")throw S(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw S(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw S(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw S(0,"invalid array header")}if(u===0)throw S(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw S(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Jb(r[a],r[c])||Ei(r[a],r[c])||Ei(r[c],r[a]))throw S(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw S(0,"duplicate key");i.add(c)}return r}function Jb(e,t){return e.length===t.length&&Ei(e,t)}function Ei(e,t){return t.every((r,n)=>e[n]===r)}function xi(e,t){return S(t,e.reason??String(e.message))}function yl(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(qb)){Qr(e,i,n,s,o);return}}Qr(e,[t],n,s,o)}function Qr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw S(s,"duplicate key");lr(e,o,r);return}if(i&&!dr(e[o])){if(n.strict)throw S(s,"path expansion conflict");lr(e,o,{})}else i||lr(e,o,{});Qr(e[o],t.slice(1),r,n,s)}function qb(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Ai(n,void 0,e,0,!1,r):dr(e)?bl(n,e,0,r):n.push(Me(e,M)),n.join("")}function en(e,t){e.push(" ".repeat(t*Ci))}function bl(e,t,r,n){for(let[s,o]of Object.entries(t))en(e,r),vi(e,s,o,r,n)}function vi(e,t,r,n,s){if(Array.isArray(r)){Ai(e,t,r,n,!1,s);return}if(dr(r)){let o=s.keyedMapCollapse?Kb(r,s):void 0;if(o!==void 0){e.push(Ee(t),"{",o.fields.map(Ii).join(M),`}:
14
+ `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function lr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var M,Ri=h(()=>{Xr();M=","});function Nb(e={}){return{indent:Math.max(1,e.indent??Ti),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Mb(e,t){let r=[],n=!1;return ms(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw S(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function L(e,t){let r=Nb(t),n=Mb(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ai(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw vi(l,s.number);u=void 0}if(u!==void 0)return jb(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Ne(s.content.trim(),s.number);let i={index:0},a=Oi(n,i,0,r),c=n[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Oi(e,t,r,n){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<r)break;if(o.depth>r)throw S(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=Bb(e,t,r,n);yl(s,i,a,c,n,o.number)}return s}function Bb(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw S(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let m;try{m=Ub(a)}catch(_){if(n.strict)throw vi(_,s.number);t.index+=1;let g=ki(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(c.trim()!=="")throw S(s.number,"expected keyed map rows");let w=Fb(m,e,t,r+1,n);return{key:m.key,quoted:m.keyQuoted,value:w}}if(u!==-1){let m;try{m=Ai(a,i)}catch(_){if(n.strict)throw vi(_,s.number);t.index+=1;let g=ki(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:g}}if(m.key===""&&!m.keyQuoted)throw S(s.number,"expected non-empty field name");let w=Pi(m,c,e,t,r,n);return{key:m.key,quoted:m.keyQuoted,value:w}}let[p,d]=Xe(a,s.number);if(p===""&&!d)throw S(s.number,"expected non-empty field name");t.index+=1;let f=ki(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function ki(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ne(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Oi(e,t,r+1,o):{}}function Fb(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw S(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw S(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw S(i.number,"expected `key: value`");let[c,u]=Xe(i.content.slice(0,a),i.number);if(c===""&&!u)throw S(i.number,"expected non-empty field name");let l=$t(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw S(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,f)=>{Qr(p,d,Ne(l[f],i.number),s,i.number)}),yl(o,c,u,p,s,i.number),r.index+=1}return o}function jb(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw S(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Pi(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Pi(e,t,r,n,s,o){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw S(i,"expected tabular rows");return Hb(e,e.fields,r,n,s+1,o)}if(a!==""){let c=$t(a,e.delimiter,i).map(u=>Ne(u,i));if(c.length!==e.len)throw S(i,"array length mismatch");return c}return Gb(e,r,n,s+1,o)}function Hb(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Ei(r,n.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw S(c.number,"blank line inside array");if(!gl(c.content,e.delimiter,c.number))break;let u=$t(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Qr(l,p,Ne(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Ei(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&gl(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return i}function gl(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Gb(e,t,r,n,s){let o=[];for(;o.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw Ei(t,r.index);if(a.depth>n)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");o.push(Wb(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw S(i.number,"array length mismatch");return o}function Wb(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=Ai(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Pi(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return Oi(i,{index:0},r+1,n)}return t.index+=1,Ne(o,s.number)}function Ei(e,t){let r=e[t]??e[e.length-1];return S(r===void 0?1:r.number,"array length mismatch")}function Ai(e,t){if(t===-1)throw S(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw S(0,"invalid array header");let s,o;try{[s,o]=Xe(r.slice(0,n),0)}catch{throw S(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw S(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw S(0,"invalid array header");let l=Number.parseInt(u,10),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw S(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=hl(d.slice(1,-1),p)}catch(m){throw S(0,m.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw S(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Ub(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw S(0,"invalid keyed map header");let r,n;try{[r,n]=Xe(e.slice(0,t),0)}catch{throw S(0,"invalid keyed map header")}if(r===""&&!n)throw S(0,"expected non-empty field name");let s;try{s=hl(e.slice(t+1,-1),M)}catch(o){throw S(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:M,fields:s}}function hl(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw S(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[p]=Xe(e.slice(l,n),0);if(p==="")throw S(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw S(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw S(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw S(0,"invalid array header")}if(u===0)throw S(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw S(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Jb(r[a],r[c])||xi(r[a],r[c])||xi(r[c],r[a]))throw S(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw S(0,"duplicate key");i.add(c)}return r}function Jb(e,t){return e.length===t.length&&xi(e,t)}function xi(e,t){return t.every((r,n)=>e[n]===r)}function vi(e,t){return S(t,e.reason??String(e.message))}function yl(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(qb)){Qr(e,i,n,s,o);return}}Qr(e,[t],n,s,o)}function Qr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw S(s,"duplicate key");lr(e,o,r);return}if(i&&!dr(e[o])){if(n.strict)throw S(s,"path expansion conflict");lr(e,o,{})}else i||lr(e,o,{});Qr(e[o],t.slice(1),r,n,s)}function qb(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Ii(n,void 0,e,0,!1,r):dr(e)?bl(n,e,0,r):n.push(Me(e,M)),n.join("")}function en(e,t){e.push(" ".repeat(t*Ti))}function bl(e,t,r,n){for(let[s,o]of Object.entries(t))en(e,r),Ci(e,s,o,r,n)}function Ci(e,t,r,n,s){if(Array.isArray(r)){Ii(e,t,r,n,!1,s);return}if(dr(r)){let o=s.keyedMapCollapse?Kb(r,s):void 0;if(o!==void 0){e.push(Ee(t),"{",o.fields.map(Li).join(M),`}:
15
15
  `);for(let[i,a]of Object.entries(r))en(e,n+1),e.push(Ee(i),": ",o.paths.map(c=>Me(kl(a,c),M)).join(M),`
16
16
  `);return}e.push(Ee(t),`:
17
17
  `),bl(e,r,n+1,s);return}e.push(Ee(t),": ",Me(r,M),`
18
- `)}function Ai(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Ee(t),`: []
18
+ `)}function Ii(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Ee(t),`: []
19
19
  `):s?e.push(`[0]:
20
20
  `):e.push(`[]
21
- `);return}if(r.every(Zr)){ki(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Me(a,M)).join(M)),e.push(`
22
- `);return}let i=s?void 0:wl(r,o);if(i!==void 0){ki(e,t,r.length,i.fields),e.push(`
21
+ `);return}if(r.every(Zr)){Si(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Me(a,M)).join(M)),e.push(`
22
+ `);return}let i=s?void 0:wl(r,o);if(i!==void 0){Si(e,t,r.length,i.fields),e.push(`
23
23
  `);for(let a of r)en(e,n+1),e.push(i.paths.map(c=>Me(kl(a,c),M)).join(M)),e.push(`
24
- `);return}ki(e,t,r.length,void 0),e.push(`
25
- `);for(let a of r)en(e,n+1),Vb(e,a,n+1,o)}function Vb(e,t,r,n){if(Array.isArray(t)){e.push("- "),Ai(e,void 0,t,r,!0,n);return}if(dr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
- `);return}e.push("- "),vi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))en(e,r+1),vi(e,o,i,r+1,n);return}e.push("- ",Me(t,M),`
27
- `)}function ki(e,t,r,n){t!==void 0&&e.push(Ee(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ii).join(M),"}"),e.push(":")}function wl(e,t){let r=_l(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Rl(r)}}function Kb(e,t){let r=Object.values(e);if(!(r.length<2))return wl(r,t)}function _l(e,t){let r=e[0]?.value;if(!dr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!dr(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Zr(a)))continue;if(!t.nestedTabularHeaders)return;let i=_l(o,t);if(i===void 0)return;s.children=i}return n}}function Rl(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Rl(r.children,n)})}function kl(e,t){let r=e;for(let n of t)r=r[n];return r}function Ii(e){return e.children===void 0?Ee(e.key):`${Ee(e.key)}{${e.children.map(Ii).join(M)}}`}var Ci,tn=h(()=>{Xr();_i();Ci=2});var Sl=h(()=>{tn()});function Yb(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function $l(e,t){if(!Ll.test(e))throw A(t,"invalid tag")}function Xb(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ll.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Zb(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Al.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?M:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),$l(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),p;try{p=$t(l,a,t).map(d=>Xe(d,t)[0])}catch(d){throw ur(d)}if(p.length===0||p.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Qb(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function El(e,t,r,n){let s;try{s=$t(e,t,n)}catch(o){throw ur(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Ne(o,n)}catch(i){throw ur(i)}return s}function ew(e,t,r){let n={};return e.forEach((s,o)=>{try{lr(n,s,Ne(t[o],r))}catch(i){throw ur(i)}}),n}function tw(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=Yb(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=Zb(e,t);if(s!==null)return s.continuation?(Qb(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Xb(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:El(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:El(e,r.delimiter,r.fields.length,t)}}function rw(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,m){let w=o.at(-1);if(w!==void 0&&w.lane===f.lane&&w.delimiter===f.delimiter&&w.fieldText===f.fieldText){w.rows.push(m);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[m]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(f,m,w){let _=n.get(f);if(_===void 0){if(n.size>=Il)throw A(w,"too many tagged lanes");_={segments:[],current:null},n.set(f,_),r.push(f)}else _.current!==null&&_.segments.push(_.current);_.current={lane:f,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[]},_.delimiter=m.delimiter,_.fields=m.fields,_.fieldText=m.fieldText}if(fs(e).forEach((f,m)=>{let w=m+1;if(f==="")return;let _=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},g=tw(f,w,_);if(g.kind==="trailer"){l(),i=null;return}if(g.kind!=="continuation"){if(g.kind==="tag-header"){c=!0,p(g.header.tag,g.header,w);return}if(g.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:g.header.delimiter,fields:g.header.fields,fieldText:g.header.fieldText,rows:[]};return}if(g.kind==="tagged-row"){c=!0;let y=n.get(g.tag).current;y.rows.push(g.cells),u(y,g.cells);return}if(i===null)throw A(w,"row before header");i.rows.push(g.cells),u(i,g.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let m=n.get(f);d.push(...m.segments),m.current!==null&&d.push(m.current)}return t.preserveInterleaving===!0?o:d}function Dt(e){return rw(e).flatMap(t=>t.rows.map(r=>ew(t.fields,r,0)))}function nw(e){if(!Al.includes(e))throw A(0,"invalid header delimiter")}function xl(e,t,r=!1){return`[${`${r?"~":""}${e===M?"":e}`}]{${t}}:
24
+ `);return}Si(e,t,r.length,void 0),e.push(`
25
+ `);for(let a of r)en(e,n+1),Vb(e,a,n+1,o)}function Vb(e,t,r,n){if(Array.isArray(t)){e.push("- "),Ii(e,void 0,t,r,!0,n);return}if(dr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
+ `);return}e.push("- "),Ci(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))en(e,r+1),Ci(e,o,i,r+1,n);return}e.push("- ",Me(t,M),`
27
+ `)}function Si(e,t,r,n){t!==void 0&&e.push(Ee(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Li).join(M),"}"),e.push(":")}function wl(e,t){let r=_l(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Rl(r)}}function Kb(e,t){let r=Object.values(e);if(!(r.length<2))return wl(r,t)}function _l(e,t){let r=e[0]?.value;if(!dr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!dr(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Zr(a)))continue;if(!t.nestedTabularHeaders)return;let i=_l(o,t);if(i===void 0)return;s.children=i}return n}}function Rl(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Rl(r.children,n)})}function kl(e,t){let r=e;for(let n of t)r=r[n];return r}function Li(e){return e.children===void 0?Ee(e.key):`${Ee(e.key)}{${e.children.map(Li).join(M)}}`}var Ti,tn=h(()=>{Xr();Ri();Ti=2});var Sl=h(()=>{tn()});function Yb(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function $l(e,t){if(!Ll.test(e))throw A(t,"invalid tag")}function Xb(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ll.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Zb(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Al.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?M:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),$l(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),p;try{p=$t(l,a,t).map(d=>Xe(d,t)[0])}catch(d){throw ur(d)}if(p.length===0||p.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Qb(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function El(e,t,r,n){let s;try{s=$t(e,t,n)}catch(o){throw ur(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Ne(o,n)}catch(i){throw ur(i)}return s}function ew(e,t,r){let n={};return e.forEach((s,o)=>{try{lr(n,s,Ne(t[o],r))}catch(i){throw ur(i)}}),n}function tw(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=Yb(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=Zb(e,t);if(s!==null)return s.continuation?(Qb(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Xb(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:El(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:El(e,r.delimiter,r.fields.length,t)}}function rw(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,m){let w=o.at(-1);if(w!==void 0&&w.lane===f.lane&&w.delimiter===f.delimiter&&w.fieldText===f.fieldText){w.rows.push(m);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[m]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(f,m,w){let _=n.get(f);if(_===void 0){if(n.size>=Il)throw A(w,"too many tagged lanes");_={segments:[],current:null},n.set(f,_),r.push(f)}else _.current!==null&&_.segments.push(_.current);_.current={lane:f,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[]},_.delimiter=m.delimiter,_.fields=m.fields,_.fieldText=m.fieldText}if(ms(e).forEach((f,m)=>{let w=m+1;if(f==="")return;let _=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},g=tw(f,w,_);if(g.kind==="trailer"){l(),i=null;return}if(g.kind!=="continuation"){if(g.kind==="tag-header"){c=!0,p(g.header.tag,g.header,w);return}if(g.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:g.header.delimiter,fields:g.header.fields,fieldText:g.header.fieldText,rows:[]};return}if(g.kind==="tagged-row"){c=!0;let y=n.get(g.tag).current;y.rows.push(g.cells),u(y,g.cells);return}if(i===null)throw A(w,"row before header");i.rows.push(g.cells),u(i,g.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let m=n.get(f);d.push(...m.segments),m.current!==null&&d.push(m.current)}return t.preserveInterleaving===!0?o:d}function Dt(e){return rw(e).flatMap(t=>t.rows.map(r=>ew(t.fields,r,0)))}function nw(e){if(!Al.includes(e))throw A(0,"invalid header delimiter")}function xl(e,t,r=!1){return`[${`${r?"~":""}${e===M?"":e}`}]{${t}}:
28
28
  `}function vl(e,t){return`[]<${e}>{${t}}:
29
- `}function Li(e,t){return t.map(Ee).join(e)}function sw(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Xe(String(t),0)}catch(n){throw ur(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function Cl(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Tl(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function ow(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Ol(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Zr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function iw(e){return JSON.stringify([...e].sort())}function Pl(e,t){let r=iw(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Nt({delimiter:e=M,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){nw(e),Tl(r),Tl(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
30
- `,m=()=>ow(d,c,u)?(c=0,u=0,xl(e,o,!0)):"",w=_=>{$l(_,0);let g=l.get(_);if(g===void 0){if(l.size>=Il)throw A(0,"too many tagged lanes");g={fields:null,fieldsByShape:new Map},l.set(_,g)}return g};return{push(_){if(p)throw A(0,"TOONL encoder is closed");let g=Pl(Ol(_),i),y="";(s===null||s.length!==g.length||s.some((T,B)=>T!==g[B]))&&(y+=f(),s=g,o=Li(e,s),a=0,c=0,u=0,y+=xl(e,o));let b=s.map(T=>Me(_[T],e));y+=m();let R=`${b.join(e)}
31
- `;return y+=R,a+=1,c+=1,u+=R.length,y},declareLane(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=sw(g),b=Li(M,y),R=w(_);return Cl(R.fields,y)?"":(R.fields=y,vl(_,b))},pushTagged(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=w(_),b=Pl(Ol(g),y.fieldsByShape),R=Li(M,b),T=b.map(Re=>Me(g[Re],M)),B="";return Cl(y.fields,b)||(y.fields=b,B+=vl(_,R)),`${B}${_}:${T.join(M)}
32
- `},end(){return p?"":(p=!0,f())}}}var Al,Il,Ll,MP,BP,Dl=h(()=>{Xr();tn();_i();Al=[M,"|"," "],Il=8,Ll=/^[A-Za-z0-9_-]+$/,MP=new TextEncoder,BP=new TextDecoder});var N=h(()=>{Xr();tn();tn();Sl();Dl()});function cw(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C($i(e))}
33
- `)}function $i(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??cw(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=uw(e.diagnostics,3)),t}function xe(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&dl(s)?{command:e,category:"transient",error:rn(s)||"GitHub API rate limit exceeded",help:ll,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:rn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:rn(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:rn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:rn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Nl(e,t,r,n){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function rn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function uw(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
- `).trim()}var Be=h(()=>{"use strict";pl();N()});function hs(e){let t={app:e,version:_w(fr("__RED_BUILD_VERSION__",()=>"3.1.2")??"0.0.0-dev"),gitSha:fr("__RED_BUILD_GIT_SHA__",()=>"f2c351a37c544900447dd6b5775fe0a0fb63f4b7")??"unknown",buildTime:fr("__RED_BUILD_TIME__",()=>"2026-08-01T08:18:40Z")??"unknown",bundleAsset:fr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=fr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=fr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function _w(e){return e.startsWith("v")?e.slice(1):e}function Jl(e){return`${e.app} ${e.version} ${e.gitSha}`}function fr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Ni=h(()=>{});import{isAbsolute as Rw,join as Ze,resolve as Mi}from"node:path";function Ew(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Vl(e){return Ze(Ew(e),ql)}function Kl(e){return Ze(Vl(e),"state")}function zl(e){return Ze(Vl(e),"tmp")}function W(e){return Ze(Kl(e),"rsp")}function xw(e){return Ze(Kl(e),"red-skills.rdb")}function vw(e){return Ze(zl(e),"red-skills.rdb")}function Zl(e,t){let r=xw(e);if(t(r))return r;let n=vw(e);if(t(n))throw Cw();return r}function Cw(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Ql(e){return Ze(zl(e),"waits")}function ed(e){let t=e.overrideEnvVars??Bi;for(let n of t){let s=e.env[n];if(s)return Rw(s)?s:Mi(e.startDir,s)}let r=Mi(e.startDir);for(;;){if(e.exists(Ze(r,ql)))return r;let n=Ze(r,".."),s=Mi(n);if(s===r)break;r=s}return e.startDir}var ql,kw,Sw,Bi,Yl,Xl,me=h(()=>{ql=".red",kw="MEMORY_ROOT",Sw="RED_BRAIN_ROOT",Bi=[kw,Sw];Yl=".red/state/red-skills.rdb";Xl=".red/tmp/red-skills.rdb"});function U(e){return C(e,{keyedMapCollapse:!0})}var Tw,Ow,wA,Qe=h(()=>{N();me();Tw=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Ow=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],wA=[...Tw,...Ow]});function nn(e){let{values:t,rest:r}=It(e,{query:td.query},rd);return{argv:r,query:t.query?.trim()||void 0}}function nd(e){let{values:t,rest:r}=It(e,td,rd);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function Pw(e,t){if(!t)return!0;let r=Fi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>Pw(r,t)):[...e]}function et(e,t){return ji(e,t,{includeLegacyHelp:!0})}function ji(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Fi(e){return Array.isArray(e)?e.map(Fi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Fi).join(" "):String(e??"")}var td,rd,sn=h(()=>{"use strict";wi();td={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},rd={stopAtSeparator:!1}});var Es={};F(Es,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>ys,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>bs,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>_s,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Rs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ws,RSP_OVERHEAD_FAMILIES:()=>Mw,RSP_OVERHEAD_LEDGER_FILE:()=>id,RSP_OVERHEAD_SCHEMA_VERSION:()=>ad,classifyOverheadSample:()=>Wi,noteChildProcessMs:()=>ud,noteSelfStateBytesRead:()=>cn,overheadCounters:()=>un,overheadFamilyDisabled:()=>Ji,overheadHealth:()=>ft,overheadLedgerPath:()=>Ui,overheadMsOf:()=>cd,overheadTelemetryFields:()=>ks,readOverheadLedger:()=>on,readSelfStateFile:()=>Ss,readSelfStateFileSync:()=>jw,recordOverheadSample:()=>an,resetOverheadCounters:()=>Fw,resetOverheadLedger:()=>Bw,startChildProcessTimer:()=>re});import{existsSync as Aw,mkdirSync as Iw,readFileSync as sd,renameSync as Lw,writeFileSync as $w}from"node:fs";import{readFile as Dw}from"node:fs/promises";import{dirname as Nw,join as od}from"node:path";function cd(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Gi(t)):0}function Wi(e,t=ve){let r=cd(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function ks(e,t=ve){let r=Wi(e,t);return{wrapper_ms:Gi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Gi(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Ui(e){return od(W(e),id)}function on(e){try{let t=sd(Ui(e),"utf8"),r=Uw(t);if(Jw(r))return r}catch{}return{version:1,families:{}}}function an(e,t,r=ve,n=Date.now()){let s=on(e),o=Wi(t,r),i=s.families[t.family]??Ww(t.family,n),a=Ki(i,n)?ld(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=Hw(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,dd(e,s),u}function Ji(e,t,r=Date.now()){let n=on(e).families[t];return!n?.disabled||Ki(n,r)?null:n}function Bw(e,t){let r=on(e);return t?delete r.families[t]:r.families={},dd(e,r),r}function ft(e,t=ve,r=Date.now()){let n=Object.values(on(e).families).map(a=>Ki(a,r)?ld(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:ad,verdict:i,summary:Gw(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function cn(e){Number.isFinite(e)&&e>0&&(qi+=e)}function ud(e){Number.isFinite(e)&&e>0&&(Vi+=e)}function un(){return{selfStateBytesRead:qi,childMs:Vi}}function Fw(){qi=0,Vi=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,ud(Number(process.hrtime.bigint()-e)/1e6))}}async function Ss(e){let t=await Dw(e,"utf8");return cn(Buffer.byteLength(t)),t}function jw(e){let t=sd(e,"utf8");return cn(Buffer.byteLength(t)),t}function Hw(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function Gw(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function Ki(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function ld(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function Ww(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function dd(e,t){try{let r=Ui(e);if(!Aw(od(e,".red")))return;Iw(Nw(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;$w(n,`${C(t)}
35
- `,{encoding:"utf8",mode:384}),Lw(n,r)}catch{}}function Uw(e){try{return JSON.parse(e)}catch{return L(e)}}function Jw(e){return!Hi(e)||e.version!==1||!Hi(e.families)?!1:Object.values(e.families).every(qw)}function qw(e){return Hi(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Hi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var id,ad,ys,bs,ws,_s,Rs,Mw,ve,qi,Vi,J=h(()=>{"use strict";me();N();id="overhead-budget.toon",ad="red.rsp.overhead.v1",ys=250,bs=1024*1024,ws=64*1024,_s=3,Rs=6*60*60*1e3,Mw=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:ys,maxSelfStateBytes:bs,netLossFloorBytes:ws,consecutiveBreaches:_s,cooldownMs:Rs};qi=0,Vi=0});function md(e){return e.trimStart().startsWith("{")?"json":"toon"}function Yi(e){let t=0;for(;e[t]===`
29
+ `}function $i(e,t){return t.map(Ee).join(e)}function sw(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Xe(String(t),0)}catch(n){throw ur(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function Cl(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Tl(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function ow(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Ol(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Zr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function iw(e){return JSON.stringify([...e].sort())}function Pl(e,t){let r=iw(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Nt({delimiter:e=M,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){nw(e),Tl(r),Tl(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
30
+ `,m=()=>ow(d,c,u)?(c=0,u=0,xl(e,o,!0)):"",w=_=>{$l(_,0);let g=l.get(_);if(g===void 0){if(l.size>=Il)throw A(0,"too many tagged lanes");g={fields:null,fieldsByShape:new Map},l.set(_,g)}return g};return{push(_){if(p)throw A(0,"TOONL encoder is closed");let g=Pl(Ol(_),i),y="";(s===null||s.length!==g.length||s.some((T,B)=>T!==g[B]))&&(y+=f(),s=g,o=$i(e,s),a=0,c=0,u=0,y+=xl(e,o));let b=s.map(T=>Me(_[T],e));y+=m();let R=`${b.join(e)}
31
+ `;return y+=R,a+=1,c+=1,u+=R.length,y},declareLane(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=sw(g),b=$i(M,y),R=w(_);return Cl(R.fields,y)?"":(R.fields=y,vl(_,b))},pushTagged(_,g){if(p)throw A(0,"TOONL encoder is closed");let y=w(_),b=Pl(Ol(g),y.fieldsByShape),R=$i(M,b),T=b.map(Re=>Me(g[Re],M)),B="";return Cl(y.fields,b)||(y.fields=b,B+=vl(_,R)),`${B}${_}:${T.join(M)}
32
+ `},end(){return p?"":(p=!0,f())}}}var Al,Il,Ll,BP,FP,Dl=h(()=>{Xr();tn();Ri();Al=[M,"|"," "],Il=8,Ll=/^[A-Za-z0-9_-]+$/,BP=new TextEncoder,FP=new TextDecoder});var N=h(()=>{Xr();tn();tn();Sl();Dl()});function cw(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C(Di(e))}
33
+ `)}function Di(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??cw(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=uw(e.diagnostics,3)),t}function xe(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&dl(s)?{command:e,category:"transient",error:rn(s)||"GitHub API rate limit exceeded",help:ll,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:rn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:rn(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:rn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:rn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Nl(e,t,r,n){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function rn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function uw(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
+ `).trim()}var Be=h(()=>{"use strict";pl();N()});function ys(e){let t={app:e,version:_w(fr("__RED_BUILD_VERSION__",()=>"3.2.0")??"0.0.0-dev"),gitSha:fr("__RED_BUILD_GIT_SHA__",()=>"bc031bb41bb2483b8b2f83d2f3e0d77120904fe4")??"unknown",buildTime:fr("__RED_BUILD_TIME__",()=>"2026-08-01T11:57:11Z")??"unknown",bundleAsset:fr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=fr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=fr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function _w(e){return e.startsWith("v")?e.slice(1):e}function Jl(e){return`${e.app} ${e.version} ${e.gitSha}`}function fr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var Mi=h(()=>{});import{isAbsolute as Rw,join as Ze,resolve as Bi}from"node:path";function Ew(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Vl(e){return Ze(Ew(e),ql)}function Kl(e){return Ze(Vl(e),"state")}function zl(e){return Ze(Vl(e),"tmp")}function W(e){return Ze(Kl(e),"rsp")}function xw(e){return Ze(Kl(e),"red-skills.rdb")}function vw(e){return Ze(zl(e),"red-skills.rdb")}function Zl(e,t){let r=xw(e);if(t(r))return r;let n=vw(e);if(t(n))throw Cw();return r}function Cw(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Ql(e){return Ze(zl(e),"waits")}function ed(e){let t=e.overrideEnvVars??Fi;for(let n of t){let s=e.env[n];if(s)return Rw(s)?s:Bi(e.startDir,s)}let r=Bi(e.startDir);for(;;){if(e.exists(Ze(r,ql)))return r;let n=Ze(r,".."),s=Bi(n);if(s===r)break;r=s}return e.startDir}var ql,kw,Sw,Fi,Yl,Xl,me=h(()=>{ql=".red",kw="MEMORY_ROOT",Sw="RED_BRAIN_ROOT",Fi=[kw,Sw];Yl=".red/state/red-skills.rdb";Xl=".red/tmp/red-skills.rdb"});function U(e){return C(e,{keyedMapCollapse:!0})}var Tw,Ow,_A,Qe=h(()=>{N();me();Tw=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Ow=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],_A=[...Tw,...Ow]});function nn(e){let{values:t,rest:r}=It(e,{query:td.query},rd);return{argv:r,query:t.query?.trim()||void 0}}function nd(e){let{values:t,rest:r}=It(e,td,rd);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function Pw(e,t){if(!t)return!0;let r=ji(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>Pw(r,t)):[...e]}function et(e,t){return Hi(e,t,{includeLegacyHelp:!0})}function Hi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function ji(e){return Array.isArray(e)?e.map(ji).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ji).join(" "):String(e??"")}var td,rd,sn=h(()=>{"use strict";_i();td={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},rd={stopAtSeparator:!1}});var xs={};F(xs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>ws,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Rs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>ks,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>_s,RSP_OVERHEAD_FAMILIES:()=>Mw,RSP_OVERHEAD_LEDGER_FILE:()=>id,RSP_OVERHEAD_SCHEMA_VERSION:()=>ad,classifyOverheadSample:()=>Ui,noteChildProcessMs:()=>ud,noteSelfStateBytesRead:()=>cn,overheadCounters:()=>un,overheadFamilyDisabled:()=>qi,overheadHealth:()=>ft,overheadLedgerPath:()=>Ji,overheadMsOf:()=>cd,overheadTelemetryFields:()=>Ss,readOverheadLedger:()=>on,readSelfStateFile:()=>Es,readSelfStateFileSync:()=>jw,recordOverheadSample:()=>an,resetOverheadCounters:()=>Fw,resetOverheadLedger:()=>Bw,startChildProcessTimer:()=>re});import{existsSync as Aw,mkdirSync as Iw,readFileSync as sd,renameSync as Lw,writeFileSync as $w}from"node:fs";import{readFile as Dw}from"node:fs/promises";import{dirname as Nw,join as od}from"node:path";function cd(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Wi(t)):0}function Ui(e,t=ve){let r=cd(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function Ss(e,t=ve){let r=Ui(e,t);return{wrapper_ms:Wi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Wi(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Ji(e){return od(W(e),id)}function on(e){try{let t=sd(Ji(e),"utf8"),r=Uw(t);if(Jw(r))return r}catch{}return{version:1,families:{}}}function an(e,t,r=ve,n=Date.now()){let s=on(e),o=Ui(t,r),i=s.families[t.family]??Ww(t.family,n),a=zi(i,n)?ld(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=Hw(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,dd(e,s),u}function qi(e,t,r=Date.now()){let n=on(e).families[t];return!n?.disabled||zi(n,r)?null:n}function Bw(e,t){let r=on(e);return t?delete r.families[t]:r.families={},dd(e,r),r}function ft(e,t=ve,r=Date.now()){let n=Object.values(on(e).families).map(a=>zi(a,r)?ld(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:ad,verdict:i,summary:Gw(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function cn(e){Number.isFinite(e)&&e>0&&(Vi+=e)}function ud(e){Number.isFinite(e)&&e>0&&(Ki+=e)}function un(){return{selfStateBytesRead:Vi,childMs:Ki}}function Fw(){Vi=0,Ki=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,ud(Number(process.hrtime.bigint()-e)/1e6))}}async function Es(e){let t=await Dw(e,"utf8");return cn(Buffer.byteLength(t)),t}function jw(e){let t=sd(e,"utf8");return cn(Buffer.byteLength(t)),t}function Hw(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function Gw(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function zi(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function ld(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function Ww(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function dd(e,t){try{let r=Ji(e);if(!Aw(od(e,".red")))return;Iw(Nw(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;$w(n,`${C(t)}
35
+ `,{encoding:"utf8",mode:384}),Lw(n,r)}catch{}}function Uw(e){try{return JSON.parse(e)}catch{return L(e)}}function Jw(e){return!Gi(e)||e.version!==1||!Gi(e.families)?!1:Object.values(e.families).every(qw)}function qw(e){return Gi(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Gi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var id,ad,bs,ws,_s,Rs,ks,Mw,ve,Vi,Ki,J=h(()=>{"use strict";me();N();id="overhead-budget.toon",ad="red.rsp.overhead.v1",bs=250,ws=1024*1024,_s=64*1024,Rs=3,ks=6*60*60*1e3,Mw=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:bs,maxSelfStateBytes:ws,netLossFloorBytes:_s,consecutiveBreaches:Rs,cooldownMs:ks};Vi=0,Ki=0});function md(e){return e.trimStart().startsWith("{")?"json":"toon"}function Xi(e){let t=0;for(;e[t]===`
36
36
  `||e[t]==="\r";)t+=1;let r=e.slice(t);if(r==="")return null;let n=md(r);if(n==="json"){let o=r.indexOf(`
37
37
  `);return o<0?null:{frame:r.slice(0,o),dialect:n,rest:r.slice(o+1)}}let s=r.indexOf(`
38
38
 
39
- `);return s<0?null:{frame:r.slice(0,s+1),dialect:n,rest:r.slice(s+2)}}function Xi(e){let t=md(e)==="json"?zi:pd,r=t===zi?pd:zi;try{return t(e)}catch(n){try{return r(e)}catch{throw n}}}function zi(e){return JSON.parse(e)}function pd(e){return L(e)}function Zi(e,t){if(t==="toon"){let r=Kw(e);if(r!==null)return r.endsWith(`
39
+ `);return s<0?null:{frame:r.slice(0,s+1),dialect:n,rest:r.slice(s+2)}}function Zi(e){let t=md(e)==="json"?Yi:pd,r=t===Yi?pd:Yi;try{return t(e)}catch(n){try{return r(e)}catch{throw n}}}function Yi(e){return JSON.parse(e)}function pd(e){return L(e)}function Qi(e,t){if(t==="toon"){let r=Kw(e);if(r!==null)return r.endsWith(`
40
40
  `)?`${r}
41
41
  `:`${r}
42
42
 
43
43
  `}return`${JSON.stringify(e)}
44
- `}function Kw(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let r=C(JSON.parse(t));return r.trim()===""?null:r}catch{return null}}function gd(e,t){return!fd(e)||!fd(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function fd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yd(e){return hd.has(e)?"json":Vw}function bd(e){hd.add(e)}var Vw,hd,wd=h(()=>{N();Vw="toon";hd=new Set});import{createHash as zw}from"node:crypto";import{constants as Qi}from"node:fs";import{mkdir as Yw,open as Xw}from"node:fs/promises";import{createConnection as Zw}from"node:net";import{tmpdir as Qw}from"node:os";import{dirname as e_,join as ea}from"node:path";async function Rd(e,t,r="resident server"){let n=e.wire,s=n??yd(e.socketPath),o=await _d(e,t,r,s);return n||s==="json"||!gd(t,o)?o:(bd(e.socketPath),await _d(e,t,r,"json"))}async function _d(e,t,r,n){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=Zw(e.socketPath),c=!1,u="",l=setTimeout(()=>{p(()=>i(new Error(`${r} timed out`))),a.destroy()},s);function p(d){c||(c=!0,clearTimeout(l),d())}a.on("connect",()=>{a.write(Zi(t,n))}),a.on("data",d=>{u+=d.toString("utf8");let f=Yi(u);f&&(u=f.rest,p(()=>{try{o(Xi(f.frame))}catch(m){i(m)}}),a.end())}),a.on("error",d=>p(()=>i(d))),a.on("close",()=>{c||p(()=>i(new Error(`${r} closed without response`)))})})}function kd(e,t,r){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",s=>{n+=s;let o=Yi(n);if(!o)return;n=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(Zi(a,o.dialect))}catch{}};(async()=>{let a;try{a=Xi(o.frame),await t(a,i)}catch(c){r(c,a,i)}finally{e.end()}})()})}async function Sd(e){await Yw(e_(e),{recursive:!0,mode:448});try{return await Xw(e,Qi.O_CREAT|Qi.O_EXCL|Qi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ta(e,t=1e3){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function Ed(e){let t=e.env??process.env,r=zw("sha256").update(e.key).digest("hex").slice(0,20),n=t.XDG_RUNTIME_DIR;if(n){let o=ea(n,"red-skills",r);if(ea(o,e.socketFileName).length<t_)return o}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid");return ea(Qw(),`red-skills-${s}`,r)}var t_,xs=h(()=>{wd();t_=108});async function mr(e,t){return await Rd(e,t,"resident rsp server")}var ra=h(()=>{xs()});var xd=h(()=>{"use strict";ra()});import{existsSync as r_,readdirSync as n_}from"node:fs";import{homedir as s_}from"node:os";import{basename as sa,dirname as na,join as ge,resolve as vs}from"node:path";function o_(e){return"command"in e}function Cs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??r_,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&c_(i))return a(vs(i),"caller-entry");let c=[];for(let[u,l]of l_(i,t.rootDir,r,t.listDir??m_))if(c.push(u),n(u))return a(u,l);return{diagnostic:tt,searched:c,...i?{callerEntry:vs(i)}:{}}}function Cd(e={},t={}){let r=Cs(e,t);if(o_(r))return r;throw new gr(r)}function c_(e){let t=sa(e);return t===Bt||oa.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:u_(vs(e))}function u_(e){let t=na(e);for(let r=0;r<4;r++){if(sa(t)==="rsp")return!0;let n=na(t);if(n===t)return!1;t=n}return!1}function*l_(e,t,r,n){if(e){let o=na(vs(e));yield[ge(o,Bt),"caller-sibling-bundle"];let i=i_.exec(sa(e));i&&(yield[ge(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ge(o,"..","dist",Bt),"caller-sibling-bundle"]}for(let o of a_){let i=r[o];i&&(yield[ge(i,"dist",Bt),"plugin-root-bundle"],yield[ge(i,"..","..","dist",Bt),"plugin-root-bundle"])}t&&(yield[ge(t,"dist",Bt),"repo-bundle"],yield[ge(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ge(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=d_(r);yield[ge(s,Bt),"bundle-cache"];for(let o of p_(s,n))yield[ge(s,o),"bundle-cache"]}function d_(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ge(e.HOME||s_(),".cache");return ge(t,"red-skills","bundles")}function p_(e,t){return t(e).filter(r=>oa.test(r)).sort((r,n)=>f_(vd(n),vd(r)))}function vd(e){return oa.exec(e)?.[1]??""}function f_(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function m_(e){try{return n_(e)}catch{return[]}}var tt,gr,Bt,i_,oa,a_,ia=h(()=>{tt="rsp-resident-entry-unresolved";gr=class extends Error{code=tt;searched;callerEntry;constructor(t){super(`${tt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
44
+ `}function Kw(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let r=C(JSON.parse(t));return r.trim()===""?null:r}catch{return null}}function gd(e,t){return!fd(e)||!fd(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function fd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yd(e){return hd.has(e)?"json":Vw}function bd(e){hd.add(e)}var Vw,hd,wd=h(()=>{N();Vw="toon";hd=new Set});import{createHash as zw}from"node:crypto";import{constants as ea}from"node:fs";import{mkdir as Yw,open as Xw}from"node:fs/promises";import{createConnection as Zw}from"node:net";import{tmpdir as Qw}from"node:os";import{dirname as e_,join as ln}from"node:path";async function Rd(e,t,r="resident server"){let n=e.wire,s=n??yd(e.socketPath),o=await _d(e,t,r,s);return n||s==="json"||!gd(t,o)?o:(bd(e.socketPath),await _d(e,t,r,"json"))}async function _d(e,t,r,n){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=Zw(e.socketPath),c=!1,u="",l=setTimeout(()=>{p(()=>i(new Error(`${r} timed out`))),a.destroy()},s);function p(d){c||(c=!0,clearTimeout(l),d())}a.on("connect",()=>{a.write(Qi(t,n))}),a.on("data",d=>{u+=d.toString("utf8");let f=Xi(u);f&&(u=f.rest,p(()=>{try{o(Zi(f.frame))}catch(m){i(m)}}),a.end())}),a.on("error",d=>p(()=>i(d))),a.on("close",()=>{c||p(()=>i(new Error(`${r} closed without response`)))})})}function kd(e,t,r){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",s=>{n+=s;let o=Xi(n);if(!o)return;n=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(Qi(a,o.dialect))}catch{}};(async()=>{let a;try{a=Zi(o.frame),await t(a,i)}catch(c){r(c,a,i)}finally{e.end()}})()})}async function Sd(e){await Yw(e_(e),{recursive:!0,mode:448});try{return await Xw(e,ea.O_CREAT|ea.O_EXCL|ea.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ta(e,t=1e3){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function Ed(e){let t=e.env??process.env,r=zw("sha256").update(e.key).digest("hex").slice(0,20),n=c=>ln(c,e.socketFileName).length<t_,s=t.XDG_RUNTIME_DIR;if(s){let c=ln(s,"red-skills",r);if(n(c))return c}let o=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=ln(`red-skills-${o}`,r),a=ln(Qw(),i);return n(a)||process.platform==="win32"?a:ln(r_,i)}var t_,r_,vs=h(()=>{wd();t_=108;r_="/tmp"});async function mr(e,t){return await Rd(e,t,"resident rsp server")}var ra=h(()=>{vs()});var xd=h(()=>{"use strict";ra()});import{existsSync as n_,readdirSync as s_}from"node:fs";import{homedir as o_}from"node:os";import{basename as sa,dirname as na,join as ge,resolve as Cs}from"node:path";function i_(e){return"command"in e}function Ts(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??n_,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&u_(i))return a(Cs(i),"caller-entry");let c=[];for(let[u,l]of d_(i,t.rootDir,r,t.listDir??g_))if(c.push(u),n(u))return a(u,l);return{diagnostic:tt,searched:c,...i?{callerEntry:Cs(i)}:{}}}function Cd(e={},t={}){let r=Ts(e,t);if(i_(r))return r;throw new gr(r)}function u_(e){let t=sa(e);return t===Bt||oa.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:l_(Cs(e))}function l_(e){let t=na(e);for(let r=0;r<4;r++){if(sa(t)==="rsp")return!0;let n=na(t);if(n===t)return!1;t=n}return!1}function*d_(e,t,r,n){if(e){let o=na(Cs(e));yield[ge(o,Bt),"caller-sibling-bundle"];let i=a_.exec(sa(e));i&&(yield[ge(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ge(o,"..","dist",Bt),"caller-sibling-bundle"]}for(let o of c_){let i=r[o];i&&(yield[ge(i,"dist",Bt),"plugin-root-bundle"],yield[ge(i,"..","..","dist",Bt),"plugin-root-bundle"])}t&&(yield[ge(t,"dist",Bt),"repo-bundle"],yield[ge(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ge(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=p_(r);yield[ge(s,Bt),"bundle-cache"];for(let o of f_(s,n))yield[ge(s,o),"bundle-cache"]}function p_(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ge(e.HOME||o_(),".cache");return ge(t,"red-skills","bundles")}function f_(e,t){return t(e).filter(r=>oa.test(r)).sort((r,n)=>m_(vd(n),vd(r)))}function vd(e){return oa.exec(e)?.[1]??""}function m_(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function g_(e){try{return s_(e)}catch{return[]}}var tt,gr,Bt,a_,oa,c_,ia=h(()=>{tt="rsp-resident-entry-unresolved";gr=class extends Error{code=tt;searched;callerEntry;constructor(t){super(`${tt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
45
45
  searched:
46
46
  ${t.searched.map(r=>` ${r}`).join(`
47
- `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Bt="rsp.bundle.min.mjs",i_=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,oa=/^rsp-(.+)\.bundle\.min\.mjs$/,a_=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as Id}from"node:crypto";import{spawn as Ld}from"node:child_process";import{readFileSync as g_}from"node:fs";import{mkdir as ua,readFile as $d,rename as h_,rm as Fe,stat as y_,writeFile as b_}from"node:fs/promises";import{dirname as Ft,join as rt,resolve as la}from"node:path";import{fileURLToPath as w_}from"node:url";function je(e){let t=P_(e)??la(e),r=O_(t),n=W(t);return{rootDir:t,socketPath:rt(r,"rsp.sock"),pidPath:rt(r,"rsp.pid"),lockPath:rt(r,"rsp.lock"),wakeLockPath:rt(t,".red","tmp","rsp","wake.lock"),summaryPath:rt(n,"rsp-status-summary.json"),registryPath:rt(n,"rsp-resident.pid.json")}}async function Ts(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await Pd(e.socketPath,t))return;await Od(e,t);let r=await Fd(e.lockPath);if(r)try{if(await Pd(e.socketPath,t))return;await Od(e,t),await k_(e.socketPath);let n=S_(e,t);await Td(e.socketPath,n);return}finally{await r.close(),await Fe(e.lockPath,{force:!0})}await Td(e.socketPath)}async function jt(e,t=200){try{return await Nd(e,t)!=null}catch{return!1}}async function Nd(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:Id(),op:"ping"});return r.ok?Gd(r.value)?{version:$_(r.value.version)}:{}:null}async function Os(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await jt(e.socketPath,50))return!1;let r=await Fd(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=jd(e,t);return Ld(n,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Md(e,t){try{await Ts(e,t)}finally{await Fe(e.wakeLockPath,{force:!0})}}async function dn(e){try{let t=v_(await $d(e,"utf8"));return D_(t)?t:null}catch{return null}}async function Ps(e,t){let r={version:Dd,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await ua(Ft(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await b_(n,`${C(r)}
48
- `,{encoding:"utf8",mode:384}),await h_(n,e)}async function As(e,t=process.pid){try{let r=await dn(e);if(r&&r.pid!==t)return;await Fe(e,{force:!0})}catch{}}async function ln(e){let t=await dn(e.registryPath);if(!t)try{return await $d(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await jt(t.socket_path,100);return r&&await T_(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function Bd(e){let t=await ln(e);return t.state==="registered-dead"||t.state==="invalid"?(await Fe(e.registryPath,{force:!0}),await ln(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ta(t.entry.pid),await Fe(e.registryPath,{force:!0}),await Fe(t.entry.socket_path,{force:!0}),await ln(e)):t}async function Td(e,t){let r=Date.now()+R_(),n;for(;Date.now()<r;){if(await jt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(aa("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(aa("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?aa("resident rsp server did not start",t):"resident rsp server did not start")}function R_(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:__}async function k_(e){await Fe(e,{force:!0})}function S_(e,t){let[r,n]=jd(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Ld(r,[...n,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=x_(`${i}${c}`,E_)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function aa(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
47
+ `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Bt="rsp.bundle.min.mjs",a_=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,oa=/^rsp-(.+)\.bundle\.min\.mjs$/,c_=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as Id}from"node:crypto";import{spawn as Ld}from"node:child_process";import{readFileSync as h_}from"node:fs";import{mkdir as ua,readFile as $d,rename as y_,rm as Fe,stat as b_,writeFile as w_}from"node:fs/promises";import{dirname as Ft,join as rt,resolve as la}from"node:path";import{fileURLToPath as __}from"node:url";function je(e){let t=A_(e)??la(e),r=P_(t),n=W(t);return{rootDir:t,socketPath:rt(r,"rsp.sock"),pidPath:rt(r,"rsp.pid"),lockPath:rt(r,"rsp.lock"),wakeLockPath:rt(t,".red","tmp","rsp","wake.lock"),summaryPath:rt(n,"rsp-status-summary.json"),registryPath:rt(n,"rsp-resident.pid.json")}}async function Os(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await Pd(e.socketPath,t))return;await Od(e,t);let r=await Fd(e.lockPath);if(r)try{if(await Pd(e.socketPath,t))return;await Od(e,t),await S_(e.socketPath);let n=E_(e,t);await Td(e.socketPath,n);return}finally{await r.close(),await Fe(e.lockPath,{force:!0})}await Td(e.socketPath)}async function jt(e,t=200){try{return await Nd(e,t)!=null}catch{return!1}}async function Nd(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:Id(),op:"ping"});return r.ok?Gd(r.value)?{version:D_(r.value.version)}:{}:null}async function Ps(e,t){if(await ua(Ft(e.socketPath),{recursive:!0,mode:448}),await jt(e.socketPath,50))return!1;let r=await Fd(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=jd(e,t);return Ld(n,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Md(e,t){try{await Os(e,t)}finally{await Fe(e.wakeLockPath,{force:!0})}}async function pn(e){try{let t=C_(await $d(e,"utf8"));return N_(t)?t:null}catch{return null}}async function As(e,t){let r={version:Dd,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await ua(Ft(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await w_(n,`${C(r)}
48
+ `,{encoding:"utf8",mode:384}),await y_(n,e)}async function Is(e,t=process.pid){try{let r=await pn(e);if(r&&r.pid!==t)return;await Fe(e,{force:!0})}catch{}}async function dn(e){let t=await pn(e.registryPath);if(!t)try{return await $d(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await jt(t.socket_path,100);return r&&await O_(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function Bd(e){let t=await dn(e);return t.state==="registered-dead"||t.state==="invalid"?(await Fe(e.registryPath,{force:!0}),await dn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ta(t.entry.pid),await Fe(e.registryPath,{force:!0}),await Fe(t.entry.socket_path,{force:!0}),await dn(e)):t}async function Td(e,t){let r=Date.now()+k_(),n;for(;Date.now()<r;){if(await jt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(aa("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(aa("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?aa("resident rsp server did not start",t):"resident rsp server did not start")}function k_(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:R_}async function S_(e){await Fe(e,{force:!0})}function E_(e,t){let[r,n]=jd(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Ld(r,[...n,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=v_(`${i}${c}`,x_)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function aa(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
49
49
  ${s}`),n.join(`
50
- `)}function x_(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function v_(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Od(e,t){try{let r=await dn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Mt(r.pid)){await Fe(e.registryPath,{force:!0});return}if(await jt(r.socket_path,100))return;if(Hd(t.clientVersion,r.resident_version)&&(await C_(r.pid,1500),!Mt(r.pid))){await Fe(e.registryPath,{force:!0});return}await ta(r.pid),await Fe(e.registryPath,{force:!0})}catch{}}async function C_(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}}async function T_(e){if(!e.startsWith("file://"))return!1;try{return await y_(w_(e)),!1}catch(t){return t.code==="ENOENT"}}function jd(e,t){let r=Cd(t,{rootDir:e.rootDir});return[r.command,r.args]}function O_(e){return Ed({key:e,socketFileName:"rsp.sock"})}function P_(e){let t=la(e);for(let r=0;r<32;r++){try{let s=ca(rt(t,".git"));if(s!=null)return A_(t,s)??t;if(ca(rt(t,".git","HEAD"))!=null||ca(rt(t,".red","config.yaml"))!=null)return t}catch{}let n=Ft(t);if(n===t)return null;t=n}return null}function A_(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=la(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Ft(Ft(Ft(n))):null}function ca(e){try{return g_(e,"utf8")}catch{return null}}async function Pd(e,t){let r=await Nd(e).catch(()=>null);return r?Hd(t.clientVersion,r.version)?(await I_(e,t.clientVersion),await N_(e),!1):!0:!1}async function I_(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:Id(),op:"handover",clientVersion:t})}catch{}}function Hd(e,t){return!e||!t?!1:L_(e,t)>0}function L_(e,t){let r=Ad(e),n=Ad(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ad(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Gd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $_(e){return typeof e=="string"&&e.length>0?e:void 0}function D_(e){return Gd(e)&&e.version===Dd&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function N_(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await jt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Dd,__,Fd,E_,Is=h(()=>{N();me();xs();ra();ia();ia();Dd=1,__=5e3;Fd=Sd;E_=8*1024});var Ht={};F(Ht,{RSP_ENTRY_UNRESOLVED:()=>tt,ResidentRspElisionStore:()=>pn,RspResidentEntryError:()=>gr,ensureResidentServer:()=>Ts,kickResidentServer:()=>Os,pingResident:()=>jt,readResidentRegistry:()=>dn,removeResidentRegistry:()=>As,residentRegistryStatus:()=>ln,resolveResidentPaths:()=>je,resolveRspEntry:()=>Cs,sweepResidentRegistry:()=>Bd,warmResidentServer:()=>Md,writeResidentRegistry:()=>Ps});import{randomUUID as M_}from"node:crypto";function Wd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pn,He=h(()=>{"use strict";xd();Is();pn=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?Wd(r)&&r.status==="expired"?r:!Wd(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Ts(this.paths,this.config);let r=await mr(this.paths,{...t,id:M_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function pa(e,t,r=Ud){let n=Math.max(0,Math.floor(e)),s=r in Jd?r:Ud,o=Jd[s],i=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:da(n,o),dollars_saved_low_usd:i==null?null:da(i,o),dollars_saved_high_usd:a==null?null:da(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:B_}}function da(e,t){return F_(Math.max(0,e)/1e6*t)}function fn(e){return`$${e.toFixed(6)}`}function F_(e){return Math.round(e*1e6)/1e6}var Ud,Jd,B_,fa=h(()=>{"use strict";Ud="gpt-5",Jd={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},B_="estimate derived from byte-based token estimate when token counts are estimated"});var mn={};F(mn,{isResidentEntryUnresolved:()=>Kd,reportResidentEntryDiagnostic:()=>ga,residentConfigFor:()=>Vd,residentElisionStore:()=>ma});function Vd(e,t){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs,...t?{clientVersion:t}:{}}}function ma(e,t,r={}){let n=r.paths??je(e);return new pn(n,Vd(t,hs("rsp").version),{ensureResident:r.ensureResident})}function ga(e){return Kd(e)?(qd||(qd=!0,process.stderr.write(`rsp: ${tt} \u2014 elision is off until an rsp entry is installed
50
+ `)}function v_(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function C_(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Od(e,t){try{let r=await pn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Mt(r.pid)){await Fe(e.registryPath,{force:!0});return}if(await jt(r.socket_path,100))return;if(Hd(t.clientVersion,r.resident_version)&&(await T_(r.pid,1500),!Mt(r.pid))){await Fe(e.registryPath,{force:!0});return}await ta(r.pid),await Fe(e.registryPath,{force:!0})}catch{}}async function T_(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}}async function O_(e){if(!e.startsWith("file://"))return!1;try{return await b_(__(e)),!1}catch(t){return t.code==="ENOENT"}}function jd(e,t){let r=Cd(t,{rootDir:e.rootDir});return[r.command,r.args]}function P_(e){return Ed({key:e,socketFileName:"rsp.sock"})}function A_(e){let t=la(e);for(let r=0;r<32;r++){try{let s=ca(rt(t,".git"));if(s!=null)return I_(t,s)??t;if(ca(rt(t,".git","HEAD"))!=null||ca(rt(t,".red","config.yaml"))!=null)return t}catch{}let n=Ft(t);if(n===t)return null;t=n}return null}function I_(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=la(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Ft(Ft(Ft(n))):null}function ca(e){try{return h_(e,"utf8")}catch{return null}}async function Pd(e,t){let r=await Nd(e).catch(()=>null);return r?Hd(t.clientVersion,r.version)?(await L_(e,t.clientVersion),await M_(e),!1):!0:!1}async function L_(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:Id(),op:"handover",clientVersion:t})}catch{}}function Hd(e,t){return!e||!t?!1:$_(e,t)>0}function $_(e,t){let r=Ad(e),n=Ad(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ad(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Gd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D_(e){return typeof e=="string"&&e.length>0?e:void 0}function N_(e){return Gd(e)&&e.version===Dd&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function M_(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await jt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Dd,R_,Fd,x_,Ls=h(()=>{N();me();vs();ra();ia();ia();Dd=1,R_=5e3;Fd=Sd;x_=8*1024});var Ht={};F(Ht,{RSP_ENTRY_UNRESOLVED:()=>tt,ResidentRspElisionStore:()=>fn,RspResidentEntryError:()=>gr,ensureResidentServer:()=>Os,kickResidentServer:()=>Ps,pingResident:()=>jt,readResidentRegistry:()=>pn,removeResidentRegistry:()=>Is,residentRegistryStatus:()=>dn,resolveResidentPaths:()=>je,resolveRspEntry:()=>Ts,sweepResidentRegistry:()=>Bd,warmResidentServer:()=>Md,writeResidentRegistry:()=>As});import{randomUUID as B_}from"node:crypto";function Wd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fn,He=h(()=>{"use strict";xd();Ls();fn=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?Wd(r)&&r.status==="expired"?r:!Wd(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Os(this.paths,this.config);let r=await mr(this.paths,{...t,id:B_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function pa(e,t,r=Ud){let n=Math.max(0,Math.floor(e)),s=r in Jd?r:Ud,o=Jd[s],i=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:da(n,o),dollars_saved_low_usd:i==null?null:da(i,o),dollars_saved_high_usd:a==null?null:da(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:F_}}function da(e,t){return j_(Math.max(0,e)/1e6*t)}function mn(e){return`$${e.toFixed(6)}`}function j_(e){return Math.round(e*1e6)/1e6}var Ud,Jd,F_,fa=h(()=>{"use strict";Ud="gpt-5",Jd={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},F_="estimate derived from byte-based token estimate when token counts are estimated"});var gn={};F(gn,{isResidentEntryUnresolved:()=>Kd,reportResidentEntryDiagnostic:()=>ga,residentConfigFor:()=>Vd,residentElisionStore:()=>ma});function Vd(e,t){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs,...t?{clientVersion:t}:{}}}function ma(e,t,r={}){let n=r.paths??je(e);return new fn(n,Vd(t,ys("rsp").version),{ensureResident:r.ensureResident})}function ga(e){return Kd(e)?(qd||(qd=!0,process.stderr.write(`rsp: ${tt} \u2014 elision is off until an rsp entry is installed
51
51
  `),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
52
- `)),!0):!1}function Kd(e){return typeof e=="object"&&e!==null&&e.code===tt}var qd,Gt=h(()=>{"use strict";Ni();He();qd=!1});function Ea(e){return e==="success"?0:e==="failure"?1:2}function xa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function nt(e,t,r){return{status:e,exitCode:Ea(e),summary:t,...r?{details:r}:{}}}function z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Qd,ep,tp,ka,rp,np,sp,op,Sa,Wt=h(()=>{"use strict";Qd="rsp.wait.result",ep="rsp.wait.registry",tp="rsp.wait.list",ka={cmd:18e5,pr:27e5,run:27e5,release:72e5},rp=16*1024,np=1e4,sp=2e3,op=6e4,Sa={cmd:"local-cmd:event-driven",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});import{readdir as J_,readFile as q_}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await Ds(r),s=[r,...n];if(s.every(c=>!Ut(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ip(e,"SIGTERM"),$s(n,"SIGTERM"),await ap(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await Ds(r)])];ip(e,"SIGKILL"),$s(o,"SIGKILL");let i=Math.max(1e3,t);await V_(e,i);let a=await ap(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Ut)}}function ip(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function $s(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function V_(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function ap(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Ut(n)))return!0;await K_(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Ut(n))}async function Ds(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await J_("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await cp(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function gn(e){return(await cp(e))?.[19]}async function wr(e,t){if(!Ut(e))return!1;if(!t)return!0;let r=await gn(e);return r===void 0?process.platform!=="linux":r===t}function Ut(e){try{return process.kill(e,0),!0}catch{return!1}}async function cp(e){if(process.platform!=="linux")return null;try{let t=await q_(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function K_(e){await new Promise(t=>setTimeout(t,e))}var st=h(()=>{"use strict"});import{constants as z_}from"node:os";async function up(e){let t=e[1],r={timeoutMs:ka.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:np,terminateGraceMs:sp,probeTimeoutMs:op,format:"toon",captureBytes:rp},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};t!=="ls"&&(r.timeoutMs=ka[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=hn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Z_(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=hn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=hn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=hn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=X_(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await Y_(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Y_(e){if(!(e.signal in z_.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Ut(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await gn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function hn(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function yn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return hn(n)}catch{return t}}function X_(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Z_(e){return e.startsWith("SIG")?e:`SIG${e}`}var lp=h(()=>{"use strict";Wt();st()});import{existsSync as va,readFileSync as Q_,statSync as eR}from"node:fs";import{basename as dp,dirname as Ns,isAbsolute as tR,join as pp,resolve as bn}from"node:path";function Ms(e,t=process.env){let r=bn(e);if(Bi.map(i=>t[i]).find(Boolean))return ed({startDir:r,env:t,exists:va});let s=nR(r),o=rR(r,s);return o||(s??r)}function rR(e,t){let r=e;for(;;){if(va(pp(r,".red")))return r;if(t&&r===t)return null;let n=bn(r,"..");if(n===r)return null;r=n}}function nR(e){let t=e;for(;;){let r=pp(t,".git");if(va(r))return iR(r)?t:sR(r)??t;let n=bn(t,"..");if(n===t)return null;t=n}}function sR(e){let t=oR(e);if(!t)return null;let r=Ns(t),n=Ns(r);return dp(r)!=="worktrees"||dp(n)!==".git"?null:Ns(n)}function oR(e){let t;try{t=Q_(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return tR(n)?bn(n):bn(Ns(e),n)}function iR(e){try{return eR(e).isDirectory()}catch{return!1}}var Ca=h(()=>{me()});import{join as aR}from"node:path";function uR(e,t=process.env){return Ms(e,t)}function _r(e,t=process.env){return Ql(uR(e,t))}function fp(e,t=process.env){return aR(_r(e,t),cR)}var cR,Ta=h(()=>{"use strict";me();Ca();cR="spool"});import{randomUUID as lR}from"node:crypto";import{existsSync as dR}from"node:fs";import{mkdir as pR,readdir as fR,readFile as mR,rename as gR,rm as Oa,writeFile as hR}from"node:fs/promises";import{dirname as yR,join as gp}from"node:path";function hp(e,t,r=process.env){return gp(_r(e,r),`${t}${bR}`)}async function Rr(e,t){await Pa(e,`${U(t)}
53
- `)}async function Bs(e,t,r){t.status=r,await Rr(e,t)}async function Fs(e,t=process.env){let r=_r(e,t);if(!dR(r))return[];let n=await fR(r).catch(()=>[]),s=[];for(let o of n.filter(i=>wR.some(a=>i.endsWith(a)))){let i=gp(r,o),a=await _R(i);if(!a){await Oa(i,{force:!0});continue}if(!await RR(a)){await Oa(i,{force:!0});continue}s.push(a)}return s}async function _R(e){let t;try{t=await mR(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=kR(r);return n&&Object.keys(n).length>0?n:null}async function RR(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await wr(t,r)}function kR(e){try{let t=L(e);if(mp(t))return t}catch{}try{let t=JSON.parse(e);if(mp(t))return t}catch{}return null}async function Pa(e,t){await pR(yR(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${lR()}`;try{await hR(r,t,"utf8"),await gR(r,e)}finally{await Oa(r,{force:!0})}}function Aa(e){return{schema:ep,version:1,...e}}function mp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bR,wR,_n=h(()=>{"use strict";N();Qe();Wt();Ta();st();bR=".toon",wR=[".toon",".json"]});function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ge(e){return kr(e)?e:{}}function Jt(e){return Array.isArray(e)?e.filter(kr):[]}function Y(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function Ia(e){let t=JSON.parse(e);if(!kr(t))throw new Error("expected JSON object");return t}function js(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Hs=h(()=>{"use strict"});import{spawn as SR}from"node:child_process";import{resolve as ER}from"node:path";async function yp(e,t,r){let n=[];if(e.signalPid){let s=await xR(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await vR(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function xR(e){let t=e.signalPid;if(!await wr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:bp(r),pid:t,signal:e.signal}}}async function vR(e,t,r){let n=Ge(t.wait),s=Ge(t.verdict);return await CR(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?ER(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function CR(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=SR(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:bp(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function bp(e){return e instanceof Error?e.message:String(e)}var wp=h(()=>{"use strict";Hs();st()});import{resolve as TR}from"node:path";async function _p(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=OR(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=Rn(t,r,o,{status:"pending"},i);await kn(n.resultFile,a,n.format);let c=await yp(n,a,s),u=Rn(t,r,o,c,i);return await kn(n.resultFile,u,n.format),{result:u,exitCode:Rp(o,c)}}function Rp(e,t){return t.status!=="success"||e.status==="running"?2:Ea(e.status)}function OR(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function Rn(e,t,r,n,s){return{schema:Qd,version:1,wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:Rp(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function kn(e,t,r){e&&await Pa(TR(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
52
+ `)),!0):!1}function Kd(e){return typeof e=="object"&&e!==null&&e.code===tt}var qd,Gt=h(()=>{"use strict";Mi();He();qd=!1});function Ea(e){return e==="success"?0:e==="failure"?1:2}function xa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function nt(e,t,r){return{status:e,exitCode:Ea(e),summary:t,...r?{details:r}:{}}}function z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Qd,ep,tp,ka,rp,np,sp,op,Sa,Wt=h(()=>{"use strict";Qd="rsp.wait.result",ep="rsp.wait.registry",tp="rsp.wait.list",ka={cmd:18e5,pr:27e5,run:27e5,release:72e5},rp=16*1024,np=1e4,sp=2e3,op=6e4,Sa={cmd:"local-cmd:event-driven",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});import{readdir as q_,readFile as V_}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await Ns(r),s=[r,...n];if(s.every(c=>!Ut(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ip(e,"SIGTERM"),Ds(n,"SIGTERM"),await ap(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await Ns(r)])];ip(e,"SIGKILL"),Ds(o,"SIGKILL");let i=Math.max(1e3,t);await K_(e,i);let a=await ap(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Ut)}}function ip(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function Ds(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function K_(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function ap(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Ut(n)))return!0;await z_(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Ut(n))}async function Ns(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await q_("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await cp(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function hn(e){return(await cp(e))?.[19]}async function wr(e,t){if(!Ut(e))return!1;if(!t)return!0;let r=await hn(e);return r===void 0?process.platform!=="linux":r===t}function Ut(e){try{return process.kill(e,0),!0}catch{return!1}}async function cp(e){if(process.platform!=="linux")return null;try{let t=await V_(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function z_(e){await new Promise(t=>setTimeout(t,e))}var st=h(()=>{"use strict"});import{constants as Y_}from"node:os";async function up(e){let t=e[1],r={timeoutMs:ka.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:np,terminateGraceMs:sp,probeTimeoutMs:op,format:"toon",captureBytes:rp},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};t!=="ls"&&(r.timeoutMs=ka[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=yn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Q_(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=yn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=yn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=yn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Z_(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await X_(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function X_(e){if(!(e.signal in Y_.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Ut(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await hn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function yn(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function bn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return yn(n)}catch{return t}}function Z_(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Q_(e){return e.startsWith("SIG")?e:`SIG${e}`}var lp=h(()=>{"use strict";Wt();st()});import{existsSync as va,readFileSync as eR,statSync as tR}from"node:fs";import{basename as dp,dirname as Ms,isAbsolute as rR,join as pp,resolve as wn}from"node:path";function Bs(e,t=process.env){let r=wn(e);if(Fi.map(i=>t[i]).find(Boolean))return ed({startDir:r,env:t,exists:va});let s=sR(r),o=nR(r,s);return o||(s??r)}function nR(e,t){let r=e;for(;;){if(va(pp(r,".red")))return r;if(t&&r===t)return null;let n=wn(r,"..");if(n===r)return null;r=n}}function sR(e){let t=e;for(;;){let r=pp(t,".git");if(va(r))return aR(r)?t:oR(r)??t;let n=wn(t,"..");if(n===t)return null;t=n}}function oR(e){let t=iR(e);if(!t)return null;let r=Ms(t),n=Ms(r);return dp(r)!=="worktrees"||dp(n)!==".git"?null:Ms(n)}function iR(e){let t;try{t=eR(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return rR(n)?wn(n):wn(Ms(e),n)}function aR(e){try{return tR(e).isDirectory()}catch{return!1}}var Ca=h(()=>{me()});import{join as cR}from"node:path";function lR(e,t=process.env){return Bs(e,t)}function _r(e,t=process.env){return Ql(lR(e,t))}function fp(e,t=process.env){return cR(_r(e,t),uR)}var uR,Ta=h(()=>{"use strict";me();Ca();uR="spool"});import{randomUUID as dR}from"node:crypto";import{existsSync as pR}from"node:fs";import{mkdir as fR,readdir as mR,readFile as gR,rename as hR,rm as Oa,writeFile as yR}from"node:fs/promises";import{dirname as bR,join as gp}from"node:path";function hp(e,t,r=process.env){return gp(_r(e,r),`${t}${wR}`)}async function Rr(e,t){await Pa(e,`${U(t)}
53
+ `)}async function Fs(e,t,r){t.status=r,await Rr(e,t)}async function js(e,t=process.env){let r=_r(e,t);if(!pR(r))return[];let n=await mR(r).catch(()=>[]),s=[];for(let o of n.filter(i=>_R.some(a=>i.endsWith(a)))){let i=gp(r,o),a=await RR(i);if(!a){await Oa(i,{force:!0});continue}if(!await kR(a)){await Oa(i,{force:!0});continue}s.push(a)}return s}async function RR(e){let t;try{t=await gR(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=SR(r);return n&&Object.keys(n).length>0?n:null}async function kR(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await wr(t,r)}function SR(e){try{let t=L(e);if(mp(t))return t}catch{}try{let t=JSON.parse(e);if(mp(t))return t}catch{}return null}async function Pa(e,t){await fR(bR(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${dR()}`;try{await yR(r,t,"utf8"),await hR(r,e)}finally{await Oa(r,{force:!0})}}function Aa(e){return{schema:ep,version:1,...e}}function mp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wR,_R,Rn=h(()=>{"use strict";N();Qe();Wt();Ta();st();wR=".toon",_R=[".toon",".json"]});function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ge(e){return kr(e)?e:{}}function Jt(e){return Array.isArray(e)?e.filter(kr):[]}function Y(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function Ia(e){let t=JSON.parse(e);if(!kr(t))throw new Error("expected JSON object");return t}function Hs(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Gs=h(()=>{"use strict"});import{spawn as ER}from"node:child_process";import{resolve as xR}from"node:path";async function yp(e,t,r){let n=[];if(e.signalPid){let s=await vR(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await CR(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function vR(e){let t=e.signalPid;if(!await wr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:bp(r),pid:t,signal:e.signal}}}async function CR(e,t,r){let n=Ge(t.wait),s=Ge(t.verdict);return await TR(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?xR(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function TR(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=ER(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:bp(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function bp(e){return e instanceof Error?e.message:String(e)}var wp=h(()=>{"use strict";Gs();st()});import{resolve as OR}from"node:path";async function _p(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=PR(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=kn(t,r,o,{status:"pending"},i);await Sn(n.resultFile,a,n.format);let c=await yp(n,a,s),u=kn(t,r,o,c,i);return await Sn(n.resultFile,u,n.format),{result:u,exitCode:Rp(o,c)}}function Rp(e,t){return t.status!=="success"||e.status==="running"?2:Ea(e.status)}function PR(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function kn(e,t,r,n,s){return{schema:Qd,version:1,wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:Rp(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function Sn(e,t,r){e&&await Pa(OR(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
54
54
  `:`${U(e)}
55
- `}var kp=h(()=>{"use strict";Qe();Wt();_n();wp()});import{createWriteStream as PR,mkdirSync as AR}from"node:fs";import{readFile as IR,rm as LR}from"node:fs/promises";import{dirname as $R}from"node:path";import{join as Sp}from"node:path";function Ep(e,t,r){return{stdout:new Gs(r,Sp(e,`${t}.stdout.bin`)),stderr:new Gs(r,Sp(e,`${t}.stderr.bin`))}}function DR(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!NR(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function NR(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Gs,xp=h(()=>{"use strict";Gs=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...DR(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await IR(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{AR($R(this.spoolPath),{recursive:!0}),t=PR(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await LR(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as MR,readFileSync as iL}from"node:fs";import{dirname as BR,join as FR}from"node:path";function vp(e,t){let r=e;for(let n=0;n<16;n++){let s=FR(r,t);if(MR(s))return s;let o=BR(r);if(o===r)break;r=o}return null}function jR(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ws(e,t){let r=[];for(let n of e.split(`
56
- `)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(p=>p.key).join(".")===t)return jR(u)}}var Cp=h(()=>{});var Mp={};F(Mp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>vr,GH_ETAG_CACHE_DIR_NAME:()=>Ap,LEGACY_GH_ETAG_CACHE_FILE:()=>Ip,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Lp,enforceGhEtagCacheCeiling:()=>Ba,ghEtagCacheDir:()=>Us,ghEtagEntryPath:()=>Js,isCacheEntry:()=>Vs,legacyGhEtagCachePaths:()=>Da,migrateLegacyGhEtagCache:()=>ja,readGhEtagCache:()=>qs,readGhEtagEntry:()=>Na,resetGhEtagCacheMigrationMemo:()=>VR,sweepGhEtagCache:()=>Fa,writeGhEtagEntry:()=>Ma});import{existsSync as HR}from"node:fs";import{mkdir as GR,readdir as WR,rename as UR,rm as Tp,stat as Op,unlink as Pp,writeFile as JR}from"node:fs/promises";import{dirname as qR,join as xr}from"node:path";function Us(e){return xr(W(e),Ap)}function Js(e,t){return xr(Us(e),`${XR(t)}.toon`)}function Da(e){let t=W(e);return[xr(t,Ip),xr(t,Lp)]}async function Na(e,t){await ja(e);try{let r=Np(await Ss(Js(e,t)));return Vs(r)?r:void 0}catch{return}}async function Ma(e,t,r={}){return await Dp(Js(e,t.key),t),await Ba(e,r.maxBytes??vr)}async function Ba(e,t=vr){let r=await zR(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await Pp(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function Fa(e,t={}){let r=await ja(e,{force:!0}),n=await KR(e);return{...await Ba(e,t.maxBytes??vr),reclaimedTmp:n,migratedEntries:r}}async function qs(e){for(let t of Da(e))try{let r=Np(await Ss(t));if(ZR(r))return r}catch{}return{version:1,entries:{}}}async function ja(e,t={}){if(!t.force&&La.has(e))return 0;La.add(e);let r=Da(e).filter(o=>HR(o));if(r.length===0)return 0;let n=await qs(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Vs(i))continue;let a=Js(e,o);await YR(a)||(await Dp(a,{...i,key:o}),s+=1)}for(let o of r)await Tp(o,{force:!0});return s}function VR(){La.clear()}async function KR(e){let t=0;for(let r of[W(e),Us(e)])for(let n of await $p(r))if(n.endsWith(".tmp"))try{await Pp(xr(r,n)),t+=1}catch{}return t}async function zR(e){let t=Us(e),r=[];for(let n of await $p(t)){if(!n.endsWith(".toon"))continue;let s=xr(t,n);try{let o=await Op(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function $p(e){try{return await WR(e)}catch{return[]}}async function YR(e){try{return await Op(e),!0}catch{return!1}}async function Dp(e,t){await GR(qR(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await JR(r,`${C(t)}
57
- `,{encoding:"utf8",mode:384}),await UR(r,e)}catch(n){throw await Tp(r,{force:!0}),n}}function XR(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Np(e){try{return JSON.parse(e)}catch{return L(e)}}function ZR(e){return $a(e)&&e.version===1&&$a(e.entries)&&Object.values(e.entries).every(Vs)}function Vs(e){return $a(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ap,Ip,Lp,vr,La,Sn=h(()=>{"use strict";me();N();J();Ap="gh-etag",Ip="gh-etag-cache.toon",Lp="gh-etag-cache.json",vr=4*1024*1024;La=new Set});var Wp={};F(Wp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,DEFAULT_RSP_IDLE_MS:()=>Ys,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Gp,DEFAULT_RSP_STORE_PATH:()=>Ha,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>zs,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Ks,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>Hp,resolveRspConfig:()=>Pe});import{existsSync as QR,readFileSync as ek}from"node:fs";import{join as tk,resolve as Bp}from"node:path";function Pe(e,t,r){let n=vp(Bp(e),tk(".red","config.yaml")),s=n?ek(n,"utf8"):"",o=Ws(s,"rsp.enabled")==="true",i=Ws(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(q(s,"rsp.ttlDays"),Ce),u=ne(We(t.RSP_EPHEMERAL_TTL_HOURS)??q(s,"rsp.ephemeralTtlHours"),Te),l=ne(q(s,"rsp.byteBudget"),Oe),p=ne(q(s,"rsp.telemetryTtlDays"),Ks),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),zs),f=ne(We(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??q(s,"rsp.telemetryDrainIntervalMs"),Fp),m=ne(We(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??q(s,"rsp.telemetryDrainTimeoutMs"),jp),w=rk(We(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),Ys,Hp),_=ne(We(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=nk(We(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??q(s,"rsp.measurement.holdoutShare"),Gp),y=ne(We(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??q(s,"rsp.ghEtagCacheMaxBytes"),vr),b={maxOverheadMs:ne(We(t.RSP_MAX_OVERHEAD_MS)??q(s,"rsp.overhead.maxOverheadMs"),ys),maxSelfStateBytes:ne(We(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),bs),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),ws),consecutiveBreaches:ne(We(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),_s),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),Rs)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Zl(Bp(R),QR)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:m,idleMs:w,heavyGitByteThreshold:_,measurementHoldoutShare:g,ghEtagCacheMaxBytes:y,overhead:b}}function q(e,t){let r=Ws(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function rk(e,t,r){let n=ne(e,t);return Math.max(n,r)}function nk(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function We(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ot,Ha,Ce,Te,Oe,Ks,zs,Fp,jp,Ys,Hp,Gp,Ae=h(()=>{"use strict";Cp();me();Is();J();Sn();ot=8*1024,Ha=Yl,Ce=7,Te=6,Oe=64*1024*1024,Ks=90,zs=4*1024*1024,Fp=3e4,jp=2e3,Ys=5*6e4,Hp=5e3,Gp=0});function Up(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Jp=h(()=>{"use strict";Ae()});import{spawn as sk}from"node:child_process";async function Vp(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:z("missing command line")};let a=e.store??Up(n),c=Ep(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async g=>{l||(l=!0,i.removeEventListener("abort",w),await Bs(s,o,g.verdict.status).catch(()=>{}),u(g))},f=sk(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",g=>c.stdout.write(Buffer.from(g))),f.stderr?.on("data",g=>c.stderr.write(Buffer.from(g)));let m=async(g,y)=>{if(l||p)return;p=!0,clearTimeout(_);let b=await br(f,r.terminateGraceMs),R=await qp(null,null,c,a,t);await d({verdict:{status:g,exitCode:2,summary:y,details:R},cleanupProven:b.cleaned,survivors:b.survivors})},w=()=>void m("indeterminate","command interrupted");i.addEventListener("abort",w,{once:!0});let _=setTimeout(()=>{m("timeout",`command timed out after ${Kp(r.timeoutMs)}`)},r.timeoutMs);f.once("error",g=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:g.message}})}),f.once("close",(g,y)=>{if(clearTimeout(_),l||p)return;let b=g===0;qp(g,y,c,a,t).then(R=>d({verdict:{status:b?"success":"failure",exitCode:b?0:1,summary:b?"command exited successfully":`command exited with ${y??g??"unknown"}`,details:R}}))}),i.aborted&&w()})}async function Xs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:ok(u,c,o.last_poll_at)};let l;try{l=await t()}catch(w){l=z(w instanceof Error?w.message:String(w))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ga(l),await Rr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Bs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),m=e.makeWakeSignal?.();await ik(f,i,m)}return await Bs(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kp(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ga(u)}:{attempts:c}}}}async function qp(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function Ga(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function ok(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ga(e)}:{}})}async function ik(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function Kp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var zp=h(()=>{"use strict";xp();Jp();Wt();st();_n()});var Wa,Ua,Ja,ce,X,he,Ue,En,Zs=h(()=>{"use strict";Wa="rsp-telemetry.spool.toonl",Ua="rsp-telemetry.spool.jsonl",Ja="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",X="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",Ue="rsp_telemetry_degradations_v1",En="rsp_telemetry_index_v1"});function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var qa=h(()=>{"use strict"});import{randomUUID as Ka,createHash as ak}from"node:crypto";import{appendFileSync as ef,existsSync as ck,mkdirSync as tf}from"node:fs";import{mkdir as rf,readdir as uk,readFile as nf,rename as lk,rm as sf,writeFile as za}from"node:fs/promises";import{basename as Va,dirname as xn,join as Tr,resolve as Yp}from"node:path";function eo(e){if(!e)return null;let t=Yp(e);for(;;){if(ck(Tr(t,".red")))return t;let r=Yp(Tr(t,".."));if(r===t)break;t=r}return null}function it(e){return Tr(W(e),Wa)}function to(e){return Tr(W(e),Ua)}function Xa(e){return Tr(W(e),Ja)}async function at(e,t){gt(e,t)}function gt(e,t){try{let r=eo(e);if(!r)return;let n=it(r);tf(xn(n),{recursive:!0}),ef(n,hk({spool_id:Ka(),event:pk(t)}),{encoding:"utf8",mode:384})}catch{}}function pk(e){return Xp(Xp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xp(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=dk)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function fk(e){let t=eo(e);if(!t)return[];let r=it(t);await rf(xn(r),{recursive:!0}).catch(()=>{});let n=await cf(t),s=[...await uf(t),...await bk(n)];return await Promise.all(n.map(o=>sf(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Za(e,t){let r=eo(e);if(!r)return;let n=it(r);await rf(xn(n),{recursive:!0}).catch(()=>{}),await yk(r);for(let s of await mk(r))await Zp(r,s,t);for(let s of await uf(r))await of(r,s,t,!0);for(let s of await cf(r))await Zp(r,s,t)}async function mk(e){let t=[it(e),to(e)],r=xn(t[0]);return(await uk(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Va(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Va(c)}.`));if(!o)return!1;let i=`${Va(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&gk(a))}).sort().map(s=>Tr(r,s))}function gk(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Zp(e,t,r){try{let n=await af(t);for(let s of lf(n))await of(e,s,r,!1)}finally{await sf(t,{force:!0})}}async function of(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function af(e){let t="";for(let r=0;r<5;r++){let n=await nf(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Or(e){try{let t=JSON.parse(e);return!Cr(t)||t.collection!==ce&&t.collection!==X&&t.collection!==he&&t.collection!==Ue?null:t}catch{return null}}function hk(e){return Nt().push(Rk(e))}function Qp(e,t){try{let r=eo(e);if(!r)return;let n=Xa(r);tf(xn(n),{recursive:!0});let s=Nt();ef(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function cf(e){let t=[it(e),to(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await lk(n,s),await za(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function yk(e){await Promise.all([za(it(e),"",{flag:"a"}),za(to(e),"",{flag:"a"})]).catch(()=>{})}async function bk(e){let t=[];for(let r of e)t.push(...lf(await af(r)));return t}async function uf(e){let t=await nf(Xa(e),"utf8").catch(()=>""),r=new Map;for(let n of wk(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Or(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function lf(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(Cr(o)){let i=Or(JSON.stringify(o));t.push(i?{spool_id:Qs(JSON.stringify(o)),event:i}:{spool_id:Qs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Qs(s),raw_line:s});continue}try{for(let o of Dt(`${r}
55
+ `}var kp=h(()=>{"use strict";Qe();Wt();Rn();wp()});import{createWriteStream as AR,mkdirSync as IR}from"node:fs";import{readFile as LR,rm as $R}from"node:fs/promises";import{dirname as DR}from"node:path";import{join as Sp}from"node:path";function Ep(e,t,r){return{stdout:new Ws(r,Sp(e,`${t}.stdout.bin`)),stderr:new Ws(r,Sp(e,`${t}.stderr.bin`))}}function NR(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!MR(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function MR(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ws,xp=h(()=>{"use strict";Ws=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...NR(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await LR(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{IR(DR(this.spoolPath),{recursive:!0}),t=AR(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await $R(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as BR,readFileSync as aL}from"node:fs";import{dirname as FR,join as jR}from"node:path";function vp(e,t){let r=e;for(let n=0;n<16;n++){let s=jR(r,t);if(BR(s))return s;let o=FR(r);if(o===r)break;r=o}return null}function HR(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Us(e,t){let r=[];for(let n of e.split(`
56
+ `)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(p=>p.key).join(".")===t)return HR(u)}}var Cp=h(()=>{});var Mp={};F(Mp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>vr,GH_ETAG_CACHE_DIR_NAME:()=>Ap,LEGACY_GH_ETAG_CACHE_FILE:()=>Ip,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Lp,enforceGhEtagCacheCeiling:()=>Ba,ghEtagCacheDir:()=>Js,ghEtagEntryPath:()=>qs,isCacheEntry:()=>Ks,legacyGhEtagCachePaths:()=>Da,migrateLegacyGhEtagCache:()=>ja,readGhEtagCache:()=>Vs,readGhEtagEntry:()=>Na,resetGhEtagCacheMigrationMemo:()=>KR,sweepGhEtagCache:()=>Fa,writeGhEtagEntry:()=>Ma});import{existsSync as GR}from"node:fs";import{mkdir as WR,readdir as UR,rename as JR,rm as Tp,stat as Op,unlink as Pp,writeFile as qR}from"node:fs/promises";import{dirname as VR,join as xr}from"node:path";function Js(e){return xr(W(e),Ap)}function qs(e,t){return xr(Js(e),`${ZR(t)}.toon`)}function Da(e){let t=W(e);return[xr(t,Ip),xr(t,Lp)]}async function Na(e,t){await ja(e);try{let r=Np(await Es(qs(e,t)));return Ks(r)?r:void 0}catch{return}}async function Ma(e,t,r={}){return await Dp(qs(e,t.key),t),await Ba(e,r.maxBytes??vr)}async function Ba(e,t=vr){let r=await YR(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await Pp(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function Fa(e,t={}){let r=await ja(e,{force:!0}),n=await zR(e);return{...await Ba(e,t.maxBytes??vr),reclaimedTmp:n,migratedEntries:r}}async function Vs(e){for(let t of Da(e))try{let r=Np(await Es(t));if(QR(r))return r}catch{}return{version:1,entries:{}}}async function ja(e,t={}){if(!t.force&&La.has(e))return 0;La.add(e);let r=Da(e).filter(o=>GR(o));if(r.length===0)return 0;let n=await Vs(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Ks(i))continue;let a=qs(e,o);await XR(a)||(await Dp(a,{...i,key:o}),s+=1)}for(let o of r)await Tp(o,{force:!0});return s}function KR(){La.clear()}async function zR(e){let t=0;for(let r of[W(e),Js(e)])for(let n of await $p(r))if(n.endsWith(".tmp"))try{await Pp(xr(r,n)),t+=1}catch{}return t}async function YR(e){let t=Js(e),r=[];for(let n of await $p(t)){if(!n.endsWith(".toon"))continue;let s=xr(t,n);try{let o=await Op(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function $p(e){try{return await UR(e)}catch{return[]}}async function XR(e){try{return await Op(e),!0}catch{return!1}}async function Dp(e,t){await WR(VR(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await qR(r,`${C(t)}
57
+ `,{encoding:"utf8",mode:384}),await JR(r,e)}catch(n){throw await Tp(r,{force:!0}),n}}function ZR(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Np(e){try{return JSON.parse(e)}catch{return L(e)}}function QR(e){return $a(e)&&e.version===1&&$a(e.entries)&&Object.values(e.entries).every(Ks)}function Ks(e){return $a(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ap,Ip,Lp,vr,La,En=h(()=>{"use strict";me();N();J();Ap="gh-etag",Ip="gh-etag-cache.toon",Lp="gh-etag-cache.json",vr=4*1024*1024;La=new Set});var Wp={};F(Wp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,DEFAULT_RSP_IDLE_MS:()=>Xs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Gp,DEFAULT_RSP_STORE_PATH:()=>Ha,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Ys,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zs,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>Hp,resolveRspConfig:()=>Pe});import{existsSync as ek,readFileSync as tk}from"node:fs";import{join as rk,resolve as Bp}from"node:path";function Pe(e,t,r){let n=vp(Bp(e),rk(".red","config.yaml")),s=n?tk(n,"utf8"):"",o=Us(s,"rsp.enabled")==="true",i=Us(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(q(s,"rsp.ttlDays"),Ce),u=ne(We(t.RSP_EPHEMERAL_TTL_HOURS)??q(s,"rsp.ephemeralTtlHours"),Te),l=ne(q(s,"rsp.byteBudget"),Oe),p=ne(q(s,"rsp.telemetryTtlDays"),zs),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),Ys),f=ne(We(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??q(s,"rsp.telemetryDrainIntervalMs"),Fp),m=ne(We(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??q(s,"rsp.telemetryDrainTimeoutMs"),jp),w=nk(We(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),Xs,Hp),_=ne(We(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=sk(We(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??q(s,"rsp.measurement.holdoutShare"),Gp),y=ne(We(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??q(s,"rsp.ghEtagCacheMaxBytes"),vr),b={maxOverheadMs:ne(We(t.RSP_MAX_OVERHEAD_MS)??q(s,"rsp.overhead.maxOverheadMs"),bs),maxSelfStateBytes:ne(We(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),ws),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),_s),consecutiveBreaches:ne(We(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),Rs),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),ks)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Zl(Bp(R),ek)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:m,idleMs:w,heavyGitByteThreshold:_,measurementHoldoutShare:g,ghEtagCacheMaxBytes:y,overhead:b}}function q(e,t){let r=Us(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function nk(e,t,r){let n=ne(e,t);return Math.max(n,r)}function sk(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function We(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ot,Ha,Ce,Te,Oe,zs,Ys,Fp,jp,Xs,Hp,Gp,Ae=h(()=>{"use strict";Cp();me();Ls();J();En();ot=8*1024,Ha=Yl,Ce=7,Te=6,Oe=64*1024*1024,zs=90,Ys=4*1024*1024,Fp=3e4,jp=2e3,Xs=5*6e4,Hp=5e3,Gp=0});function Up(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),gn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Jp=h(()=>{"use strict";Ae()});import{spawn as ok}from"node:child_process";async function Vp(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:z("missing command line")};let a=e.store??Up(n),c=Ep(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async g=>{l||(l=!0,i.removeEventListener("abort",w),await Fs(s,o,g.verdict.status).catch(()=>{}),u(g))},f=ok(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",g=>c.stdout.write(Buffer.from(g))),f.stderr?.on("data",g=>c.stderr.write(Buffer.from(g)));let m=async(g,y)=>{if(l||p)return;p=!0,clearTimeout(_);let b=await br(f,r.terminateGraceMs),R=await qp(null,null,c,a,t);await d({verdict:{status:g,exitCode:2,summary:y,details:R},cleanupProven:b.cleaned,survivors:b.survivors})},w=()=>void m("indeterminate","command interrupted");i.addEventListener("abort",w,{once:!0});let _=setTimeout(()=>{m("timeout",`command timed out after ${Kp(r.timeoutMs)}`)},r.timeoutMs);f.once("error",g=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:g.message}})}),f.once("close",(g,y)=>{if(clearTimeout(_),l||p)return;let b=g===0;qp(g,y,c,a,t).then(R=>d({verdict:{status:b?"success":"failure",exitCode:b?0:1,summary:b?"command exited successfully":`command exited with ${y??g??"unknown"}`,details:R}}))}),i.aborted&&w()})}async function Zs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:ik(u,c,o.last_poll_at)};let l;try{l=await t()}catch(w){l=z(w instanceof Error?w.message:String(w))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ga(l),await Rr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Fs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),m=e.makeWakeSignal?.();await ak(f,i,m)}return await Fs(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kp(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ga(u)}:{attempts:c}}}}async function qp(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function Ga(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function ik(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ga(e)}:{}})}async function ak(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function Kp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var zp=h(()=>{"use strict";xp();Jp();Wt();st();Rn()});var Wa,Ua,Ja,ce,X,he,Ue,xn,Qs=h(()=>{"use strict";Wa="rsp-telemetry.spool.toonl",Ua="rsp-telemetry.spool.jsonl",Ja="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",X="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",Ue="rsp_telemetry_degradations_v1",xn="rsp_telemetry_index_v1"});function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var qa=h(()=>{"use strict"});import{randomUUID as Ka,createHash as ck}from"node:crypto";import{appendFileSync as ef,existsSync as uk,mkdirSync as tf}from"node:fs";import{mkdir as rf,readdir as lk,readFile as nf,rename as dk,rm as sf,writeFile as za}from"node:fs/promises";import{basename as Va,dirname as vn,join as Tr,resolve as Yp}from"node:path";function to(e){if(!e)return null;let t=Yp(e);for(;;){if(uk(Tr(t,".red")))return t;let r=Yp(Tr(t,".."));if(r===t)break;t=r}return null}function it(e){return Tr(W(e),Wa)}function ro(e){return Tr(W(e),Ua)}function Xa(e){return Tr(W(e),Ja)}async function at(e,t){gt(e,t)}function gt(e,t){try{let r=to(e);if(!r)return;let n=it(r);tf(vn(n),{recursive:!0}),ef(n,yk({spool_id:Ka(),event:fk(t)}),{encoding:"utf8",mode:384})}catch{}}function fk(e){return Xp(Xp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xp(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=pk)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function mk(e){let t=to(e);if(!t)return[];let r=it(t);await rf(vn(r),{recursive:!0}).catch(()=>{});let n=await cf(t),s=[...await uf(t),...await wk(n)];return await Promise.all(n.map(o=>sf(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Za(e,t){let r=to(e);if(!r)return;let n=it(r);await rf(vn(n),{recursive:!0}).catch(()=>{}),await bk(r);for(let s of await gk(r))await Zp(r,s,t);for(let s of await uf(r))await of(r,s,t,!0);for(let s of await cf(r))await Zp(r,s,t)}async function gk(e){let t=[it(e),ro(e)],r=vn(t[0]);return(await lk(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Va(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Va(c)}.`));if(!o)return!1;let i=`${Va(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&hk(a))}).sort().map(s=>Tr(r,s))}function hk(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Zp(e,t,r){try{let n=await af(t);for(let s of lf(n))await of(e,s,r,!1)}finally{await sf(t,{force:!0})}}async function of(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function af(e){let t="";for(let r=0;r<5;r++){let n=await nf(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Or(e){try{let t=JSON.parse(e);return!Cr(t)||t.collection!==ce&&t.collection!==X&&t.collection!==he&&t.collection!==Ue?null:t}catch{return null}}function yk(e){return Nt().push(kk(e))}function Qp(e,t){try{let r=to(e);if(!r)return;let n=Xa(r);tf(vn(n),{recursive:!0});let s=Nt();ef(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function cf(e){let t=[it(e),ro(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await dk(n,s),await za(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function bk(e){await Promise.all([za(it(e),"",{flag:"a"}),za(ro(e),"",{flag:"a"})]).catch(()=>{})}async function wk(e){let t=[];for(let r of e)t.push(...lf(await af(r)));return t}async function uf(e){let t=await nf(Xa(e),"utf8").catch(()=>""),r=new Map;for(let n of _k(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Or(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function lf(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(Cr(o)){let i=Or(JSON.stringify(o));t.push(i?{spool_id:eo(JSON.stringify(o)),event:i}:{spool_id:eo(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:eo(s),raw_line:s});continue}try{for(let o of Dt(`${r}
58
58
  ${s}
59
- `))Ya(o)&&kk(o)&&t.push({spool_id:o.spool_id,event:df(o)})}catch{s.startsWith("{")&&t.push({spool_id:Qs(s),raw_line:s})}}}return t}function wk(e){return _k(e).map(Sk).filter(t=>t!==null)}function _k(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Ya(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Dt(`${r}
59
+ `))Ya(o)&&Sk(o)&&t.push({spool_id:o.spool_id,event:df(o)})}catch{s.startsWith("{")&&t.push({spool_id:eo(s),raw_line:s})}}}return t}function _k(e){return Rk(e).map(Ek).filter(t=>t!==null)}function Rk(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Ya(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Dt(`${r}
60
60
  ${s}
61
- `))Ya(o)&&t.push(o)}catch{}}}return t}function Qs(e){return`legacy:${ak("sha256").update(e).digest("hex").slice(0,24)}`}function Rk(e){let t={spool_id:e.spool_id};for(let[r,n]of Object.entries(e.event??{}))r!=="spool_id"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null?t[r]=n:n!==void 0&&(t[r]=JSON.stringify(n)));return t}function df(e){let{spool_id:t,...r}=e;return Or(JSON.stringify(r))}function kk(e){return typeof e.spool_id=="string"&&df(e)!==null}function Sk(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function Ya(e){return Cr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var dk,pf=h(()=>{"use strict";me();N();Zs();qa();dk=64*1024});function ro(e){return e.trim().split(/\s+/).filter(Boolean)}function vn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Cn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function be(e){let t=ro(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:qt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:qt(t)&&t[1]?`gh ${t[1]} json-jq`:qt(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function qt(e){return e[0]==="gh"&&e.some(Ek)}function Ek(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Pr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Tn=h(()=>{"use strict"});var V,no=h(()=>{"use strict";Ae();V="rsp_elisions_v1"});import{spawnSync as An}from"node:child_process";import{createHash as tc}from"node:crypto";import{existsSync as xk}from"node:fs";import{mkdir as vk,readFile as Ck,readdir as ff,rename as Tk,writeFile as Ok}from"node:fs/promises";import{homedir as Pk}from"node:os";import{basename as Ak,dirname as Ik,join as On}from"node:path";import{fileURLToPath as Lk}from"node:url";import{gunzipSync as $k,gzipSync as Dk}from"node:zlib";function In(e,t){return`el:${tc("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function ht(e){return`record:${e.slice(3)}`}function Kt(e){return`expired:${e.slice(3)}`}function io(){return"index:v1"}function Nk(e){return`blob:${e}`}function mf(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ct(e){let t=ro(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":ao(t)?"re-executable":"ephemeral"}return"ephemeral"}function Ln(e){return po(e.storage_class)?e.storage_class:ct(e.command)}function gf(e){return po(e.storage_class)?e.storage_class:ct(e.command)}function rc(e){let t=Fk(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=gf(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function nc(e,t,r){let n=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let o=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:o,age_display:Mk(o),storage_class:gf(s),recover:`rsp show ${s.handle}`}})}function Mk(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function sc(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function zt(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function oc(e,t){let r=process.cwd(),n=An("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=An("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:Bk(r),original_bytes:e.length}:null}function Bk(e){let t=Qa(e,["rev-parse","HEAD"])||"unborn",r=Qa(e,["write-tree"])||"no-index",n=Qa(e,["status","--porcelain=v1","-z"])||"";return tc("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Qa(e,t){let r=An("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ic(e,t){let r=ro(t);if(!ao(r))return null;let n=wf(process.cwd(),r,e.length);return!n||Vt(n)!==Vt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Vt(e)}}function ao(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Vt(e){return tc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ac(e,t,r,n){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):r?Buffer.byteLength(JSON.stringify(r),"utf8"):n?n.stored_bytes:e.length}function cc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function uc(e,t,r){let n=Dk(e);return{key:Nk(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function hf(e){try{let t=$k(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yf(e){let t=e.object_ids[0];if(!t)return null;let r=An("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function bf(e){if(!ao(e.argv))return null;let t=wf(e.cwd,e.argv,e.original_bytes);return t?Vt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
62
- `,"utf8"),t]):null}function wf(e,t,r){let n=t[0];if(!n)return null;let s=An(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function Fk(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function $n(e){return/^el:[a-f0-9]{12}$/.test(e)}function oo(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _f(e){if(!Pn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:Pn(e.scope)?e.scope:void 0,ranking:Pn(e.ranking)?e.ranking:void 0}}}function Rf(e){if(!Pn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function Pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function kf(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function o(i){if(n.length>=t)return;let a=await ff(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=On(i,c.name);c.isDirectory()?await o(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await o(e),n}function Sf(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Pn(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function co(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Dn(e){if(!we(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Hk(e.derivation_recipe),n=Gk(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&oo(s);return e.collection===V&&typeof e.handle=="string"&&$n(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||dc(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&oo(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&jk(e.loss)&&(e.storage_class===void 0||po(e.storage_class))}function lc(e){return!we(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!we(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&$n(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||po(t.storage_class))&&(r===void 0||typeof r=="string"&&oo(r))})}function uo(e){return we(e)&&typeof e.key=="string"&&oo(e.key)&&dc(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function lo(e){return we(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function jk(e){return we(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function po(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Hk(e){return we(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function Gk(e){return we(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&ao(e.argv)&&typeof e.original_bytes=="number"&&dc(e.content_hash)}function dc(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function we(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ef(e){try{let n=(await Ck(e,"utf8")).trim();if(n==="")return so();let s;try{s=JSON.parse(n)}catch{s=L(n)}if(Wk(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=so();return await Ar(e,s),s}let n=so();return await Ar(e,n),n}let t=so();return await Ar(e,t),t}async function xf(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function vf(e){return Ak(e)==="red-skills.rdb"}async function fo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?On(process.env.XDG_CACHE_HOME,"red-skills","bundles"):On(Pk(),".cache","red-skills","bundles")),t=On(e,"reddb"),r;try{r=await ff(t)}catch{return}r.sort().reverse();for(let n of r){let s=On(t,n,process.platform==="win32"?"red.exe":"red");if(xk(s)){process.env.REDDB_BIN=s;return}}}async function Ar(e,t){await vk(Ik(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Ok(r,`${C(ec(t))}
63
- `,"utf8"),await Tk(r,e)}function ec(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>ec(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=ec(n));return t}return String(e)}function so(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Wk(e){return we(e)&&e.version===1&&we(e.records)&&Object.values(e.records).every(Dn)&&(e.blobs===void 0||we(e.blobs)&&Object.values(e.blobs).every(uo))&&we(e.tombstones)&&Object.values(e.tombstones).every(lo)&&lc(e.index)}function Cf(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Lk(e)}var mo=h(()=>{"use strict";N();Tn();no()});async function Tf(e,t){return Uk?Vk(e,t):Jk?zk(e,t):qk(e,t)}async function qk(e,t){let{spawn:r}=await import("node:child_process"),n=r(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{n.stdin.write(s,a=>a?i(a):o())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",o=>s(o??0))})}}}function Vk(e,t){let r=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),n=r.stdin.getWriter?r.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){n?await n.write(s):(r.stdin.write(s),await r.stdin.flush())},end(){n?n.close():r.stdin.end()}},stdout:Kk(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Kk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}async function zk(e,t){let n=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=n.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:Yk(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Yk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Uk,Jk,Of=h(()=>{Uk=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Jk=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Xk}from"node:fs";import{join as Zk}from"node:path";function Pf(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:r,envVar:n}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[n];if(typeof s=="string"&&s!=="")return s;let o=Zk(r,"bin",t);if(Xk(o))return o;throw new Error(`reddb: binary "${t}" not found.
61
+ `))Ya(o)&&t.push(o)}catch{}}}return t}function eo(e){return`legacy:${ck("sha256").update(e).digest("hex").slice(0,24)}`}function kk(e){let t={spool_id:e.spool_id};for(let[r,n]of Object.entries(e.event??{}))r!=="spool_id"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null?t[r]=n:n!==void 0&&(t[r]=JSON.stringify(n)));return t}function df(e){let{spool_id:t,...r}=e;return Or(JSON.stringify(r))}function Sk(e){return typeof e.spool_id=="string"&&df(e)!==null}function Ek(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function Ya(e){return Cr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var pk,pf=h(()=>{"use strict";me();N();Qs();qa();pk=64*1024});function no(e){return e.trim().split(/\s+/).filter(Boolean)}function Cn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Tn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function be(e){let t=no(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:qt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:qt(t)&&t[1]?`gh ${t[1]} json-jq`:qt(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function qt(e){return e[0]==="gh"&&e.some(xk)}function xk(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Pr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var On=h(()=>{"use strict"});var V,so=h(()=>{"use strict";Ae();V="rsp_elisions_v1"});import{spawnSync as In}from"node:child_process";import{createHash as tc}from"node:crypto";import{existsSync as vk}from"node:fs";import{mkdir as Ck,readFile as Tk,readdir as ff,rename as Ok,writeFile as Pk}from"node:fs/promises";import{homedir as Ak}from"node:os";import{basename as Ik,dirname as Lk,join as Pn}from"node:path";import{fileURLToPath as $k}from"node:url";import{gunzipSync as Dk,gzipSync as Nk}from"node:zlib";function Ln(e,t){return`el:${tc("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function ht(e){return`record:${e.slice(3)}`}function Kt(e){return`expired:${e.slice(3)}`}function ao(){return"index:v1"}function Mk(e){return`blob:${e}`}function mf(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ct(e){let t=no(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":co(t)?"re-executable":"ephemeral"}return"ephemeral"}function $n(e){return fo(e.storage_class)?e.storage_class:ct(e.command)}function gf(e){return fo(e.storage_class)?e.storage_class:ct(e.command)}function rc(e){let t=jk(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=gf(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function nc(e,t,r){let n=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let o=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:o,age_display:Bk(o),storage_class:gf(s),recover:`rsp show ${s.handle}`}})}function Bk(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function sc(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function zt(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function oc(e,t){let r=process.cwd(),n=In("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=In("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:Fk(r),original_bytes:e.length}:null}function Fk(e){let t=Qa(e,["rev-parse","HEAD"])||"unborn",r=Qa(e,["write-tree"])||"no-index",n=Qa(e,["status","--porcelain=v1","-z"])||"";return tc("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Qa(e,t){let r=In("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ic(e,t){let r=no(t);if(!co(r))return null;let n=wf(process.cwd(),r,e.length);return!n||Vt(n)!==Vt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Vt(e)}}function co(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Vt(e){return tc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ac(e,t,r,n){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):r?Buffer.byteLength(JSON.stringify(r),"utf8"):n?n.stored_bytes:e.length}function cc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function uc(e,t,r){let n=Nk(e);return{key:Mk(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function hf(e){try{let t=Dk(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yf(e){let t=e.object_ids[0];if(!t)return null;let r=In("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function bf(e){if(!co(e.argv))return null;let t=wf(e.cwd,e.argv,e.original_bytes);return t?Vt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
62
+ `,"utf8"),t]):null}function wf(e,t,r){let n=t[0];if(!n)return null;let s=In(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function jk(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Dn(e){return/^el:[a-f0-9]{12}$/.test(e)}function io(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _f(e){if(!An(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:An(e.scope)?e.scope:void 0,ranking:An(e.ranking)?e.ranking:void 0}}}function Rf(e){if(!An(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function An(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function kf(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function o(i){if(n.length>=t)return;let a=await ff(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=Pn(i,c.name);c.isDirectory()?await o(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await o(e),n}function Sf(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=An(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function uo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Nn(e){if(!we(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Gk(e.derivation_recipe),n=Wk(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&io(s);return e.collection===V&&typeof e.handle=="string"&&Dn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||dc(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&io(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Hk(e.loss)&&(e.storage_class===void 0||fo(e.storage_class))}function lc(e){return!we(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!we(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Dn(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||fo(t.storage_class))&&(r===void 0||typeof r=="string"&&io(r))})}function lo(e){return we(e)&&typeof e.key=="string"&&io(e.key)&&dc(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function po(e){return we(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Hk(e){return we(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fo(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Gk(e){return we(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function Wk(e){return we(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&co(e.argv)&&typeof e.original_bytes=="number"&&dc(e.content_hash)}function dc(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function we(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ef(e){try{let n=(await Tk(e,"utf8")).trim();if(n==="")return oo();let s;try{s=JSON.parse(n)}catch{s=L(n)}if(Uk(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=oo();return await Ar(e,s),s}let n=oo();return await Ar(e,n),n}let t=oo();return await Ar(e,t),t}async function xf(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function vf(e){return Ik(e)==="red-skills.rdb"}async function mo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Pn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Pn(Ak(),".cache","red-skills","bundles")),t=Pn(e,"reddb"),r;try{r=await ff(t)}catch{return}r.sort().reverse();for(let n of r){let s=Pn(t,n,process.platform==="win32"?"red.exe":"red");if(vk(s)){process.env.REDDB_BIN=s;return}}}async function Ar(e,t){await Ck(Lk(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Pk(r,`${C(ec(t))}
63
+ `,"utf8"),await Ok(r,e)}function ec(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>ec(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=ec(n));return t}return String(e)}function oo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Uk(e){return we(e)&&e.version===1&&we(e.records)&&Object.values(e.records).every(Nn)&&(e.blobs===void 0||we(e.blobs)&&Object.values(e.blobs).every(lo))&&we(e.tombstones)&&Object.values(e.tombstones).every(po)&&lc(e.index)}function Cf(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return $k(e)}var go=h(()=>{"use strict";N();On();so()});async function Tf(e,t){return Jk?Kk(e,t):qk?Yk(e,t):Vk(e,t)}async function Vk(e,t){let{spawn:r}=await import("node:child_process"),n=r(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{n.stdin.write(s,a=>a?i(a):o())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",o=>s(o??0))})}}}function Kk(e,t){let r=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),n=r.stdin.getWriter?r.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){n?await n.write(s):(r.stdin.write(s),await r.stdin.flush())},end(){n?n.close():r.stdin.end()}},stdout:zk(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*zk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}async function Yk(e,t){let n=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=n.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:Xk(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Xk(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Jk,qk,Of=h(()=>{Jk=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",qk=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Zk}from"node:fs";import{join as Qk}from"node:path";function Pf(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:r,envVar:n}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[n];if(typeof s=="string"&&s!=="")return s;let o=Qk(r,"bin",t);if(Zk(o))return o;throw new Error(`reddb: binary "${t}" not found.
64
64
  expected at: ${o}
65
65
  override: set ${n}=/path/to/${t}
66
66
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
67
- or check the postinstall log for a download error.`)}var Af=h(()=>{});import{fileURLToPath as Qk}from"node:url";import{dirname as eS,resolve as tS,join as l$}from"node:path";function sS(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function If(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Pf({name:sS(),packageRoot:nS,envVar:"REDDB_BIN"})}var rS,nS,Lf=h(()=>{Af();rS=eS(Qk(import.meta.url)),nS=tS(rS,"..")});var oS,iS,v,go,yt=h(()=>{oS=new TextEncoder,iS=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},go=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(oS.encode(s+`
68
- `)).catch(a=>{this.pending.delete(n),i(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(iS.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new v(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function fc(e){if(typeof e!="string"||e.length===0)throw new TypeError("connect() requires a URI string (e.g. 'red://localhost:5050' or 'red:///data.rdb')");return e.startsWith("red://")||e==="red:"||e==="red:/"?aS(e):cS(e)}function aS(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let r;try{r=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=uS(s),a=r.port?Number(r.port):pc(i),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:i,host:r.hostname,port:a,path:o||void 0,username:c,password:u,token:n.get("token")??void 0,apiKey:n.get("apiKey")??n.get("api_key")??void 0,loginUrl:n.get("loginUrl")??n.get("login_url")??void 0,params:n,originalUri:e}}function cS(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):pc(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):pc(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function uS(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function pc(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var mc=h(()=>{yt()});function dS(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $f(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $f(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $f(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function pS(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}var lS,Nn,gc=h(()=>{yt();lS=new Set(["embedded"]),Nn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&lS.has(this._transport))throw new v("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:pS(n.value)}async put(t,r,n,s={}){this._guard("put");let o=dS(n);await this._client.call("cache.put",{namespace:t,key:r,value:o,...s})}async exists(t,r){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:r}))?.status??"maybe"}async invalidate(t,r){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:r})}async invalidatePrefix(t,r){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:r}))?.removed??0}async invalidateTags(t,r){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:r}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function hc(e,t){return`${yc(e)}.${fS(t)}`}function yc(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function fS(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function mS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function Df(e){return`'${String(e).replace(/'/g,"''")}'`}var Ir,bc=h(()=>{yt();Ir=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Df).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${hc(s,t)} = ${mS(r)}${i}${o}`})}set(t,r,n={}){return this.put(t,r,n)}async get(t,r={}){let n=r.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${hc(n,t)}`}))?.rows?.[0]?.value??null}async getMany(t,r={}){let n=[];for(let s of t)n.push(await this.get(s,r));return n}async exists(t,r={}){return{exists:await this.get(t,r)!==null}}async delete(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${hc(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${yc(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Df).join(", ")}] FROM ${yc(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
67
+ or check the postinstall log for a download error.`)}var Af=h(()=>{});import{fileURLToPath as eS}from"node:url";import{dirname as tS,resolve as rS,join as d$}from"node:path";function oS(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function If(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Pf({name:oS(),packageRoot:sS,envVar:"REDDB_BIN"})}var nS,sS,Lf=h(()=>{Af();nS=tS(eS(import.meta.url)),sS=rS(nS,"..")});var iS,aS,v,ho,yt=h(()=>{iS=new TextEncoder,aS=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},ho=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(iS.encode(s+`
68
+ `)).catch(a=>{this.pending.delete(n),i(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(aS.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new v(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function fc(e){if(typeof e!="string"||e.length===0)throw new TypeError("connect() requires a URI string (e.g. 'red://localhost:5050' or 'red:///data.rdb')");return e.startsWith("red://")||e==="red:"||e==="red:/"?cS(e):uS(e)}function cS(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let r;try{r=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=lS(s),a=r.port?Number(r.port):pc(i),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:i,host:r.hostname,port:a,path:o||void 0,username:c,password:u,token:n.get("token")??void 0,apiKey:n.get("apiKey")??n.get("api_key")??void 0,loginUrl:n.get("loginUrl")??n.get("login_url")??void 0,params:n,originalUri:e}}function uS(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):pc(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):pc(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function lS(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function pc(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var mc=h(()=>{yt()});function pS(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $f(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $f(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $f(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function fS(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}var dS,Mn,gc=h(()=>{yt();dS=new Set(["embedded"]),Mn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&dS.has(this._transport))throw new v("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:fS(n.value)}async put(t,r,n,s={}){this._guard("put");let o=pS(n);await this._client.call("cache.put",{namespace:t,key:r,value:o,...s})}async exists(t,r){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:r}))?.status??"maybe"}async invalidate(t,r){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:r})}async invalidatePrefix(t,r){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:r}))?.removed??0}async invalidateTags(t,r){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:r}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function hc(e,t){return`${yc(e)}.${mS(t)}`}function yc(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function mS(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function gS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function Df(e){return`'${String(e).replace(/'/g,"''")}'`}var Ir,bc=h(()=>{yt();Ir=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Df).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${hc(s,t)} = ${gS(r)}${i}${o}`})}set(t,r,n={}){return this.put(t,r,n)}async get(t,r={}){let n=r.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${hc(n,t)}`}))?.rows?.[0]?.value??null}async getMany(t,r={}){let n=[];for(let s of t)n.push(await this.get(s,r));return n}async exists(t,r={}){return{exists:await this.get(t,r)!==null}}async delete(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${hc(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${yc(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Df).join(", ")}] FROM ${yc(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
69
69
 
70
70
  `)){let l=u.split(`
71
- `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function gS(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=ut(e),a=ut(t),c=s!=null?` GROUP ${ut(s)}`:"",u=o!=null?_c(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ut(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function _c(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function hS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function yS(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${hS(e.priority)}`),e.key!=null&&(t+=` KEY ${Rc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Rc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function bS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Rc(e):JSON.stringify(e)}function Rc(e){return`'${String(e).replace(/'/g,"''")}'`}function wc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Mn,kc=h(()=>{yt();Mn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ut(t)}`})}push(t,r,n={}){let s=yS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${bS(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ut(t)}${_c(r)}`});return wc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ut(t)}${_c(r)}`});return wc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ut(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ut(t)}`})}async readWait(t,r,n={}){let s=gS(t,r,n),o=await this.client.call("query",{sql:s});return wc(o)}}});function Nf(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function wS(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function ho(e){return String(e).split(".").map(Mf).join(".")}function Mf(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function _S(e){return Bf(JSON.stringify(e))}function RS(e){return JSON.stringify(e)}function kS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?_S(e):Bf(e)}function Bf(e){return`'${String(e).replace(/'/g,"''")}'`}var Bn,Sc=h(()=>{yt();Bn=class{constructor(t){this.db=t}async insert(t,r){Nf(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${ho(t)} DOCUMENT VALUES (${RS(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=wS(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${ho(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Nf(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Mf(c)} = ${kS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${ho(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${ho(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function SS(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return xS(e)}function ES(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function bt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function xS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ff(e)}function Ff(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,Ec=h(()=>{Fn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ES(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ff).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${bt(s)} ${bt(t)} = ${SS(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${bt(n)} ${bt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${bt(n)} ${bt(t)}`})}}});function vS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Lr(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function CS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):jf(e)}function jf(e){return`'${String(e).replace(/'/g,"''")}'`}var jn,xc=h(()=>{jn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){vS(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(jf).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Lr(s)}.${Lr(t)} = ${CS(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Lr(n)}.${Lr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Lr(n)}.${Lr(t)}`})}}});async function Gf(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(TS)}async function Wf(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${PS(t)}`)).rows??[]).some(n=>n.name===String(t))}function TS(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Hf(e){return String(e).split(".").map(OS).join(".")}function OS(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function PS(e){return`'${String(e).replace(/'/g,"''")}'`}var Hn,vc=h(()=>{yt();Hn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Hf).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Hf(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function wo(e,t={}){let r=fc(e);if(jS(r),r.kind==="embedded"){let n=FS(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=BS(r),o=t.binary??If(),i=await Tf(o,s),a=new go(i);return await a.call("version",{}),new Tc(a,{transport:"embedded"})}}function Jf(e){return LS(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:DS(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&MS(e)?{$uuid:e}:e}function LS(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function $S(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jf):e.map(Jf)}function DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function NS(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function MS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function yo(e){if(Array.isArray(e))return e.map(yo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return NS(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=yo(s);return r}return e}function BS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function FS(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");r.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");r.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");r.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function jS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",AS)}function Oc(){return new v(Uf,`${Uf}: nested transactions are not supported on one connection`)}function Vf(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function HS(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qf} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function GS(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${qf} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var AS,IS,qf,Uf,bo,Cc,Tc,Kf=h(()=>{Of();Lf();yt();mc();gc();bc();kc();Sc();Ec();xc();vc();gc();bc();kc();Sc();Ec();xc();vc();mc();AS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",IS="1.0",qf="1.0.9",Uf="NESTED_TX_NOT_SUPPORTED";bo=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw Oc()}},Cc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Oc();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new bo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Vf(r,n)}throw r}}},Tc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=IS,this.cache=new Nn(t,this.transport),this.queue=new Mn(t),this.queues=this.queue,this.documents=new Bn(this);let n=new Ir(t);this.kv=Object.assign((s="kv_default")=>new Ir(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new Fn(t,s),this.vault=(s="red.vault")=>new jn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=$S(r);return n==null?this.client.call("query",{sql:t}).then(yo):this.client.call("query",{sql:t,params:n}).then(yo)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return HS(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return GS(n,r.length)}tx(){return new Cc(this)}async transaction(t){if(this.inTransaction)throw Oc();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new bo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Vf(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Wf(this,t)}list(){return Gf(this)}from(t){return new Hn(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as WS}from"node:crypto";import{existsSync as zf}from"node:fs";import{mkdir as US,readFile as JS,rename as Pc,rm as Gn,stat as Ac}from"node:fs/promises";import{basename as qS,dirname as VS}from"node:path";async function Yf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Xf=h(()=>{"use strict";Kf();no();mo();Yt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=Cf(t.uri),n=await xf(r),s=new e(n,{uri:t.uri,ttlDays:co(t.ttlDays,Ce),ephemeralTtlHours:co(t.ephemeralTtlHours,Te),byteBudget:co(t.byteBudget,Oe),now:t.now??(()=>new Date)});return vf(n)?(await fo(),await US(VS(n),{recursive:!0}),s.db=await wo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Ef(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!this.document.blobs[m.key]&&(this.document.blobs[m.key]=m,this.dirty=!0);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};return delete this.document.tombstones[Kt(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!$n(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:zt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:rc(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),nc(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=zt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=zt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[Kt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Kt(t)];return lo(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yf(t.derivation_recipe);if(t.reexecution_recipe)return bf(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return uo(r)?hf(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Ar(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ac(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},i=Buffer.byteLength(`${JSON.stringify(o)}
72
- `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Ar(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(V)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===V);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${V}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${V}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${V}`),await this.db.query(`CREATE KV IF NOT EXISTS ${V}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=In(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!uo(await this.kvGet(m.key))&&await this.kv().put(m.key,m);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};await this.kv().delete(Kt(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(b=>b.handle!==i);return y.push({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,w),i}async getRedDb(t){if(!$n(t))return null;let r=await this.kvGet(Kt(t));if(lo(r))return r;let n=await this.kvGet(ht(t));if(!Dn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Ln(n),blob_key:n.blob_key},n.expires_at),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Ln(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:zt(t.records),oldest:t.records.reduce((r,n)=>r==null||n.created_at<r?n.created_at:r,null),budget:this.opts.byteBudget,storage_classes:rc(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return nc(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=_f(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Rf(r);return await this.memoryIngestRedDb(n)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await kf(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await JS(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=qS(s),c=WS("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},p=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(p.rows[0]?.red_entity_id??p.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>Sf(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
73
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(io());return lc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(io(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=zt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=zt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Ac(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await Gn(o,{force:!0}),await Gn(i,{force:!0});let a=await wo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${mf(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Ac(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Gn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Pc(this.path,i),await Pc(o,this.path),await Gn(i,{force:!0})}catch(u){throw!zf(this.path)&&zf(i)&&await Pc(i,this.path),await Gn(o,{force:!0}),u}finally{this.db=await wo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===V){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:io(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:V,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Kt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(ht(t));if(!Dn(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Zf={};F(Zf,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>V,RspElisionStore:()=>Yt,contentHandle:()=>In,ensureReddbBinaryFromWarmCache:()=>fo,provisionElisionStore:()=>Yf,storageClassForCommand:()=>ct});var _o=h(()=>{"use strict";no();mo();mo();Xf()});async function Ro(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await tm(e,s),i=(await Wn(e,X)).filter(E=>Dr(E)>=s),a=o.filter(E=>P(E.event_type)!=="show"&&P(E.degradation_reason)===""),c=o.filter(E=>P(E.event_type)==="show"),u=o.filter(E=>P(E.degradation_reason)!==""),l=0,p=0,d=0,f=0,m=!1,w=new Map,_=new Map,g=[],y=0,b=0,R=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Ye=ye(E.emitted_bytes),Tt=Math.max(0,I-Ye),ir=Nr(E,"raw"),k=Nr(E,"emitted"),O=Math.max(0,ir.tokens-k.tokens);m||=(E.estimated===!0||ir.estimated||k.estimated)&&O>0,p+=I,d+=Ye,f+=O;let Ot=Xt(E).slice(0,10);Ot&&w.set(Ot,(w.get(Ot)??0)+O);let Pt=P(E.command)||"unknown",ke=_.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=Tt,ke.tokens_saved+=O,_.set(Pt,ke);let Se=mt(E.wrapper_ms);Se!=null&&g.push(Se),y+=ye(E.store_open_count);let ar=mt(E.store_elapsed_ms);ar!=null&&(b+=ar,R++)}let T=new Map,B=new Map,Re=[],fe=null;for(let E of u){let I=P(E.degradation_reason)||P(E.reason)||"unknown",Ye=P(E.wrapper_family)||be(P(E.command));T.set(I,(T.get(I)??0)+1),B.set(Ye,(B.get(Ye)??0)+1);let Tt=Xt(E);Re.push({timestamp:Tt,family:Ye,command:P(E.command)||"unknown",reason:I,exit_code:mt(E.wrapper_exit_code),stderr_head:P(E.stderr_head)||null}),(!fe||Tt>fe.timestamp)&&(fe={timestamp:Tt,reason:I,command:P(E.command)||"unknown"})}let oe=a.length+u.length,lt=c.filter(E=>E.hit===!0).length,ie=pa(f,m),Vr=KS(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[...w.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:lt,show_misses:Math.max(0,c.length-lt),show_hit_rate:c.length===0?0:Z(lt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...B.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Re.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:fe},latency:{wrapper_ms_p50:$r(g,.5),wrapper_ms_p95:$r(g,.95),store_open_count_sum:y,store_elapsed_ms_sum:Z(b),store_elapsed_ms_avg:R===0?null:Z(b/R)},decisions:Vr}}function KS(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let p=P(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function Ic(e,t,r=new Date){let s=(await Wn(e,ce)).filter(o=>Dr(o)<=r.getTime()||Xt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Xt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:nE(s)}}async function Lc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await tm(e,i),c=a.filter(k=>P(k.event_type)!=="show"&&P(k.event_type)!=="control_holdout"&&k.control_holdout!==!0&&P(k.degradation_reason)===""),u=a.filter(k=>P(k.event_type)==="control_holdout"||k.control_holdout===!0),l=a.filter(k=>P(k.event_type)==="show"),p=a.filter(k=>P(k.degradation_reason)!==""),d=[...c,...p].map(Dr).filter(k=>Number.isFinite(k)&&k>0),f=d.length===0?null:Math.min(...d),m=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/pE()))),w=[],_=new Map,g=new Map,y=new Map,b=new Map,R=new Map,T=new Map,B=0,Re=!1,fe=0,oe=null,lt=0,ie=0;for(let k of c){let O=Xt(k),Ot=O.slice(0,10),Pt=O.slice(0,16),ke=be(P(k.command)),Se=Math.max(0,Nr(k,"raw").tokens-Nr(k,"emitted").tokens);B+=Se,Re||=k.estimated===!0&&Se>0;let ar=Math.max(0,ye(k.raw_bytes)-ye(k.emitted_bytes)),fi=mt(k.wrapper_ms);if(fi!=null){w.push(fi);let ol=_.get(ke)??[];ol.push(fi),_.set(ke,ol)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let mi=aE(O);mi&&b.set(mi,(b.get(mi)??0)+1);let gi=lE(O);gi&&R.set(gi,(R.get(gi)??0)+Se);let ls=T.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ls.invocations++,ls.tokens_saved+=Se,ls.bytes_saved+=ar,T.set(ke,ls),k.elided===!0&&fe++,(k.store_open_count!=null||k.store_elapsed_ms!=null)&&(lt++,ye(k.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&ar>oe.bytes_saved)&&(oe={timestamp:O,command_family:ke,tokens_saved:Se,bytes_saved:ar})}let Vr=p.map(k=>({timestamp:Xt(k),command_family:be(P(k.command)),reason:P(k.degradation_reason)||P(k.reason)||"unknown"})).sort((k,O)=>k.timestamp.localeCompare(O.timestamp)),E=new Map;for(let k of Vr)E.set(k.reason,(E.get(k.reason)??0)+1);let I=ZS(Vr),Ye=XS(l),Tt=eE([...T.values()],Ye,I),ir=[...y.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:m,since:o,until:s,label:`window: ${n}d, data: ${m}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:em(w),by_command_family:[..._.entries()].sort((k,O)=>O[1].length-k[1].length||k[0].localeCompare(O[0])).map(([k,O])=>({command_family:k,count:O.length,...em(O)}))},throughput:{requests_per_day:[...g.entries()].sort(([k],[O])=>k.localeCompare(O)).map(([k,O])=>({date:k,requests:O})),active_minute_avg:y.size===0?null:Z([...y.values()].reduce((k,O)=>k+O,0)/y.size),peak_minute:ir?{minute:ir[0],requests:ir[1]}:null,hour_weekday_heatmap:cE(b)},savings:{tokens:pa(B,Re),measured_control_holdout:zS(c,u),weekly_tokens_saved:dE(R),elision_rate:c.length===0?0:Z(fe/c.length),top_commands_by_tokens_saved:[...T.values()].sort((k,O)=>O.tokens_saved-k.tokens_saved||O.bytes_saved-k.bytes_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((k,O)=>O.invocations-k.invocations||O.tokens_saved-k.tokens_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Vr,degradations_by_reason:[...E.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0])).map(([k,O])=>({reason:k,count:O})),cold_boots:lt===0?null:ie,warm_hits:lt===0?null:Math.max(0,lt-ie)},mining:{recovery_usage_by_family:Ye,degradation_clusters:I,threshold_tuning_suggestions:Tt}}}async function tm(e,t){let r=(await Wn(e,ce)).filter(i=>Dr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await Wn(e,he)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await Wn(e,Ue)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function Nr(e,t){let r=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function zS(e,t){let r=rE(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(Qf).filter(a=>a!=null),s=t.map(Qf).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(tE(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:YS(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qf(e){let t=Nr(e,"raw").tokens;if(t<=0)return null;let r=Nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function YS(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function XS(e){let t=new Map;for(let r of e){let n=be(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function ZS(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:QS(r)}))}function QS(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function eE(e,t,r){let n=[];for(let s of t.filter(o=>o.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(o=>o.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function tE(e){return e.reduce((t,r)=>t+r,0)/e.length}function rE(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function nE(e){let t=oE();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=sE(r.storage_class)??ct(P(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function sE(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function oE(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function Wn(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>iE(n.value)).filter(n=>Cr(n))}function iE(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dr(e){let t=Date.parse(Xt(e));return Number.isFinite(t)?t:0}function Xt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function $r(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function em(e){return{wrapper_ms_p50:$r(e,.5),wrapper_ms_p90:$r(e,.9),wrapper_ms_p95:$r(e,.95),wrapper_ms_p99:$r(e,.99)}}function Z(e){return Math.round(e*100)/100}function aE(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${uE(t.getUTCDay())}:${t.getUTCHours()}`:null}function cE(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function uE(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function lE(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function dE(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function pE(){return 24*60*60*1e3}var rm=h(()=>{"use strict";Tn();_o();fa();Zs();qa()});var Un={};F(Un,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ue,RSP_TELEMETRY_INDEX_COLLECTION:()=>En,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ua,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ja,RSP_TELEMETRY_SPOOL_FILE:()=>Wa,appendTelemetryEvent:()=>at,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Za,parseTelemetryEvent:()=>Or,readAccountingLaneStats:()=>Ic,readTelemetryGainsReport:()=>Lc,readTelemetryStats:()=>Ro,takeTelemetrySpool:()=>fk,telemetryLegacySpoolPath:()=>to,telemetrySpoolCorrectionsPath:()=>Xa,telemetrySpoolPath:()=>it});var Ie=h(()=>{"use strict";Zs();pf();rm()});var sm={};F(sm,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>qs,sweepGhEtagCache:()=>Fa});import{spawn as fE}from"node:child_process";import{createHash as mE,randomUUID as gE}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??ve,o=hE(e.path,e.params),i=yE(o),c=Ji(r,"gh-api-json")?void 0:await Na(r,i),u=["api","--include","--method","GET",e.path];for(let[m,w]of nm(e.params))u.push("-f",`${m}=${String(w)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await bE(u,t,e.env,e.signal),p=m=>{let w=un();an(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:w.childMs,selfStateBytesRead:w.selfStateBytesRead,bytesSaved:m},s)},d=wE(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await $c(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let m=d.headers.get("etag");return m&&await Ma(r,{key:i,request:o,etag:m,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:m??void 0,quotaFree:!1}}return p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function nm(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function hE(e,t){return JSON.stringify({method:"GET",path:e,params:nm(t)})}function yE(e){return mE("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function bE(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=fE("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],p=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>p.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(p).toString("utf8").trim()})})})}function wE(e){let t=e.replace(/\r\n/g,`
71
+ `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function hS(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=ut(e),a=ut(t),c=s!=null?` GROUP ${ut(s)}`:"",u=o!=null?_c(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ut(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function _c(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function yS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function bS(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${yS(e.priority)}`),e.key!=null&&(t+=` KEY ${Rc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Rc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function wS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Rc(e):JSON.stringify(e)}function Rc(e){return`'${String(e).replace(/'/g,"''")}'`}function wc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Bn,kc=h(()=>{yt();Bn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ut(t)}`})}push(t,r,n={}){let s=bS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${wS(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ut(t)}${_c(r)}`});return wc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ut(t)}${_c(r)}`});return wc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ut(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ut(t)}`})}async readWait(t,r,n={}){let s=hS(t,r,n),o=await this.client.call("query",{sql:s});return wc(o)}}});function Nf(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function _S(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function yo(e){return String(e).split(".").map(Mf).join(".")}function Mf(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function RS(e){return Bf(JSON.stringify(e))}function kS(e){return JSON.stringify(e)}function SS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?RS(e):Bf(e)}function Bf(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,Sc=h(()=>{yt();Fn=class{constructor(t){this.db=t}async insert(t,r){Nf(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${yo(t)} DOCUMENT VALUES (${kS(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=_S(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${yo(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Nf(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Mf(c)} = ${SS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${yo(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${yo(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function ES(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return vS(e)}function xS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function bt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function vS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ff(e)}function Ff(e){return`'${String(e).replace(/'/g,"''")}'`}var jn,Ec=h(()=>{jn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){xS(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ff).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${bt(s)} ${bt(t)} = ${ES(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${bt(n)} ${bt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${bt(n)} ${bt(t)}`})}}});function CS(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Lr(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function TS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):jf(e)}function jf(e){return`'${String(e).replace(/'/g,"''")}'`}var Hn,xc=h(()=>{Hn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){CS(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(jf).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Lr(s)}.${Lr(t)} = ${TS(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Lr(n)}.${Lr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Lr(n)}.${Lr(t)}`})}}});async function Gf(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(OS)}async function Wf(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${AS(t)}`)).rows??[]).some(n=>n.name===String(t))}function OS(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Hf(e){return String(e).split(".").map(PS).join(".")}function PS(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function AS(e){return`'${String(e).replace(/'/g,"''")}'`}var Gn,vc=h(()=>{yt();Gn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Hf).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Hf(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function _o(e,t={}){let r=fc(e);if(HS(r),r.kind==="embedded"){let n=jS(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=FS(r),o=t.binary??If(),i=await Tf(o,s),a=new ho(i);return await a.call("version",{}),new Tc(a,{transport:"embedded"})}}function Jf(e){return $S(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:NS(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&BS(e)?{$uuid:e}:e}function $S(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function DS(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jf):e.map(Jf)}function NS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function MS(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function BS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function bo(e){if(Array.isArray(e))return e.map(bo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return MS(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=bo(s);return r}return e}function FS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function jS(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");r.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");r.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");r.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function HS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",IS)}function Oc(){return new v(Uf,`${Uf}: nested transactions are not supported on one connection`)}function Vf(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function GS(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qf} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function WS(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${qf} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var IS,LS,qf,Uf,wo,Cc,Tc,Kf=h(()=>{Of();Lf();yt();mc();gc();bc();kc();Sc();Ec();xc();vc();gc();bc();kc();Sc();Ec();xc();vc();mc();IS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",LS="1.0",qf="1.0.9",Uf="NESTED_TX_NOT_SUPPORTED";wo=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw Oc()}},Cc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Oc();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new wo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Vf(r,n)}throw r}}},Tc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=LS,this.cache=new Mn(t,this.transport),this.queue=new Bn(t),this.queues=this.queue,this.documents=new Fn(this);let n=new Ir(t);this.kv=Object.assign((s="kv_default")=>new Ir(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new jn(t,s),this.vault=(s="red.vault")=>new Hn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=DS(r);return n==null?this.client.call("query",{sql:t}).then(bo):this.client.call("query",{sql:t,params:n}).then(bo)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return GS(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return WS(n,r.length)}tx(){return new Cc(this)}async transaction(t){if(this.inTransaction)throw Oc();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new wo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Vf(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Wf(this,t)}list(){return Gf(this)}from(t){return new Gn(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as US}from"node:crypto";import{existsSync as zf}from"node:fs";import{mkdir as JS,readFile as qS,rename as Pc,rm as Wn,stat as Ac}from"node:fs/promises";import{basename as VS,dirname as KS}from"node:path";async function Yf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Xf=h(()=>{"use strict";Kf();so();go();Yt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=Cf(t.uri),n=await xf(r),s=new e(n,{uri:t.uri,ttlDays:uo(t.ttlDays,Ce),ephemeralTtlHours:uo(t.ephemeralTtlHours,Te),byteBudget:uo(t.byteBudget,Oe),now:t.now??(()=>new Date)});return vf(n)?(await mo(),await JS(KS(n),{recursive:!0}),s.db=await _o(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Ef(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Ln(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!this.document.blobs[m.key]&&(this.document.blobs[m.key]=m,this.dirty=!0);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};return delete this.document.tombstones[Kt(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Dn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Nn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:$n(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:$n(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:zt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:rc(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),nc(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=zt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=zt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[Kt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Kt(t)];return po(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yf(t.derivation_recipe);if(t.reexecution_recipe)return bf(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return lo(r)?hf(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Ar(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ac(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},i=Buffer.byteLength(`${JSON.stringify(o)}
72
+ `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Ar(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(V)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===V);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${V}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${V}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${V}`),await this.db.query(`CREATE KV IF NOT EXISTS ${V}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Ln(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!lo(await this.kvGet(m.key))&&await this.kv().put(m.key,m);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};await this.kv().delete(Kt(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(b=>b.handle!==i);return y.push({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,w),i}async getRedDb(t){if(!Dn(t))return null;let r=await this.kvGet(Kt(t));if(po(r))return r;let n=await this.kvGet(ht(t));if(!Nn(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:$n(n),blob_key:n.blob_key},n.expires_at),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:$n(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:zt(t.records),oldest:t.records.reduce((r,n)=>r==null||n.created_at<r?n.created_at:r,null),budget:this.opts.byteBudget,storage_classes:rc(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return nc(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=_f(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Rf(r);return await this.memoryIngestRedDb(n)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await kf(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await qS(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=VS(s),c=US("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},p=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(p.rows[0]?.red_entity_id??p.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>Sf(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
73
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ao());return lc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ao(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=zt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=zt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Ac(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await Wn(o,{force:!0}),await Wn(i,{force:!0});let a=await _o(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${mf(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Ac(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Wn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Pc(this.path,i),await Pc(o,this.path),await Wn(i,{force:!0})}catch(u){throw!zf(this.path)&&zf(i)&&await Pc(i,this.path),await Wn(o,{force:!0}),u}finally{this.db=await _o(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===V){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:ao(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:V,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Kt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(ht(t));if(!Nn(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Zf={};F(Zf,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>V,RspElisionStore:()=>Yt,contentHandle:()=>Ln,ensureReddbBinaryFromWarmCache:()=>mo,provisionElisionStore:()=>Yf,storageClassForCommand:()=>ct});var Ro=h(()=>{"use strict";so();go();go();Xf()});async function ko(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await tm(e,s),i=(await Un(e,X)).filter(E=>Dr(E)>=s),a=o.filter(E=>P(E.event_type)!=="show"&&P(E.degradation_reason)===""),c=o.filter(E=>P(E.event_type)==="show"),u=o.filter(E=>P(E.degradation_reason)!==""),l=0,p=0,d=0,f=0,m=!1,w=new Map,_=new Map,g=[],y=0,b=0,R=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Ye=ye(E.emitted_bytes),Tt=Math.max(0,I-Ye),ir=Nr(E,"raw"),k=Nr(E,"emitted"),O=Math.max(0,ir.tokens-k.tokens);m||=(E.estimated===!0||ir.estimated||k.estimated)&&O>0,p+=I,d+=Ye,f+=O;let Ot=Xt(E).slice(0,10);Ot&&w.set(Ot,(w.get(Ot)??0)+O);let Pt=P(E.command)||"unknown",ke=_.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=Tt,ke.tokens_saved+=O,_.set(Pt,ke);let Se=mt(E.wrapper_ms);Se!=null&&g.push(Se),y+=ye(E.store_open_count);let ar=mt(E.store_elapsed_ms);ar!=null&&(b+=ar,R++)}let T=new Map,B=new Map,Re=[],fe=null;for(let E of u){let I=P(E.degradation_reason)||P(E.reason)||"unknown",Ye=P(E.wrapper_family)||be(P(E.command));T.set(I,(T.get(I)??0)+1),B.set(Ye,(B.get(Ye)??0)+1);let Tt=Xt(E);Re.push({timestamp:Tt,family:Ye,command:P(E.command)||"unknown",reason:I,exit_code:mt(E.wrapper_exit_code),stderr_head:P(E.stderr_head)||null}),(!fe||Tt>fe.timestamp)&&(fe={timestamp:Tt,reason:I,command:P(E.command)||"unknown"})}let oe=a.length+u.length,lt=c.filter(E=>E.hit===!0).length,ie=pa(f,m),Vr=zS(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[...w.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:lt,show_misses:Math.max(0,c.length-lt),show_hit_rate:c.length===0?0:Z(lt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...B.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Re.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:fe},latency:{wrapper_ms_p50:$r(g,.5),wrapper_ms_p95:$r(g,.95),store_open_count_sum:y,store_elapsed_ms_sum:Z(b),store_elapsed_ms_avg:R===0?null:Z(b/R)},decisions:Vr}}function zS(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let p=P(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function Ic(e,t,r=new Date){let s=(await Un(e,ce)).filter(o=>Dr(o)<=r.getTime()||Xt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Xt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:sE(s)}}async function Lc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await tm(e,i),c=a.filter(k=>P(k.event_type)!=="show"&&P(k.event_type)!=="control_holdout"&&k.control_holdout!==!0&&P(k.degradation_reason)===""),u=a.filter(k=>P(k.event_type)==="control_holdout"||k.control_holdout===!0),l=a.filter(k=>P(k.event_type)==="show"),p=a.filter(k=>P(k.degradation_reason)!==""),d=[...c,...p].map(Dr).filter(k=>Number.isFinite(k)&&k>0),f=d.length===0?null:Math.min(...d),m=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/fE()))),w=[],_=new Map,g=new Map,y=new Map,b=new Map,R=new Map,T=new Map,B=0,Re=!1,fe=0,oe=null,lt=0,ie=0;for(let k of c){let O=Xt(k),Ot=O.slice(0,10),Pt=O.slice(0,16),ke=be(P(k.command)),Se=Math.max(0,Nr(k,"raw").tokens-Nr(k,"emitted").tokens);B+=Se,Re||=k.estimated===!0&&Se>0;let ar=Math.max(0,ye(k.raw_bytes)-ye(k.emitted_bytes)),mi=mt(k.wrapper_ms);if(mi!=null){w.push(mi);let ol=_.get(ke)??[];ol.push(mi),_.set(ke,ol)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let gi=cE(O);gi&&b.set(gi,(b.get(gi)??0)+1);let hi=dE(O);hi&&R.set(hi,(R.get(hi)??0)+Se);let ds=T.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ds.invocations++,ds.tokens_saved+=Se,ds.bytes_saved+=ar,T.set(ke,ds),k.elided===!0&&fe++,(k.store_open_count!=null||k.store_elapsed_ms!=null)&&(lt++,ye(k.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&ar>oe.bytes_saved)&&(oe={timestamp:O,command_family:ke,tokens_saved:Se,bytes_saved:ar})}let Vr=p.map(k=>({timestamp:Xt(k),command_family:be(P(k.command)),reason:P(k.degradation_reason)||P(k.reason)||"unknown"})).sort((k,O)=>k.timestamp.localeCompare(O.timestamp)),E=new Map;for(let k of Vr)E.set(k.reason,(E.get(k.reason)??0)+1);let I=QS(Vr),Ye=ZS(l),Tt=tE([...T.values()],Ye,I),ir=[...y.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:m,since:o,until:s,label:`window: ${n}d, data: ${m}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:em(w),by_command_family:[..._.entries()].sort((k,O)=>O[1].length-k[1].length||k[0].localeCompare(O[0])).map(([k,O])=>({command_family:k,count:O.length,...em(O)}))},throughput:{requests_per_day:[...g.entries()].sort(([k],[O])=>k.localeCompare(O)).map(([k,O])=>({date:k,requests:O})),active_minute_avg:y.size===0?null:Z([...y.values()].reduce((k,O)=>k+O,0)/y.size),peak_minute:ir?{minute:ir[0],requests:ir[1]}:null,hour_weekday_heatmap:uE(b)},savings:{tokens:pa(B,Re),measured_control_holdout:YS(c,u),weekly_tokens_saved:pE(R),elision_rate:c.length===0?0:Z(fe/c.length),top_commands_by_tokens_saved:[...T.values()].sort((k,O)=>O.tokens_saved-k.tokens_saved||O.bytes_saved-k.bytes_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((k,O)=>O.invocations-k.invocations||O.tokens_saved-k.tokens_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Vr,degradations_by_reason:[...E.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0])).map(([k,O])=>({reason:k,count:O})),cold_boots:lt===0?null:ie,warm_hits:lt===0?null:Math.max(0,lt-ie)},mining:{recovery_usage_by_family:Ye,degradation_clusters:I,threshold_tuning_suggestions:Tt}}}async function tm(e,t){let r=(await Un(e,ce)).filter(i=>Dr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await Un(e,he)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await Un(e,Ue)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function Nr(e,t){let r=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function YS(e,t){let r=nE(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(Qf).filter(a=>a!=null),s=t.map(Qf).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(rE(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:XS(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qf(e){let t=Nr(e,"raw").tokens;if(t<=0)return null;let r=Nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function XS(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function ZS(e){let t=new Map;for(let r of e){let n=be(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function QS(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:eE(r)}))}function eE(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function tE(e,t,r){let n=[];for(let s of t.filter(o=>o.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(o=>o.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function rE(e){return e.reduce((t,r)=>t+r,0)/e.length}function nE(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function sE(e){let t=iE();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=oE(r.storage_class)??ct(P(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function oE(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function iE(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function Un(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>aE(n.value)).filter(n=>Cr(n))}function aE(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dr(e){let t=Date.parse(Xt(e));return Number.isFinite(t)?t:0}function Xt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function $r(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function em(e){return{wrapper_ms_p50:$r(e,.5),wrapper_ms_p90:$r(e,.9),wrapper_ms_p95:$r(e,.95),wrapper_ms_p99:$r(e,.99)}}function Z(e){return Math.round(e*100)/100}function cE(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${lE(t.getUTCDay())}:${t.getUTCHours()}`:null}function uE(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function lE(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function dE(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function pE(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function fE(){return 24*60*60*1e3}var rm=h(()=>{"use strict";On();Ro();fa();Qs();qa()});var Jn={};F(Jn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ue,RSP_TELEMETRY_INDEX_COLLECTION:()=>xn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ua,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ja,RSP_TELEMETRY_SPOOL_FILE:()=>Wa,appendTelemetryEvent:()=>at,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Za,parseTelemetryEvent:()=>Or,readAccountingLaneStats:()=>Ic,readTelemetryGainsReport:()=>Lc,readTelemetryStats:()=>ko,takeTelemetrySpool:()=>mk,telemetryLegacySpoolPath:()=>ro,telemetrySpoolCorrectionsPath:()=>Xa,telemetrySpoolPath:()=>it});var Ie=h(()=>{"use strict";Qs();pf();rm()});var sm={};F(sm,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Vs,sweepGhEtagCache:()=>Fa});import{spawn as mE}from"node:child_process";import{createHash as gE,randomUUID as hE}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??ve,o=yE(e.path,e.params),i=bE(o),c=qi(r,"gh-api-json")?void 0:await Na(r,i),u=["api","--include","--method","GET",e.path];for(let[m,w]of nm(e.params))u.push("-f",`${m}=${String(w)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await wE(u,t,e.env,e.signal),p=m=>{let w=un();an(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:w.childMs,selfStateBytesRead:w.selfStateBytesRead,bytesSaved:m},s)},d=_E(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await $c(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let m=d.headers.get("etag");return m&&await Ma(r,{key:i,request:o,etag:m,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:m??void 0,quotaFree:!1}}return p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function nm(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function yE(e,t){return JSON.stringify({method:"GET",path:e,params:nm(t)})}function bE(e){return gE("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function wE(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=mE("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],p=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>p.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(p).toString("utf8").trim()})})})}function _E(e){let t=e.replace(/\r\n/g,`
74
74
  `),r=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(r.length===0)return{statusCode:0,headers:new Map,body:e};let n=r[r.length-1],s=Number(n[1]),o=n.index+n[0].length,i=t.indexOf(`
75
75
 
76
76
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
77
- `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function $c(e,t,r){await at(e,{collection:X,id:gE(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}var ko=h(()=>{"use strict";Sn();Sn();J();Ie()});import{spawn as _E}from"node:child_process";async function Jn(e,t){return await RE(t,async r=>{let n=await SE(e,t.cwd,r);return n||await kE(e,t.cwd,r)})}async function RE(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let r=new AbortController,n=setTimeout(()=>r.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,r.signal]);try{let o=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(n)}}async function kE(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,o=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},i=_E("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&Ds(l).then(p=>$s(p,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function SE(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await EE(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Sr(s,"database_id")||Sr(s,"id"),status:Y(s,"status").toUpperCase(),conclusion:Y(s,"conclusion").toUpperCase(),workflowName:Y(s,"workflow_name")||Y(s,"name"),headBranch:Y(s,"head_branch"),url:Y(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=js(e,"--branch"),s=js(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Jt(Ge(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Sr(a,"database_id")||Sr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=js(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Jt(JSON.parse(s.stdout)).map(i=>({tagName:Y(i,"tag_name"),publishedAt:Y(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function EE(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=Y(Ge(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Jt(Ge(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Jt(Ge(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
78
- `),stdout:JSON.stringify({number:Sr(s,"number"),state:Y(s,"state").toUpperCase(),mergeable:xE(s),statusCheckRollup:[...c.map(l=>({conclusion:Y(l,"state").toUpperCase()})),...u.map(l=>({status:Y(l,"status").toUpperCase(),conclusion:Y(l,"conclusion").toUpperCase()}))],url:Y(s,"html_url")})}}function xE(e){let t=Y(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var om=h(()=>{"use strict";ko();Hs();st()});function am(e,t,r){let n=Date.now();return()=>vE(e,t,r,n)}async function vE(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return z("missing PR number");let s=await Jn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return z(s.stderr||"gh pr view failed");let o=Ia(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(CE),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return nt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return nt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return nt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return yr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||p<r.emptyChecksGraceMs?yr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):nt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?yr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function cm(e,t){if(!e)return z("missing run id");let r=await Jn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return z(r.stderr||"gh run view failed");let n=Ia(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?yr(`run ${e} is ${s||"pending"}`):o==="success"?nt("success",`run ${e} succeeded`,im(n)):nt("failure",`run ${e} concluded ${o||"unknown"}`,im(n))}async function um(e,t){let r=await Jn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return kr(s)&&s.databaseId!=null?String(s.databaseId):""}async function lm(e,t,r){let n=await Jn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return z(n.stderr||"gh release list failed");let o=Jt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||TE(e,a))&&c>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):yr("no matching release is published yet")}function CE(e){let t=kr(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function im(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function TE(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var dm=h(()=>{"use strict";Wt();om();Hs()});function qn(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
79
- `)}var Dc=h(()=>{"use strict"});var pm=h(()=>{"use strict";N()});var fm=h(()=>{"use strict"});function OE(e){return Object.keys(e)}function Mr(e){return{...e,fields:OE(e.fields)}}var mm,gm,hm,PE,AE,IE,ym,Nc=h(()=>{"use strict";mm="red.castle.lane.v1",gm="red.castle.state.v1",hm="red.castle.history.v1",PE="red.castle.validation.v2",AE="red.castle.envelope.v1",IE="red.castle.hitl-card.v1",ym=[Mr({schemaId:mm,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Mr({schemaId:gm,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Mr({schemaId:hm,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Mr({schemaId:PE,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Mr({schemaId:AE,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Mr({schemaId:IE,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var BD,So=h(()=>{"use strict";N();Nc();BD=new Map(ym.map(e=>[e.schemaId,new Set(e.fields)]))});var bm=h(()=>{"use strict";fm();So()});var wm=h(()=>{"use strict"});var Eo=h(()=>{"use strict"});var Mc=h(()=>{"use strict";Eo()});var xo=h(()=>{"use strict"});import{appendFile as DE,mkdir as NE,readFile as ME}from"node:fs/promises";import{dirname as BE,join as FE}from"node:path";function Bc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function _m(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:Bc(t.at,"at"),singleton:Bc(t.singleton,"singleton"),kind:Bc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function jE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function HE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function GE(e){return FE(e.castleStateRoot,"singleton-events.toonl")}function Fc(e,t={}){let r=t.fs??{appendFile:DE,mkdir:NE,readFile:ME},n=t.clock??(()=>new Date().toISOString()),s=GE(e);return{path:s,async append(o){let i=_m({at:o.at??n(),...o});return await r.mkdir(BE(s),{recursive:!0}),await r.appendFile(s,Nt().push(jE(i)),"utf8"),i},async read(o={}){HE(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Dt(i).map(_m);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var jc=h(()=>{"use strict";N()});var vo=h(()=>{"use strict";N();xo();jc()});var Rm=h(()=>{"use strict";Eo();Mc();vo()});var km=h(()=>{"use strict"});var kN,Sm=h(()=>{"use strict";N();kN=24*60*60*1e3});var Em=h(()=>{"use strict";So()});var vN,CN,xm=h(()=>{"use strict";vN=15*6e4,CN=30*6e4});var vm=h(()=>{"use strict"});var UE,JE,PN,AN,Cm=h(()=>{"use strict";UE=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],JE={pre_worktree:["cargo","gradle"]},PN=Object.values(JE).flat(),AN=new Set(UE)});var Tm=h(()=>{"use strict"});var Om=h(()=>{"use strict";vo()});var Pm=h(()=>{"use strict"});var Am=h(()=>{"use strict"});var Im=h(()=>{"use strict"});var Hc=h(()=>{"use strict"});var Lm=h(()=>{"use strict";N();Hc()});var $m=h(()=>{"use strict";N()});var Gc=h(()=>{"use strict"});var Wc=h(()=>{"use strict"});import{resolve as Q}from"node:path";function Dm(e){let t=Q(e),r=Q(t,"state"),n=Q(r,"castle"),s=Q(t,"tmp"),o=Q(s,"supervisors"),i=Q(s,"workers"),a=Q(s,"monitors"),c=Q(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:Q(n,"history.toonl"),castleValidation:Q(n,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>Q(o,u),projectSupervisor:Q(o,qE),workersRoot:i,worker:u=>Q(i,u),workerSteerFile:u=>Q(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>Q(a,u),worktreesRoot:c,worktreeLane:u=>Q(c,u)}}var qE,Nm=h(()=>{"use strict";qE="default"});var Mm=h(()=>{"use strict";xo()});var Bm=h(()=>{"use strict"});var Fm=h(()=>{"use strict";Gc();Wc()});import{mkdir as VE,readFile as KE,rename as zE,rm as YE,writeFile as XE}from"node:fs/promises";import{dirname as ZE,join as QE}from"node:path";function tx(e){if(!ex.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function rx(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function nx(e){return e.code==="ENOENT"}function sx(e){return e.code==="EEXIST"}function ox(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Uc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Co(e,t){return tx(t),QE(e.castleStateRoot,"singletons",t,"lease.toon")}function jm(e,t={}){let r=t.fs??{mkdir:VE,readFile:KE,rename:zE,rm:YE,writeFile:XE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??rx;async function o(a){try{return ox(L(await r.readFile(a,"utf8")))}catch(c){if(nx(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(Co(e,a))},async acquire(a,c){let u=Co(e,a);await r.mkdir(ZE(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(m){if(!sx(m))throw m}let f=await o(u);if(f){if(Uc(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Co(e,a),l=await o(u);if(!l||!Uc(l,c))throw new To(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=Co(e,a),l=await o(u);if(!l)return!1;if(!Uc(l,c))throw new To(a);return await r.rm(u,{force:!0}),!0}}}var To,ex,Hm=h(()=>{"use strict";N();To=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ex=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Jc=h(()=>{"use strict"});var Gm=h(()=>{"use strict"});var ix,ax,cx,gM,Wm=h(()=>{"use strict";ix={refreshCadenceS:270,tolerance:3},ax=270,cx=2700,gM={...ix,claimGraceS:ax,recentCommitProtectionS:cx}});var Um=h(()=>{"use strict"});import{execFile as px}from"node:child_process";import{promisify as fx}from"node:util";var _M,Jm=h(()=>{"use strict";Jc();_M=fx(px)});var qm=h(()=>{"use strict";pm();bm();wm();Eo();Rm();km();Sm();Em();So();xm();vm();Cm();Tm();Mc();Om();Pm();Am();Im();vo();Lm();$m();Nc();Gc();Wc();Nm();Mm();Bm();Fm();xo();Hc();jc();Hm();Jc();Gm();Wm();Um();Jm()});import{EventEmitter as mx}from"node:events";import{spawn as gx}from"node:child_process";function Po(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Ao(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Vn,qc,hx,yx,bx,wx,Oo,Vc=h(()=>{Vn="github-webhook",qc="github.webhook.delivery";hx="pull_request,pull_request_review,check_run,check_suite,workflow_run",yx=3,bx=1e3,wx=/no extension matched|unknown command|command not found/i,Oo=class extends mx{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,bx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Po(c,n):Ao(c,n))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=gx(r,["webhook","forward",`--events=${hx}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
80
- `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");wx.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{this.emit("malformed-delivery",r);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=yx)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Io,Vm=h(()=>{"use strict";Vc();Vc();st();Io=class extends Oo{constructor(t){super(t,br)}}});import{EventEmitter as _x}from"node:events";import{join as Rx}from"node:path";function zc(e){let t=Ms(e.cwd),r=Dm(Rx(t,".red"));return new Kc({...e,leases:e.leases??jm(r),lane:e.lane??Fc(r),makeForwarder:e.makeForwarder??((n,s)=>new Io({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>wr(n.pid,n.start_time))})}var Kc,Km=h(()=>{"use strict";qm();Vm();st();Ca();Kc=class extends _x{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Vn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?Po(a,n):Ao(a,n))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Vn&&o.kind===qc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Vn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Yc={};F(Yc,{listWaits:()=>Fs,renderWaitHelp:()=>qn,runWait:()=>Ex});import{randomUUID as zm}from"node:crypto";import{mkdir as kx,rm as Sx}from"node:fs/promises";async function Ex(e,t=process.cwd()){let r;try{r=await up(e)}catch(n){return await Ox(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(qn()),0;if(r.kind==="ls"){let n={schema:tp,version:1,waits:await Fs(t)};return process.stdout.write(Er(n,r.options.format)),0}return xa(r.kind)?await xx({...r,kind:r.kind},t):(process.stdout.write(qn()),2)}async function xx(e,t){let r=e.kind,n=Aa({id:zm(),kind:r,target:Tx(e),reason:e.options.reason,pid:process.pid,pid_start_time:await gn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Sa[r],status:"running",attempts:0}),s=hp(t,n.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await kx(_r(t),{recursive:!0}),await Rr(s,n);let l=await vx(e,t,s,n,o.signal);i&&(l={...l,verdict:z(`wait interrupted by ${i}`,l.verdict.details)});let p=await _p({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Er(p.result,e.options.format)),p.exitCode}catch(l){let p=z(l instanceof Error?l.message:String(l)),d=Rn(r,n,p,{status:"success"},new Date().toISOString());return await kn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Er(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Sx(s,{force:!0}).catch(()=>{})}}async function vx(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:fp(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:z("missing PR number")};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Xs({probe:am(i,o,{emptyChecksGraceMs:yn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await Cx(e,o,r,n);if(!i.ok)return{verdict:z(i.reason)};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Xs({probe:()=>cm(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Xs({probe:()=>lm(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Cx(e,t,r,n){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await um(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await Rr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Tx(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function Ox(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=xa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Aa({id:zm(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Sa[o],status:"indeterminate",attempts:0}),c=Rn(o,a,z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await kn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Xc=h(()=>{"use strict";lp();kp();zp();Wt();Ta();dm();st();_n();Dc();Km();_n();Dc()});import{existsSync as $x}from"node:fs";import{join as Dx}from"node:path";function Nx(){for(let e of(process.env.PATH??"").split(":"))if(e&&$x(Dx(e,"rsp")))return!0;return!1}function Kn(){return Nx()?["rsp"]:[process.execPath,process.argv[1]]}var Zc=h(()=>{"use strict"});var Lo={};F(Lo,{parseProxyCommandLine:()=>eg,rewriteProxyCommandLine:()=>Qm,runProxy:()=>Fx});import{spawn as Mx}from"node:child_process";function Bx(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function Fx(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=eg(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Qm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await jx(t.telemetryRoot,r,c),await Zm(r);throw c}for(let c of s)await Hx(t.telemetryRoot,c);let i=await Zm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await at(t.telemetryRoot,{collection:he,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function Qm(e,t="lossless",r=Kn()){let n=Vx(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||qx(n,a)==="|")return i.text;let c=Gx(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function eg(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp proxy -- <command line>");return n}async function jx(e,t,r){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:be(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Hx(e,t){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Zm(e){let t=Mx(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
81
- `),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function Gx(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=zx(o);if(!i)return null;let a=Jx(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(m=>m.value);if(qt(u))return{text:e,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Wx(c);if(!l)return null;let p=i.slice(0,a).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...p,...r.map(Bx),...d,...l.wrapperWords].join(" ");return{text:`${n}${f}${s}`,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Wx(e){let t=e.map(n=>n.value),r=e.map(n=>n.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:r}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:r}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:r}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:r}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:r}:Ux(t,r)}function Ux(e,t){return e[0]==="cat"&&e.length===2&&Qc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Qc(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Qc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Qc(e){return!!e&&!e.startsWith("-")}function Jx(e){let t=0;for(;t<e.length&&Pr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Pr(e[t].value);)t+=1;return t}function qx(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Vx(e){let t=[],r=0,n,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(n){i===n&&(n=void 0);continue}if(i==="'"||i==='"'){n=i;continue}let a=Kx(e,o);a&&(o>r&&t.push({kind:"segment",text:e.slice(r,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,r=o+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function Kx(e,t){let r=e.slice(t,t+2);if(r==="&&"||r==="||")return r;let n=e[t];return n===";"||n==="|"?n:void 0}function zx(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var $o=h(()=>{"use strict";J();Tn();Zc();Ie()});function ng(e,t={}){let r=Yx(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let f of new Set(d.tokens))n.set(f,(n.get(f)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=eu(o),u=eu(i),l=eu(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>rv(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:tu(d.length,c)+tu(d.tokens.length,u)+tu(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+ev(d.tokens,n,r.length)+tv(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Yx(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(tg(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(tg(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function tg(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Xx(n),tokens:Zx(n),numbers:Qx(n),length:n.length}}function Xx(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function Zx(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Qx(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function ev(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(o=>Math.log2(r/Math.max(1,t.get(o)??r))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function tv(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function eu(e){let t=rg(e),r=rg(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function tu(e,t){return Math.abs(e-t.median)/t.mad}function rg(e){let t=[...e].sort((n,s)=>n-s),r=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[r]:((t[r-1]??0)+(t[r]??0))/2}function rv(e,t,r,n){return e<n&&r<t}var sg=h(()=>{"use strict"});var ru={};F(ru,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,GIT_LOG_MACHINE_FIELDS:()=>ig,StructuredUsageError:()=>Do,cleanStatusPayload:()=>lg,recoveryInstruction:()=>Le,renderGitContract:()=>ag,runGitWrapper:()=>sv});import{spawn as nv}from"node:child_process";async function sv(e,t){let r=cg(e),n=ug(r.argv),s=await cv(n,r.argv.slice(1));return ag(e,s,t)}async function ag(e,t,r){let n=cg(e);if((t.status??0)!==0||t.signal){let p=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=ug(n.argv),o;try{o=uv(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof No)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=C(o);if(ov(s,i,n.full,r))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=Cv(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await r.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${Le(u)}
77
+ `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function $c(e,t,r){await at(e,{collection:X,id:hE(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}var So=h(()=>{"use strict";En();En();J();Ie()});import{spawn as RE}from"node:child_process";async function qn(e,t){return await kE(t,async r=>{let n=await EE(e,t.cwd,r);return n||await SE(e,t.cwd,r)})}async function kE(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let r=new AbortController,n=setTimeout(()=>r.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,r.signal]);try{let o=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(n)}}async function SE(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,o=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},i=RE("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&Ns(l).then(p=>Ds(p,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function EE(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await xE(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Sr(s,"database_id")||Sr(s,"id"),status:Y(s,"status").toUpperCase(),conclusion:Y(s,"conclusion").toUpperCase(),workflowName:Y(s,"workflow_name")||Y(s,"name"),headBranch:Y(s,"head_branch"),url:Y(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Hs(e,"--branch"),s=Hs(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Jt(Ge(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Sr(a,"database_id")||Sr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Hs(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Jt(JSON.parse(s.stdout)).map(i=>({tagName:Y(i,"tag_name"),publishedAt:Y(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function xE(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Ge(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=Y(Ge(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Jt(Ge(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Jt(Ge(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
78
+ `),stdout:JSON.stringify({number:Sr(s,"number"),state:Y(s,"state").toUpperCase(),mergeable:vE(s),statusCheckRollup:[...c.map(l=>({conclusion:Y(l,"state").toUpperCase()})),...u.map(l=>({status:Y(l,"status").toUpperCase(),conclusion:Y(l,"conclusion").toUpperCase()}))],url:Y(s,"html_url")})}}function vE(e){let t=Y(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var om=h(()=>{"use strict";So();Gs();st()});function am(e,t,r){let n=Date.now();return()=>CE(e,t,r,n)}async function CE(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return z("missing PR number");let s=await qn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return z(s.stderr||"gh pr view failed");let o=Ia(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(TE),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return nt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return nt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return nt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return yr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||p<r.emptyChecksGraceMs?yr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):nt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?yr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function cm(e,t){if(!e)return z("missing run id");let r=await qn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return z(r.stderr||"gh run view failed");let n=Ia(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?yr(`run ${e} is ${s||"pending"}`):o==="success"?nt("success",`run ${e} succeeded`,im(n)):nt("failure",`run ${e} concluded ${o||"unknown"}`,im(n))}async function um(e,t){let r=await qn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return kr(s)&&s.databaseId!=null?String(s.databaseId):""}async function lm(e,t,r){let n=await qn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return z(n.stderr||"gh release list failed");let o=Jt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||OE(e,a))&&c>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):yr("no matching release is published yet")}function TE(e){let t=kr(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function im(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function OE(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var dm=h(()=>{"use strict";Wt();om();Gs()});function Vn(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
79
+ `)}var Dc=h(()=>{"use strict"});var pm=h(()=>{"use strict";N()});var fm=h(()=>{"use strict"});function PE(e){return Object.keys(e)}function Mr(e){return{...e,fields:PE(e.fields)}}var mm,gm,hm,AE,IE,LE,ym,Nc=h(()=>{"use strict";mm="red.castle.lane.v1",gm="red.castle.state.v1",hm="red.castle.history.v1",AE="red.castle.validation.v2",IE="red.castle.envelope.v1",LE="red.castle.hitl-card.v1",ym=[Mr({schemaId:mm,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Mr({schemaId:gm,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Mr({schemaId:hm,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Mr({schemaId:AE,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Mr({schemaId:IE,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Mr({schemaId:LE,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var FD,Eo=h(()=>{"use strict";N();Nc();FD=new Map(ym.map(e=>[e.schemaId,new Set(e.fields)]))});var bm=h(()=>{"use strict";fm();Eo()});var wm=h(()=>{"use strict"});var xo=h(()=>{"use strict"});var Mc=h(()=>{"use strict";xo()});var vo=h(()=>{"use strict"});import{appendFile as NE,mkdir as ME,readFile as BE}from"node:fs/promises";import{dirname as FE,join as jE}from"node:path";function Bc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function _m(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:Bc(t.at,"at"),singleton:Bc(t.singleton,"singleton"),kind:Bc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function HE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function GE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function WE(e){return jE(e.castleStateRoot,"singleton-events.toonl")}function Fc(e,t={}){let r=t.fs??{appendFile:NE,mkdir:ME,readFile:BE},n=t.clock??(()=>new Date().toISOString()),s=WE(e);return{path:s,async append(o){let i=_m({at:o.at??n(),...o});return await r.mkdir(FE(s),{recursive:!0}),await r.appendFile(s,Nt().push(HE(i)),"utf8"),i},async read(o={}){GE(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Dt(i).map(_m);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var jc=h(()=>{"use strict";N()});var Co=h(()=>{"use strict";N();vo();jc()});var Rm=h(()=>{"use strict";xo();Mc();Co()});var km=h(()=>{"use strict"});var SN,Sm=h(()=>{"use strict";N();SN=24*60*60*1e3});var Em=h(()=>{"use strict";Eo()});var CN,TN,xm=h(()=>{"use strict";CN=15*6e4,TN=30*6e4});var vm=h(()=>{"use strict"});var JE,qE,AN,IN,Cm=h(()=>{"use strict";JE=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],qE={pre_worktree:["cargo","gradle"]},AN=Object.values(qE).flat(),IN=new Set(JE)});var Tm=h(()=>{"use strict"});var Om=h(()=>{"use strict";Co()});var Pm=h(()=>{"use strict"});var Am=h(()=>{"use strict"});var Im=h(()=>{"use strict"});var Hc=h(()=>{"use strict"});var Lm=h(()=>{"use strict";N();Hc()});var $m=h(()=>{"use strict";N()});var Gc=h(()=>{"use strict"});var Wc=h(()=>{"use strict"});import{resolve as Q}from"node:path";function Dm(e){let t=Q(e),r=Q(t,"state"),n=Q(r,"castle"),s=Q(t,"tmp"),o=Q(s,"supervisors"),i=Q(s,"workers"),a=Q(s,"monitors"),c=Q(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:Q(n,"history.toonl"),castleValidation:Q(n,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>Q(o,u),projectSupervisor:Q(o,VE),workersRoot:i,worker:u=>Q(i,u),workerSteerFile:u=>Q(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>Q(a,u),worktreesRoot:c,worktreeLane:u=>Q(c,u)}}var VE,Nm=h(()=>{"use strict";VE="default"});var Mm=h(()=>{"use strict";vo()});var Bm=h(()=>{"use strict"});var Fm=h(()=>{"use strict";Gc();Wc()});import{mkdir as KE,readFile as zE,rename as YE,rm as XE,writeFile as ZE}from"node:fs/promises";import{dirname as QE,join as ex}from"node:path";function rx(e){if(!tx.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function nx(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function sx(e){return e.code==="ENOENT"}function ox(e){return e.code==="EEXIST"}function ix(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Uc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function To(e,t){return rx(t),ex(e.castleStateRoot,"singletons",t,"lease.toon")}function jm(e,t={}){let r=t.fs??{mkdir:KE,readFile:zE,rename:YE,rm:XE,writeFile:ZE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??nx;async function o(a){try{return ix(L(await r.readFile(a,"utf8")))}catch(c){if(sx(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(To(e,a))},async acquire(a,c){let u=To(e,a);await r.mkdir(QE(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(m){if(!ox(m))throw m}let f=await o(u);if(f){if(Uc(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=To(e,a),l=await o(u);if(!l||!Uc(l,c))throw new Oo(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=To(e,a),l=await o(u);if(!l)return!1;if(!Uc(l,c))throw new Oo(a);return await r.rm(u,{force:!0}),!0}}}var Oo,tx,Hm=h(()=>{"use strict";N();Oo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},tx=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Jc=h(()=>{"use strict"});var Gm=h(()=>{"use strict"});var ax,cx,ux,hM,Wm=h(()=>{"use strict";ax={refreshCadenceS:270,tolerance:3},cx=270,ux=2700,hM={...ax,claimGraceS:cx,recentCommitProtectionS:ux}});var Um=h(()=>{"use strict"});import{execFile as fx}from"node:child_process";import{promisify as mx}from"node:util";var RM,Jm=h(()=>{"use strict";Jc();RM=mx(fx)});var qm=h(()=>{"use strict";pm();bm();wm();xo();Rm();km();Sm();Em();Eo();xm();vm();Cm();Tm();Mc();Om();Pm();Am();Im();Co();Lm();$m();Nc();Gc();Wc();Nm();Mm();Bm();Fm();vo();Hc();jc();Hm();Jc();Gm();Wm();Um();Jm()});import{EventEmitter as gx}from"node:events";import{spawn as hx}from"node:child_process";function Ao(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Io(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Kn,qc,yx,bx,wx,_x,Po,Vc=h(()=>{Kn="github-webhook",qc="github.webhook.delivery";yx="pull_request,pull_request_review,check_run,check_suite,workflow_run",bx=3,wx=1e3,_x=/no extension matched|unknown command|command not found/i,Po=class extends gx{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,wx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ao(c,n):Io(c,n))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=hx(r,["webhook","forward",`--events=${yx}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
80
+ `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");_x.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{this.emit("malformed-delivery",r);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=bx)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Lo,Vm=h(()=>{"use strict";Vc();Vc();st();Lo=class extends Po{constructor(t){super(t,br)}}});import{EventEmitter as Rx}from"node:events";import{join as kx}from"node:path";function zc(e){let t=Bs(e.cwd),r=Dm(kx(t,".red"));return new Kc({...e,leases:e.leases??jm(r),lane:e.lane??Fc(r),makeForwarder:e.makeForwarder??((n,s)=>new Lo({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>wr(n.pid,n.start_time))})}var Kc,Km=h(()=>{"use strict";qm();Vm();st();Ca();Kc=class extends Rx{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Kn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?Ao(a,n):Io(a,n))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Kn&&o.kind===qc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Kn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Yc={};F(Yc,{listWaits:()=>js,renderWaitHelp:()=>Vn,runWait:()=>xx});import{randomUUID as zm}from"node:crypto";import{mkdir as Sx,rm as Ex}from"node:fs/promises";async function xx(e,t=process.cwd()){let r;try{r=await up(e)}catch(n){return await Px(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Vn()),0;if(r.kind==="ls"){let n={schema:tp,version:1,waits:await js(t)};return process.stdout.write(Er(n,r.options.format)),0}return xa(r.kind)?await vx({...r,kind:r.kind},t):(process.stdout.write(Vn()),2)}async function vx(e,t){let r=e.kind,n=Aa({id:zm(),kind:r,target:Ox(e),reason:e.options.reason,pid:process.pid,pid_start_time:await hn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Sa[r],status:"running",attempts:0}),s=hp(t,n.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await Sx(_r(t),{recursive:!0}),await Rr(s,n);let l=await Cx(e,t,s,n,o.signal);i&&(l={...l,verdict:z(`wait interrupted by ${i}`,l.verdict.details)});let p=await _p({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Er(p.result,e.options.format)),p.exitCode}catch(l){let p=z(l instanceof Error?l.message:String(l)),d=kn(r,n,p,{status:"success"},new Date().toISOString());return await Sn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Er(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Ex(s,{force:!0}).catch(()=>{})}}async function Cx(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Vp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:fp(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:z("missing PR number")};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Zs({probe:am(i,o,{emptyChecksGraceMs:bn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await Tx(e,o,r,n);if(!i.ok)return{verdict:z(i.reason)};n.webhook_mode="polling";let a=zc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Zs({probe:()=>cm(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Zs({probe:()=>lm(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:bn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Tx(e,t,r,n){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await um(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await Rr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Ox(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function Px(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=xa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Aa({id:zm(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Sa[o],status:"indeterminate",attempts:0}),c=kn(o,a,z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Sn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Xc=h(()=>{"use strict";lp();kp();zp();Wt();Ta();dm();st();Rn();Dc();Km();Rn();Dc()});import{existsSync as Dx}from"node:fs";import{join as Nx}from"node:path";function Mx(){for(let e of(process.env.PATH??"").split(":"))if(e&&Dx(Nx(e,"rsp")))return!0;return!1}function zn(){return Mx()?["rsp"]:[process.execPath,process.argv[1]]}var Zc=h(()=>{"use strict"});var $o={};F($o,{parseProxyCommandLine:()=>eg,rewriteProxyCommandLine:()=>Qm,runProxy:()=>jx});import{spawn as Bx}from"node:child_process";function Fx(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function jx(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=eg(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Qm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await Hx(t.telemetryRoot,r,c),await Zm(r);throw c}for(let c of s)await Gx(t.telemetryRoot,c);let i=await Zm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await at(t.telemetryRoot,{collection:he,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function Qm(e,t="lossless",r=zn()){let n=Kx(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||Vx(n,a)==="|")return i.text;let c=Wx(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function eg(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp proxy -- <command line>");return n}async function Hx(e,t,r){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:be(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Gx(e,t){await at(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Zm(e){let t=Bx(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
81
+ `),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function Wx(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=Yx(o);if(!i)return null;let a=qx(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(m=>m.value);if(qt(u))return{text:e,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Ux(c);if(!l)return null;let p=i.slice(0,a).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...p,...r.map(Fx),...d,...l.wrapperWords].join(" ");return{text:`${n}${f}${s}`,match:{command:c.map(m=>m.raw).join(" "),commandFamily:be(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Ux(e){let t=e.map(n=>n.value),r=e.map(n=>n.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:r}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:r}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:r}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:r}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:r}:Jx(t,r)}function Jx(e,t){return e[0]==="cat"&&e.length===2&&Qc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Qc(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Qc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Qc(e){return!!e&&!e.startsWith("-")}function qx(e){let t=0;for(;t<e.length&&Pr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Pr(e[t].value);)t+=1;return t}function Vx(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Kx(e){let t=[],r=0,n,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(n){i===n&&(n=void 0);continue}if(i==="'"||i==='"'){n=i;continue}let a=zx(e,o);a&&(o>r&&t.push({kind:"segment",text:e.slice(r,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,r=o+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function zx(e,t){let r=e.slice(t,t+2);if(r==="&&"||r==="||")return r;let n=e[t];return n===";"||n==="|"?n:void 0}function Yx(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var Do=h(()=>{"use strict";J();On();Zc();Ie()});function ng(e,t={}){let r=Xx(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let f of new Set(d.tokens))n.set(f,(n.get(f)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=eu(o),u=eu(i),l=eu(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>nv(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:tu(d.length,c)+tu(d.tokens.length,u)+tu(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+tv(d.tokens,n,r.length)+rv(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Xx(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(tg(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(tg(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function tg(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Zx(n),tokens:Qx(n),numbers:ev(n),length:n.length}}function Zx(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function Qx(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function ev(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function tv(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(o=>Math.log2(r/Math.max(1,t.get(o)??r))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function rv(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function eu(e){let t=rg(e),r=rg(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function tu(e,t){return Math.abs(e-t.median)/t.mad}function rg(e){let t=[...e].sort((n,s)=>n-s),r=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[r]:((t[r-1]??0)+(t[r]??0))/2}function nv(e,t,r,n){return e<n&&r<t}var sg=h(()=>{"use strict"});var ru={};F(ru,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,GIT_LOG_MACHINE_FIELDS:()=>ig,StructuredUsageError:()=>No,cleanStatusPayload:()=>lg,recoveryInstruction:()=>Le,renderGitContract:()=>ag,runGitWrapper:()=>ov});import{spawn as sv}from"node:child_process";async function ov(e,t){let r=cg(e),n=ug(r.argv),s=await uv(n,r.argv.slice(1));return ag(e,s,t)}async function ag(e,t,r){let n=cg(e);if((t.status??0)!==0||t.signal){let p=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=ug(n.argv),o;try{o=lv(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof Mo)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=C(o);if(iv(s,i,n.full,r))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=Tv(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await r.store?.mint(Buffer.from(i),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${Le(u)}
82
82
  `;return{stdout:Buffer.from(`${C(a.payload)}
83
- ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function Le(e){return e.startsWith("el:")?`rsp show ${e}`:e}function cg(e){let{argv:t,query:r,full:n}=nd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new Do(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:r,full:n}}function ov(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!iv(e)||n.level!=="lossless")return!0;let s=vv(n.heavyGitByteThreshold,ot);return Buffer.byteLength(t)<=s}function iv(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function ug(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function av(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${ig.join("%x1f")}`,"-z",...r];case"diff":return["diff","--numstat","-z",...r];case"commit":return["commit",...r];case"push":return["push","--porcelain",...r];case"blame":return["blame","--line-porcelain",...r];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...r];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...r]}}async function cv(e,t){let r=nv("git",av(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function uv(e,t,r,n){switch(e){case"status":return lv(t,r,n);case"log":return bv(t,r,n);case"diff":return wv(t,r,n);case"commit":return wt(_v(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return wt(Rv(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return kv(t,r,n);case"branch":return Sv(t,r,n);case"show":return Ev(t,r,n)}}function lv(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of dv(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){n=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){n=mv(u),o=!0;continue}let l=pv(u);if(l){o=!0,s.push(l);continue}let p=fv(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return lg(e.join(" "),n);throw new No("git-status-unparseable")}let a=te(s,r),c=dg(a,"state");return wt({command:e.join(" "),branch:n,rows:a,summary:yv(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function dv(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function pv(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return zn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return zn(t.slice(10).join(" "),r)}return e.startsWith("? ")?zn(e.slice(2),"??"):null}function fv(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?zn(gv(e.slice(3),t),t):null}function zn(e,t){let r=og(t[0]??"."),n=og(t[1]??".");return{path:hv(e),index:r,worktree:n,state:xv(`${r}${n}`)}}function og(e){return e===" "?".":e}function mv(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function gv(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function hv(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function yv(e,t,r,n){let s=[];return r.renamed&&s.push(`${r.renamed} renamed`),r.untracked&&s.push(`${r.untracked} untracked`),r.changed&&s.push(`${r.changed} changed`),`${n?`${e}/${t}`:e} changes: ${r.added??0} added, ${r.modified??0} modified, ${r.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function lg(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function bv(e,t,r){let n=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=te(n,r);return wt({command:e.join(" "),commits:s,summary:`${r?`${s.length}/${n.length}`:s.length} commits`},r,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function wv(e,t,r){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=te(s,r),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return wt({command:e.join(" "),files:o,summary:`${r?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function _v(e,t){let r=t.split(`
84
- `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function Rv(e,t){let r=t.split(`
85
- `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function kv(e,t,r){let n=t.split(`
86
- `),s=[],o=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),p=o.commit.slice(0,12);l&&l.commit===p&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:p,path:o.path}),o=null}let i=te(s,r),a=dg(i,"author");return wt({command:e.join(" "),ranges:i,authors:a,summary:`${r?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Sv(e,t,r){let n=t.split(`
87
- `).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return wt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${o?`, current ${o}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Ev(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,p,d=""]=o.split(""),f=[];for(let y of i.split(`
83
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function Le(e){return e.startsWith("el:")?`rsp show ${e}`:e}function cg(e){let{argv:t,query:r,full:n}=nd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new No(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:r,full:n}}function iv(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!av(e)||n.level!=="lossless")return!0;let s=Cv(n.heavyGitByteThreshold,ot);return Buffer.byteLength(t)<=s}function av(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function ug(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function cv(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${ig.join("%x1f")}`,"-z",...r];case"diff":return["diff","--numstat","-z",...r];case"commit":return["commit",...r];case"push":return["push","--porcelain",...r];case"blame":return["blame","--line-porcelain",...r];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...r];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...r]}}async function uv(e,t){let r=sv("git",cv(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function lv(e,t,r,n){switch(e){case"status":return dv(t,r,n);case"log":return wv(t,r,n);case"diff":return _v(t,r,n);case"commit":return wt(Rv(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return wt(kv(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Sv(t,r,n);case"branch":return Ev(t,r,n);case"show":return xv(t,r,n)}}function dv(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of pv(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){n=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){n=gv(u),o=!0;continue}let l=fv(u);if(l){o=!0,s.push(l);continue}let p=mv(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return lg(e.join(" "),n);throw new Mo("git-status-unparseable")}let a=te(s,r),c=dg(a,"state");return wt({command:e.join(" "),branch:n,rows:a,summary:bv(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function pv(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function fv(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Yn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Yn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Yn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Yn(e.slice(2),"??"):null}function mv(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Yn(hv(e.slice(3),t),t):null}function Yn(e,t){let r=og(t[0]??"."),n=og(t[1]??".");return{path:yv(e),index:r,worktree:n,state:vv(`${r}${n}`)}}function og(e){return e===" "?".":e}function gv(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function hv(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function yv(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function bv(e,t,r,n){let s=[];return r.renamed&&s.push(`${r.renamed} renamed`),r.untracked&&s.push(`${r.untracked} untracked`),r.changed&&s.push(`${r.changed} changed`),`${n?`${e}/${t}`:e} changes: ${r.added??0} added, ${r.modified??0} modified, ${r.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function lg(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function wv(e,t,r){let n=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=te(n,r);return wt({command:e.join(" "),commits:s,summary:`${r?`${s.length}/${n.length}`:s.length} commits`},r,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function _v(e,t,r){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=te(s,r),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return wt({command:e.join(" "),files:o,summary:`${r?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function Rv(e,t){let r=t.split(`
84
+ `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function kv(e,t){let r=t.split(`
85
+ `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function Sv(e,t,r){let n=t.split(`
86
+ `),s=[],o=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),p=o.commit.slice(0,12);l&&l.commit===p&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:p,path:o.path}),o=null}let i=te(s,r),a=dg(i,"author");return wt({command:e.join(" "),ranges:i,authors:a,summary:`${r?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Ev(e,t,r){let n=t.split(`
87
+ `).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return wt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${o?`, current ${o}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function xv(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,p,d=""]=o.split(""),f=[];for(let y of i.split(`
88
88
  `)){let b=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!b)continue;let R=b[3]??"";f.push({path:(b[1]??"").trim(),changed:Number(b[2]??0),added:[...R].filter(T=>T==="+").length,deleted:[...R].filter(T=>T==="-").length,binary:R.startsWith("Bin")})}let m=te(f,r),w=0,_=0,g=0;for(let y of m)w+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,g+=typeof y.deleted=="number"?y.deleted:0;return wt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
89
- `).length:0,files:m,summary:`${r?`${m.length}/${f.length}`:m.length} files, ${w} changed, +${_} -${g}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function wt(e,t,r){return t?et(e,r):e}function xv(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function dg(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function vv(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Cv(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}var ig,Do,No,Zt=h(()=>{"use strict";J();N();Ae();sn();Be();Ae();ig=["%h","%an","%as","%s"];Do=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Nl(this.command,this.flag,this.validFlags,`${this.command} --help`)}},No=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var iu={};F(iu,{NORMALIZATION_ALLOWLIST:()=>bg,NORMALIZE_ANSI:()=>Bo,NORMALIZE_BLANK_LINES:()=>Ho,NORMALIZE_CR_PROGRESS:()=>Fo,NORMALIZE_JSON_TOON:()=>yg,NORMALIZE_TRAILING_WHITESPACE:()=>jo,crushJsonArrayItems:()=>Yn,formatCodexNormalizeDecision:()=>Sg,formatNormalizeDecision:()=>kg,hookDecisionFromClaudePostExecJson:()=>wg,hookDecisionFromCodexPostExecJson:()=>_g,normalizeOutput:()=>Go,renderGenericJsonLane:()=>su,runClaudePostExecHook:()=>Pv,runCodexPostExecHook:()=>Av,transcodeJsonToToon:()=>hg});import{readFileSync as Mo}from"node:fs";function hg(e,t){let r=t?.encode??C,n=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return nu(o,a)?i.trimEnd():e}async function su(e,t={}){let r=Dv(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=gg(t.minTokens,Tv),i=gg(t.maxItems,Ov);if(!(s>i&&jv(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Yn)(n,i)}catch(w){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Hv(w)}}}let u=c.items,l={items:u},p=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,m=C(l).trimEnd();return{output:[p,f,m].filter(Boolean).join(`
90
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Yn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=Nv(e),s=new Set;n&&e.forEach((a,c)=>{ou(a)!==n&&s.add(c)});let o=Mv(e,n);for(let a of s)r.add(a);for(let a of o)r.add(a);let i=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function Go(e){let t=e;for(let r of bg)t=r.apply(t);return t}async function wg(e,t){return await Rg(e,t)}async function _g(e,t){return await Rg(e,t)}async function Rg(e,t){let r=$v(e),n=Gv(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Lv)(n))return{kind:"passthrough",reason:"disabled"};let o=Wv(r,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??Go)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function kg(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Sg(e){return{stdout:"",status:0}}async function Pv(e){let t=e?Mo(e,"utf8"):Mo(0,"utf8"),r=await wg(t,{cwd:process.cwd()}),n=kg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Av(e){let t=e?Mo(e,"utf8"):Mo(0,"utf8"),r=await _g(t,{cwd:process.cwd()}),n=Sg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Iv(e){let t="",r=0;for(;r<e.length;){let n=e.charCodeAt(r);if(n===27){let s=e.charCodeAt(r+1);if(s===93){for(r+=2;r<e.length;){let o=e.charCodeAt(r);if(o===7){r++;break}if(o===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function pg(e){return e>=32&&e<=63}function Lv(e){return Pe(e,process.env).enabled}function $v(e){try{let t=JSON.parse(e);return Br(t)?t:{}}catch{return{}}}function Dv(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Br(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function Nv(e){let t=new Map;for(let s of e){let o=ou(s);t.set(o,(t.get(o)??0)+1)}let[r,n]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function ou(e){return Array.isArray(e)?"array":Br(e)?Object.keys(e).sort().map(t=>`${t}:${fg(e[t])}`).join("|"):fg(e)}function Mv(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&ou(s)!==t))for(let[i,a]of Eg(s)){let c=n.get(i)??[];c.push({index:o,value:a}),n.set(i,c)}});for(let s of n.values()){for(let o of Bv(s))r.add(o);for(let o of Fv(s))r.add(o)}return r}function Bv(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let r=t.map(a=>a.value).sort((a,c)=>a-c),n=mg(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=mg(s);if(o===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-n)>i).map(a=>a.index)}function Fv(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let n=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=n).map(s=>s.index)}function Eg(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Br(e)?Object.entries(e).flatMap(([r,n])=>Eg(n,t?`${t}.${r}`:r)):[]}function fg(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mg(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function jv(e){return Math.ceil(e.length/4)}function gg(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Hv(e){let r=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Gv(e,t){let r=e;for(let n of t){if(!Br(r))return"";r=r[n]}return typeof r=="string"?r:""}function Wv(e,t){let r=e[t];return Br(r)?r:null}function Br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>nu(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&nu(r[i],n[i]))}var Bo,Fo,jo,Ho,yg,Tv,Ov,bg,Xn=h(()=>{"use strict";N();Ae();Bo={id:"ansi",apply:Iv},Fo={id:"cr-progress",apply:e=>e.split(`
89
+ `).length:0,files:m,summary:`${r?`${m.length}/${f.length}`:m.length} files, ${w} changed, +${_} -${g}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function wt(e,t,r){return t?et(e,r):e}function vv(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function dg(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Cv(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Tv(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}var ig,No,Mo,Zt=h(()=>{"use strict";J();N();Ae();sn();Be();Ae();ig=["%h","%an","%as","%s"];No=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Nl(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Mo=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var iu={};F(iu,{NORMALIZATION_ALLOWLIST:()=>bg,NORMALIZE_ANSI:()=>Fo,NORMALIZE_BLANK_LINES:()=>Go,NORMALIZE_CR_PROGRESS:()=>jo,NORMALIZE_JSON_TOON:()=>yg,NORMALIZE_TRAILING_WHITESPACE:()=>Ho,crushJsonArrayItems:()=>Xn,formatCodexNormalizeDecision:()=>Sg,formatNormalizeDecision:()=>kg,hookDecisionFromClaudePostExecJson:()=>wg,hookDecisionFromCodexPostExecJson:()=>_g,normalizeOutput:()=>Wo,renderGenericJsonLane:()=>su,runClaudePostExecHook:()=>Av,runCodexPostExecHook:()=>Iv,transcodeJsonToToon:()=>hg});import{readFileSync as Bo}from"node:fs";function hg(e,t){let r=t?.encode??C,n=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return nu(o,a)?i.trimEnd():e}async function su(e,t={}){let r=Nv(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=gg(t.minTokens,Ov),i=gg(t.maxItems,Pv);if(!(s>i&&Hv(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Xn)(n,i)}catch(w){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Gv(w)}}}let u=c.items,l={items:u},p=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,m=C(l).trimEnd();return{output:[p,f,m].filter(Boolean).join(`
90
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Xn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=Mv(e),s=new Set;n&&e.forEach((a,c)=>{ou(a)!==n&&s.add(c)});let o=Bv(e,n);for(let a of s)r.add(a);for(let a of o)r.add(a);let i=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function Wo(e){let t=e;for(let r of bg)t=r.apply(t);return t}async function wg(e,t){return await Rg(e,t)}async function _g(e,t){return await Rg(e,t)}async function Rg(e,t){let r=Dv(e),n=Wv(r,["cwd"])||t.cwd;if(!await(t.isEnabled??$v)(n))return{kind:"passthrough",reason:"disabled"};let o=Uv(r,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??Wo)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function kg(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Sg(e){return{stdout:"",status:0}}async function Av(e){let t=e?Bo(e,"utf8"):Bo(0,"utf8"),r=await wg(t,{cwd:process.cwd()}),n=kg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Iv(e){let t=e?Bo(e,"utf8"):Bo(0,"utf8"),r=await _g(t,{cwd:process.cwd()}),n=Sg(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Lv(e){let t="",r=0;for(;r<e.length;){let n=e.charCodeAt(r);if(n===27){let s=e.charCodeAt(r+1);if(s===93){for(r+=2;r<e.length;){let o=e.charCodeAt(r);if(o===7){r++;break}if(o===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&pg(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function pg(e){return e>=32&&e<=63}function $v(e){return Pe(e,process.env).enabled}function Dv(e){try{let t=JSON.parse(e);return Br(t)?t:{}}catch{return{}}}function Nv(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Br(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function Mv(e){let t=new Map;for(let s of e){let o=ou(s);t.set(o,(t.get(o)??0)+1)}let[r,n]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function ou(e){return Array.isArray(e)?"array":Br(e)?Object.keys(e).sort().map(t=>`${t}:${fg(e[t])}`).join("|"):fg(e)}function Bv(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&ou(s)!==t))for(let[i,a]of Eg(s)){let c=n.get(i)??[];c.push({index:o,value:a}),n.set(i,c)}});for(let s of n.values()){for(let o of Fv(s))r.add(o);for(let o of jv(s))r.add(o)}return r}function Fv(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let r=t.map(a=>a.value).sort((a,c)=>a-c),n=mg(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=mg(s);if(o===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-n)>i).map(a=>a.index)}function jv(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let n=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=n).map(s=>s.index)}function Eg(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Br(e)?Object.entries(e).flatMap(([r,n])=>Eg(n,t?`${t}.${r}`:r)):[]}function fg(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mg(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function Hv(e){return Math.ceil(e.length/4)}function gg(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Gv(e){let r=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Wv(e,t){let r=e;for(let n of t){if(!Br(r))return"";r=r[n]}return typeof r=="string"?r:""}function Uv(e,t){let r=e[t];return Br(r)?r:null}function Br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nu(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>nu(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&nu(r[i],n[i]))}var Fo,jo,Ho,Go,yg,Ov,Pv,bg,Zn=h(()=>{"use strict";N();Ae();Fo={id:"ansi",apply:Lv},jo={id:"cr-progress",apply:e=>e.split(`
91
91
  `).map(t=>{let r=t.endsWith("\r")?t.slice(0,-1):t,n=r.lastIndexOf("\r");return n>=0?r.slice(n+1):r}).join(`
92
- `)},jo={id:"trailing-whitespace",apply:e=>e.split(`
92
+ `)},Ho={id:"trailing-whitespace",apply:e=>e.split(`
93
93
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
94
- `)},Ho={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
94
+ `)},Go={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
95
95
 
96
- `)};yg={id:"json-to-toon",apply:e=>hg(e)},Tv=200,Ov=15;bg=[Bo,Fo,jo,Ho,yg]});var es={};F(es,{parseExecCommandLine:()=>Pg,renderExecContract:()=>Og,runExecWrapper:()=>Kv});import{isUtf8 as Uv}from"node:buffer";import{spawn as Jv}from"node:child_process";async function Kv(e,t){let r=Pg(e),n=await zv(r);return await Og(r,n,t)}async function Og(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=xe(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=Yv(n),i=o.kind==="text"?Buffer.from(o.text):n,a=hC(r.heavyByteThreshold,qv);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let p=o.kind==="text"?Zv(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Qv(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function Pg(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function zv(e){let t=Jv(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function Yv(e){return Uv(e)?{kind:"text",text:Xv(e.toString("utf8"))}:{kind:"bytes"}}function Xv(e){let t=e;for(let r of[Bo,Fo,jo,Ho])t=r.apply(t);return t}function Zv(e,t,r,n,s,o=uC,i=Yn){let c=Math.max(1,Math.floor((n==="terse"?Tg:Vv)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=cC(e,c,l,o),d=eC(e),f=tC(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),m=Ag(s,d,t,gC(u),r,f.summary),w=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Mg(p.error)}:f.degradation;return{text:Ng(m),degradation:w}}function Qv(e,t,r,n){let s=Math.max(1,Math.floor(Tg/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Ng(Ag(n,"bytes",t,0,r,o))}}function Ag(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Le(s)}}}function eC(e){let t=e.trim();return t?Lg(t)?"json":$g(e)?"jsonl":lC(e)?"unified-diff":Dg(e)?"tabular":dC(e)?"log-like":pC(e)?"prose":"untyped":"untyped"}function tC(e,t,r,n,s,o,i=Yn){switch(e){case"json":return rC(t,i);case"jsonl":return{summary:nC(t)};case"unified-diff":return{summary:sC(t)};case"tabular":return{summary:oC(t)};case"log-like":return{summary:iC(t,o)};case"prose":return{summary:aC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Ig(r,n,s,o)}}}function rC(e,t){let r=Lg(e);if(Array.isArray(r)){if(r.length>15)try{let n=t(r,15);return{summary:{root_type:"array",total:n.total,kept:n.kept,dropped:n.dropped,shape_outliers:n.shapeOutliers,value_outliers:n.valueOutliers,items:n.items.map(_t),item_keys:cu(r)}}}catch(n){return{summary:vg(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Mg(n)}}}return{summary:vg(r)}}if(Qn(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,o])=>[s,_t(o)]))}}}return{summary:{root_type:typeof r,value:_t(r)}}}function vg(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(_t),item_keys:cu(e)}}function nC(e){let t=$g(e)??[],r=fC(t,"level");return{records:t.length,keys:cu(t),levels:r,first:_t(t[0]),last:_t(t.at(-1))}}function sC(e){let t=new Map,r="",n=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){r=a[2]??a[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0});continue}if(!r){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,r&&t.get(r).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(n++,r&&t.get(r).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:n,deleted_lines:s}}function oC(e){let t=Dg(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Ig(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function iC(e,t){let r=Zn(e);return{entries:r.length,levels:mC(r),first:Qt(r[0]??""),last:Qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Qt(n.text)}))}}function aC(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:Qt(t[0]??""),closing:Qt(t.at(-1)??"")}}function Ig(e,t,r,n){let s=Cg(e.subarray(0,t)),o=Cg(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Qt(i.text)}))}}function cC(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function uC(e,t){return ng(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Lg(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Qn(r)||Array.isArray(r)?r:null}catch{return null}}function $g(e){let t=Zn(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function lC(e){let t=Zn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return n&&s&&o}function Dg(e){let t=Zn(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function dC(e){let t=Zn(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function pC(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function Zn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function cu(e){let t=new Map;for(let r of e)if(Qn(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function fC(e,t){let r=new Map;for(let n of e){if(!Qn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function mC(e){let t=new Map;for(let r of e){let n=/\blevel=([A-Za-z]+)\b/.exec(r)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(r);if(!n)continue;let s=(n[1]??n[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}function _t(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(_t):Qn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,_t(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=xg?t:`${t.slice(0,xg-1)}\u2026`}function Ng(e){let t=C(e).trimEnd(),r=L(t);if(!au(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
97
- `}function au(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>au(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&au(r[i],n[i]))}function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mg(e){let r=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Cg(e){return e.toString("utf8").replace(/�$/g,"")}function gC(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function hC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var qv,Vv,Tg,xg,ts=h(()=>{"use strict";J();N();sg();Zt();Xn();Be();qv=8*1024,Vv=2*1024,Tg=1024,xg=240});var Zo={};F(Zo,{RSP_WRAPPER_CAPABILITIES:()=>ss,_testOnlyResetBinaryState:()=>CC,formatCodexHookDecision:()=>Yg,formatHookDecision:()=>zg,hookDecisionFromClaudePreExecJson:()=>LC,hookDecisionFromCodexPreExecJson:()=>$C,rewriteCommand:()=>Vg,rewriteTableFromCapabilities:()=>qg,runClaudePreExecHook:()=>DC,runCodexPreExecHook:()=>NC});import{accessSync as SC,constants as EC,existsSync as xC,readFileSync as Yo}from"node:fs";import{fileURLToPath as vC}from"node:url";function CC(){zo=void 0,uu=!1}function TC(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return SC(`${t}/rsp`,EC.X_OK),!0}catch{}return!1}function OC(e){return zo===void 0&&(zo=e()),zo}function PC(){uu||(uu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function qg(e){let t=new Map;for(let r of e)t.set(e0(r.command),["rsp",...r.wrapper]);return t}function Vg(e,t=Kn()){let r=JC(e);if(r)return r;let n=WC(e);if(!n)return Ko(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Pr(s[0]))return Ko(e,t);let o=IC(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Ko(e,t);let i=[...ss].sort((u,l)=>l.command.length-u.command.length).find(u=>UC(s,u.command));if(!i)return Ko(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=th(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(Rt),...c].join(" "),capabilityId:i.id}}function IC(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=th(e.redirectSuffix),o=t.map(Rt);return n==="cat"&&r.length===2&&Vo(r[1])?{kind:"rewrite",command:[...o,"cat",Rt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&Vo(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",Rt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&Vo(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],Rt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&Vo(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),Rt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function Vo(e){return!!e&&!e.startsWith("-")}async function LC(e,t){return await Kg(e,t)}async function $C(e,t){return await Kg(e,t)}async function Kg(e,t){return(await du(e,t,"pre-exec")).decision}async function du(e,t,r){let n=oh(e);if(!n.ok){let m={kind:"passthrough",reason:n.reason};return{decision:m,telemetryRoot:t.cwd,event:Fr({hook:r,command:"",decision:m,reason:n.reason})}}let s=n.payload,o=$e(s,["cwd"])||$e(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??MC)(o)){let m={kind:"passthrough",reason:"disabled"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:lu(s),decision:m,reason:"disabled"})}}let a=lu(s);if(!a){let m={kind:"passthrough",reason:"missing-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"missing-command"})}}if(!OC(t.resolveBinary??TC)){PC();let m={kind:"passthrough",reason:"binary-unresolved"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Pe(o,process.env),p=t.rspInvocationPrefix??Kn(),d=l.proxyEnabled?qC(a,p):(t.rewrite??(m=>Vg(m,p)))(a),f=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let m=d.reason?d:{...d,reason:"unsupported-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:m.reason??"unsupported-command",decisionMs:f})}}return await FC(o,t.wakeResident??BC),{decision:d,telemetryRoot:o,event:Fr({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function zg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Yg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Xg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
98
- `,status:0}}async function DC(e){let t="";try{t=e?Yo(e,"utf8"):Yo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"claude-pre-exec");Xo(r.telemetryRoot,r.event);let n=r.decision;Qg("claude-pre-exec",n);let s=zg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Xo(process.cwd(),Zg("claude-pre-exec",t,r)),eh("claude-pre-exec",r),0}}async function NC(e){let t="";try{t=e?Yo(e,"utf8"):Yo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"codex-pre-exec");Xo(r.telemetryRoot,r.event);let n=r.decision;Qg("codex-pre-exec",n);let s=Yg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Xo(process.cwd(),Zg("codex-pre-exec",t,r)),eh("codex-pre-exec",r),0}}function Xo(e,t){at(e,t).catch(()=>{})}function Fr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:be(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Zg(e,t,r){let n=oh(t),s=n.ok?lu(n.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:be(s),decision:"failed-open",reason:"hook-exception",error:pu(r)}}function MC(e){return Pe(e,process.env).enabled}async function BC(e){let t=Pe(e,process.env);if(!t.enabled||!GC(t))return;let r=je(e);await Os(r,HC(t))}async function FC(e,t){try{await Promise.resolve(t(e))}catch(r){jC(r)}}function Qg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
96
+ `)};yg={id:"json-to-toon",apply:e=>hg(e)},Ov=200,Pv=15;bg=[Fo,jo,Ho,Go,yg]});var ts={};F(ts,{parseExecCommandLine:()=>Pg,renderExecContract:()=>Og,runExecWrapper:()=>zv});import{isUtf8 as Jv}from"node:buffer";import{spawn as qv}from"node:child_process";async function zv(e,t){let r=Pg(e),n=await Yv(r);return await Og(r,n,t)}async function Og(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=xe(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=Xv(n),i=o.kind==="text"?Buffer.from(o.text):n,a=yC(r.heavyByteThreshold,Vv);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let p=o.kind==="text"?Qv(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):eC(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function Pg(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function Yv(e){let t=qv(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function Xv(e){return Jv(e)?{kind:"text",text:Zv(e.toString("utf8"))}:{kind:"bytes"}}function Zv(e){let t=e;for(let r of[Fo,jo,Ho,Go])t=r.apply(t);return t}function Qv(e,t,r,n,s,o=lC,i=Xn){let c=Math.max(1,Math.floor((n==="terse"?Tg:Kv)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=uC(e,c,l,o),d=tC(e),f=rC(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),m=Ag(s,d,t,hC(u),r,f.summary),w=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Mg(p.error)}:f.degradation;return{text:Ng(m),degradation:w}}function eC(e,t,r,n){let s=Math.max(1,Math.floor(Tg/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Ng(Ag(n,"bytes",t,0,r,o))}}function Ag(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Le(s)}}}function tC(e){let t=e.trim();return t?Lg(t)?"json":$g(e)?"jsonl":dC(e)?"unified-diff":Dg(e)?"tabular":pC(e)?"log-like":fC(e)?"prose":"untyped":"untyped"}function rC(e,t,r,n,s,o,i=Xn){switch(e){case"json":return nC(t,i);case"jsonl":return{summary:sC(t)};case"unified-diff":return{summary:oC(t)};case"tabular":return{summary:iC(t)};case"log-like":return{summary:aC(t,o)};case"prose":return{summary:cC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Ig(r,n,s,o)}}}function nC(e,t){let r=Lg(e);if(Array.isArray(r)){if(r.length>15)try{let n=t(r,15);return{summary:{root_type:"array",total:n.total,kept:n.kept,dropped:n.dropped,shape_outliers:n.shapeOutliers,value_outliers:n.valueOutliers,items:n.items.map(_t),item_keys:cu(r)}}}catch(n){return{summary:vg(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Mg(n)}}}return{summary:vg(r)}}if(es(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,o])=>[s,_t(o)]))}}}return{summary:{root_type:typeof r,value:_t(r)}}}function vg(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(_t),item_keys:cu(e)}}function sC(e){let t=$g(e)??[],r=mC(t,"level");return{records:t.length,keys:cu(t),levels:r,first:_t(t[0]),last:_t(t.at(-1))}}function oC(e){let t=new Map,r="",n=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){r=a[2]??a[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0});continue}if(!r){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,r&&t.get(r).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(n++,r&&t.get(r).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:n,deleted_lines:s}}function iC(e){let t=Dg(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Ig(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function aC(e,t){let r=Qn(e);return{entries:r.length,levels:gC(r),first:Qt(r[0]??""),last:Qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Qt(n.text)}))}}function cC(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:Qt(t[0]??""),closing:Qt(t.at(-1)??"")}}function Ig(e,t,r,n){let s=Cg(e.subarray(0,t)),o=Cg(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Qt(i.text)}))}}function uC(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function lC(e,t){return ng(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Lg(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return es(r)||Array.isArray(r)?r:null}catch{return null}}function $g(e){let t=Qn(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function dC(e){let t=Qn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return n&&s&&o}function Dg(e){let t=Qn(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function pC(e){let t=Qn(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function fC(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function Qn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function cu(e){let t=new Map;for(let r of e)if(es(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function mC(e,t){let r=new Map;for(let n of e){if(!es(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function gC(e){let t=new Map;for(let r of e){let n=/\blevel=([A-Za-z]+)\b/.exec(r)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(r);if(!n)continue;let s=(n[1]??n[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}function _t(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(_t):es(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,_t(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=xg?t:`${t.slice(0,xg-1)}\u2026`}function Ng(e){let t=C(e).trimEnd(),r=L(t);if(!au(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
97
+ `}function au(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let i=t;return e.length!==i.length?!1:e.every((a,c)=>au(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&au(r[i],n[i]))}function es(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mg(e){let r=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function Cg(e){return e.toString("utf8").replace(/�$/g,"")}function hC(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function yC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Vv,Kv,Tg,xg,rs=h(()=>{"use strict";J();N();sg();Zt();Zn();Be();Vv=8*1024,Kv=2*1024,Tg=1024,xg=240});var Qo={};F(Qo,{RSP_WRAPPER_CAPABILITIES:()=>os,_testOnlyResetBinaryState:()=>TC,formatCodexHookDecision:()=>Yg,formatHookDecision:()=>zg,hookDecisionFromClaudePreExecJson:()=>$C,hookDecisionFromCodexPreExecJson:()=>DC,rewriteCommand:()=>Vg,rewriteTableFromCapabilities:()=>qg,runClaudePreExecHook:()=>NC,runCodexPreExecHook:()=>MC});import{accessSync as EC,constants as xC,existsSync as vC,readFileSync as Xo}from"node:fs";import{fileURLToPath as CC}from"node:url";function TC(){Yo=void 0,uu=!1}function OC(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return EC(`${t}/rsp`,xC.X_OK),!0}catch{}return!1}function PC(e){return Yo===void 0&&(Yo=e()),Yo}function AC(){uu||(uu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function qg(e){let t=new Map;for(let r of e)t.set(t0(r.command),["rsp",...r.wrapper]);return t}function Vg(e,t=zn()){let r=qC(e);if(r)return r;let n=UC(e);if(!n)return zo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Pr(s[0]))return zo(e,t);let o=LC(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return zo(e,t);let i=[...os].sort((u,l)=>l.command.length-u.command.length).find(u=>JC(s,u.command));if(!i)return zo(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=th(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(Rt),...c].join(" "),capabilityId:i.id}}function LC(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=th(e.redirectSuffix),o=t.map(Rt);return n==="cat"&&r.length===2&&Ko(r[1])?{kind:"rewrite",command:[...o,"cat",Rt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&Ko(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",Rt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&Ko(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],Rt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&Ko(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),Rt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function Ko(e){return!!e&&!e.startsWith("-")}async function $C(e,t){return await Kg(e,t)}async function DC(e,t){return await Kg(e,t)}async function Kg(e,t){return(await du(e,t,"pre-exec")).decision}async function du(e,t,r){let n=oh(e);if(!n.ok){let m={kind:"passthrough",reason:n.reason};return{decision:m,telemetryRoot:t.cwd,event:Fr({hook:r,command:"",decision:m,reason:n.reason})}}let s=n.payload,o=$e(s,["cwd"])||$e(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??BC)(o)){let m={kind:"passthrough",reason:"disabled"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:lu(s),decision:m,reason:"disabled"})}}let a=lu(s);if(!a){let m={kind:"passthrough",reason:"missing-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"missing-command"})}}if(!PC(t.resolveBinary??OC)){AC();let m={kind:"passthrough",reason:"binary-unresolved"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Pe(o,process.env),p=t.rspInvocationPrefix??zn(),d=l.proxyEnabled?VC(a,p):(t.rewrite??(m=>Vg(m,p)))(a),f=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let m=d.reason?d:{...d,reason:"unsupported-command"};return{decision:m,telemetryRoot:o,event:Fr({hook:r,command:a,decision:m,reason:m.reason??"unsupported-command",decisionMs:f})}}return await jC(o,t.wakeResident??FC),{decision:d,telemetryRoot:o,event:Fr({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function zg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Yg(e){return e.kind==="rewrite"?Xg(e.command):{stdout:"",status:0}}function Xg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
98
+ `,status:0}}async function NC(e){let t="";try{t=e?Xo(e,"utf8"):Xo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"claude-pre-exec");Zo(r.telemetryRoot,r.event);let n=r.decision;Qg("claude-pre-exec",n);let s=zg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Zo(process.cwd(),Zg("claude-pre-exec",t,r)),eh("claude-pre-exec",r),0}}async function MC(e){let t="";try{t=e?Xo(e,"utf8"):Xo(0,"utf8");let r=await du(t,{cwd:process.cwd()},"codex-pre-exec");Zo(r.telemetryRoot,r.event);let n=r.decision;Qg("codex-pre-exec",n);let s=Yg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Zo(process.cwd(),Zg("codex-pre-exec",t,r)),eh("codex-pre-exec",r),0}}function Zo(e,t){at(e,t).catch(()=>{})}function Fr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:be(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Zg(e,t,r){let n=oh(t),s=n.ok?lu(n.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:be(s),decision:"failed-open",reason:"hook-exception",error:pu(r)}}function BC(e){return Pe(e,process.env).enabled}async function FC(e){let t=Pe(e,process.env);if(!t.enabled||!WC(t))return;let r=je(e);await Ps(r,GC(t))}async function jC(e,t){try{await Promise.resolve(t(e))}catch(r){HC(r)}}function Qg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
99
99
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
100
100
  `)}}function eh(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${pu(t)}
101
- `)}function jC(e){ga(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${pu(e)}
102
- `)}function pu(e){return e instanceof Error?e.name||"Error":typeof e}function HC(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function GC(e){if(!e.storeUri.startsWith("file://"))return!0;try{return xC(vC(e.storeUri))}catch{return!1}}function lu(e){return $e(e,["tool_input","command"])||$e(e,["tool_input","cmd"])||$e(e,["tool_input","args","command"])||$e(e,["input","command"])||$e(e,["input","cmd"])||$e(e,["arguments","command"])||$e(e,["arguments","cmd"])||$e(e,["command"])||$e(e,["cmd"])}function WC(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=fu(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Pr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function fu(e){let t=[],r="",n=!1,s=null,o=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let i=0;i<e.length;i+=1){let a=e[i];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}if(/[ \t]/.test(a)){o();continue}r+=a}return s?[]:(o(),t)}function UC(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function JC(e){let t=fu(e.trim()).map(r=>r.text);return qt(t)?{kind:"passthrough",reason:AC}:null}function th(e){return e.map(t=>t.text)}function Rt(e){return/[^\w@%+=:,./-]/.test(e)?mu(e):e}function qC(e,t){let r=KC(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(Rt).join(" ")} proxy -- ${mu(e.trim())}`,capabilityId:"proxy:universal"}}function VC(e){if(!process.argv[1])return!1;let t=fu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function KC(e){let t=e.trim();if(!t)return"missing-command";if(nh(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Cn(vn(t)[0]??"")[0];if(r==="rsp"||VC(t))return"opt-out";if(r&&rh.has(r))return"interactive"}function Ko(e,t){let r=e.trim();return zC(r)?{kind:"rewrite",command:`${t.map(Rt).join(" ")} exec -- ${mu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function zC(e){return!(!e||!YC(e)||!XC(e)||nh(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||ZC(e,"rsp")||sh(e,rh)||QC(e))}function YC(e){return/&&|[;|]/.test(e)}function nh(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function XC(e){return vn(e).some(t=>{let r=Cn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function sh(e,t){return vn(e).some(r=>{let n=Cn(r)[0];return n?t.has(n):!1})}function ZC(e,t){return sh(e,new Set([t]))}function QC(e){return vn(e).some(t=>{let r=Cn(t);return r[0]==="grep"&&r.includes("-q")})}function mu(e){return`'${e.replace(/'/g,"'\\''")}'`}function e0(e){return e.join("\0")}function oh(e){try{let t=JSON.parse(e);return ih(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function $e(e,t){let r=e;for(let n of t){if(!ih(r))return"";r=r[n]}return typeof r=="string"?r:""}function ih(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var zo,uu,ss,N1,AC,rh,os=h(()=>{"use strict";Tn();Ae();He();Gt();Zc();Ie();uu=!1;ss=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],N1=qg(ss),AC="lossless-gh-json-jq";rh=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var fh={};F(fh,{fastTelemetryRoot:()=>hu,isFastGitStatus:()=>Qo,runFastGitStatus:()=>ei});import{spawnSync as dh}from"node:child_process";import{existsSync as ph,readdirSync as u0}from"node:fs";function Qo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ei(){if(l0(process.cwd()))return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};if(dh("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=dh("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?gu():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function hu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(He(),Ht));return t(e).rootDir}catch{return e}}function gu(){return Buffer.from(`${U({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
103
- `)}function l0(e){try{return!ph(`${e}/.git`)||ph(`${e}/.git/index`)?!1:u0(e).every(t=>t===".git")}catch{return!1}}var yu=h(()=>{"use strict";Qe()});async function Hr(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function hh(e,t,r,n={}){C0(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=T0(["id","number",...r]).map(d=>O0(v0[d],6)).join(`
101
+ `)}function HC(e){ga(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${pu(e)}
102
+ `)}function pu(e){return e instanceof Error?e.name||"Error":typeof e}function GC(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function WC(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vC(CC(e.storeUri))}catch{return!1}}function lu(e){return $e(e,["tool_input","command"])||$e(e,["tool_input","cmd"])||$e(e,["tool_input","args","command"])||$e(e,["input","command"])||$e(e,["input","cmd"])||$e(e,["arguments","command"])||$e(e,["arguments","cmd"])||$e(e,["command"])||$e(e,["cmd"])}function UC(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=fu(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Pr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function fu(e){let t=[],r="",n=!1,s=null,o=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let i=0;i<e.length;i+=1){let a=e[i];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}if(/[ \t]/.test(a)){o();continue}r+=a}return s?[]:(o(),t)}function JC(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function qC(e){let t=fu(e.trim()).map(r=>r.text);return qt(t)?{kind:"passthrough",reason:IC}:null}function th(e){return e.map(t=>t.text)}function Rt(e){return/[^\w@%+=:,./-]/.test(e)?mu(e):e}function VC(e,t){let r=zC(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(Rt).join(" ")} proxy -- ${mu(e.trim())}`,capabilityId:"proxy:universal"}}function KC(e){if(!process.argv[1])return!1;let t=fu(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function zC(e){let t=e.trim();if(!t)return"missing-command";if(nh(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Tn(Cn(t)[0]??"")[0];if(r==="rsp"||KC(t))return"opt-out";if(r&&rh.has(r))return"interactive"}function zo(e,t){let r=e.trim();return YC(r)?{kind:"rewrite",command:`${t.map(Rt).join(" ")} exec -- ${mu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function YC(e){return!(!e||!XC(e)||!ZC(e)||nh(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||QC(e,"rsp")||sh(e,rh)||e0(e))}function XC(e){return/&&|[;|]/.test(e)}function nh(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function ZC(e){return Cn(e).some(t=>{let r=Tn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function sh(e,t){return Cn(e).some(r=>{let n=Tn(r)[0];return n?t.has(n):!1})}function QC(e,t){return sh(e,new Set([t]))}function e0(e){return Cn(e).some(t=>{let r=Tn(t);return r[0]==="grep"&&r.includes("-q")})}function mu(e){return`'${e.replace(/'/g,"'\\''")}'`}function t0(e){return e.join("\0")}function oh(e){try{let t=JSON.parse(e);return ih(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function $e(e,t){let r=e;for(let n of t){if(!ih(r))return"";r=r[n]}return typeof r=="string"?r:""}function ih(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yo,uu,os,M1,IC,rh,is=h(()=>{"use strict";On();Ae();He();Gt();Zc();Ie();uu=!1;os=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],M1=qg(os),IC="lossless-gh-json-jq";rh=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var fh={};F(fh,{fastTelemetryRoot:()=>hu,isFastGitStatus:()=>ei,runFastGitStatus:()=>ti});import{spawnSync as dh}from"node:child_process";import{existsSync as ph,readdirSync as l0}from"node:fs";function ei(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ti(){if(d0(process.cwd()))return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};if(dh("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:gu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=dh("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?gu():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function hu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(He(),Ht));return t(e).rootDir}catch{return e}}function gu(){return Buffer.from(`${U({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
103
+ `)}function d0(e){try{return!ph(`${e}/.git`)||ph(`${e}/.git/index`)?!1:l0(e).every(t=>t===".git")}catch{return!1}}var yu=h(()=>{"use strict";Qe()});async function Hr(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function hh(e,t,r,n={}){T0(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=O0(["id","number",...r]).map(d=>P0(C0[d],6)).join(`
104
104
  `),u=o.map(({alias:d,number:f})=>[` ${d}: ${e}(number: ${f}) {`,c," }"].join(`
105
105
  `)),l=i.map(({alias:d,name:f})=>` ${d}: label(name: ${JSON.stringify(f)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
106
106
  `);return{kind:e,query:p,aliases:o,labelAliases:i}}function yh(e,t){let r=jr(t),n=jr(r.data),s=jr(n.repository),o=Array.isArray(r.errors)?r.errors.map(jr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(_h(c))return{number:a,value:c};let u=o.find(l=>{let p=l.path;return Array.isArray(p)&&p.includes(i)});return{number:a,error:Rh(u?.message)||"not found"}})}function bh(e,t,r){let n=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${gh(t)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}if(r.length>0){let a=`remove${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${St(o.nodeId)}, labelIds: ${gh(r)}, clientMutationId: ${St(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
107
107
  `)}}function wh(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${St(e.nodeId)}, subIssueId: ${St(s.nodeId)}, clientMutationId: ${St(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
108
- `)}}function bu(e,t){let r=jr(t),n=Array.isArray(r.errors)?r.errors.map(jr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,Rh(i.message)||"mutation failed")}return s}function C0(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function T0(e){return[...new Set(e)]}function O0(e,t){let r=" ".repeat(t);return e.split(`
108
+ `)}}function bu(e,t){let r=jr(t),n=Array.isArray(r.errors)?r.errors.map(jr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,Rh(i.message)||"mutation failed")}return s}function T0(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function O0(e){return[...new Set(e)]}function P0(e,t){let r=" ".repeat(t);return e.split(`
109
109
  `).map(n=>`${r}${n}`).join(`
110
- `)}function St(e){return JSON.stringify(e)}function gh(e){return`[${e.map(St).join(", ")}]`}function jr(e){return _h(e)?e:{}}function _h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rh(e){return typeof e=="string"?e:""}var v0,kh=h(()=>{v0={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
111
- `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as A0,spawnSync as I0}from"node:child_process";function Ru(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function xh(e,t={}){let r=q0(e),n=r.repo??t.repo??process.env.GH_REPO??K0();if(!n||!n.includes("/"))return Eu(e,"repository is required; pass --repo owner/repo");let s=t.exec??z0,o=Math.max(1,Math.floor(t.restConcurrency??Eh));return r.verb==="issues"||r.verb==="prs"?await D0(r,n,s,o,e):r.verb==="edit-labels"?await M0(r,n,s,o,e):await F0(r,n,s,o,e)}async function D0(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=vh(e),a=[],c=[];for(let l of Su(e.numbers,100)){let p=hh(o,l,i.query),d=await ku(r,t,p.query);if(vu(d))return await N0(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:_e(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...yh(p,Et(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:H0(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return ri({command:ni(s),transport:"graphql",order:e.numbers,[e.verb]:is(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
112
- `))}async function N0(e,t,r,n,s){let o=vh(e),i=e.verb==="issues"?"issues":"pulls",a=await Hr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:_e(l)||"REST fallback failed"}};let p=qe(Et(l.stdout));if(e.verb==="prs"&&o.output.some(Ch)){let d=G(qe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:_e(f)||"REST check-runs fallback failed"}};let m=await r(["api",`repos/${t}/commits/${d}/status`]);if(m.code!==0)return{number:u,value:{error:_e(m)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:W0(qe(Et(f.stdout)),qe(Et(m.stdout)))}}return{number:u,value:G0(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return ri({command:ni(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:is(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function M0(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Eu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Th(e.numbers,t,r,n),Hr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(qe(Et(f.stdout)).node_id),error:f.code===0?"":_e(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Wr(s,e.numbers,xu(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Su(p,100)){let f=bh(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),m=await ku(r,t,f.query);if(vu(m))return await B0(e,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"label mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of d){let y=f.aliases.filter(b=>b.number===_.number).map(b=>w.get(b.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return Wr(s,e.numbers,Oh(e.numbers,l),"graphql")}async function B0(e,t,r,n,s){let o=await Hr(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:_e(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:_e(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Wr(s,e.numbers,is(o),"rest-fallback",n)}async function F0(e,t,r,n,s){if(e.numbers.length<2)return Eu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Th(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Wr(s,i,xu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of Su(p,100)){let f=wh({number:o,nodeId:u},d),m=await ku(r,t,f.query);if(vu(m))return await j0(o,i,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"sub-issue mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of f.aliases){let g=w.get(_.alias);l.set(_.number,g?{error:g}:{ok:!0})}}return Wr(s,i,Oh(i,l),"graphql")}async function j0(e,t,r,n,s,o){let i=await Hr(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:_e(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:_e(l)||"REST link failed"}}});return Wr(o,t,is(i),"rest-fallback",s)}function Wr(e,t,r,n,s){let o=Object.values(r).filter(i=>Ur(i)&&"error"in i).length;return ri({command:ni(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Eh}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function vh(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Sh(r,L0),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Sh(t,$0),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Sh(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function H0(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=wu(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=J0(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Ph(t[s]));return"number"in n||(n.number=Cu(t.number)),n}function G0(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Ur):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(Ch(s))n[s]=qe(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=Ph(t[s]);return"number"in n||(n.number=Cu(t.number)),n}function W0(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Ur):[],n=Array.isArray(t.statuses)?t.statuses.filter(Ur):[],s=[...r.map(o=>({name:G(o.name),state:(G(o.conclusion)||G(o.status)).toLowerCase()})),...n.map(o=>({name:G(o.context),state:G(o.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||U0(s.map(o=>o.state)),contexts:s}}function U0(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function Ch(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function J0(e){let t=wu(e).at(-1),r=qe(qe(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:wu(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function ku(e,t,r){let[n,s]=V0(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Th(e,t,r,n){return await Hr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=qe(Et(o.stdout)),a=G(i.node_id),c=Cu(i.id);return o.code!==0||!a?{number:s,error:_e(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Su(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function q0(e){if(!Ru(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Gr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Gr(c.slice(7)));else if(c==="--add")s.push(...Gr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Gr(c.slice(6)));else if(c==="--remove")o.push(...Gr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Gr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function ri(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
113
- `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Eu(e,t){return ri({command:ni(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function xu(e,t){return is(e.map(r=>({number:r,value:t(r)})))}function is(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Oh(e,t){return xu(e,r=>t.get(r)??{error:"mutation skipped"})}function vu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
110
+ `)}function St(e){return JSON.stringify(e)}function gh(e){return`[${e.map(St).join(", ")}]`}function jr(e){return _h(e)?e:{}}function _h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rh(e){return typeof e=="string"?e:""}var C0,kh=h(()=>{C0={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
111
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as I0,spawnSync as L0}from"node:child_process";function Ru(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function xh(e,t={}){let r=V0(e),n=r.repo??t.repo??process.env.GH_REPO??z0();if(!n||!n.includes("/"))return Eu(e,"repository is required; pass --repo owner/repo");let s=t.exec??Y0,o=Math.max(1,Math.floor(t.restConcurrency??Eh));return r.verb==="issues"||r.verb==="prs"?await N0(r,n,s,o,e):r.verb==="edit-labels"?await B0(r,n,s,o,e):await j0(r,n,s,o,e)}async function N0(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=vh(e),a=[],c=[];for(let l of Su(e.numbers,100)){let p=hh(o,l,i.query),d=await ku(r,t,p.query);if(vu(d))return await M0(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:_e(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...yh(p,Et(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:G0(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return ni({command:si(s),transport:"graphql",order:e.numbers,[e.verb]:as(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
112
+ `))}async function M0(e,t,r,n,s){let o=vh(e),i=e.verb==="issues"?"issues":"pulls",a=await Hr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:_e(l)||"REST fallback failed"}};let p=qe(Et(l.stdout));if(e.verb==="prs"&&o.output.some(Ch)){let d=G(qe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:_e(f)||"REST check-runs fallback failed"}};let m=await r(["api",`repos/${t}/commits/${d}/status`]);if(m.code!==0)return{number:u,value:{error:_e(m)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:U0(qe(Et(f.stdout)),qe(Et(m.stdout)))}}return{number:u,value:W0(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return ni({command:si(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:as(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function B0(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Eu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Th(e.numbers,t,r,n),Hr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(qe(Et(f.stdout)).node_id),error:f.code===0?"":_e(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Wr(s,e.numbers,xu(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Su(p,100)){let f=bh(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),m=await ku(r,t,f.query);if(vu(m))return await F0(e,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"label mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of d){let y=f.aliases.filter(b=>b.number===_.number).map(b=>w.get(b.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return Wr(s,e.numbers,Oh(e.numbers,l),"graphql")}async function F0(e,t,r,n,s){let o=await Hr(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:_e(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:_e(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Wr(s,e.numbers,as(o),"rest-fallback",n)}async function j0(e,t,r,n,s){if(e.numbers.length<2)return Eu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Th(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Wr(s,i,xu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of Su(p,100)){let f=wh({number:o,nodeId:u},d),m=await ku(r,t,f.query);if(vu(m))return await H0(o,i,t,r,n,s);if(m.code!==0){for(let _ of d)l.set(_.number,{error:_e(m)||"sub-issue mutation failed"});continue}let w=bu(f.aliases,Et(m.stdout));for(let _ of f.aliases){let g=w.get(_.alias);l.set(_.number,g?{error:g}:{ok:!0})}}return Wr(s,i,Oh(i,l),"graphql")}async function H0(e,t,r,n,s,o){let i=await Hr(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:_e(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:_e(l)||"REST link failed"}}});return Wr(o,t,as(i),"rest-fallback",s)}function Wr(e,t,r,n,s){let o=Object.values(r).filter(i=>Ur(i)&&"error"in i).length;return ni({command:si(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Eh}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function vh(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Sh(r,$0),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Sh(t,D0),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Sh(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function G0(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=wu(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=q0(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Ph(t[s]));return"number"in n||(n.number=Cu(t.number)),n}function W0(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Ur):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(Ch(s))n[s]=qe(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=Ph(t[s]);return"number"in n||(n.number=Cu(t.number)),n}function U0(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Ur):[],n=Array.isArray(t.statuses)?t.statuses.filter(Ur):[],s=[...r.map(o=>({name:G(o.name),state:(G(o.conclusion)||G(o.status)).toLowerCase()})),...n.map(o=>({name:G(o.context),state:G(o.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||J0(s.map(o=>o.state)),contexts:s}}function J0(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function Ch(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function q0(e){let t=wu(e).at(-1),r=qe(qe(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:wu(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function ku(e,t,r){let[n,s]=K0(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Th(e,t,r,n){return await Hr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=qe(Et(o.stdout)),a=G(i.node_id),c=Cu(i.id);return o.code!==0||!a?{number:s,error:_e(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Su(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function V0(e){if(!Ru(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Gr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Gr(c.slice(7)));else if(c==="--add")s.push(...Gr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Gr(c.slice(6)));else if(c==="--remove")o.push(...Gr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Gr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function ni(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
113
+ `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Eu(e,t){return ni({command:si(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function xu(e,t){return as(e.map(r=>({number:r,value:t(r)})))}function as(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Oh(e,t){return xu(e,r=>t.get(r)??{error:"mutation skipped"})}function vu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
114
114
  ${e.stdout}`)}function _e(e){return(e.stderr||e.stdout).trim().split(`
115
- `)[0]?.slice(0,240)??""}function Et(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function wu(e){let t=qe(e).nodes;return Array.isArray(t)?t.filter(Ur):[]}function Ph(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function Cu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Gr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function V0(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function ni(e){return`rsp ${e.join(" ")}`}function K0(){let e=I0("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function z0(e){let t=A0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function qe(e){return Ur(e)?e:{}}function Ur(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Eh,L0,$0,Ah=h(()=>{"use strict";J();N();kh();Eh=4,L0=new Set(["number","title","state","labels","body"]),$0=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Du={};F(Du,{renderGhContract:()=>Mh,runGhWrapper:()=>tT});import{spawn as Y0}from"node:child_process";async function tT(e,t){if(Ru(e))return await xh(e);let r=Bh(e),n=await nT(r);return Mh(e,n,t)}async function Mh(e,t,r){if((t.status??0)!==0||t.signal){let f=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=Bh(e),s=as(t.stdout),o=dT(n,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=wT(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=f}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=_T(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Le(p)}
115
+ `)[0]?.slice(0,240)??""}function Et(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function wu(e){let t=qe(e).nodes;return Array.isArray(t)?t.filter(Ur):[]}function Ph(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function Cu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Gr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function K0(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function si(e){return`rsp ${e.join(" ")}`}function z0(){let e=L0("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function Y0(e){let t=I0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function qe(e){return Ur(e)?e:{}}function Ur(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Eh,$0,D0,Ah=h(()=>{"use strict";J();N();kh();Eh=4,$0=new Set(["number","title","state","labels","body"]),D0=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Du={};F(Du,{renderGhContract:()=>Mh,runGhWrapper:()=>rT});import{spawn as X0}from"node:child_process";async function rT(e,t){if(Ru(e))return await xh(e);let r=Bh(e),n=await sT(r);return Mh(e,n,t)}async function Mh(e,t,r){if((t.status??0)!==0||t.signal){let f=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=Bh(e),s=cs(t.stdout),o=pT(n,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=_T(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=f}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=RT(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Le(p)}
116
116
  `;return{stdout:Buffer.from(`${C(u.payload)}
117
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Bh(e){let t=nn(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let f=0;f<l.length;f+=1){let m=l[f]??"";m==="--full"?a=!0:m==="--wide"?c=!0:m==="--fields"?u=Lh(l[++f]??""):m.startsWith("--fields=")?u=Lh(m.slice(9)):i.push(m)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return rT(d),d}function Ih(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?Z0[t]:X0[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Lh(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function rT(e){if(e.fields.size===0)return;if(e.action!=="list")throw new si(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=eT[t];for(let n of e.fields)if(!r.includes(n))throw new si(e,`unknown field: ${n}`,r)}async function nT(e){if(e.action==="combined")return await sT(e);let t=oT(e);if(!t)return await lT(Ih(e));let r=await ue({...t,command:["gh",...Ih(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await iT(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function sT(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=jh(as(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(as(s.stdout)).map(cT)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function oT(e){let t=Hh(e.passthrough),r=uT(e.passthrough,"--limit")??30,n=Ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ve(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function iT(e,t){let r=as(t);switch(`${e.kind}:${e.action}`){case"pr:list":return pe(r).map(Fh);case"pr:view":return jh(r);case"issue:list":return pe(r).filter(n=>!rr(n.pull_request)).map($h);case"issue:view":return $h(r);case"run:list":return{items:pe(H(r).workflow_runs).map(Dh),total:le(H(r),"total_count")};case"run:view":{let n=Dh(r),s=Hh(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?pe(H(as(o.stdout)).jobs).map(aT):[]}}default:return r}}function Fh(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Lu(t.user),labels:pe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(H(t.base),"ref"),headRefName:x(H(t.head),"ref")}}function jh(e){return Fh(e)}function $h(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:pe(t.labels).map(r=>({name:x(r,"name")})),author:Lu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Dh(e){let t=H(e);return{databaseId:le(t,"database_id")||le(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function aT(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function cT(e){let t=H(e);return{author:Lu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Lu(e){let t=H(e);return{login:x(t,"login")}}function Hh(e){return e.find(t=>!t.startsWith("-"))}function Ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function uT(e,t){let r=Ve(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function lT(e){let t=Y0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function dT(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Tu(r,"prs"),o=s.rows.map(c=>Gh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Jr({...n,prs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Jr({...n,pr:Wh(H(r),e),summary:`PR #${le(H(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return pT(e,t,H(r));case"issue:list":{let s=Tu(r,"issues"),o=s.rows.map(c=>Uh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Jr({...n,issues:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Jr({...n,issue:yT(H(r),e),summary:`issue #${le(H(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Tu(r,"runs"),o=s.rows.map(c=>Jh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Jr({...n,runs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Jr({...n,run:bT(H(r),e),summary:`run ${le(H(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function pT(e,t,r){let n=Wh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(fT),e.query),o=H(r.comments).comments,i=te(pe(o).map(mT).slice(-3),e.query);return et({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(H(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function fT(e){return{name:x(e,"name"),state:cs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function mT(e){return{author:Vh(e.author),body:oi(e,"body",Iu,!1),created:x(e,"createdAt")}}function Tu(e,t){if(Array.isArray(e))return{rows:pe(e)};let r=H(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:pe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:pe(r.workflow_runs),total:n}:{rows:[]}}function Ou(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Pu(e,t,r,n,s){return et({...e,empty:!0,scope:gT(t),[r]:[],aggregate:n,summary:`0 ${hT(t)}`},s)}function gT(e){let t=Ve(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ve(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ve(e.passthrough,"--branch")??Ve(e.passthrough,"-b"),s=Ve(e.passthrough,"--workflow")??Ve(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function hT(e){let t=Ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Gh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),draft:!!e.isDraft};return $u(r,e,t,["author","labels","url","updated"]),r}function Wh(e,t){let r=Gh(e,t);return r.body=oi(e,"body",Iu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Uh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:cs(e),labels:qh(e.labels)};return $u(r,e,t,["author","url","updated"]),r}function yT(e,t){let r=Uh(e,t);return r.body=oi(e,"body",Iu,t.full),r}function Jh(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:cs(e),conclusion:x(e,"conclusion")};return $u(r,e,t,["event","branch","workflow","created"]),r}function bT(e,t){let r=Jh(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:cs(s),conclusion:x(s,"conclusion"),log:oi(s,"log",Q0,t.full)}));return r.jobs=n,r}function oi(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function wT(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(rr(r)){if(rr(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function _T(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function Nh(e,t){return e.every(r=>r.state===t)?t:"returned"}function Au(e,t,r){return r?`${e}/${t}`:String(e)}function Jr(e,t,r){return t.query?et(e,r):e}function cs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function $u(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=Vh(t.author):s==="labels"?e.labels=qh(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function qh(e){return Array.isArray(e)?e.map(t=>rr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Vh(e){return rr(e)?x(e,"login"):""}function as(e){return e.trim()?JSON.parse(e):null}function pe(e){return Array.isArray(e)?e.filter(rr):[]}function H(e){return rr(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var X0,Z0,Iu,Q0,eT,si,Nu=h(()=>{"use strict";J();N();ko();Ah();Zt();sn();Be();X0={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},Z0={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},Iu=160,Q0=160,eT={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};si=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return D({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Fu={};F(Fu,{renderTestContract:()=>Kh,runTestWrapper:()=>xT});import{spawn as RT}from"node:child_process";async function xT(e,t){let r=nn(e),n=await PT(r.argv);return await Kh(e,n,t)}async function Kh(e,t,r){let n=nn(e),o=zh(n.argv)==="vitest"?AT(t.stdout):IT(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let m=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${DT(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await vT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await LT(m.excerpt,n.argv.join(" "),r.store);u.push({suite:m.suite,name:m.name,excerpt:w.text}),l??=w.handle,p+=w.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?et(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function vT(e,t,r,n,s,o,i){let a=CT(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?et(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,r.failures.length-a.length),d=a.some((b,R)=>b.excerpt!==r.failures[R].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let m=C(f),w=Buffer.byteLength(m),_=await o.store?.mint(Buffer.from(m),{command:e.join(" "),loss:{level:"terse",bytes_elided:w}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${w}) \u2014 ${Le(_)}`;return{stdout:Buffer.from(`${l}
118
- ${y}`),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:w,rowsElided:p,rawOutput:Buffer.from(m)}}function Bu(e){return e===0||e===null?0:1}function CT(e){let t=[],r=ST;for(let n of e.slice(0,ET)){let s=TT(n.excerpt,Math.min(kT,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function TT(e,t){if(t<=0)return"";let r=e.split(`
117
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Bh(e){let t=nn(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let f=0;f<l.length;f+=1){let m=l[f]??"";m==="--full"?a=!0:m==="--wide"?c=!0:m==="--fields"?u=Lh(l[++f]??""):m.startsWith("--fields=")?u=Lh(m.slice(9)):i.push(m)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return nT(d),d}function Ih(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?Q0[t]:Z0[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Lh(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function nT(e){if(e.fields.size===0)return;if(e.action!=="list")throw new oi(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=tT[t];for(let n of e.fields)if(!r.includes(n))throw new oi(e,`unknown field: ${n}`,r)}async function sT(e){if(e.action==="combined")return await oT(e);let t=iT(e);if(!t)return await dT(Ih(e));let r=await ue({...t,command:["gh",...Ih(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await aT(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function oT(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=jh(cs(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(cs(s.stdout)).map(uT)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function iT(e){let t=Hh(e.passthrough),r=lT(e.passthrough,"--limit")??30,n=Ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ve(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function aT(e,t){let r=cs(t);switch(`${e.kind}:${e.action}`){case"pr:list":return pe(r).map(Fh);case"pr:view":return jh(r);case"issue:list":return pe(r).filter(n=>!rr(n.pull_request)).map($h);case"issue:view":return $h(r);case"run:list":return{items:pe(H(r).workflow_runs).map(Dh),total:le(H(r),"total_count")};case"run:view":{let n=Dh(r),s=Hh(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?pe(H(cs(o.stdout)).jobs).map(cT):[]}}default:return r}}function Fh(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Lu(t.user),labels:pe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(H(t.base),"ref"),headRefName:x(H(t.head),"ref")}}function jh(e){return Fh(e)}function $h(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:pe(t.labels).map(r=>({name:x(r,"name")})),author:Lu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Dh(e){let t=H(e);return{databaseId:le(t,"database_id")||le(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function cT(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function uT(e){let t=H(e);return{author:Lu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Lu(e){let t=H(e);return{login:x(t,"login")}}function Hh(e){return e.find(t=>!t.startsWith("-"))}function Ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function lT(e,t){let r=Ve(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function dT(e){let t=X0("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function pT(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Tu(r,"prs"),o=s.rows.map(c=>Gh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Jr({...n,prs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Jr({...n,pr:Wh(H(r),e),summary:`PR #${le(H(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return fT(e,t,H(r));case"issue:list":{let s=Tu(r,"issues"),o=s.rows.map(c=>Uh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Jr({...n,issues:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Jr({...n,issue:bT(H(r),e),summary:`issue #${le(H(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Tu(r,"runs"),o=s.rows.map(c=>Jh(c,e)),i=te(o,e.query),a=Ou(i.length,o.length,s.total,e.query);return i.length===0?Pu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Jr({...n,runs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Jr({...n,run:wT(H(r),e),summary:`run ${le(H(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function fT(e,t,r){let n=Wh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(mT),e.query),o=H(r.comments).comments,i=te(pe(o).map(gT).slice(-3),e.query);return et({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(H(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function mT(e){return{name:x(e,"name"),state:us(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function gT(e){return{author:Vh(e.author),body:ii(e,"body",Iu,!1),created:x(e,"createdAt")}}function Tu(e,t){if(Array.isArray(e))return{rows:pe(e)};let r=H(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:pe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:pe(r.workflow_runs),total:n}:{rows:[]}}function Ou(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Pu(e,t,r,n,s){return et({...e,empty:!0,scope:hT(t),[r]:[],aggregate:n,summary:`0 ${yT(t)}`},s)}function hT(e){let t=Ve(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ve(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ve(e.passthrough,"--branch")??Ve(e.passthrough,"-b"),s=Ve(e.passthrough,"--workflow")??Ve(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function yT(e){let t=Ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Gh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:us(e),draft:!!e.isDraft};return $u(r,e,t,["author","labels","url","updated"]),r}function Wh(e,t){let r=Gh(e,t);return r.body=ii(e,"body",Iu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Uh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:us(e),labels:qh(e.labels)};return $u(r,e,t,["author","url","updated"]),r}function bT(e,t){let r=Uh(e,t);return r.body=ii(e,"body",Iu,t.full),r}function Jh(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:us(e),conclusion:x(e,"conclusion")};return $u(r,e,t,["event","branch","workflow","created"]),r}function wT(e,t){let r=Jh(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:us(s),conclusion:x(s,"conclusion"),log:ii(s,"log",eT,t.full)}));return r.jobs=n,r}function ii(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function _T(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(rr(r)){if(rr(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function RT(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function Nh(e,t){return e.every(r=>r.state===t)?t:"returned"}function Au(e,t,r){return r?`${e}/${t}`:String(e)}function Jr(e,t,r){return t.query?et(e,r):e}function us(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function $u(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=Vh(t.author):s==="labels"?e.labels=qh(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function qh(e){return Array.isArray(e)?e.map(t=>rr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Vh(e){return rr(e)?x(e,"login"):""}function cs(e){return e.trim()?JSON.parse(e):null}function pe(e){return Array.isArray(e)?e.filter(rr):[]}function H(e){return rr(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Z0,Q0,Iu,eT,tT,oi,Nu=h(()=>{"use strict";J();N();So();Ah();Zt();sn();Be();Z0={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},Q0={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},Iu=160,eT=160,tT={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};oi=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return D({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Fu={};F(Fu,{renderTestContract:()=>Kh,runTestWrapper:()=>vT});import{spawn as kT}from"node:child_process";async function vT(e,t){let r=nn(e),n=await AT(r.argv);return await Kh(e,n,t)}async function Kh(e,t,r){let n=nn(e),o=zh(n.argv)==="vitest"?IT(t.stdout):LT(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let m=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${NT(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await CT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await $T(m.excerpt,n.argv.join(" "),r.store);u.push({suite:m.suite,name:m.name,excerpt:w.text}),l??=w.handle,p+=w.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?et(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function CT(e,t,r,n,s,o,i){let a=TT(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?et(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,r.failures.length-a.length),d=a.some((b,R)=>b.excerpt!==r.failures[R].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let m=C(f),w=Buffer.byteLength(m),_=await o.store?.mint(Buffer.from(m),{command:e.join(" "),loss:{level:"terse",bytes_elided:w}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${w}) \u2014 ${Le(_)}`;return{stdout:Buffer.from(`${l}
118
+ ${y}`),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:w,rowsElided:p,rawOutput:Buffer.from(m)}}function Bu(e){return e===0||e===null?0:1}function TT(e){let t=[],r=ET;for(let n of e.slice(0,xT)){let s=OT(n.excerpt,Math.min(ST,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function OT(e,t){if(t<=0)return"";let r=e.split(`
119
119
  `),n=r.length<=2?e:`${r[0]}
120
120
  \u2026
121
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function zh(e){if(e[0]==="vitest")return"vitest";if(e[0]==="cargo"&&e[1]==="test")return"cargo";throw new Error(`unsupported test command: ${e.join(" ")}`)}function OT(e){if(zh(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(i=>i==="--reporter=json"||i==="--reporter"||i.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let r=e.slice(1);return{executable:"cargo",args:r.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?r:["test","--message-format=json",...r.slice(1)]}}async function PT(e){let t=OT(e),r=RT(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function AT(e){let t=Yh(e);if(!xt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=vt(t.numTotalTests),o=vt(t.numFailedTests),i=NT(vt(t.startTime),vt(t.endTime));for(let a of r){if(!xt(a))continue;let c=Ke(a.name)||Ke(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)xt(l)&&l.status==="failed"&&n.push({suite:c,name:Ke(l.fullName)||Ke(l.title)||Ke(l.name),excerpt:$T(l.failureMessages)||Ke(l.failureMessage)})}return s||=r.reduce((a,c)=>!xt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>xt(c)?a+vt(c.perfStats&&xt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function IT(e){let t=e.split(`
121
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function zh(e){if(e[0]==="vitest")return"vitest";if(e[0]==="cargo"&&e[1]==="test")return"cargo";throw new Error(`unsupported test command: ${e.join(" ")}`)}function PT(e){if(zh(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(i=>i==="--reporter=json"||i==="--reporter"||i.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let r=e.slice(1);return{executable:"cargo",args:r.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?r:["test","--message-format=json",...r.slice(1)]}}async function AT(e){let t=PT(e),r=kT(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function IT(e){let t=Yh(e);if(!xt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=vt(t.numTotalTests),o=vt(t.numFailedTests),i=MT(vt(t.startTime),vt(t.endTime));for(let a of r){if(!xt(a))continue;let c=Ke(a.name)||Ke(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)xt(l)&&l.status==="failed"&&n.push({suite:c,name:Ke(l.fullName)||Ke(l.title)||Ke(l.name),excerpt:DT(l.failureMessages)||Ke(l.failureMessage)})}return s||=r.reduce((a,c)=>!xt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>xt(c)?a+vt(c.perfStats&&xt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function LT(e){let t=e.split(`
122
122
  `).filter(Boolean).map(c=>Yh(c)).filter(xt);if(t.length===0)return null;let r=[],n=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,n+=vt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=vt(c.failed),i+=vt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ke(c.name).split("::").slice(0,-1).join("::"),name:Ke(c.name),excerpt:Ke(c.stdout)});continue}if(c.reason==="compiler-message"&&xt(c.message)){let u=Ke(c.message.rendered);u&&a.push(u)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
123
- `)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function LT(e,t,r){let n=Buffer.from(e);if(n.length<=Mu)return{text:e,bytesElided:0};if(!r)throw new Error("over-limit test failure excerpt requires an elision store");let s=await r.mint(n,{command:t,loss:{level:"brief",bytes_elided:n.length}}),o=n.subarray(0,Mu).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
124
- \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Le(s)}`,handle:s,bytesElided:n.length}}function Yh(e){try{return JSON.parse(e)}catch{return null}}function $T(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
125
- `):""}function DT(e){return`${Number(e.toFixed(1))}s`}function NT(e,t){return e>0&&t>e?(t-e)/1e3:0}function vt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ke(e){return typeof e=="string"?e:""}function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Mu,kT,ST,ET,ju=h(()=>{"use strict";J();N();Zt();sn();Be();Mu=320,kT=160,ST=Mu,ET=3});var Wu={};F(Wu,{parseCatCommand:()=>Gu,renderCatContract:()=>UT,runCatWrapper:()=>WT});import{isUtf8 as MT}from"node:buffer";import{readFile as BT}from"node:fs/promises";import{extname as FT}from"node:path";async function WT(e,t){let r=Gu(e),n;try{n=await BT(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=xe(e.join(" "),"",o);return{stdout:D({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
126
- `),status:1,signal:null}}return ry(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await ty(e,r,n,t)}async function UT(e,t,r){if((t.status??0)!==0||t.signal){let i=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Gu(e),s=Buffer.from(t.stdout,"utf8");return ry(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ty(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Gu(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,o=[];for(let i=0;i<t.length;i++){let a=t[i];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=ey(t[++i],Hu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=ey(u,Hu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function ty(e,t,r,n){let s=r.toString("utf8"),o=VT(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>Qh(n.heavyByteThreshold,Xh)||o.truncated;if(!Zh(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Zh(t.file)?JT(e,t.file,r,s,n.level,o):qT(e,t.file,r,s,o),c=`${C(a)}
123
+ `)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function $T(e,t,r){let n=Buffer.from(e);if(n.length<=Mu)return{text:e,bytesElided:0};if(!r)throw new Error("over-limit test failure excerpt requires an elision store");let s=await r.mint(n,{command:t,loss:{level:"brief",bytes_elided:n.length}}),o=n.subarray(0,Mu).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
124
+ \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Le(s)}`,handle:s,bytesElided:n.length}}function Yh(e){try{return JSON.parse(e)}catch{return null}}function DT(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
125
+ `):""}function NT(e){return`${Number(e.toFixed(1))}s`}function MT(e,t){return e>0&&t>e?(t-e)/1e3:0}function vt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ke(e){return typeof e=="string"?e:""}function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Mu,ST,ET,xT,ju=h(()=>{"use strict";J();N();Zt();sn();Be();Mu=320,ST=160,ET=Mu,xT=3});var Wu={};F(Wu,{parseCatCommand:()=>Gu,renderCatContract:()=>JT,runCatWrapper:()=>UT});import{isUtf8 as BT}from"node:buffer";import{readFile as FT}from"node:fs/promises";import{extname as jT}from"node:path";async function UT(e,t){let r=Gu(e),n;try{n=await FT(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=xe(e.join(" "),"",o);return{stdout:D({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
126
+ `),status:1,signal:null}}return ry(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await ty(e,r,n,t)}async function JT(e,t,r){if((t.status??0)!==0||t.signal){let i=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Gu(e),s=Buffer.from(t.stdout,"utf8");return ry(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ty(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Gu(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,o=[];for(let i=0;i<t.length;i++){let a=t[i];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=ey(t[++i],Hu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=ey(u,Hu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function ty(e,t,r,n){let s=r.toString("utf8"),o=KT(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>Qh(n.heavyByteThreshold,Xh)||o.truncated;if(!Zh(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Zh(t.file)?qT(e,t.file,r,s,n.level,o):VT(e,t.file,r,s,o),c=`${C(a)}
127
127
  `;if(!i&&Buffer.byteLength(c)<=Qh(n.heavyByteThreshold,Xh))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let u=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${Le(u)}
128
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function JT(e,t,r,n,s,o){let i=ii(n),a=s==="terse"?HT:jT,c=ii(o.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:i.length,symbols:KT(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function qT(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ii(n).length,content:ii(s.text),truncated:s.truncated}}function VT(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
128
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function qT(e,t,r,n,s,o){let i=ai(n),a=s==="terse"?GT:HT,c=ai(o.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:i.length,symbols:zT(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function VT(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ai(n).length,content:ai(s.text),truncated:s.truncated}}function KT(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
129
129
  `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Hu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
130
130
  `)}${n&&i.length>0?`
131
- `:""}`,truncated:i.length<s.length}}function KT(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),o=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(o){t.push({kind:o[1],name:o[2],line:r+1,signature:s});continue}let i=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(i){t.push({kind:"function",name:i[1],line:r+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!zT(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ii(e){let t=e.split(`
132
- `);return t.at(-1)===""?t.slice(0,-1):t}function ry(e){return e.includes(0)||!MT(e)}function Zh(e){return GT.has(FT(e).toLowerCase())}function zT(e){return["for","if","switch","while"].includes(e)}function Qh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ey(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Xh,Hu,jT,HT,GT,Uu=h(()=>{"use strict";N();Zt();Be();Xh=8*1024,Hu=10,jT=8,HT=2,GT=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var ly={};F(ly,{REPO_STORE_PATH:()=>Vu,mergeRspBlock:()=>ay,provisionRspRepoStore:()=>oO});import{constants as YT}from"node:fs";import{access as XT,copyFile as ZT,mkdir as sy,readFile as QT,rename as eO,writeFile as oy}from"node:fs/promises";import{dirname as tO,join as us,resolve as rO}from"node:path";async function oO(e,t={}){let r=rO(e),n=us(r,".red"),s=us(n,"config.yaml"),o=us(r,Vu);await sy(n,{recursive:!0}),await sy(tO(o),{recursive:!0});let i="";try{i=await QT(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=ay(i,{enabled:!0,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ot}),c=a!==i;c&&await oy(s,a,"utf8");let u=!await qu(o),l=!1,p=!1;if(u){let f=us(r,nO),m=us(r,sO);if(await qu(f))await eO(f,o),p=!0;else if(await qu(m))await ZT(m,o),l=!0;else{let{provisionElisionStore:w}=await Promise.resolve().then(()=>(_o(),Zf)),_=process.env.REDDB_BIN;try{await w({uri:`file://${o}`,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=iO(a,Vu);return d!==a&&await oy(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function ay(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ai(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ai(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ai(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ai(t.heavyGitByteThreshold,ot)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
131
+ `:""}`,truncated:i.length<s.length}}function zT(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),o=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(o){t.push({kind:o[1],name:o[2],line:r+1,signature:s});continue}let i=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(i){t.push({kind:"function",name:i[1],line:r+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!YT(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ai(e){let t=e.split(`
132
+ `);return t.at(-1)===""?t.slice(0,-1):t}function ry(e){return e.includes(0)||!BT(e)}function Zh(e){return WT.has(jT(e).toLowerCase())}function YT(e){return["for","if","switch","while"].includes(e)}function Qh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ey(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Xh,Hu,HT,GT,WT,Uu=h(()=>{"use strict";N();Zt();Be();Xh=8*1024,Hu=10,HT=8,GT=2,WT=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var ly={};F(ly,{REPO_STORE_PATH:()=>Vu,mergeRspBlock:()=>ay,provisionRspRepoStore:()=>iO});import{constants as XT}from"node:fs";import{access as ZT,copyFile as QT,mkdir as sy,readFile as eO,rename as tO,writeFile as oy}from"node:fs/promises";import{dirname as rO,join as ls,resolve as nO}from"node:path";async function iO(e,t={}){let r=nO(e),n=ls(r,".red"),s=ls(n,"config.yaml"),o=ls(r,Vu);await sy(n,{recursive:!0}),await sy(rO(o),{recursive:!0});let i="";try{i=await eO(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=ay(i,{enabled:!0,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ot}),c=a!==i;c&&await oy(s,a,"utf8");let u=!await qu(o),l=!1,p=!1;if(u){let f=ls(r,sO),m=ls(r,oO);if(await qu(f))await tO(f,o),p=!0;else if(await qu(m))await QT(m,o),l=!0;else{let{provisionElisionStore:w}=await Promise.resolve().then(()=>(Ro(),Zf)),_=process.env.REDDB_BIN;try{await w({uri:`file://${o}`,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=aO(a,Vu);return d!==a&&await oy(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function ay(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ci(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ci(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ci(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ci(t.heavyGitByteThreshold,ot)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
133
133
  `),s=cy(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
134
134
  `)}
135
135
  `}let o=Ku(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
136
136
  `)}
137
- `}function cy(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Yu(n)&&zu(n)===0&&uy(n)===t)return r}return-1}function Ku(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Yu(e[s])&&zu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function zu(e){return(e.match(/^ */)?.[0]??"").length}function Yu(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function uy(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ai(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function iO(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
137
+ `}function cy(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Yu(n)&&zu(n)===0&&uy(n)===t)return r}return-1}function Ku(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Yu(e[s])&&zu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function zu(e){return(e.match(/^ */)?.[0]??"").length}function Yu(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function uy(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ci(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function aO(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
138
138
  `),n=cy(r,"plugins");if(n===-1)return e;let s=Ku(r,n,0),o=iy(r,"memory",n+1,s,2);if(o===-1)return e;let i=Ku(r,o,2),a=[...r],c=iy(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
139
139
  `)}
140
- `}function iy(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Yu(i)&&zu(i)===s&&uy(i)===t)return o}return-1}async function qu(e){try{return await XT(e,YT.F_OK),!0}catch{return!1}}var Vu,nO,sO,dy=h(()=>{"use strict";me();Ae();Vu=Ha,nO=Xl,sO=".red/memory/graph.rdb"});var yy={};F(yy,{runRspMcpServer:()=>cO});import{createInterface as aO}from"node:readline";async function cO(){let e=Pe(process.cwd(),process.env),t=aO({input:process.stdin,crlfDelay:1/0});for await(let r of t){if(!r.trim())continue;let n;try{n=JSON.parse(r);let s=await uO(n,e);my({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){my({jsonrpc:"2.0",id:typeof gy(r)?.id>"u"?null:gy(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function uO(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:fy(t)}]};if(!t.enabled)return{content:[{type:"text",text:fy(t)}],isError:!0};let n=yO(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:nr({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),o=await n.get(s);return o?"status"in o?{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:o.status,expired_at:o.expired_at,help:[o.command]})}],isError:!0}:{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:nr(lO(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await dO(r.arguments,n)}]}}return{}}function nr(e){return`${U(e)}
141
- `}function lO(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function dO(e,t){let r=fO(e?.payload);try{return await pO(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return hy(r)}}async function pO(e,t,r){let n=mO(t?.level),s=await su(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return hy(s.output);let o=Go(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return nr({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return gO(o,i.length,a,n)}function fO(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function mO(e){return e==="terse"?"terse":"brief"}function gO(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=py(o.subarray(0,i)),c=py(o.subarray(Math.max(0,o.length-i)));return nr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:hO(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function hy(e){return e.endsWith(`
140
+ `}function iy(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Yu(i)&&zu(i)===s&&uy(i)===t)return o}return-1}async function qu(e){try{return await ZT(e,XT.F_OK),!0}catch{return!1}}var Vu,sO,oO,dy=h(()=>{"use strict";me();Ae();Vu=Ha,sO=Xl,oO=".red/memory/graph.rdb"});var yy={};F(yy,{runRspMcpServer:()=>uO});import{createInterface as cO}from"node:readline";async function uO(){let e=Pe(process.cwd(),process.env),t=cO({input:process.stdin,crlfDelay:1/0});for await(let r of t){if(!r.trim())continue;let n;try{n=JSON.parse(r);let s=await lO(n,e);my({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){my({jsonrpc:"2.0",id:typeof gy(r)?.id>"u"?null:gy(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function lO(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:fy(t)}]};if(!t.enabled)return{content:[{type:"text",text:fy(t)}],isError:!0};let n=bO(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:nr({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),o=await n.get(s);return o?"status"in o?{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:o.status,expired_at:o.expired_at,help:[o.command]})}],isError:!0}:{content:[{type:"text",text:nr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:nr(dO(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await pO(r.arguments,n)}]}}return{}}function nr(e){return`${U(e)}
141
+ `}function dO(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function pO(e,t){let r=mO(e?.payload);try{return await fO(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return hy(r)}}async function fO(e,t,r){let n=gO(t?.level),s=await su(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return hy(s.output);let o=Wo(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return nr({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return hO(o,i.length,a,n)}function mO(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function gO(e){return e==="terse"?"terse":"brief"}function hO(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=py(o.subarray(0,i)),c=py(o.subarray(Math.max(0,o.length-i)));return nr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:yO(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function hy(e){return e.endsWith(`
142
142
  `)?e:`${e}
143
- `}function py(e){return e.toString("utf8").replace(/�$/g,"")}function hO(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function yO(e){return ma(process.cwd(),e)}function fy(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return nr({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function my(e){process.stdout.write(`${JSON.stringify(e)}
144
- `)}function gy(e){try{return JSON.parse(e)}catch{return null}}var by=h(()=>{"use strict";Qe();Ae();J();Xn();Gt()});var _y={};F(_y,{renderShellInit:()=>bO});function bO(e,t=ss){if(e==="fish")return wO(t);if(e==="bash"||e==="zsh")return _O(e,t);throw new Error(`unsupported shell: ${e}`)}function wO(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(r=>r.command[0]).filter(ui))].map(r=>` abbr --add --position command -- ${r} '${EO(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
145
- `)}function _O(e,t){let r=kO(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ci("git",r.get("git")??[]),...ci("gh",r.get("gh")??[]),...ci("vitest",r.get("vitest")??[]),...ci("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
146
- `)}function ci(e,t){if(t.length===0)return[];if(t.some(o=>o.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ui),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ui)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>wy(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of RO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${SO(u)}' ]`).join(" && ")).join(" || ");s.push(` ${wy(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function RO(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function kO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ui(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ui(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function SO(e){return e.replace(/'/g,"'\\''")}function EO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ry=h(()=>{"use strict";os()});function Xu(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&xO(t.chosenOption)&&vO(t.outcome)&&CO(t.cost)}function xO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function vO(e){return e==="success"||e==="failure"||e==="escalated"}function CO(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var ky=h(()=>{});import{createHash as TO}from"node:crypto";function $y(e,t){return new Qu(e,t)}function Sy(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES),n=Dy(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),o=String(r.title??e.label??e.LABEL??s),i=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Ey(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=Ny(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:el(e.properties??e.PROPERTIES)}}function AO(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Xu(r)?null:{rid:t,event:r}}function el(e){return e==null?{}:typeof e=="string"?JSON.parse(e):li(e)?e:{}}function Dy(e){let t=e==="contact"?"person":e;if(OO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ny(e){if(PO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function IO(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function xy(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function or(e){return li(e)?e:{}}function vy(e,t){return or(e)[t]}function Cy(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Ty(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Oy(e){let t=or(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function li(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zu(e){return e!=null}function LO(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function $O(e){return TO("sha256").update(JSON.stringify(e)).digest("hex")}function DO(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Py(e){return`artifact-hash:${e}`}function Ay(e,t,r){return`connection:${e}:${t}:${r}`}function Iy(){return"model-tier-bandit:v1"}function NO(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ly(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function My(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Ly(r,a)*3+Ly(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function MO(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=By({...My(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return sr(s)}function By(e){return{...e,lexical:sr(e.lexical),tags:sr(e.tags),kind:sr(e.kind),connections:sr(e.connections),vector:sr(e.vector),total:sr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function sr(e){return Math.round(e*1e3)/1e3}function BO(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function FO(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,o)=>({ref:`B${o+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function jO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,OO,PO,Qu,Fy=h(()=>{"use strict";ky();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},OO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),PO=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Qu=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(or(r));if(t==="getArtifact")return await this.getArtifact(vy(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=or(r);return await this.search(Cy(n,"query"),Ty(n,"limit")??10,Oy(n.options))}if(t==="think"){let n=or(r);return await this.think(Cy(n,"query"),Ty(n,"limit")??8,Oy(n.options))}if(t==="link")return await this.link(or(r));if(t==="backlinks")return await this.backlinks(vy(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(or(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:jO(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Dy(de(t.kind)||"note"),o=LO(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=$O([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Py(a));if(c!=null){let m=await this.getArtifact(Number(c));if(m)return m}let u=`${DO(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:li(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${ze.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=Sy(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Py(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ze.artifacts}`)).rows.map(Sy).filter(Zu)}async search(t,r,n={}){let s=NO(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=My(u,s),p=By({...l,connections:MO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:BO(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return FO(t,s)}async link(t){let r=await this.getArtifact(xy(t.from)),n=await this.getArtifact(xy(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=Ny(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:li(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ze.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ey(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ay(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${ze.connections}`)).rows.map(Ey).filter(Zu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=IO(de(t.interval)||"day"),s=de(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Xu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ze.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${ze.outcomeEvents}`)).rows.map(AO).filter(Zu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Iy());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Iy(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(Ay(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(ze.kv)}}});var Xy={};F(Xy,{runResidentServer:()=>KO});import{randomUUID as qr}from"node:crypto";import{execFileSync as HO,spawn as GO}from"node:child_process";import{existsSync as WO}from"node:fs";import{mkdir as qy,rename as UO,rm as jy,writeFile as Vy}from"node:fs/promises";import{createServer as JO}from"node:net";import{dirname as sl,join as di}from"node:path";import{fileURLToPath as qO,pathToFileURL as VO}from"node:url";async function KO(e){await qy(sl(e.socketPath),{recursive:!0});let t=aP();iP();let r=e.telemetryDrainTimeoutMs??Ky,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Ys,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=JO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),mP(R,async(T,B)=>{m();let Re=await gP(n,T,e.storeUri,e.residentVersion??"0.0.0-dev"),fe={id:T.id,ok:!0,value:Re,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};B(fe),T.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=oP(c),d.close();for(let R of l)R.destroy()}function m(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(R=>{let T=()=>{pi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,T),{signal:R,handler:T}});await new Promise((R,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),R()})}),(async()=>{let R=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(oe=>setTimeout(oe,T));let B=await Yt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-R)/1e6,fe=new nl(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Ks,byteBudget:e.telemetryByteBudget??e.byteBudget??zs});if(o){await B.close();return}if(await tl(fe,r),o){await B.close();return}n={kind:"ready",store:B,telemetry:fe,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&tl(oe.telemetry,r)},p),s.unref(),m()})().catch(R=>{n={kind:"failed",error:R instanceof Error?R:new Error(String(R))},m()}),e.pidPath&&await Vy(e.pidPath,`${process.pid}
147
- `,{encoding:"utf8",mode:384});let g=e.residentVersion??"0.0.0-dev",y=e.registryPath??di(W(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Ps(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:g})}catch{}await new Promise(R=>d.once("close",R)),a&&clearTimeout(a),s&&clearInterval(s),await jy(e.socketPath,{force:!0});let b=n;b.kind==="ready"&&(await tl(b.telemetry,r,u),await b.store.close()),c&&clearTimeout(c);for(let{signal:R,handler:T}of _)process.off(R,T);t?.kill("SIGTERM"),pi(),e.pidPath&&await jy(e.pidPath,{force:!0}),await As(y)}async function eP(e,t,r=new Date){let n=await Ro(e,1,r),s=r.toISOString().slice(0,10),o=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=n.savings.tokens_saved>0?o/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=di(W(t),ZO),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:o,dollars_saved_today_usd:Math.round(i*1e6)/1e6,show_total_today:n.health.show_total,updated_at:r.toISOString()};n.health.show_total>0&&(u.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(u.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await qy(sl(a),{recursive:!0}),await Vy(c,`${U(u)}
148
- `,{encoding:"utf8",mode:384}),await UO(c,a)}async function tl(e,t=Ky,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Yy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
149
- `)}}async function tP(e){let t=[];for(let r of QO){let n=await rP(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await nP(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${zy(r)}`))}return t}async function rP(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(r){let n=r instanceof Error?r.message:String(r);if(/\bnot found\b/i.test(n))return{ok:!1,previousModel:null};let s=n.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(n))return{ok:!1,previousModel:"collection"};let o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw r}}async function nP(e,t,r){let n=sP(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${zy(t)}`)}function sP(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function zy(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function oP(e){return e&&clearTimeout(e),setTimeout(()=>{pi(),process.exit(0)},XO)}function iP(){Hy||(Hy=!0,process.on("exit",()=>pi()))}function aP(){if(process.platform==="win32")return;let t=GO(process.execPath,["-e",`
143
+ `}function py(e){return e.toString("utf8").replace(/�$/g,"")}function yO(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function bO(e){return ma(process.cwd(),e)}function fy(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return nr({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function my(e){process.stdout.write(`${JSON.stringify(e)}
144
+ `)}function gy(e){try{return JSON.parse(e)}catch{return null}}var by=h(()=>{"use strict";Qe();Ae();J();Zn();Gt()});var _y={};F(_y,{renderShellInit:()=>wO});function wO(e,t=os){if(e==="fish")return _O(t);if(e==="bash"||e==="zsh")return RO(e,t);throw new Error(`unsupported shell: ${e}`)}function _O(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(r=>r.command[0]).filter(li))].map(r=>` abbr --add --position command -- ${r} '${xO(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
145
+ `)}function RO(e,t){let r=SO(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ui("git",r.get("git")??[]),...ui("gh",r.get("gh")??[]),...ui("vitest",r.get("vitest")??[]),...ui("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
146
+ `)}function ui(e,t){if(t.length===0)return[];if(t.some(o=>o.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(li),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(li)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>wy(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of kO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${EO(u)}' ]`).join(" && ")).join(" || ");s.push(` ${wy(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function kO(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function SO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!li(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function li(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function EO(e){return e.replace(/'/g,"'\\''")}function xO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ry=h(()=>{"use strict";is()});function Xu(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&vO(t.chosenOption)&&CO(t.outcome)&&TO(t.cost)}function vO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function CO(e){return e==="success"||e==="failure"||e==="escalated"}function TO(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var ky=h(()=>{});import{createHash as OO}from"node:crypto";function $y(e,t){return new Qu(e,t)}function Sy(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES),n=Dy(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),o=String(r.title??e.label??e.LABEL??s),i=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Ey(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=Ny(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:el(e.properties??e.PROPERTIES)}}function IO(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Xu(r)?null:{rid:t,event:r}}function el(e){return e==null?{}:typeof e=="string"?JSON.parse(e):di(e)?e:{}}function Dy(e){let t=e==="contact"?"person":e;if(PO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ny(e){if(AO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function LO(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function xy(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function or(e){return di(e)?e:{}}function vy(e,t){return or(e)[t]}function Cy(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Ty(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Oy(e){let t=or(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function di(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zu(e){return e!=null}function $O(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function DO(e){return OO("sha256").update(JSON.stringify(e)).digest("hex")}function NO(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Py(e){return`artifact-hash:${e}`}function Ay(e,t,r){return`connection:${e}:${t}:${r}`}function Iy(){return"model-tier-bandit:v1"}function MO(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ly(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function My(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Ly(r,a)*3+Ly(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function BO(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=By({...My(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return sr(s)}function By(e){return{...e,lexical:sr(e.lexical),tags:sr(e.tags),kind:sr(e.kind),connections:sr(e.connections),vector:sr(e.vector),total:sr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function sr(e){return Math.round(e*1e3)/1e3}function FO(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function jO(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,o)=>({ref:`B${o+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function HO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,PO,AO,Qu,Fy=h(()=>{"use strict";ky();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},PO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),AO=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Qu=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(or(r));if(t==="getArtifact")return await this.getArtifact(vy(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=or(r);return await this.search(Cy(n,"query"),Ty(n,"limit")??10,Oy(n.options))}if(t==="think"){let n=or(r);return await this.think(Cy(n,"query"),Ty(n,"limit")??8,Oy(n.options))}if(t==="link")return await this.link(or(r));if(t==="backlinks")return await this.backlinks(vy(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(or(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:HO(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Dy(de(t.kind)||"note"),o=$O(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=DO([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Py(a));if(c!=null){let m=await this.getArtifact(Number(c));if(m)return m}let u=`${NO(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:di(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${ze.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=Sy(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Py(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ze.artifacts}`)).rows.map(Sy).filter(Zu)}async search(t,r,n={}){let s=MO(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=My(u,s),p=By({...l,connections:BO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:FO(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return jO(t,s)}async link(t){let r=await this.getArtifact(xy(t.from)),n=await this.getArtifact(xy(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=Ny(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:di(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ze.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ey(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ay(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${ze.connections}`)).rows.map(Ey).filter(Zu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=LO(de(t.interval)||"day"),s=de(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Xu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ze.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${ze.outcomeEvents}`)).rows.map(IO).filter(Zu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Iy());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Iy(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(Ay(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(ze.kv)}}});var Xy={};F(Xy,{runResidentServer:()=>zO});import{randomUUID as qr}from"node:crypto";import{execFileSync as GO,spawn as WO}from"node:child_process";import{existsSync as UO}from"node:fs";import{mkdir as qy,rename as JO,rm as jy,writeFile as Vy}from"node:fs/promises";import{createServer as qO}from"node:net";import{dirname as sl,join as pi}from"node:path";import{fileURLToPath as VO,pathToFileURL as KO}from"node:url";async function zO(e){await qy(sl(e.socketPath),{recursive:!0});let t=cP();aP();let r=e.telemetryDrainTimeoutMs??Ky,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Xs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=qO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),gP(R,async(T,B)=>{m();let Re=await hP(n,T,e.storeUri,e.residentVersion??"0.0.0-dev"),fe={id:T.id,ok:!0,value:Re,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};B(fe),T.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=iP(c),d.close();for(let R of l)R.destroy()}function m(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(R=>{let T=()=>{fi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,T),{signal:R,handler:T}});await new Promise((R,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),R()})}),(async()=>{let R=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(oe=>setTimeout(oe,T));let B=await Yt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-R)/1e6,fe=new nl(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??zs,byteBudget:e.telemetryByteBudget??e.byteBudget??Ys});if(o){await B.close();return}if(await tl(fe,r),o){await B.close();return}n={kind:"ready",store:B,telemetry:fe,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&tl(oe.telemetry,r)},p),s.unref(),m()})().catch(R=>{n={kind:"failed",error:R instanceof Error?R:new Error(String(R))},m()}),e.pidPath&&await Vy(e.pidPath,`${process.pid}
147
+ `,{encoding:"utf8",mode:384});let g=e.residentVersion??"0.0.0-dev",y=e.registryPath??pi(W(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await As(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:g})}catch{}await new Promise(R=>d.once("close",R)),a&&clearTimeout(a),s&&clearInterval(s),await jy(e.socketPath,{force:!0});let b=n;b.kind==="ready"&&(await tl(b.telemetry,r,u),await b.store.close()),c&&clearTimeout(c);for(let{signal:R,handler:T}of _)process.off(R,T);t?.kill("SIGTERM"),fi(),e.pidPath&&await jy(e.pidPath,{force:!0}),await Is(y)}async function tP(e,t,r=new Date){let n=await ko(e,1,r),s=r.toISOString().slice(0,10),o=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=n.savings.tokens_saved>0?o/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=pi(W(t),QO),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:o,dollars_saved_today_usd:Math.round(i*1e6)/1e6,show_total_today:n.health.show_total,updated_at:r.toISOString()};n.health.show_total>0&&(u.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(u.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await qy(sl(a),{recursive:!0}),await Vy(c,`${U(u)}
148
+ `,{encoding:"utf8",mode:384}),await JO(c,a)}async function tl(e,t=Ky,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Yy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
149
+ `)}}async function rP(e){let t=[];for(let r of eP){let n=await nP(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await sP(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${zy(r)}`))}return t}async function nP(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(r){let n=r instanceof Error?r.message:String(r);if(/\bnot found\b/i.test(n))return{ok:!1,previousModel:null};let s=n.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(n))return{ok:!1,previousModel:"collection"};let o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw r}}async function sP(e,t,r){let n=oP(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${zy(t)}`)}function oP(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function zy(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function iP(e){return e&&clearTimeout(e),setTimeout(()=>{fi(),process.exit(0)},ZO)}function aP(){Hy||(Hy=!0,process.on("exit",()=>fi()))}function cP(){if(process.platform==="win32")return;let t=WO(process.execPath,["-e",`
150
150
  const { execFileSync } = require("node:child_process");
151
151
  const parentPid = Number(process.argv[1]);
152
152
  const known = new Set();
@@ -187,23 +187,23 @@ const timer = setInterval(() => {
187
187
  clearInterval(timer);
188
188
  process.exit(0);
189
189
  }, 500);
190
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function pi(){for(let e of cP())try{process.kill(e,"SIGTERM")}catch{}}function cP(){if(process.platform==="win32")return[];let e="";try{e=HO("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),o=Number(n[2]),i=n[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function uP(e){if(e.collection!==he)return e;let t=await Gy(e.raw_text,Uy(e.raw_bytes)),r=await Gy(e.emitted_text,Uy(e.emitted_bytes)),{raw_text:n,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function Gy(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=zO)try{return await Yy((async()=>({tokens:(await lP())("cl100k_base").encode(e).length,estimated:!1}))(),YO,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function lP(){return Wy??=import(VO(dP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Wy}function dP(){let e=sl(qO(import.meta.url)),r=[di(e,"..","node_modules","js-tiktoken","dist","index.js"),di(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>WO(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Uy(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function rl(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Yy(e,t,r){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>o(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function pP(e){try{return JSON.parse(e)}catch{return e}}function fP(e){return Jy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jy(t)&&(t.collection===ce||t.collection===X||t.collection===he||t.collection===Ue)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mP(e,t){kd(e,(r,n)=>t(r,n),(r,n,s)=>{s({id:n?.id??qr(),ok:!1,error:r instanceof Error?r.message:String(r)})})}async function gP(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Ic(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await Ro(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await Lc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return yP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await hP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function hP(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await $y(s,t).request(r,n)}function yP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var zO,YO,Ky,XO,ZO,QO,nl,Hy,Wy,Zy=h(()=>{"use strict";me();Is();xs();Qe();_o();Fy();Ie();Ae();zO=256*1024,YO=500,Ky=2e3,XO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),ZO="rsp-status-summary.json",QO=[ce,X,he,Ue,En],nl=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await tP(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,o=[...n.records];for(let a of r)o.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await Za(this.opts.rootDir,async a=>{let c=Or(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await eP(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:qr(),a={...await uP(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===he?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ue?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ue,id:qr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:ce,id:`mirror:${qr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:rl(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(En).get("index:v1"),n=typeof r=="string"?pP(r):r;return fP(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(En).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Hy=!1});wi();Be();var Ml={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},lw={json:{kind:"boolean"}},dw={help:{kind:"boolean",aliases:["h"]}},pw={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Bl(e){let{command:t,args:r}=bi(e,fw);return t==="--version"?{kind:"version",json:zr(r,lw).values.json===!0}:mw(e)?{kind:"help"}:{kind:"command"}}var fw={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function mw(e){return It(e,dw).values.help===!0}function Fl(e){let{values:t,rest:r}=hw(e),n=r[0];if(n!==void 0&&n!=="--"&&n.startsWith("--"))throw ms.unknownFlag(n);let s=bi(r,pw).command,o=[...r],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:r[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var ms=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:gw})}},gw=Object.keys(Ml).map(e=>`--${e}`);function hw(e){try{return It(e,Ml)}catch(t){throw new ms(t instanceof Error?t.message:String(t))}}function jl(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Hl(e){return e instanceof Kr}function pr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var yw={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:pt},"ephemeral-ttl-hours":{kind:"value",coerce:pt},"byte-budget":{kind:"value",coerce:pt},"telemetry-ttl-days":{kind:"value",coerce:pt},"telemetry-byte-budget":{kind:"value",coerce:pt},"telemetry-drain-interval-ms":{kind:"value",coerce:pt},"telemetry-drain-timeout-ms":{kind:"value",coerce:pt},"idle-ms":{kind:"value",coerce:pt}};function Di(e){return zr(e,yw).values}var Gl={since:{kind:"value",coerce:ww},full:{kind:"boolean"}};function gs(e,t){return zr(e,Gl).values.since??t}function Wl(e){return zr(e,Gl).values.full===!0}var bw={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Ul(e){let{values:t,rest:r}=It(e,bw),n=r[1];if(!n)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:n,params:s}}function pt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function ww(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let r=Number(t[1]);return Number.isFinite(r)&&r>0?r:void 0}Ni();Be();import{existsSync as bP}from"node:fs";import{fileURLToPath as wP}from"node:url";Qe();sn();J();He();import{existsSync as Px}from"node:fs";import{fileURLToPath as Ax}from"node:url";Qe();fa();J();import{existsSync as j_}from"node:fs";import{fileURLToPath as H_}from"node:url";async function hr(e,t){let r={stats:G_(e.telemetryByteBudget),telemetry:ba(t)};if(!e.storeUri.startsWith("file://"))return r;let n=H_(e.storeUri);if(!j_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),mn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ba(t)}}catch{return r}finally{await o.close()}}function wa(e,t=ba(30),r=!1,n=Yd()){return`${U(_a(e,t,r,n))}
190
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function fi(){for(let e of uP())try{process.kill(e,"SIGTERM")}catch{}}function uP(){if(process.platform==="win32")return[];let e="";try{e=GO("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),o=Number(n[2]),i=n[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function lP(e){if(e.collection!==he)return e;let t=await Gy(e.raw_text,Uy(e.raw_bytes)),r=await Gy(e.emitted_text,Uy(e.emitted_bytes)),{raw_text:n,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function Gy(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=YO)try{return await Yy((async()=>({tokens:(await dP())("cl100k_base").encode(e).length,estimated:!1}))(),XO,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function dP(){return Wy??=import(KO(pP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Wy}function pP(){let e=sl(VO(import.meta.url)),r=[pi(e,"..","node_modules","js-tiktoken","dist","index.js"),pi(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>UO(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Uy(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function rl(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Yy(e,t,r){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>o(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function fP(e){try{return JSON.parse(e)}catch{return e}}function mP(e){return Jy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jy(t)&&(t.collection===ce||t.collection===X||t.collection===he||t.collection===Ue)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gP(e,t){kd(e,(r,n)=>t(r,n),(r,n,s)=>{s({id:n?.id??qr(),ok:!1,error:r instanceof Error?r.message:String(r)})})}async function hP(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Ic(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await ko(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await Lc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return bP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await yP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function yP(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await $y(s,t).request(r,n)}function bP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var YO,XO,Ky,ZO,QO,eP,nl,Hy,Wy,Zy=h(()=>{"use strict";me();Ls();vs();Qe();Ro();Fy();Ie();Ae();YO=256*1024,XO=500,Ky=2e3,ZO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),QO="rsp-status-summary.json",eP=[ce,X,he,Ue,xn],nl=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await rP(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,o=[...n.records];for(let a of r)o.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await Za(this.opts.rootDir,async a=>{let c=Or(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await tP(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:qr(),a={...await lP(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===he?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ue?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ue,id:qr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:ce,id:`mirror:${qr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:rl(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(xn).get("index:v1"),n=typeof r=="string"?fP(r):r;return mP(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(xn).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Hy=!1});_i();Be();var Ml={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},lw={json:{kind:"boolean"}},dw={help:{kind:"boolean",aliases:["h"]}},pw={commands:{dashboard:{},stats:{},gains:{},show:{},git:{},gh:{},vitest:{},cargo:{},cat:{},exec:{},proxy:{},wait:{},doctor:{},status:{},sweep:{},setup:{},mcp:{},"shell-init":{},server:{},"warm-resident":{},"gh-api-json":{},hook:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Bl(e){let{command:t,args:r}=wi(e,fw);return t==="--version"?{kind:"version",json:zr(r,lw).values.json===!0}:mw(e)?{kind:"help"}:{kind:"command"}}var fw={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function mw(e){return It(e,dw).values.help===!0}function Fl(e){let{values:t,rest:r}=hw(e),n=r[0];if(n!==void 0&&n!=="--"&&n.startsWith("--"))throw gs.unknownFlag(n);let s=wi(r,pw).command,o=[...r],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:r[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var gs=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:gw})}},gw=Object.keys(Ml).map(e=>`--${e}`);function hw(e){try{return It(e,Ml)}catch(t){throw new gs(t instanceof Error?t.message:String(t))}}function jl(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Hl(e){return e instanceof Kr}function pr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var yw={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:pt},"ephemeral-ttl-hours":{kind:"value",coerce:pt},"byte-budget":{kind:"value",coerce:pt},"telemetry-ttl-days":{kind:"value",coerce:pt},"telemetry-byte-budget":{kind:"value",coerce:pt},"telemetry-drain-interval-ms":{kind:"value",coerce:pt},"telemetry-drain-timeout-ms":{kind:"value",coerce:pt},"idle-ms":{kind:"value",coerce:pt}};function Ni(e){return zr(e,yw).values}var Gl={since:{kind:"value",coerce:ww},full:{kind:"boolean"}};function hs(e,t){return zr(e,Gl).values.since??t}function Wl(e){return zr(e,Gl).values.full===!0}var bw={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Ul(e){let{values:t,rest:r}=It(e,bw),n=r[1];if(!n)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:n,params:s}}function pt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function ww(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let r=Number(t[1]);return Number.isFinite(r)&&r>0?r:void 0}Mi();Be();import{existsSync as wP}from"node:fs";import{fileURLToPath as _P}from"node:url";Qe();sn();J();He();import{existsSync as Ax}from"node:fs";import{fileURLToPath as Ix}from"node:url";Qe();fa();J();import{existsSync as H_}from"node:fs";import{fileURLToPath as G_}from"node:url";async function hr(e,t){let r={stats:W_(e.telemetryByteBudget),telemetry:ba(t)};if(!e.storeUri.startsWith("file://"))return r;let n=G_(e.storeUri);if(!H_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),gn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ba(t)}}catch{return r}finally{await o.close()}}function wa(e,t=ba(30),r=!1,n=Yd()){return`${U(_a(e,t,r,n))}
191
191
  `}function zd(e,t){return`${U({...e,overhead:Xd(t)})}
192
- `}function Yd(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:ve,breaching_families:[],disabled_families:[],families:[]}}function Xd(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function _a(e,t,r,n=Yd()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Ls(),a=t.health.recent_failures.slice(0,r?20:5),c=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:W_(t.savings),dollars_saved_estimate_usd_display:U_(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Xd(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:ya(t.health.degradation_rate),show_hit_rate_display:ya(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:ya(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:ha(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ha(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ha(t.latency.store_elapsed_ms_avg)}}}function Zd(e){return`${U(e)}
193
- `}function ba(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function G_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Ls()}}function Ls(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Ra(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
194
- `)}function W_(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function U_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?fn(e.dollars_saved_estimate_usd):`${fn(e.dollars_saved_low_usd)}-${fn(e.dollars_saved_high_usd)} (estimate_midpoint: ${fn(e.dollars_saved_estimate_usd)})`}function ha(e){return e==null?"none":String(e)}function ya(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Ym(e){let{stats:t,telemetry:r}=await hr(e,30),[n,s]=await Promise.all([Ix(e),Promise.resolve().then(()=>(Xc(),Yc)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(je(process.cwd()).rootDir,e.overhead)}}function Xm(e){let t=_a(e.stats,e.telemetry,!1,e.overhead),r=ji({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??Ls()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},Lx(e));return`${U(r)}
195
- `}async function Ix(e){if(!e.storeUri.startsWith("file://"))return[];let t=Ax(e.storeUri);if(!Px(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Gt(),mn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function Lx(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}Qe();J();Be();import{existsSync as t0}from"node:fs";import{fileURLToPath as r0}from"node:url";Ie();import{spawn as Wo}from"node:child_process";async function Fg(e,t,r){let n=process.hrtime.bigint(),s=await jg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return yC(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function jg(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>($o(),Lo)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(ts(),es)).then(i=>i.parseExecCommandLine(e));r=Wo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Wo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
196
- `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function Hg(e){return e>0&&Math.random()<e}async function ns(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
197
- `);let s=await Jg(t);if(n){let o=bC(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Un));Jo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Uo(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),Jo(i(n,{collection:c,ts:new Date().toISOString(),command:Uo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Gg(e,t,r){let n=await jg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ie(),Un)),a={ts:new Date().toISOString(),command:Uo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return Jo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),Jo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function Wg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${qo()}, passing through
198
- `),await Jg(e)}function qo(){return"rsp is not enabled in this directory; run /red-setup"}function Ug(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Je(e){return Uo(e.positional)}function Uo(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function rs(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function yC(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};gt(e,{collection:"rsp_accounting_events_v1",...i}),gt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function bC(e,t,r){let n=t[0]??"unknown",s=wC(r)||e;return{reason:Bg(r)==="ENOENT"||Bg(r)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:n,exitCode:RC(r)??1,stderrHead:_C(s,240)}}function wC(e){return e instanceof Error?rs(e.message):rs(String(e??""))}function _C(e,t){let r=rs(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Bg(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function RC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function Jo(e){e.catch(()=>{})}async function Jg(e){if(e[0]==="exec"||e[0]==="proxy")return await kC(e);let t=e[0];if(!t)return 2;let r=Wo(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
199
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function kC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>($o(),Lo));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(ts(),es));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
200
- `),2}let r=Wo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
201
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function ch(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled"),K("overhead_budget","skipped because rsp is disabled")),ah("disabled",n,r);n.push(await n0(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):er("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(He(),Ht));if(n.push(s0(await o(t))),n.push(o0(e)),lh(e)){let{telemetry:i}=await hr(e,r);n.push(i0(i,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(a0(ft(process.cwd(),e.overhead))),ah(n.some(i=>!i.pass)?"fail":"pass",n,r)}function uh(e){let{exitCode:t,...r}=e;return`${U({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
202
- `}async function n0(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(os(),Zo)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):er("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return er("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?rs(t.message):"unknown error"}`,"rsp setup")}}function s0(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):er("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function o0(e){return e.storeUri.startsWith("file://")?lh(e)?K("store_provisioning","rsp store exists for this directory"):er("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function i0(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",o=r?.count??n;return er("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,c0(s,t))}function a0(e){return e.verdict==="green"?K("overhead_budget",e.summary):er("overhead_budget",e.summary,"rsp status")}function c0(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function lh(e){if(!e.storeUri.startsWith("file://"))return!0;try{return t0(r0(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function er(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:$i({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function ah(e,t,r){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:r,probes:t,errors:t.map(n=>n.error).filter(n=>!!n)}}yu();function mh(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${d0(t).join(`
192
+ `}function Yd(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:ve,breaching_families:[],disabled_families:[],families:[]}}function Xd(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function _a(e,t,r,n=Yd()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??$s(),a=t.health.recent_failures.slice(0,r?20:5),c=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:U_(t.savings),dollars_saved_estimate_usd_display:J_(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:Xd(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:ya(t.health.degradation_rate),show_hit_rate_display:ya(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:ya(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:ha(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ha(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ha(t.latency.store_elapsed_ms_avg)}}}function Zd(e){return`${U(e)}
193
+ `}function ba(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function W_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:$s()}}function $s(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Ra(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
194
+ `)}function U_(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function J_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?mn(e.dollars_saved_estimate_usd):`${mn(e.dollars_saved_low_usd)}-${mn(e.dollars_saved_high_usd)} (estimate_midpoint: ${mn(e.dollars_saved_estimate_usd)})`}function ha(e){return e==null?"none":String(e)}function ya(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Ym(e){let{stats:t,telemetry:r}=await hr(e,30),[n,s]=await Promise.all([Lx(e),Promise.resolve().then(()=>(Xc(),Yc)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(je(process.cwd()).rootDir,e.overhead)}}function Xm(e){let t=_a(e.stats,e.telemetry,!1,e.overhead),r=Hi({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??$s()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},$x(e));return`${U(r)}
195
+ `}async function Lx(e){if(!e.storeUri.startsWith("file://"))return[];let t=Ix(e.storeUri);if(!Ax(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Gt(),gn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function $x(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}Qe();J();Be();import{existsSync as r0}from"node:fs";import{fileURLToPath as n0}from"node:url";Ie();import{spawn as Uo}from"node:child_process";async function Fg(e,t,r){let n=process.hrtime.bigint(),s=await jg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return bC(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function jg(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(Do(),$o)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(rs(),ts)).then(i=>i.parseExecCommandLine(e));r=Uo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Uo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
196
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function Hg(e){return e>0&&Math.random()<e}async function ss(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
197
+ `);let s=await Jg(t);if(n){let o=wC(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Jn));qo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Jo(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),qo(i(n,{collection:c,ts:new Date().toISOString(),command:Jo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Gg(e,t,r){let n=await jg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ie(),Jn)),a={ts:new Date().toISOString(),command:Jo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return qo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),qo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function Wg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Vo()}, passing through
198
+ `),await Jg(e)}function Vo(){return"rsp is not enabled in this directory; run /red-setup"}function Ug(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Je(e){return Jo(e.positional)}function Jo(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function ns(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function bC(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};gt(e,{collection:"rsp_accounting_events_v1",...i}),gt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function wC(e,t,r){let n=t[0]??"unknown",s=_C(r)||e;return{reason:Bg(r)==="ENOENT"||Bg(r)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:n,exitCode:kC(r)??1,stderrHead:RC(s,240)}}function _C(e){return e instanceof Error?ns(e.message):ns(String(e??""))}function RC(e,t){let r=ns(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Bg(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function kC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function qo(e){e.catch(()=>{})}async function Jg(e){if(e[0]==="exec"||e[0]==="proxy")return await SC(e);let t=e[0];if(!t)return 2;let r=Uo(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
199
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function SC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Do(),$o));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(rs(),ts));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
200
+ `),2}let r=Uo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
201
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function ch(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled"),K("overhead_budget","skipped because rsp is disabled")),ah("disabled",n,r);n.push(await s0(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):er("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(He(),Ht));if(n.push(o0(await o(t))),n.push(i0(e)),lh(e)){let{telemetry:i}=await hr(e,r);n.push(a0(i,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(c0(ft(process.cwd(),e.overhead))),ah(n.some(i=>!i.pass)?"fail":"pass",n,r)}function uh(e){let{exitCode:t,...r}=e;return`${U({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
202
+ `}async function s0(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(is(),Qo)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):er("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return er("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ns(t.message):"unknown error"}`,"rsp setup")}}function o0(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):er("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function i0(e){return e.storeUri.startsWith("file://")?lh(e)?K("store_provisioning","rsp store exists for this directory"):er("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function a0(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",o=r?.count??n;return er("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,u0(s,t))}function c0(e){return e.verdict==="green"?K("overhead_budget",e.summary):er("overhead_budget",e.summary,"rsp status")}function u0(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function lh(e){if(!e.storeUri.startsWith("file://"))return!0;try{return r0(n0(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function er(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Di({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function ah(e,t,r){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:r,probes:t,errors:t.map(n=>n.error).filter(n=>!!n)}}yu();function mh(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${p0(t).join(`
203
203
  `)}
204
- `}function d0(e){switch(e){case"stats":return j("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return j("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return j("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return j("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return j("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return j("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return j("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return j("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return j('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return j("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return j("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return j("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return j("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return j("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return j("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return j("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return j("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return j("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return j("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"dashboard":return j("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return j("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," dashboard, stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help"," --version, -v build version; add --json for structured build info","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return j(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function j(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}me();J();Ie();import{spawn as p0}from"node:child_process";import{createHash as f0}from"node:crypto";import{existsSync as m0,readFileSync as g0,statSync as h0}from"node:fs";import{tmpdir as y0}from"node:os";import{dirname as b0,join as kt}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??ve){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&_0(s,o);let c=w0(e,t,a);return an(s,c,i),n?tr(E0(s,e,t,c,i,n.lastResponseMetrics())):x0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function w0(e,t,r){let n=un(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function tr(e){e.catch(()=>{})}async function ti(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Un));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function _0(e,t){try{let r=it(e),n=h0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!S0(r,Date.now()-s))return;let o=R0(e),i=k0(o),a=kt(i,"rsp.sock"),c=kt(i,"rsp.pid"),u=kt(W(o),"rsp-resident.pid.json"),l=kt(o,".red","tmp","rsp","wake.lock");p0(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function R0(e){let t=e;for(;;){if(m0(kt(t,".git")))return t;let r=b0(t);if(r===t)return e;t=r}}function k0(e){let t=f0("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=kt(r,"red-skills",t);if(kt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return kt(y0(),`red-skills-${n}`,t)}function S0(e,t){try{let r=g0(e,"utf8");cn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function E0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=ks(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ie(),Un));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:p,ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function x0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=ks(n,s);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Ju=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ny(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ju,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(yu(),fh));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Zt(),ru)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(Nu(),Du)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(ju(),Fu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Uu(),Wu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(ts(),es)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return pr(i)?(process.stdout.write(i.render()),2):await ns("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ns("wrapper failed",e.positional,n,r)}async function Qy(e=process.argv.slice(2)){let t=hs("rsp"),r=Bl(e);if(r.kind==="version")return process.stdout.write(r.json?`${JSON.stringify(t)}
204
+ `}function p0(e){switch(e){case"stats":return j("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return j("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return j("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return j("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return j("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return j("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return j("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return j("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return j('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return j("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return j("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return j("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return j("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return j("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return j("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return j("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return j("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return j("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return j("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"dashboard":return j("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return j("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," dashboard, stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help"," --version, -v build version; add --json for structured build info","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return j(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function j(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}me();J();Ie();import{spawn as f0}from"node:child_process";import{createHash as m0}from"node:crypto";import{existsSync as g0,readFileSync as h0,statSync as y0}from"node:fs";import{tmpdir as b0}from"node:os";import{dirname as w0,join as kt}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??ve){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&R0(s,o);let c=_0(e,t,a);return an(s,c,i),n?tr(x0(s,e,t,c,i,n.lastResponseMetrics())):v0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function _0(e,t,r){let n=un(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function tr(e){e.catch(()=>{})}async function ri(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Jn));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function R0(e,t){try{let r=it(e),n=y0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!E0(r,Date.now()-s))return;let o=k0(e),i=S0(o),a=kt(i,"rsp.sock"),c=kt(i,"rsp.pid"),u=kt(W(o),"rsp-resident.pid.json"),l=kt(o,".red","tmp","rsp","wake.lock");f0(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function k0(e){let t=e;for(;;){if(g0(kt(t,".git")))return t;let r=w0(t);if(r===t)return e;t=r}}function S0(e){let t=m0("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=kt(r,"red-skills",t);if(kt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return kt(b0(),`red-skills-${n}`,t)}function E0(e,t){try{let r=h0(e,"utf8");cn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function x0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=Ss(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ie(),Jn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:p,ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function v0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=Ss(n,s);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Ju=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ny(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ju,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(yu(),fh));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Zt(),ru)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(Nu(),Du)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(ju(),Fu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Uu(),Wu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(rs(),ts)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return pr(i)?(process.stdout.write(i.render()),2):await ss("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ss("wrapper failed",e.positional,n,r)}async function Qy(e=process.argv.slice(2)){let t=ys("rsp"),r=Bl(e);if(r.kind==="version")return process.stdout.write(r.json?`${JSON.stringify(t)}
205
205
  `:`${Jl(t)}
206
- `),0;if(r.kind==="help")return process.stdout.write(mh(e)),0;let n;try{n=Fl(e)}catch(g){if(Hl(g))return process.stdout.write(jl(g)),2;throw g}if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(os(),Zo));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(os(),Zo));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Xn(),iu));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Xn(),iu));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(dy(),ly)),y=await g(process.cwd());return process.stdout.write(Ra(y)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(by(),yy));return await g(),0}if(n.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Xc(),Yc));return await g(n.positional)}if(n.command==="shell-init"){let g=n.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write(D({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(Ry(),_y));return process.stdout.write(y(g)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(Ae(),Wp)),o=s(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(He(),Ht)),y=g(process.cwd()),b=await ch(o,y,gs(n.positional,1));return process.stdout.write(uh(b)),b.exitCode}let i=Ug(n.command);if(!o.enabled)return i?await Wg(n.positional):(process.stdout.write(`${qo()}
207
- `),0);if(n.command==="git"&&Qo(n.positional)){let g=process.hrtime.bigint();return await se(n,await ei(),g,void 0,await hu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(He(),Ht)),u=a(process.cwd());if(i&&n.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(J(),Es)),y=g(u.rootDir,n.command);if(y)return await Gg(n.positional,u.rootDir,y)}if(i&&Hg(o.measurementHoldoutShare))return await Fg(n,u.rootDir,o.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Zy(),Xy)),y=a(process.cwd()),b=Di(n.positional),R=s(process.cwd(),process.env,n.storeUri);return R.enabled?(await g({socketPath:b.socket??y.socketPath,pidPath:b["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:R.storeUri,ttlDays:b["ttl-days"]??R.ttlDays,ephemeralTtlHours:b["ephemeral-ttl-hours"]??R.ephemeralTtlHours,byteBudget:b["byte-budget"]??R.byteBudget,telemetryTtlDays:b["telemetry-ttl-days"]??R.telemetryTtlDays,telemetryByteBudget:b["telemetry-byte-budget"]??R.telemetryByteBudget,telemetryDrainIntervalMs:b["telemetry-drain-interval-ms"]??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:b["telemetry-drain-timeout-ms"]??R.telemetryDrainTimeoutMs,idleMs:b["idle-ms"]??R.idleMs,residentVersion:b["resident-version"]??t.version,registryPath:b.registry??y.registryPath}),0):(process.stdout.write(`${qo()}
208
- `),0)}if(n.command==="warm-resident"){let g=a(process.cwd()),y=Di(n.positional),b=s(process.cwd(),process.env,n.storeUri);if(!b.enabled)return 0;let{warmResidentServer:R}=await Promise.resolve().then(()=>(He(),Ht));return await R({...g,socketPath:y.socket??g.socketPath,wakeLockPath:y["wake-lock"]??g.wakeLockPath},{storeUri:b.storeUri,ttlDays:y["ttl-days"]??b.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??b.ephemeralTtlHours,byteBudget:y["byte-budget"]??b.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??b.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??b.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??b.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??b.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>($o(),Lo));return await g(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(He(),Ht)),b=n.command==="sweep"?await y(u):await g(u);if(n.command==="sweep"){let{sweepGhEtagCache:B}=await Promise.resolve().then(()=>(Sn(),Mp));await B(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:R}=await Promise.resolve().then(()=>(J(),Es)),T=R(u.rootDir,o.overhead);return process.stdout.write(zd(b,T)),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(ko(),sm)),y=Ul(n.positional);if(!y)return process.stdout.write(D({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
209
- `),b.status}if(n.command==="dashboard"){let g=await Ym(o);return process.stdout.write(Xm(g)),0}if(!n.storeUri&&o.storeUri.startsWith("file://")&&!bP(wP(o.storeUri)))return i?await ny(n,o,u.rootDir):(process.stdout.write(D({command:Je(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:p,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Gt(),mn)),f=(g=!0)=>Promise.resolve(p(process.cwd(),o,{ensureResident:g,paths:u})),m=()=>c(u,l(o,t.version)).catch(g=>void d(g)),w=()=>f(),_;try{if(n.command==="stats"){let{stats:g,telemetry:y}=await hr(o,gs(n.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(J(),Es));return process.stdout.write(wa(g,y,Wl(n.positional),b(u.rootDir,o.overhead))),0}if(n.command==="gains"){let g=await w();_=()=>g.close();let y;try{y=await g.telemetryGains(gs(n.positional,28))}catch(b){return process.stdout.write(D({command:`rsp ${n.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Zd(y)),0}if(n.command==="git"){if(tr(m()),Qo(n.positional)){let T=process.hrtime.bigint();return await se(n,await ei(),T,void 0,u.rootDir,o)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Zt(),ru)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="gh"){tr(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Nu(),Du)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="vitest"||n.command==="cargo"){tr(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(ju(),Fu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="cat"){tr(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Uu(),Wu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="exec"){tr(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(ts(),es)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="show"&&n.handle){let g=await w();_=()=>g.close();let y=await g.get(n.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ti(u.rootDir,n.handle,!0,y.original.length),0;if(y?.status==="expired"){let R=D({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(R),await ti(u.rootDir,n.handle,!1,R.length),1}let b=D({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(b),await ti(u.rootDir,n.handle,!1,b.length),1}return process.stdout.write(D({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(pr(g))return process.stdout.write(g.render()),2;if(i)return await ns("wrapper failed",n.positional,g,u.rootDir);throw g}finally{await _?.()}}Be();import.meta.url===`file://${process.argv[1]}`&&Qy().then(e=>process.exit(e),e=>{pr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(D({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Qy as main,Ra as renderSetupResult,wa as renderStats};
206
+ `),0;if(r.kind==="help")return process.stdout.write(mh(e)),0;let n;try{n=Fl(e)}catch(g){if(Hl(g))return process.stdout.write(jl(g)),2;throw g}if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(is(),Qo));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(is(),Qo));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Zn(),iu));return await g()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Zn(),iu));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(dy(),ly)),y=await g(process.cwd());return process.stdout.write(Ra(y)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(by(),yy));return await g(),0}if(n.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Xc(),Yc));return await g(n.positional)}if(n.command==="shell-init"){let g=n.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write(D({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(Ry(),_y));return process.stdout.write(y(g)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(Ae(),Wp)),o=s(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(He(),Ht)),y=g(process.cwd()),b=await ch(o,y,hs(n.positional,1));return process.stdout.write(uh(b)),b.exitCode}let i=Ug(n.command);if(!o.enabled)return i?await Wg(n.positional):(process.stdout.write(`${Vo()}
207
+ `),0);if(n.command==="git"&&ei(n.positional)){let g=process.hrtime.bigint();return await se(n,await ti(),g,void 0,await hu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(He(),Ht)),u=a(process.cwd());if(i&&n.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(J(),xs)),y=g(u.rootDir,n.command);if(y)return await Gg(n.positional,u.rootDir,y)}if(i&&Hg(o.measurementHoldoutShare))return await Fg(n,u.rootDir,o.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Zy(),Xy)),y=a(process.cwd()),b=Ni(n.positional),R=s(process.cwd(),process.env,n.storeUri);return R.enabled?(await g({socketPath:b.socket??y.socketPath,pidPath:b["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:R.storeUri,ttlDays:b["ttl-days"]??R.ttlDays,ephemeralTtlHours:b["ephemeral-ttl-hours"]??R.ephemeralTtlHours,byteBudget:b["byte-budget"]??R.byteBudget,telemetryTtlDays:b["telemetry-ttl-days"]??R.telemetryTtlDays,telemetryByteBudget:b["telemetry-byte-budget"]??R.telemetryByteBudget,telemetryDrainIntervalMs:b["telemetry-drain-interval-ms"]??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:b["telemetry-drain-timeout-ms"]??R.telemetryDrainTimeoutMs,idleMs:b["idle-ms"]??R.idleMs,residentVersion:b["resident-version"]??t.version,registryPath:b.registry??y.registryPath}),0):(process.stdout.write(`${Vo()}
208
+ `),0)}if(n.command==="warm-resident"){let g=a(process.cwd()),y=Ni(n.positional),b=s(process.cwd(),process.env,n.storeUri);if(!b.enabled)return 0;let{warmResidentServer:R}=await Promise.resolve().then(()=>(He(),Ht));return await R({...g,socketPath:y.socket??g.socketPath,wakeLockPath:y["wake-lock"]??g.wakeLockPath},{storeUri:b.storeUri,ttlDays:y["ttl-days"]??b.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??b.ephemeralTtlHours,byteBudget:y["byte-budget"]??b.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??b.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??b.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??b.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??b.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(Do(),$o));return await g(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(He(),Ht)),b=n.command==="sweep"?await y(u):await g(u);if(n.command==="sweep"){let{sweepGhEtagCache:B}=await Promise.resolve().then(()=>(En(),Mp));await B(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:R}=await Promise.resolve().then(()=>(J(),xs)),T=R(u.rootDir,o.overhead);return process.stdout.write(zd(b,T)),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(So(),sm)),y=Ul(n.positional);if(!y)return process.stdout.write(D({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
209
+ `),b.status}if(n.command==="dashboard"){let g=await Ym(o);return process.stdout.write(Xm(g)),0}if(!n.storeUri&&o.storeUri.startsWith("file://")&&!wP(_P(o.storeUri)))return i?await ny(n,o,u.rootDir):(process.stdout.write(D({command:Je(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:p,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Gt(),gn)),f=(g=!0)=>Promise.resolve(p(process.cwd(),o,{ensureResident:g,paths:u})),m=()=>c(u,l(o,t.version)).catch(g=>void d(g)),w=()=>f(),_;try{if(n.command==="stats"){let{stats:g,telemetry:y}=await hr(o,hs(n.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(J(),xs));return process.stdout.write(wa(g,y,Wl(n.positional),b(u.rootDir,o.overhead))),0}if(n.command==="gains"){let g=await w();_=()=>g.close();let y;try{y=await g.telemetryGains(hs(n.positional,28))}catch(b){return process.stdout.write(D({command:`rsp ${n.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Zd(y)),0}if(n.command==="git"){if(tr(m()),ei(n.positional)){let T=process.hrtime.bigint();return await se(n,await ti(),T,void 0,u.rootDir,o)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Zt(),ru)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="gh"){tr(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Nu(),Du)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="vitest"||n.command==="cargo"){tr(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(ju(),Fu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="cat"){tr(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Uu(),Wu)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="exec"){tr(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(rs(),ts)),y=new Ct(()=>f(!1));_=()=>y.close();let b=process.hrtime.bigint(),R=await g(n.positional,{level:n.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await se(n,R,b,y,u.rootDir,o)}if(n.command==="show"&&n.handle){let g=await w();_=()=>g.close();let y=await g.get(n.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ri(u.rootDir,n.handle,!0,y.original.length),0;if(y?.status==="expired"){let R=D({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(R),await ri(u.rootDir,n.handle,!1,R.length),1}let b=D({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(b),await ri(u.rootDir,n.handle,!1,b.length),1}return process.stdout.write(D({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(pr(g))return process.stdout.write(g.render()),2;if(i)return await ss("wrapper failed",n.positional,g,u.rootDir);throw g}finally{await _?.()}}Be();import.meta.url===`file://${process.argv[1]}`&&Qy().then(e=>process.exit(e),e=>{pr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(D({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Qy as main,Ra as renderSetupResult,wa as renderStats};