@reddb-io/red-skills 2.87.6 → 2.88.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,136 +1,137 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var ih=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)ih(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Fr(e,t)}function P(e,t){return new Tt(e,t)}function er(e){return e instanceof Tt?e:e instanceof Fr?new Tt(e.line,e.reason):new Tt(0,String(e&&e.message?e.message:e))}var Fr,Tt,jr=h(()=>{Fr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Tt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function Vn(e){let t=e.split(`
4
- `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function Ie(e){return k(e,"invalid quoted string")}function Le(e,t){if(e==="")return"";if(e.startsWith('"'))return su(e,t);if(e.includes('"'))throw Ie(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:ah(e)?Number(e):e}function Ve(e,t){let r=e.trim();if(r.startsWith('"'))return[su(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function su(e,t){if(e[0]!=='"')throw Ie(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 Ie(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
5
- `;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 Ie(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ie(t);r+=String.fromCharCode(a),n+=4;break}default:throw Ie(t)}continue}if(s<" "&&s!==" ")throw Ie(t);r+=s}throw Ie(t)}function At(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 Ie(r);return n.push(e.slice(s).trim()),n}function ne(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 Ie(r);return-1}function ah(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function ch(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function uh(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw k(0,"number is not representable in TOON");return String(e)}function Hr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function De(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return uh(e);if(typeof e=="string")return dh(e,t);throw k(0,"not a primitive")}function lh(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function we(e){return lh(e)?e:ou(e)}function dh(e,t){return ph(e,t)?ou(e):e}function ph(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||ch(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ou(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
6
- `: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 tr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var D,Fo=h(()=>{jr();D=","});function mh(e={}){return{indent:Math.max(1,e.indent??qo),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function fh(e,t){let r=[],n=!1;return Vn(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 k(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw k(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function N(e,t){let r=mh(t),n=fh(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw k(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=zo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Uo(l,s.number);u=void 0}if(u!==void 0)return yh(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Le(s.content.trim(),s.number);let i={index:0},a=Vo(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function Vo(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 k(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=gh(e,t,r,n);cu(s,i,a,c,n,o.number)}return s}function gh(e,t,r,n){let s=e[t.index],o=s.content,i=ne(o,":",s.number);if(i===-1)throw k(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ne(a,"[",s.number),l=ne(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let f;try{f=Rh(a)}catch(g){if(n.strict)throw Uo(g,s.number);t.index+=1;let y=jo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let _=hh(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:_}}if(u!==-1){let f;try{f=zo(a,i)}catch(g){if(n.strict)throw Uo(g,s.number);t.index+=1;let y=jo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(f.key===""&&!f.keyQuoted)throw k(s.number,"expected non-empty field name");let _=Ko(f,c,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:_}}let[p,d]=Ve(a,s.number);if(p===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let m=jo(e,t,r,c,s.number,n);return{key:p,quoted:d,value:m}}function jo(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Le(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Vo(e,t,r+1,o):{}}function hh(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 k(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw k(i.number,"blank line inside keyed map");let a=ne(i.content,":",i.number);if(a===-1)throw k(i.number,"expected `key: value`");let[c,u]=Ve(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=At(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw k(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,m)=>{Gr(p,d,Le(l[m],i.number),s,i.number)}),cu(o,c,u,p,s,i.number),r.index+=1}return o}function yh(e,t,r){let n=t[0],s=ne(n.content,":",n.number);if(s===-1)throw k(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Ko(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function Ko(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 k(i,"expected tabular rows");return bh(e,e.fields,r,n,s+1,o)}if(a!==""){let c=At(a,e.delimiter,i).map(u=>Le(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return wh(e,r,n,s+1,o)}function bh(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Go(r,n.index);if(c.depth<s)break;if(c.depth>s)throw k(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw k(c.number,"blank line inside array");if(!iu(c.content,e.delimiter,c.number))break;let u=At(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Gr(l,p,Le(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Go(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&iu(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function iu(e,t,r){let n=ne(e,":",r);if(n===-1)return!0;let s=ne(e,t,r);return s===-1?!1:s<n}function wh(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 Go(t,r.index);if(a.depth>n)throw k(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw k(a.number,"blank line inside array");o.push(_h(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw k(i.number,"array length mismatch");return o}function _h(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw k(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ne(o,":",s.number),a;try{a=zo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Ko(a,c,e,t,r,n)}}if(ne(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 Vo(i,{index:0},r+1,n)}return t.index+=1,Le(o,s.number)}function Go(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function zo(e,t){if(t===-1)throw k(0,"array header missing colon");let r=e.slice(0,t),n=ne(r,"[",0);if(n===-1)throw k(0,"invalid array header");let s,o;try{[s,o]=Ve(r.slice(0,n),0)}catch{throw k(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw k(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 k(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 k(0,"invalid array header")}let d=i.slice(a+1),m;if(d==="")m=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{m=au(d.slice(1,-1),p)}catch(f){throw k(0,f.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:m}}function Rh(e){let t=ne(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Ve(e.slice(0,t),0)}catch{throw k(0,"invalid keyed map header")}if(r===""&&!n)throw k(0,"expected non-empty field name");let s;try{s=au(e.slice(t+1,-1),D)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:D,fields:s}}function au(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 k(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]=Ve(e.slice(l,n),0);if(p==="")throw k(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 k(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw k(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw k(0,"invalid array header")}if(u===0)throw k(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 k(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(kh(r[a],r[c])||Wo(r[a],r[c])||Wo(r[c],r[a]))throw k(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw k(0,"duplicate key");i.add(c)}return r}function kh(e,t){return e.length===t.length&&Wo(e,t)}function Wo(e,t){return t.every((r,n)=>e[n]===r)}function Uo(e,t){return k(t,e.reason??String(e.message))}function cu(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Sh)){Gr(e,i,n,s,o);return}}Gr(e,[t],n,s,o)}function Gr(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 k(s,"duplicate key");tr(e,o,r);return}if(i&&!rr(e[o])){if(n.strict)throw k(s,"path expansion conflict");tr(e,o,{})}else i||tr(e,o,{});Gr(e[o],t.slice(1),r,n,s)}function Sh(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function rr(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)?Yo(n,void 0,e,0,!1,r):rr(e)?uu(n,e,0,r):n.push(De(e,D)),n.join("")}function Wr(e,t){e.push(" ".repeat(t*qo))}function uu(e,t,r,n){for(let[s,o]of Object.entries(t))Wr(e,r),Jo(e,s,o,r,n)}function Jo(e,t,r,n,s){if(Array.isArray(r)){Yo(e,t,r,n,!1,s);return}if(rr(r)){let o=s.keyedMapCollapse?xh(r,s):void 0;if(o!==void 0){e.push(we(t),"{",o.fields.map(Xo).join(D),`}:
7
- `);for(let[i,a]of Object.entries(r))Wr(e,n+1),e.push(we(i),": ",o.paths.map(c=>De(mu(a,c),D)).join(D),`
8
- `);return}e.push(we(t),`:
9
- `),uu(e,r,n+1,s);return}e.push(we(t),": ",De(r,D),`
10
- `)}function Yo(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(we(t),`: []
3
+ var hy=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)hy(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Jr(e,t)}function P(e,t){return new It(e,t)}function ar(e){return e instanceof It?e:e instanceof Jr?new It(e.line,e.reason):new It(0,String(e&&e.message?e.message:e))}var Jr,It,qr=h(()=>{Jr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},It=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function os(e){let t=e.split(`
4
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function $e(e){return k(e,"invalid quoted string")}function Me(e,t){if(e==="")return"";if(e.startsWith('"'))return qu(e,t);if(e.includes('"'))throw $e(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:yy(e)?Number(e):e}function Qe(e,t){let r=e.trim();if(r.startsWith('"'))return[qu(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function qu(e,t){if(e[0]!=='"')throw $e(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 $e(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
5
+ `;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 $e(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw $e(t);r+=String.fromCharCode(a),n+=4;break}default:throw $e(t)}continue}if(s<" "&&s!==" ")throw $e(t);r+=s}throw $e(t)}function Lt(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 $e(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 $e(r);return-1}function yy(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function by(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function wy(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw k(0,"number is not representable in TOON");return String(e)}function Vr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Be(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return wy(e);if(typeof e=="string")return Ry(e,t);throw k(0,"not a primitive")}function _y(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Se(e){return _y(e)?e:Vu(e)}function Ry(e,t){return ky(e,t)?Vu(e):e}function ky(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||by(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Vu(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
6
+ `: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 cr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var N,ui=h(()=>{qr();N=","});function Sy(e={}){return{indent:Math.max(1,e.indent??hi),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Ey(e,t){let r=[],n=!1;return os(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 k(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw k(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function D(e,t){let r=Sy(t),n=Ey(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw k(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=wi(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw fi(l,s.number);u=void 0}if(u!==void 0)return Cy(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Me(s.content.trim(),s.number);let i={index:0},a=yi(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function yi(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 k(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=xy(e,t,r,n);Yu(s,i,a,c,n,o.number)}return s}function xy(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw k(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 f;try{f=Py(a)}catch(g){if(n.strict)throw fi(g,s.number);t.index+=1;let y=li(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let _=vy(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:_}}if(u!==-1){let f;try{f=wi(a,i)}catch(g){if(n.strict)throw fi(g,s.number);t.index+=1;let y=li(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(f.key===""&&!f.keyQuoted)throw k(s.number,"expected non-empty field name");let _=bi(f,c,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:_}}let[m,d]=Qe(a,s.number);if(m===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let p=li(e,t,r,c,s.number,n);return{key:m,quoted:d,value:p}}function li(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Me(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?yi(e,t,r+1,o):{}}function vy(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 k(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw k(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw k(i.number,"expected `key: value`");let[c,u]=Qe(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Lt(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw k(i.number,"keyed map row length mismatch");let m={};e.fields.forEach((d,p)=>{Kr(m,d,Me(l[p],i.number),s,i.number)}),Yu(o,c,u,m,s,i.number),r.index+=1}return o}function Cy(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw k(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=bi(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function bi(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 k(i,"expected tabular rows");return Ty(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Lt(a,e.delimiter,i).map(u=>Me(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Oy(e,r,n,s+1,o)}function Ty(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw mi(r,n.index);if(c.depth<s)break;if(c.depth>s)throw k(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw k(c.number,"blank line inside array");if(!Ku(c.content,e.delimiter,c.number))break;let u=Lt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((m,d)=>{Kr(l,m,Me(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw mi(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Ku(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function Ku(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 Oy(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 mi(t,r.index);if(a.depth>n)throw k(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw k(a.number,"blank line inside array");o.push(Ay(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw k(i.number,"array length mismatch");return o}function Ay(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw k(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=wi(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return bi(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 yi(i,{index:0},r+1,n)}return t.index+=1,Me(o,s.number)}function mi(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function wi(e,t){if(t===-1)throw k(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw k(0,"invalid array header");let s,o;try{[s,o]=Qe(r.slice(0,n),0)}catch{throw k(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw k(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 k(0,"invalid array header");let l=Number.parseInt(u,10),m;switch(c.slice(u.length)){case"":m=",";break;case" ":m=" ";break;case"|":m="|";break;default:throw k(0,"invalid array header")}let d=i.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=zu(d.slice(1,-1),m)}catch(f){throw k(0,f.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:m,fields:p}}function Py(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Qe(e.slice(0,t),0)}catch{throw k(0,"invalid keyed map header")}if(r===""&&!n)throw k(0,"expected non-empty field name");let s;try{s=zu(e.slice(t+1,-1),N)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:N,fields:s}}function zu(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 k(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[m]=Qe(e.slice(l,n),0);if(m==="")throw k(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,m],!0),e[n]!=="}"||r.length===d)throw k(0,"invalid array header");n+=1}else r.push([...a,m]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw k(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw k(0,"invalid array header")}if(u===0)throw k(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 k(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(Iy(r[a],r[c])||pi(r[a],r[c])||pi(r[c],r[a]))throw k(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw k(0,"duplicate key");i.add(c)}return r}function Iy(e,t){return e.length===t.length&&pi(e,t)}function pi(e,t){return t.every((r,n)=>e[n]===r)}function fi(e,t){return k(t,e.reason??String(e.message))}function Yu(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Ly)){Kr(e,i,n,s,o);return}}Kr(e,[t],n,s,o)}function Kr(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 k(s,"duplicate key");cr(e,o,r);return}if(i&&!ur(e[o])){if(n.strict)throw k(s,"path expansion conflict");cr(e,o,{})}else i||cr(e,o,{});Kr(e[o],t.slice(1),r,n,s)}function Ly(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function ur(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)?_i(n,void 0,e,0,!1,r):ur(e)?Xu(n,e,0,r):n.push(Be(e,N)),n.join("")}function zr(e,t){e.push(" ".repeat(t*hi))}function Xu(e,t,r,n){for(let[s,o]of Object.entries(t))zr(e,r),gi(e,s,o,r,n)}function gi(e,t,r,n,s){if(Array.isArray(r)){_i(e,t,r,n,!1,s);return}if(ur(r)){let o=s.keyedMapCollapse?Ny(r,s):void 0;if(o!==void 0){e.push(Se(t),"{",o.fields.map(Ri).join(N),`}:
7
+ `);for(let[i,a]of Object.entries(r))zr(e,n+1),e.push(Se(i),": ",o.paths.map(c=>Be(tl(a,c),N)).join(N),`
8
+ `);return}e.push(Se(t),`:
9
+ `),Xu(e,r,n+1,s);return}e.push(Se(t),": ",Be(r,N),`
10
+ `)}function _i(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Se(t),`: []
11
11
  `):s?e.push(`[0]:
12
12
  `):e.push(`[]
13
- `);return}if(r.every(Hr)){Ho(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>De(a,D)).join(D)),e.push(`
14
- `);return}let i=s?void 0:lu(r,o);if(i!==void 0){Ho(e,t,r.length,i.fields),e.push(`
15
- `);for(let a of r)Wr(e,n+1),e.push(i.paths.map(c=>De(mu(a,c),D)).join(D)),e.push(`
16
- `);return}Ho(e,t,r.length,void 0),e.push(`
17
- `);for(let a of r)Wr(e,n+1),Eh(e,a,n+1,o)}function Eh(e,t,r,n){if(Array.isArray(t)){e.push("- "),Yo(e,void 0,t,r,!0,n);return}if(rr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
- `);return}e.push("- "),Jo(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))Wr(e,r+1),Jo(e,o,i,r+1,n);return}e.push("- ",De(t,D),`
19
- `)}function Ho(e,t,r,n){t!==void 0&&e.push(we(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Xo).join(D),"}"),e.push(":")}function lu(e,t){let r=du(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:pu(r)}}function xh(e,t){let r=Object.values(e);if(!(r.length<2))return lu(r,t)}function du(e,t){let r=e[0]?.value;if(!rr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!rr(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})=>Hr(a)))continue;if(!t.nestedTabularHeaders)return;let i=du(o,t);if(i===void 0)return;s.children=i}return n}}function pu(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:pu(r.children,n)})}function mu(e,t){let r=e;for(let n of t)r=r[n];return r}function Xo(e){return e.children===void 0?we(e.key):`${we(e.key)}{${e.children.map(Xo).join(D)}}`}var qo,Ur=h(()=>{jr();Fo();qo=2});var fu=h(()=>{Ur()});function Ch(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw P(t,"invalid trailer count");return Number.parseInt(r,10)}function xu(e,t){if(!Eu.test(e))throw P(t,"invalid tag")}function Th(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Eu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw P(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Ah(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw P(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(!ku.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?D:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),xu(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),p;try{p=At(l,a,t).map(d=>Ve(d,t)[0])}catch(d){throw er(d)}if(p.length===0||p.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Oh(e,t,r){if(e===null||e.delimiter===void 0)throw P(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(r,"continuation header mismatch")}function gu(e,t,r,n){let s;try{s=At(e,t,n)}catch(o){throw er(o)}if(s.length!==r)throw P(n,"row arity mismatch");for(let o of s)try{Le(o,n)}catch(i){throw er(i)}return s}function Ph(e,t,r){let n={};return e.forEach((s,o)=>{try{tr(n,s,Le(t[o],r))}catch(i){throw er(i)}}),n}function Ih(e,t,r){if(e.startsWith("- "))throw P(t,"reserved line prefix");let n=Ch(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw P(t,"trailer without header");if(r.rowCount!==n)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=Ah(e,t);if(s!==null)return s.continuation?(Oh(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Th(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:gu(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:gu(e,r.delimiter,r.fields.length,t)}}function Lh(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(m,f){let _=o.at(-1);if(_!==void 0&&_.lane===m.lane&&_.delimiter===m.delimiter&&_.fieldText===m.fieldText){_.rows.push(f);return}o.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(m,f,_){let g=n.get(m);if(g===void 0){if(n.size>=Su)throw P(_,"too many tagged lanes");g={segments:[],current:null},n.set(m,g),r.push(m)}else g.current!==null&&g.segments.push(g.current);g.current={lane:m,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},g.delimiter=f.delimiter,g.fields=f.fields,g.fieldText=f.fieldText}if(Vn(e).forEach((m,f)=>{let _=f+1;if(m==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},y=Ih(m,_,g);if(y.kind==="trailer"){l(),i=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,p(y.header.tag,y.header,_);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),u(b,y.cells);return}if(i===null)throw P(_,"row before header");i.rows.push(y.cells),u(i,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of r){if(m===null){d.push(...s);continue}let f=n.get(m);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function Ke(e){return Lh(e).flatMap(t=>t.rows.map(r=>Ph(t.fields,r,0)))}function Dh(e){if(!ku.includes(e))throw P(0,"invalid header delimiter")}function hu(e,t,r=!1){return`[${`${r?"~":""}${e===D?"":e}`}]{${t}}:
20
- `}function yu(e,t){return`[]<${e}>{${t}}:
21
- `}function Qo(e,t){return t.map(we).join(e)}function Nh(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Ve(String(t),0)}catch(n){throw er(n)}if(r==="")throw P(0,"TOONL header requires fields");return r})}function bu(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function wu(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function $h(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function _u(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(r=>!Hr(e[r])))throw P(0,"TOONL rows must be flat objects");return t}function Mh(e){return JSON.stringify([...e].sort())}function Ru(e,t){let r=Mh(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function ze({delimiter:e=D,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Dh(e),wu(r),wu(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},m=()=>s===null||!t?"":`[=${a}]
22
- `,f=()=>$h(d,c,u)?(c=0,u=0,hu(e,o,!0)):"",_=g=>{xu(g,0);let y=l.get(g);if(y===void 0){if(l.size>=Su)throw P(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(p)throw P(0,"TOONL encoder is closed");let y=Ru(_u(g),i),b="";(s===null||s.length!==y.length||s.some((O,F)=>O!==y[F]))&&(b+=m(),s=y,o=Qo(e,s),a=0,c=0,u=0,b+=hu(e,o));let w=s.map(O=>De(g[O],e));b+=f();let x=`${w.join(e)}
23
- `;return b+=x,a+=1,c+=1,u+=x.length,b},declareLane(g,y){if(p)throw P(0,"TOONL encoder is closed");let b=Nh(y),w=Qo(D,b),x=_(g);return bu(x.fields,b)?"":(x.fields=b,yu(g,w))},pushTagged(g,y){if(p)throw P(0,"TOONL encoder is closed");let b=_(g),w=Ru(_u(y),b.fieldsByShape),x=Qo(D,w),O=w.map(he=>De(y[he],D)),F="";return bu(b.fields,w)||(b.fields=w,F+=yu(g,x)),`${F}${g}:${O.join(D)}
24
- `},end(){return p?"":(p=!0,m())}}}var ku,Su,Eu,N0,$0,vu=h(()=>{jr();Ur();Fo();ku=[D,"|"," "],Su=8,Eu=/^[A-Za-z0-9_-]+$/,N0=new TextEncoder,$0=new TextDecoder});var L=h(()=>{jr();Ur();Ur();fu();vu()});function Fh(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Zo(e))}
25
- `)}function Zo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Fh(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=jh(e.diagnostics,3)),t}function _e(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:Jr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Jr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Jr(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:Jr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Jr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Kn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Jr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function jh(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
- `).trim()}var Ne=h(()=>{"use strict";L()});import{isAbsolute as Hh,join as Ye,resolve as ti}from"node:path";function Uh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Iu(e){return Ye(Uh(e),Pu)}function Lu(e){return Ye(Iu(e),"state")}function Du(e){return Ye(Iu(e),"tmp")}function X(e){return Ye(Lu(e),"rsp")}function Jh(e){return Ye(Lu(e),"red-skills.rdb")}function qh(e){return Ye(Du(e),"red-skills.rdb")}function Mu(e,t){let r=Jh(e);if(t(r))return r;let n=qh(e);if(t(n))throw Vh();return r}function Vh(){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 Bu(e){return Ye(Du(e),"waits")}function Fu(e){let t=e.overrideEnvVars??ri;for(let n of t){let s=e.env[n];if(s)return Hh(s)?s:ti(e.startDir,s)}let r=ti(e.startDir);for(;;){if(e.exists(Ye(r,Pu)))return r;let n=Ye(r,".."),s=ti(n);if(s===r)break;r=s}return e.startDir}var Pu,Gh,Wh,ri,Nu,$u,ke=h(()=>{Pu=".red",Gh="MEMORY_ROOT",Wh="RED_BRAIN_ROOT",ri=[Gh,Wh];Nu=".red/state/red-skills.rdb";$u=".red/tmp/red-skills.rdb"});function H(e){return C(e,{keyedMapCollapse:!0})}var Kh,zh,fT,$e=h(()=>{L();ke();Kh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],zh=[{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"}],fT=[...Kh,...zh]});function Yn(e){let t={app:e,version:Yh(sr("__RED_BUILD_VERSION__",()=>"2.87.6")??"0.0.0-dev"),gitSha:sr("__RED_BUILD_GIT_SHA__",()=>"698c85881b043eb712d489860986832fb05c29cb")??"unknown",buildTime:sr("__RED_BUILD_TIME__",()=>"2026-07-28T19:08:02-03:00")??"unknown",bundleAsset:sr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=sr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=sr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Yh(e){return e.startsWith("v")?e.slice(1):e}function sr(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(()=>{});function Ot(e){let t=[],r;for(let n=0;n<e.length;n++){let s=e[n];if(s==="--query"){r=e[++n];continue}if(s.startsWith("--query=")){r=s.slice(8);continue}t.push(s)}return{argv:t,query:r?.trim()||void 0}}function Xh(e,t){if(!t)return!0;let r=si(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Q(e,t){return t?e.filter(r=>Xh(r,t)):[...e]}function Xe(e,t){return oi(e,t,{includeLegacyHelp:!0})}function oi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function si(e){return Array.isArray(e)?e.map(si).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(si).join(" "):String(e??"")}var qr=h(()=>{"use strict"});function ai(e,t,r=ju){let n=Math.max(0,Math.floor(e)),s=r in Hu?r:ju,o=Hu[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:ii(n,o),dollars_saved_low_usd:i==null?null:ii(i,o),dollars_saved_high_usd:a==null?null:ii(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Qh}}function ii(e,t){return Zh(Math.max(0,e)/1e6*t)}function Vr(e){return`$${e.toFixed(6)}`}function Zh(e){return Math.round(e*1e6)/1e6}var ju,Hu,Qh,ci=h(()=>{"use strict";ju="gpt-5",Hu={"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},Qh="estimate derived from byte-based token estimate when token counts are estimated"});import{createConnection as ey}from"node:net";async function or(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=ey(e.socketPath),i=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),o.destroy()},r);function u(l){i||(i=!0,clearTimeout(c),l())}o.on("connect",()=>{o.write(`${JSON.stringify(t)}
27
- `)}),o.on("data",l=>{a+=l.toString("utf8");let p=a.indexOf(`
28
- `);if(p<0)return;let d=a.slice(0,p);u(()=>{try{n(JSON.parse(d))}catch(m){s(m)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var ui=h(()=>{});var Gu=h(()=>{"use strict";ui()});import{existsSync as ty,readdirSync as ry}from"node:fs";import{homedir as ny}from"node:os";import{basename as di,dirname as li,join as ue,resolve as Xn}from"node:path";function sy(e){return"command"in e}function Qn(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??ty,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&&ay(i))return a(Xn(i),"caller-entry");let c=[];for(let[u,l]of uy(i,t.rootDir,r,t.listDir??my))if(c.push(u),n(u))return a(u,l);return{diagnostic:Qe,searched:c,...i?{callerEntry:Xn(i)}:{}}}function Uu(e={},t={}){let r=Qn(e,t);if(sy(r))return r;throw new ir(r)}function ay(e){let t=di(e);return t===Pt||pi.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:cy(Xn(e))}function cy(e){let t=li(e);for(let r=0;r<4;r++){if(di(t)==="rsp")return!0;let n=li(t);if(n===t)return!1;t=n}return!1}function*uy(e,t,r,n){if(e){let o=li(Xn(e));yield[ue(o,Pt),"caller-sibling-bundle"];let i=oy.exec(di(e));i&&(yield[ue(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ue(o,"..","dist",Pt),"caller-sibling-bundle"]}for(let o of iy){let i=r[o];i&&(yield[ue(i,"dist",Pt),"plugin-root-bundle"],yield[ue(i,"..","..","dist",Pt),"plugin-root-bundle"])}t&&(yield[ue(t,"dist",Pt),"repo-bundle"],yield[ue(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ue(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=ly(r);yield[ue(s,Pt),"bundle-cache"];for(let o of dy(s,n))yield[ue(s,o),"bundle-cache"]}function ly(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ue(e.HOME||ny(),".cache");return ue(t,"red-skills","bundles")}function dy(e,t){return t(e).filter(r=>pi.test(r)).sort((r,n)=>py(Wu(n),Wu(r)))}function Wu(e){return pi.exec(e)?.[1]??""}function py(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 my(e){try{return ry(e)}catch{return[]}}var Qe,ir,Pt,oy,pi,iy,mi=h(()=>{Qe="rsp-resident-entry-unresolved";ir=class extends Error{code=Qe;searched;callerEntry;constructor(t){super(`${Qe}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
13
+ `);return}if(r.every(Vr)){di(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Be(a,N)).join(N)),e.push(`
14
+ `);return}let i=s?void 0:Qu(r,o);if(i!==void 0){di(e,t,r.length,i.fields),e.push(`
15
+ `);for(let a of r)zr(e,n+1),e.push(i.paths.map(c=>Be(tl(a,c),N)).join(N)),e.push(`
16
+ `);return}di(e,t,r.length,void 0),e.push(`
17
+ `);for(let a of r)zr(e,n+1),Dy(e,a,n+1,o)}function Dy(e,t,r,n){if(Array.isArray(t)){e.push("- "),_i(e,void 0,t,r,!0,n);return}if(ur(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
+ `);return}e.push("- "),gi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))zr(e,r+1),gi(e,o,i,r+1,n);return}e.push("- ",Be(t,N),`
19
+ `)}function di(e,t,r,n){t!==void 0&&e.push(Se(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ri).join(N),"}"),e.push(":")}function Qu(e,t){let r=Zu(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:el(r)}}function Ny(e,t){let r=Object.values(e);if(!(r.length<2))return Qu(r,t)}function Zu(e,t){let r=e[0]?.value;if(!ur(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!ur(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})=>Vr(a)))continue;if(!t.nestedTabularHeaders)return;let i=Zu(o,t);if(i===void 0)return;s.children=i}return n}}function el(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:el(r.children,n)})}function tl(e,t){let r=e;for(let n of t)r=r[n];return r}function Ri(e){return e.children===void 0?Se(e.key):`${Se(e.key)}{${e.children.map(Ri).join(N)}}`}var hi,Yr=h(()=>{qr();ui();hi=2});var rl=h(()=>{Yr()});function My(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw P(t,"invalid trailer count");return Number.parseInt(r,10)}function pl(e,t){if(!ml.test(e))throw P(t,"invalid tag")}function By(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!ml.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw P(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Fy(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw P(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(!ll.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?N:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),pl(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),m;try{m=Lt(l,a,t).map(d=>Qe(d,t)[0])}catch(d){throw ar(d)}if(m.length===0||m.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:m,fieldText:l,continuation:o,tag:u}}function jy(e,t,r){if(e===null||e.delimiter===void 0)throw P(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(r,"continuation header mismatch")}function nl(e,t,r,n){let s;try{s=Lt(e,t,n)}catch(o){throw ar(o)}if(s.length!==r)throw P(n,"row arity mismatch");for(let o of s)try{Me(o,n)}catch(i){throw ar(i)}return s}function Hy(e,t,r){let n={};return e.forEach((s,o)=>{try{cr(n,s,Me(t[o],r))}catch(i){throw ar(i)}}),n}function Gy(e,t,r){if(e.startsWith("- "))throw P(t,"reserved line prefix");let n=My(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw P(t,"trailer without header");if(r.rowCount!==n)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=Fy(e,t);if(s!==null)return s.continuation?(jy(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=By(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:nl(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:nl(e,r.delimiter,r.fields.length,t)}}function Wy(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(p,f){let _=o.at(-1);if(_!==void 0&&_.lane===p.lane&&_.delimiter===p.delimiter&&_.fieldText===p.fieldText){_.rows.push(f);return}o.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function m(p,f,_){let g=n.get(p);if(g===void 0){if(n.size>=dl)throw P(_,"too many tagged lanes");g={segments:[],current:null},n.set(p,g),r.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},g.delimiter=f.delimiter,g.fields=f.fields,g.fieldText=f.fieldText}if(os(e).forEach((p,f)=>{let _=f+1;if(p==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},y=Gy(p,_,g);if(y.kind==="trailer"){l(),i=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,m(y.header.tag,y.header,_);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),u(b,y.cells);return}if(i===null)throw P(_,"row before header");i.rows.push(y.cells),u(i,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of r){if(p===null){d.push(...s);continue}let f=n.get(p);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function Ze(e){return Wy(e).flatMap(t=>t.rows.map(r=>Hy(t.fields,r,0)))}function Uy(e){if(!ll.includes(e))throw P(0,"invalid header delimiter")}function sl(e,t,r=!1){return`[${`${r?"~":""}${e===N?"":e}`}]{${t}}:
20
+ `}function ol(e,t){return`[]<${e}>{${t}}:
21
+ `}function ki(e,t){return t.map(Se).join(e)}function Jy(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Qe(String(t),0)}catch(n){throw ar(n)}if(r==="")throw P(0,"TOONL header requires fields");return r})}function il(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function al(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function qy(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function cl(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(r=>!Vr(e[r])))throw P(0,"TOONL rows must be flat objects");return t}function Vy(e){return JSON.stringify([...e].sort())}function ul(e,t){let r=Vy(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function et({delimiter:e=N,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Uy(e),al(r),al(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,m=!1,d={continuationEveryRows:r,continuationEveryBytes:n},p=()=>s===null||!t?"":`[=${a}]
22
+ `,f=()=>qy(d,c,u)?(c=0,u=0,sl(e,o,!0)):"",_=g=>{pl(g,0);let y=l.get(g);if(y===void 0){if(l.size>=dl)throw P(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(m)throw P(0,"TOONL encoder is closed");let y=ul(cl(g),i),b="";(s===null||s.length!==y.length||s.some((O,j)=>O!==y[j]))&&(b+=p(),s=y,o=ki(e,s),a=0,c=0,u=0,b+=sl(e,o));let w=s.map(O=>Be(g[O],e));b+=f();let S=`${w.join(e)}
23
+ `;return b+=S,a+=1,c+=1,u+=S.length,b},declareLane(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=Jy(y),w=ki(N,b),S=_(g);return il(S.fields,b)?"":(S.fields=b,ol(g,w))},pushTagged(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=_(g),w=ul(cl(y),b.fieldsByShape),S=ki(N,w),O=w.map(_e=>Be(y[_e],N)),j="";return il(b.fields,w)||(b.fields=w,j+=ol(g,S)),`${j}${g}:${O.join(N)}
24
+ `},end(){return m?"":(m=!0,p())}}}var ll,dl,ml,uO,lO,fl=h(()=>{qr();Yr();ui();ll=[N,"|"," "],dl=8,ml=/^[A-Za-z0-9_-]+$/,uO=new TextEncoder,lO=new TextDecoder});var L=h(()=>{qr();Yr();Yr();rl();fl()});function zy(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Si(e))}
25
+ `)}function Si(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??zy(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Yy(e.diagnostics,3)),t}function Ee(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:Xr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Xr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Xr(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:Xr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Xr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function is(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Xr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Yy(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var Fe=h(()=>{"use strict";L()});function cs(e){let t={app:e,version:Xy(dr("__RED_BUILD_VERSION__",()=>"2.88.0")??"0.0.0-dev"),gitSha:dr("__RED_BUILD_GIT_SHA__",()=>"324ab63ca6bbced0bad34efc358ef97398485c9d")??"unknown",buildTime:dr("__RED_BUILD_TIME__",()=>"2026-07-29T14:42:42-03:00")??"unknown",bundleAsset:dr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=dr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=dr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Xy(e){return e.startsWith("v")?e.slice(1):e}function dr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var xi=h(()=>{});import{isAbsolute as Qy,join as tt,resolve as vi}from"node:path";function tb(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function _l(e){return tt(tb(e),wl)}function Rl(e){return tt(_l(e),"state")}function kl(e){return tt(_l(e),"tmp")}function G(e){return tt(Rl(e),"rsp")}function rb(e){return tt(Rl(e),"red-skills.rdb")}function nb(e){return tt(kl(e),"red-skills.rdb")}function xl(e,t){let r=rb(e);if(t(r))return r;let n=nb(e);if(t(n))throw sb();return r}function sb(){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 vl(e){return tt(kl(e),"waits")}function Cl(e){let t=e.overrideEnvVars??Ci;for(let n of t){let s=e.env[n];if(s)return Qy(s)?s:vi(e.startDir,s)}let r=vi(e.startDir);for(;;){if(e.exists(tt(r,wl)))return r;let n=tt(r,".."),s=vi(n);if(s===r)break;r=s}return e.startDir}var wl,Zy,eb,Ci,Sl,El,pe=h(()=>{wl=".red",Zy="MEMORY_ROOT",eb="RED_BRAIN_ROOT",Ci=[Zy,eb];Sl=".red/state/red-skills.rdb";El=".red/tmp/red-skills.rdb"});function W(e){return C(e,{keyedMapCollapse:!0})}var ob,ib,WO,rt=h(()=>{L();pe();ob=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],ib=[{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"}],WO=[...ob,...ib]});function Dt(e){let t=[],r;for(let n=0;n<e.length;n++){let s=e[n];if(s==="--query"){r=e[++n];continue}if(s.startsWith("--query=")){r=s.slice(8);continue}t.push(s)}return{argv:t,query:r?.trim()||void 0}}function ab(e,t){if(!t)return!0;let r=Ti(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>ab(r,t)):[...e]}function nt(e,t){return Oi(e,t,{includeLegacyHelp:!0})}function Oi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Ti(e){return Array.isArray(e)?e.map(Ti).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ti).join(" "):String(e??"")}var Qr=h(()=>{"use strict"});var hs={};M(hs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>us,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>ls,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>ms,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>ps,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ds,RSP_OVERHEAD_FAMILIES:()=>fb,RSP_OVERHEAD_LEDGER_FILE:()=>Al,RSP_OVERHEAD_SCHEMA_VERSION:()=>Pl,classifyOverheadSample:()=>Ii,noteChildProcessMs:()=>Ll,noteSelfStateBytesRead:()=>tn,overheadCounters:()=>rn,overheadFamilyDisabled:()=>Di,overheadHealth:()=>ft,overheadLedgerPath:()=>Li,overheadMsOf:()=>Il,overheadTelemetryFields:()=>fs,readOverheadLedger:()=>Zr,readSelfStateFile:()=>gs,readSelfStateFileSync:()=>yb,recordOverheadSample:()=>en,resetOverheadCounters:()=>hb,resetOverheadLedger:()=>gb,startChildProcessTimer:()=>re});import{existsSync as cb,mkdirSync as ub,readFileSync as Tl,renameSync as lb,writeFileSync as db}from"node:fs";import{readFile as mb}from"node:fs/promises";import{dirname as pb,join as Ol}from"node:path";function Il(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Pi(t)):0}function Ii(e,t=ve){let r=Il(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 fs(e,t=ve){let r=Ii(e,t);return{wrapper_ms:Pi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Pi(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 Li(e){return Ol(G(e),Al)}function Zr(e){try{let t=Tl(Li(e),"utf8"),r=Rb(t);if(kb(r))return r}catch{}return{version:1,families:{}}}function en(e,t,r=ve,n=Date.now()){let s=Zr(e),o=Ii(t,r),i=s.families[t.family]??_b(t.family,n),a=Mi(i,n)?Dl(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=bb(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,Nl(e,s),u}function Di(e,t,r=Date.now()){let n=Zr(e).families[t];return!n?.disabled||Mi(n,r)?null:n}function gb(e,t){let r=Zr(e);return t?delete r.families[t]:r.families={},Nl(e,r),r}function ft(e,t=ve,r=Date.now()){let n=Object.values(Zr(e).families).map(a=>Mi(a,r)?Dl(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:Pl,verdict:i,summary:wb(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function tn(e){Number.isFinite(e)&&e>0&&(Ni+=e)}function Ll(e){Number.isFinite(e)&&e>0&&($i+=e)}function rn(){return{selfStateBytesRead:Ni,childMs:$i}}function hb(){Ni=0,$i=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,Ll(Number(process.hrtime.bigint()-e)/1e6))}}async function gs(e){let t=await mb(e,"utf8");return tn(Buffer.byteLength(t)),t}function yb(e){let t=Tl(e,"utf8");return tn(Buffer.byteLength(t)),t}function bb(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 wb(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 Mi(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function Dl(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function _b(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 Nl(e,t){try{let r=Li(e);if(!cb(Ol(e,".red")))return;ub(pb(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;db(n,`${C(t)}
27
+ `,{encoding:"utf8",mode:384}),lb(n,r)}catch{}}function Rb(e){try{return JSON.parse(e)}catch{return D(e)}}function kb(e){return!Ai(e)||e.version!==1||!Ai(e.families)?!1:Object.values(e.families).every(Sb)}function Sb(e){return Ai(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Ai(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Al,Pl,us,ls,ds,ms,ps,fb,ve,Ni,$i,U=h(()=>{"use strict";pe();L();Al="overhead-budget.toon",Pl="red.rsp.overhead.v1",us=250,ls=1024*1024,ds=64*1024,ms=3,ps=6*60*60*1e3,fb=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:us,maxSelfStateBytes:ls,netLossFloorBytes:ds,consecutiveBreaches:ms,cooldownMs:ps};Ni=0,$i=0});import{createHash as Eb}from"node:crypto";import{constants as Bi}from"node:fs";import{mkdir as xb,open as vb}from"node:fs/promises";import{createConnection as Cb}from"node:net";import{tmpdir as Tb}from"node:os";import{dirname as Ob,join as Fi}from"node:path";async function $l(e,t,r="resident server"){let n=e.timeoutMs??1e3;return await new Promise((s,o)=>{let i=Cb(e.socketPath),a=!1,c="",u=setTimeout(()=>{l(()=>o(new Error(`${r} timed out`))),i.destroy()},n);function l(m){a||(a=!0,clearTimeout(u),m())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
28
+ `)}),i.on("data",m=>{c+=m.toString("utf8");let d=c.indexOf(`
29
+ `);if(d<0)return;let p=c.slice(0,d);l(()=>{try{s(JSON.parse(p))}catch(f){o(f)}}),i.end()}),i.on("error",m=>l(()=>o(m))),i.on("close",()=>{a||l(()=>o(new Error(`${r} closed without response`)))})})}async function Ml(e){await xb(Ob(e),{recursive:!0,mode:448});try{return await vb(e,Bi.O_CREAT|Bi.O_EXCL|Bi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Nt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ji(e,t=1e3){if(!Nt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Nt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function Bl(e){let t=e.env??process.env,r=Eb("sha256").update(e.key).digest("hex").slice(0,20),n=t.XDG_RUNTIME_DIR;if(n){let o=Fi(n,"red-skills",r);if(Fi(o,e.socketFileName).length<Ab)return o}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid");return Fi(Tb(),`red-skills-${s}`,r)}var Ab,Hi=h(()=>{Ab=108});async function mr(e,t){return await $l(e,t,"resident rsp server")}var Gi=h(()=>{Hi()});var Fl=h(()=>{"use strict";Gi()});import{existsSync as Pb,readdirSync as Ib}from"node:fs";import{homedir as Lb}from"node:os";import{basename as Ui,dirname as Wi,join as fe,resolve as ys}from"node:path";function Db(e){return"command"in e}function bs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??Pb,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&&Mb(i))return a(ys(i),"caller-entry");let c=[];for(let[u,l]of Fb(i,t.rootDir,r,t.listDir??Wb))if(c.push(u),n(u))return a(u,l);return{diagnostic:st,searched:c,...i?{callerEntry:ys(i)}:{}}}function Hl(e={},t={}){let r=bs(e,t);if(Db(r))return r;throw new pr(r)}function Mb(e){let t=Ui(e);return t===$t||Ji.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:Bb(ys(e))}function Bb(e){let t=Wi(e);for(let r=0;r<4;r++){if(Ui(t)==="rsp")return!0;let n=Wi(t);if(n===t)return!1;t=n}return!1}function*Fb(e,t,r,n){if(e){let o=Wi(ys(e));yield[fe(o,$t),"caller-sibling-bundle"];let i=Nb.exec(Ui(e));i&&(yield[fe(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[fe(o,"..","dist",$t),"caller-sibling-bundle"]}for(let o of $b){let i=r[o];i&&(yield[fe(i,"dist",$t),"plugin-root-bundle"],yield[fe(i,"..","..","dist",$t),"plugin-root-bundle"])}t&&(yield[fe(t,"dist",$t),"repo-bundle"],yield[fe(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[fe(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=jb(r);yield[fe(s,$t),"bundle-cache"];for(let o of Hb(s,n))yield[fe(s,o),"bundle-cache"]}function jb(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||fe(e.HOME||Lb(),".cache");return fe(t,"red-skills","bundles")}function Hb(e,t){return t(e).filter(r=>Ji.test(r)).sort((r,n)=>Gb(jl(n),jl(r)))}function jl(e){return Ji.exec(e)?.[1]??""}function Gb(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 Wb(e){try{return Ib(e)}catch{return[]}}var st,pr,$t,Nb,Ji,$b,qi=h(()=>{st="rsp-resident-entry-unresolved";pr=class extends Error{code=st;searched;callerEntry;constructor(t){super(`${st}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
29
30
  searched:
30
31
  ${t.searched.map(r=>` ${r}`).join(`
31
- `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Pt="rsp.bundle.min.mjs",oy=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,pi=/^rsp-(.+)\.bundle\.min\.mjs$/,iy=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{createHash as fy,randomUUID as zu}from"node:crypto";import{spawn as Yu}from"node:child_process";import{constants as fi}from"node:fs";import{readFileSync as gy}from"node:fs";import{mkdir as Zn,open as hy,readFile as Xu,rename as yy,rm as Me,stat as by,writeFile as wy}from"node:fs/promises";import{tmpdir as _y}from"node:os";import{dirname as ut,join as le,resolve as yi}from"node:path";import{fileURLToPath as Ry}from"node:url";function lt(e){let t=Ly(e)??yi(e),r=Iy(t),n=X(t);return{rootDir:t,socketPath:le(r,"rsp.sock"),pidPath:le(r,"rsp.pid"),lockPath:le(r,"rsp.lock"),wakeLockPath:le(t,".red","tmp","rsp","wake.lock"),summaryPath:le(n,"rsp-status-summary.json"),registryPath:le(n,"rsp-resident.pid.json")}}async function es(e,t){if(await Zn(ut(e.socketPath),{recursive:!0,mode:448}),await Vu(e.socketPath,t))return;await qu(e,t);let r=await rl(e.lockPath);if(r)try{if(await Vu(e.socketPath,t))return;await qu(e,t),await xy(e.socketPath);let n=vy(e,t);await Ju(e.socketPath,n);return}finally{await r.close(),await Me(e.lockPath,{force:!0})}await Ju(e.socketPath)}async function It(e,t=200){try{return await Zu(e,t)!=null}catch{return!1}}async function Zu(e,t=200){let r=await or({socketPath:e,timeoutMs:t},{id:zu(),op:"ping"});return r.ok?il(r.value)?{version:My(r.value.version)}:{}:null}async function ts(e,t){if(await Zn(ut(e.socketPath),{recursive:!0,mode:448}),await It(e.socketPath,50))return!1;let r=await rl(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=sl(e,t);return Yu(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 el(e,t){try{await es(e,t)}finally{await Me(e.wakeLockPath,{force:!0})}}async function zr(e){try{let t=Ay(await Xu(e,"utf8"));return By(t)?t:null}catch{return null}}async function rs(e,t){let r={version:Qu,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 Zn(ut(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await wy(n,`${C(r)}
32
- `,{encoding:"utf8",mode:384}),await yy(n,e)}async function ns(e,t=process.pid){try{let r=await zr(e);if(r&&r.pid!==t)return;await Me(e,{force:!0})}catch{}}async function Kr(e){let t=await zr(e.registryPath);if(!t)try{return await Xu(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!ar(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await It(t.socket_path,100);return r&&await Py(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 tl(e){let t=await Kr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Me(e.registryPath,{force:!0}),await Kr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await nl(t.entry.pid),await Me(e.registryPath,{force:!0}),await Me(t.entry.socket_path,{force:!0}),await Kr(e)):t}async function Ju(e,t){let r=Date.now()+Ey(),n;for(;Date.now()<r;){if(await It(e))return;if(t){let s=t.spawnError();if(s)throw new Error(gi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(gi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?gi("resident rsp server did not start",t):"resident rsp server did not start")}function Ey(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Sy}async function xy(e){await Me(e,{force:!0})}async function rl(e){await Zn(ut(e),{recursive:!0,mode:448});try{return await hy(e,fi.O_CREAT|fi.O_EXCL|fi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function vy(e,t){let[r,n]=sl(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Yu(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=Ty(`${i}${c}`,Cy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function gi(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:
32
+ `)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},$t="rsp.bundle.min.mjs",Nb=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ji=/^rsp-(.+)\.bundle\.min\.mjs$/,$b=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as ql}from"node:crypto";import{spawn as Vl}from"node:child_process";import{readFileSync as Ub}from"node:fs";import{mkdir as zi,readFile as Kl,rename as Jb,rm as je,stat as qb,writeFile as Vb}from"node:fs/promises";import{dirname as Mt,join as ot,resolve as Yi}from"node:path";import{fileURLToPath as Kb}from"node:url";function He(e){let t=ow(e)??Yi(e),r=sw(t),n=G(t);return{rootDir:t,socketPath:ot(r,"rsp.sock"),pidPath:ot(r,"rsp.pid"),lockPath:ot(r,"rsp.lock"),wakeLockPath:ot(t,".red","tmp","rsp","wake.lock"),summaryPath:ot(n,"rsp-status-summary.json"),registryPath:ot(n,"rsp-resident.pid.json")}}async function ws(e,t){if(await zi(Mt(e.socketPath),{recursive:!0,mode:448}),await Ul(e.socketPath,t))return;await Wl(e,t);let r=await Zl(e.lockPath);if(r)try{if(await Ul(e.socketPath,t))return;await Wl(e,t),await Xb(e.socketPath);let n=Qb(e,t);await Gl(e.socketPath,n);return}finally{await r.close(),await je(e.lockPath,{force:!0})}await Gl(e.socketPath)}async function Bt(e,t=200){try{return await Yl(e,t)!=null}catch{return!1}}async function Yl(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:ql(),op:"ping"});return r.ok?rd(r.value)?{version:uw(r.value.version)}:{}:null}async function _s(e,t){if(await zi(Mt(e.socketPath),{recursive:!0,mode:448}),await Bt(e.socketPath,50))return!1;let r=await Zl(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=ed(e,t);return Vl(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 Xl(e,t){try{await ws(e,t)}finally{await je(e.wakeLockPath,{force:!0})}}async function sn(e){try{let t=tw(await Kl(e,"utf8"));return lw(t)?t:null}catch{return null}}async function Rs(e,t){let r={version:zl,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 zi(Mt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Vb(n,`${C(r)}
33
+ `,{encoding:"utf8",mode:384}),await Jb(n,e)}async function ks(e,t=process.pid){try{let r=await sn(e);if(r&&r.pid!==t)return;await je(e,{force:!0})}catch{}}async function nn(e){let t=await sn(e.registryPath);if(!t)try{return await Kl(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Nt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await Bt(t.socket_path,100);return r&&await nw(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 Ql(e){let t=await nn(e);return t.state==="registered-dead"||t.state==="invalid"?(await je(e.registryPath,{force:!0}),await nn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ji(t.entry.pid),await je(e.registryPath,{force:!0}),await je(t.entry.socket_path,{force:!0}),await nn(e)):t}async function Gl(e,t){let r=Date.now()+Yb(),n;for(;Date.now()<r;){if(await Bt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Vi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Vi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?Vi("resident rsp server did not start",t):"resident rsp server did not start")}function Yb(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:zb}async function Xb(e){await je(e,{force:!0})}function Qb(e,t){let[r,n]=ed(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Vl(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=ew(`${i}${c}`,Zb)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function Vi(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:
33
34
  ${s}`),n.join(`
34
- `)}function Ty(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Ay(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function qu(e,t){try{let r=await zr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!ar(r.pid)){await Me(e.registryPath,{force:!0});return}if(await It(r.socket_path,100))return;if(ol(t.clientVersion,r.resident_version)&&(await Oy(r.pid,1500),!ar(r.pid))){await Me(e.registryPath,{force:!0});return}await nl(r.pid),await Me(e.registryPath,{force:!0})}catch{}}function ar(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function nl(e){if(!ar(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!ar(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Oy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!ar(e))return;await new Promise(n=>setTimeout(n,50))}}async function Py(e){if(!e.startsWith("file://"))return!1;try{return await by(Ry(e)),!1}catch(t){return t.code==="ENOENT"}}function sl(e,t){let r=Uu(t,{rootDir:e.rootDir});return[r.command,r.args]}function Iy(e){let t=fy("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=le(r,"red-skills",t);if(le(s,"rsp.sock").length<ky)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return le(_y(),`red-skills-${n}`,t)}function Ly(e){let t=yi(e);for(let r=0;r<32;r++){try{let s=hi(le(t,".git"));if(s!=null)return Dy(t,s)??t;if(hi(le(t,".git","HEAD"))!=null||hi(le(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function Dy(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=yi(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?ut(ut(ut(n))):null}function hi(e){try{return gy(e,"utf8")}catch{return null}}async function Vu(e,t){let r=await Zu(e).catch(()=>null);return r?ol(t.clientVersion,r.version)?(await Ny(e,t.clientVersion),await Fy(e),!1):!0:!1}async function Ny(e,t){try{await or({socketPath:e,timeoutMs:200},{id:zu(),op:"handover",clientVersion:t})}catch{}}function ol(e,t){return!e||!t?!1:$y(e,t)>0}function $y(e,t){let r=Ku(e),n=Ku(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ku(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 il(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function My(e){return typeof e=="string"&&e.length>0?e:void 0}function By(e){return il(e)&&e.version===Qu&&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 Fy(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await It(e,50))return;await new Promise(r=>setTimeout(r,50))}}var ky,Qu,Sy,Cy,ss=h(()=>{L();ke();ui();mi();mi();ky=108,Qu=1,Sy=5e3;Cy=8*1024});var Lt={};j(Lt,{RSP_ENTRY_UNRESOLVED:()=>Qe,ResidentRspElisionStore:()=>Yr,RspResidentEntryError:()=>ir,ensureResidentServer:()=>es,kickResidentServer:()=>ts,pingResident:()=>It,readResidentRegistry:()=>zr,removeResidentRegistry:()=>ns,residentRegistryStatus:()=>Kr,resolveResidentPaths:()=>lt,resolveRspEntry:()=>Qn,sweepResidentRegistry:()=>tl,warmResidentServer:()=>el,writeResidentRegistry:()=>rs});import{randomUUID as jy}from"node:crypto";function al(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yr,Ze=h(()=>{"use strict";Gu();ss();Yr=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?al(r)&&r.status==="expired"?r:!al(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 es(this.paths,this.config);let r=await or(this.paths,{...t,id:jy()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var Xr={};j(Xr,{isResidentEntryUnresolved:()=>ll,reportResidentEntryDiagnostic:()=>wi,residentConfigFor:()=>ul,residentElisionStore:()=>bi});function ul(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 bi(e,t,r={}){let n=r.paths??lt(e);return new Yr(n,ul(t,Yn("rsp").version),{ensureResident:r.ensureResident})}function wi(e){return ll(e)?(cl||(cl=!0,process.stderr.write(`rsp: ${Qe} \u2014 elision is off until an rsp entry is installed
35
+ `)}function ew(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function tw(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return D(t)}}async function Wl(e,t){try{let r=await sn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Nt(r.pid)){await je(e.registryPath,{force:!0});return}if(await Bt(r.socket_path,100))return;if(td(t.clientVersion,r.resident_version)&&(await rw(r.pid,1500),!Nt(r.pid))){await je(e.registryPath,{force:!0});return}await ji(r.pid),await je(e.registryPath,{force:!0})}catch{}}async function rw(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Nt(e))return;await new Promise(n=>setTimeout(n,50))}}async function nw(e){if(!e.startsWith("file://"))return!1;try{return await qb(Kb(e)),!1}catch(t){return t.code==="ENOENT"}}function ed(e,t){let r=Hl(t,{rootDir:e.rootDir});return[r.command,r.args]}function sw(e){return Bl({key:e,socketFileName:"rsp.sock"})}function ow(e){let t=Yi(e);for(let r=0;r<32;r++){try{let s=Ki(ot(t,".git"));if(s!=null)return iw(t,s)??t;if(Ki(ot(t,".git","HEAD"))!=null||Ki(ot(t,".red","config.yaml"))!=null)return t}catch{}let n=Mt(t);if(n===t)return null;t=n}return null}function iw(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Yi(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Mt(Mt(Mt(n))):null}function Ki(e){try{return Ub(e,"utf8")}catch{return null}}async function Ul(e,t){let r=await Yl(e).catch(()=>null);return r?td(t.clientVersion,r.version)?(await aw(e,t.clientVersion),await dw(e),!1):!0:!1}async function aw(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:ql(),op:"handover",clientVersion:t})}catch{}}function td(e,t){return!e||!t?!1:cw(e,t)>0}function cw(e,t){let r=Jl(e),n=Jl(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Jl(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 rd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function uw(e){return typeof e=="string"&&e.length>0?e:void 0}function lw(e){return rd(e)&&e.version===zl&&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 dw(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Bt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var zl,zb,Zl,Zb,Ss=h(()=>{L();pe();Hi();Gi();qi();qi();zl=1,zb=5e3;Zl=Ml;Zb=8*1024});var Ft={};M(Ft,{RSP_ENTRY_UNRESOLVED:()=>st,ResidentRspElisionStore:()=>on,RspResidentEntryError:()=>pr,ensureResidentServer:()=>ws,kickResidentServer:()=>_s,pingResident:()=>Bt,readResidentRegistry:()=>sn,removeResidentRegistry:()=>ks,residentRegistryStatus:()=>nn,resolveResidentPaths:()=>He,resolveRspEntry:()=>bs,sweepResidentRegistry:()=>Ql,warmResidentServer:()=>Xl,writeResidentRegistry:()=>Rs});import{randomUUID as mw}from"node:crypto";function nd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var on,Ge=h(()=>{"use strict";Fl();Ss();on=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?nd(r)&&r.status==="expired"?r:!nd(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 ws(this.paths,this.config);let r=await mr(this.paths,{...t,id:mw()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function Qi(e,t,r=sd){let n=Math.max(0,Math.floor(e)),s=r in od?r:sd,o=od[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:Xi(n,o),dollars_saved_low_usd:i==null?null:Xi(i,o),dollars_saved_high_usd:a==null?null:Xi(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:pw}}function Xi(e,t){return fw(Math.max(0,e)/1e6*t)}function an(e){return`$${e.toFixed(6)}`}function fw(e){return Math.round(e*1e6)/1e6}var sd,od,pw,Zi=h(()=>{"use strict";sd="gpt-5",od={"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},pw="estimate derived from byte-based token estimate when token counts are estimated"});var cn={};M(cn,{isResidentEntryUnresolved:()=>cd,reportResidentEntryDiagnostic:()=>ta,residentConfigFor:()=>ad,residentElisionStore:()=>ea});function ad(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 ea(e,t,r={}){let n=r.paths??He(e);return new on(n,ad(t,cs("rsp").version),{ensureResident:r.ensureResident})}function ta(e){return cd(e)?(id||(id=!0,process.stderr.write(`rsp: ${st} \u2014 elision is off until an rsp entry is installed
35
36
  `),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
36
- `)),!0):!1}function ll(e){return typeof e=="object"&&e!==null&&e.code===Qe}var cl,Dt=h(()=>{"use strict";ni();Ze();cl=!1});function Ti(e){return e==="success"?0:e==="failure"?1:2}function Ai(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function et(e,t,r){return{status:e,exitCode:Ti(e),summary:t,...r?{details:r}:{}}}function q(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function ur(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var pl,ml,fl,vi,gl,hl,yl,bl,Ci,Nt=h(()=>{"use strict";pl="rsp.wait.result",ml="rsp.wait.registry",fl="rsp.wait.list",vi={cmd:18e5,pr:27e5,run:27e5,release:72e5},gl=16*1024,hl=1e4,yl=2e3,bl=6e4,Ci={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 qy,readFile as Vy}from"node:fs/promises";async function lr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await as(r),s=[r,...n];if(s.every(c=>!$t(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(wl(e,"SIGTERM"),is(n,"SIGTERM"),await _l(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await as(r)])];wl(e,"SIGKILL"),is(o,"SIGKILL");let i=Math.max(1e3,t);await Ky(e,i);let a=await _l(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter($t)}}function wl(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 is(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function Ky(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 _l(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!$t(n)))return!0;await zy(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!$t(n))}async function as(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await qy("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await Rl(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 Qr(e){return(await Rl(e))?.[19]}async function dr(e,t){if(!$t(e))return!1;if(!t)return!0;let r=await Qr(e);return r===void 0?process.platform!=="linux":r===t}function $t(e){try{return process.kill(e,0),!0}catch{return!1}}async function Rl(e){if(process.platform!=="linux")return null;try{let t=await Vy(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function zy(e){await new Promise(t=>setTimeout(t,e))}var tt=h(()=>{"use strict"});import{constants as Yy}from"node:os";async function kl(e){let t=e[1],r={timeoutMs:vi.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:hl,terminateGraceMs:yl,probeTimeoutMs:bl,format:"toon",captureBytes:gl},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=vi[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=Zr(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Zy(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=Zr(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=Zr(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=Zr(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Qy(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 Xy(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Xy(e){if(!(e.signal in Yy.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(!$t(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await Qr(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function Zr(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 en(e,t,r=process.env){let n=r[e];if(!n)return t;try{return Zr(n)}catch{return t}}function Qy(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Zy(e){return e.startsWith("SIG")?e:`SIG${e}`}var Sl=h(()=>{"use strict";Nt();tt()});import{existsSync as Oi,readFileSync as eb,statSync as tb}from"node:fs";import{basename as El,dirname as cs,isAbsolute as rb,join as xl,resolve as tn}from"node:path";function us(e,t=process.env){let r=tn(e);if(ri.map(i=>t[i]).find(Boolean))return Fu({startDir:r,env:t,exists:Oi});let s=sb(r),o=nb(r,s);return o||(s??r)}function nb(e,t){let r=e;for(;;){if(Oi(xl(r,".red")))return r;if(t&&r===t)return null;let n=tn(r,"..");if(n===r)return null;r=n}}function sb(e){let t=e;for(;;){let r=xl(t,".git");if(Oi(r))return ab(r)?t:ob(r)??t;let n=tn(t,"..");if(n===t)return null;t=n}}function ob(e){let t=ib(e);if(!t)return null;let r=cs(t),n=cs(r);return El(r)!=="worktrees"||El(n)!==".git"?null:cs(n)}function ib(e){let t;try{t=eb(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return rb(n)?tn(n):tn(cs(e),n)}function ab(e){try{return tb(e).isDirectory()}catch{return!1}}var Pi=h(()=>{ke()});import{join as cb}from"node:path";function lb(e,t=process.env){return us(e,t)}function pr(e,t=process.env){return Bu(lb(e,t))}function vl(e,t=process.env){return cb(pr(e,t),ub)}var ub,Ii=h(()=>{"use strict";ke();Pi();ub="spool"});import{randomUUID as db}from"node:crypto";import{existsSync as pb}from"node:fs";import{mkdir as mb,readdir as fb,readFile as gb,rename as hb,rm as Li,writeFile as yb}from"node:fs/promises";import{dirname as bb,join as Tl}from"node:path";function Al(e,t,r=process.env){return Tl(pr(e,r),`${t}${wb}`)}async function mr(e,t){await Di(e,`${H(t)}
37
- `)}async function ls(e,t,r){t.status=r,await mr(e,t)}async function ds(e,t=process.env){let r=pr(e,t);if(!pb(r))return[];let n=await fb(r).catch(()=>[]),s=[];for(let o of n.filter(i=>_b.some(a=>i.endsWith(a)))){let i=Tl(r,o),a=await Rb(i);if(!a){await Li(i,{force:!0});continue}if(!await kb(a)){await Li(i,{force:!0});continue}s.push(a)}return s}async function Rb(e){let t;try{t=await gb(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Sb(r);return n&&Object.keys(n).length>0?n:null}async function kb(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 dr(t,r)}function Sb(e){try{let t=N(e);if(Cl(t))return t}catch{}try{let t=JSON.parse(e);if(Cl(t))return t}catch{}return null}async function Di(e,t){await mb(bb(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${db()}`;try{await yb(r,t,"utf8"),await hb(r,e)}finally{await Li(r,{force:!0})}}function Ni(e){return{schema:ml,version:1,...e}}function Cl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wb,_b,nn=h(()=>{"use strict";L();$e();Nt();Ii();tt();wb=".toon",_b=[".toon",".json"]});function fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){return fr(e)?e:{}}function Mt(e){return Array.isArray(e)?e.filter(fr):[]}function V(e,t){let r=e[t];return typeof r=="string"?r:""}function gr(e,t){let r=e[t];return typeof r=="number"?r:0}function $i(e){let t=JSON.parse(e);if(!fr(t))throw new Error("expected JSON object");return t}function ps(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var ms=h(()=>{"use strict"});import{spawn as Eb}from"node:child_process";import{resolve as xb}from"node:path";async function Ol(e,t,r){let n=[];if(e.signalPid){let s=await vb(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Cb(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function vb(e){let t=e.signalPid;if(!await dr(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:Pl(r),pid:t,signal:e.signal}}}async function Cb(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await Tb(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?xb(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 Tb(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=Eb(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,lr(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:Pl(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 Pl(e){return e instanceof Error?e.message:String(e)}var Il=h(()=>{"use strict";ms();tt()});import{resolve as Ab}from"node:path";async function Ll(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=Ob(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=sn(t,r,o,{status:"pending"},i);await on(n.resultFile,a,n.format);let c=await Ol(n,a,s),u=sn(t,r,o,c,i);return await on(n.resultFile,u,n.format),{result:u,exitCode:Dl(o,c)}}function Dl(e,t){return t.status!=="success"||e.status==="running"?2:Ti(e.status)}function Ob(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 sn(e,t,r,n,s){return{schema:pl,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:Dl(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function on(e,t,r){e&&await Di(Ab(e),hr(t,r))}function hr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
38
- `:`${H(e)}
39
- `}var Nl=h(()=>{"use strict";$e();Nt();nn();Il()});import{createWriteStream as Pb,mkdirSync as Ib}from"node:fs";import{readFile as Lb,rm as Db}from"node:fs/promises";import{dirname as Nb}from"node:path";import{join as $l}from"node:path";function Ml(e,t,r){return{stdout:new fs(r,$l(e,`${t}.stdout.bin`)),stderr:new fs(r,$l(e,`${t}.stderr.bin`))}}function $b(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!Mb(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function Mb(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var fs,Bl=h(()=>{"use strict";fs=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,...$b(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 Lb(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{Ib(Nb(this.spoolPath),{recursive:!0}),t=Pb(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 Db(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as Bb,readFileSync as jA}from"node:fs";import{dirname as Fb,join as jb}from"node:path";function Fl(e,t){let r=e;for(let n=0;n<16;n++){let s=jb(r,t);if(Bb(s))return s;let o=Fb(r);if(o===r)break;r=o}return null}function Hb(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function gs(e,t){let r=[];for(let n of e.split(`
40
- `)){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 Hb(u)}}var jl=h(()=>{});var ql={};j(ql,{DEFAULT_RSP_BYTE_BUDGET:()=>ve,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>xe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>nt,DEFAULT_RSP_IDLE_MS:()=>bs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Jl,DEFAULT_RSP_STORE_PATH:()=>Mi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>ys,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Gl,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Wl,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>hs,DEFAULT_RSP_TTL_DAYS:()=>Ee,MIN_RSP_IDLE_MS:()=>Ul,resolveRspConfig:()=>Ce});import{existsSync as Gb,readFileSync as Wb}from"node:fs";import{join as Ub,resolve as Hl}from"node:path";function Ce(e,t,r){let n=Fl(Hl(e),Ub(".red","config.yaml")),s=n?Wb(n,"utf8"):"",o=gs(s,"rsp.enabled")==="true",i=gs(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=rt(Se(s,"rsp.ttlDays"),Ee),u=rt(yr(t.RSP_EPHEMERAL_TTL_HOURS)??Se(s,"rsp.ephemeralTtlHours"),xe),l=rt(Se(s,"rsp.byteBudget"),ve),p=rt(Se(s,"rsp.telemetryTtlDays"),hs),d=rt(Se(s,"rsp.telemetryByteBudget")??Se(s,"rsp.byteBudget"),ys),m=rt(yr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Se(s,"rsp.telemetryDrainIntervalMs"),Gl),f=rt(yr(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Se(s,"rsp.telemetryDrainTimeoutMs"),Wl),_=Jb(yr(t.RSP_IDLE_MS)??Se(s,"rsp.idleMs"),bs,Ul),g=rt(yr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Se(s,"rsp.heavyGitByteThreshold"),nt),y=qb(yr(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??Se(s,"rsp.measurement.holdoutShare"),Jl),b=lt(e).rootDir,w=r??t.RSP_STORE_URI??`file://${Mu(Hl(b),Gb)}`;return{enabled:o,proxyEnabled:a,storeUri:w,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y}}function Se(e,t){let r=gs(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function rt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Jb(e,t,r){let n=rt(e,t);return Math.max(n,r)}function qb(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function yr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var nt,Mi,Ee,xe,ve,hs,ys,Gl,Wl,bs,Ul,Jl,Te=h(()=>{"use strict";jl();ke();ss();nt=8*1024,Mi=Nu,Ee=7,xe=6,ve=64*1024*1024,hs=90,ys=4*1024*1024,Gl=3e4,Wl=2e3,bs=5*6e4,Ul=5e3,Jl=0});function Vl(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Dt(),Xr)),o=s(e,Ce(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Kl=h(()=>{"use strict";Te()});import{spawn as Vb}from"node:child_process";async function Yl(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:q("missing command line")};let a=e.store??Vl(n),c=Ml(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await ls(s,o,y.verdict.status).catch(()=>{}),u(y))},m=Vb(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});m.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),m.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||p)return;p=!0,clearTimeout(g);let w=await lr(m,r.terminateGraceMs),x=await zl(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:x},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${Xl(r.timeoutMs)}`)},r.timeoutMs);m.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),m.once("close",(y,b)=>{if(clearTimeout(g),l||p)return;let w=y===0;zl(y,b,c,a,t).then(x=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:x}}))}),i.aborted&&_()})}async function ws(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:Kb(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=q(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Bi(l),await mr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await ls(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),m=Math.min(p+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await zb(m,i,f)}return await ls(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Xl(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Bi(u)}:{attempts:c}}}}async function zl(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 Bi(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function Kb(e,t,r){return q("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Bi(e)}:{}})}async function zb(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 Xl(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Ql=h(()=>{"use strict";Bl();Kl();Nt();tt();nn()});var Fi,ji,Hi,se,K,de,Fe,an,_s=h(()=>{"use strict";Fi="rsp-telemetry.spool.toonl",ji="rsp-telemetry.spool.jsonl",Hi="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",K="rsp_decisions_v1",de="rsp_telemetry_invocations_v1",Fe="rsp_telemetry_degradations_v1",an="rsp_telemetry_index_v1"});function br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pe(e){return dt(e)??0}function dt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Gi=h(()=>{"use strict"});import{randomUUID as Ui,createHash as Yb}from"node:crypto";import{appendFileSync as nd,existsSync as Xb,mkdirSync as sd}from"node:fs";import{mkdir as od,readdir as Qb,readFile as id,rename as Zb,rm as ad,writeFile as Ji}from"node:fs/promises";import{basename as Wi,dirname as cn,join as wr,resolve as Zl}from"node:path";function ks(e){if(!e)return null;let t=Zl(e);for(;;){if(Xb(wr(t,".red")))return t;let r=Zl(wr(t,".."));if(r===t)break;t=r}return null}function st(e){return wr(X(e),Fi)}function Ss(e){return wr(X(e),ji)}function Vi(e){return wr(X(e),Hi)}async function ot(e,t){pt(e,t)}function pt(e,t){try{let r=ks(e);if(!r)return;let n=st(r);sd(cn(n),{recursive:!0}),nd(n,ow({spool_id:Ui(),event:tw(t)}),{encoding:"utf8",mode:384})}catch{}}function tw(e){return ed(ed(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function ed(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=ew)return e;let o={...e};return delete o[t],pe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function rw(e){let t=ks(e);if(!t)return[];let r=st(t);await od(cn(r),{recursive:!0}).catch(()=>{});let n=await ld(t),s=[...await dd(t),...await aw(n)];return await Promise.all(n.map(o=>ad(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Ki(e,t){let r=ks(e);if(!r)return;let n=st(r);await od(cn(n),{recursive:!0}).catch(()=>{}),await iw(r);for(let s of await nw(r))await td(r,s,t);for(let s of await dd(r))await cd(r,s,t,!0);for(let s of await ld(r))await td(r,s,t)}async function nw(e){let t=[st(e),Ss(e)],r=cn(t[0]);return(await Qb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Wi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Wi(c)}.`));if(!o)return!1;let i=`${Wi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&sw(a))}).sort().map(s=>wr(r,s))}function sw(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function td(e,t,r){try{let n=await ud(t);for(let s of pd(n))await cd(e,s,r,!1)}finally{await ad(t,{force:!0})}}async function cd(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&rd(e,{correction_id:Ui(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}rd(e,{correction_id:Ui(),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 ud(e){let t="";for(let r=0;r<5;r++){let n=await id(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function _r(e){try{let t=JSON.parse(e);return!br(t)||t.collection!==se&&t.collection!==K&&t.collection!==de&&t.collection!==Fe?null:t}catch{return null}}function ow(e){return ze().push(lw(e))}function rd(e,t){try{let r=ks(e);if(!r)return;let n=Vi(r);sd(cn(n),{recursive:!0});let s=ze();nd(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 ld(e){let t=[st(e),Ss(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Zb(n,s),await Ji(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function iw(e){await Promise.all([Ji(st(e),"",{flag:"a"}),Ji(Ss(e),"",{flag:"a"})]).catch(()=>{})}async function aw(e){let t=[];for(let r of e)t.push(...pd(await ud(r)));return t}async function dd(e){let t=await id(Vi(e),"utf8").catch(()=>""),r=new Map;for(let n of cw(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:_r(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function pd(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(br(o)){let i=_r(JSON.stringify(o));t.push(i?{spool_id:Rs(JSON.stringify(o)),event:i}:{spool_id:Rs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Rs(s),raw_line:s});continue}try{for(let o of Ke(`${r}
37
+ `)),!0):!1}function cd(e){return typeof e=="object"&&e!==null&&e.code===st}var id,jt=h(()=>{"use strict";xi();Ge();id=!1});function la(e){return e==="success"?0:e==="failure"?1:2}function da(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function it(e,t,r){return{status:e,exitCode:la(e),summary:t,...r?{details:r}:{}}}function Y(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function gr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var pd,fd,gd,ca,hd,yd,bd,wd,ua,Ht=h(()=>{"use strict";pd="rsp.wait.result",fd="rsp.wait.registry",gd="rsp.wait.list",ca={cmd:18e5,pr:27e5,run:27e5,release:72e5},hd=16*1024,yd=1e4,bd=2e3,wd=6e4,ua={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 _w,readFile as Rw}from"node:fs/promises";async function hr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await vs(r),s=[r,...n];if(s.every(c=>!Gt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(_d(e,"SIGTERM"),xs(n,"SIGTERM"),await Rd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await vs(r)])];_d(e,"SIGKILL"),xs(o,"SIGKILL");let i=Math.max(1e3,t);await kw(e,i);let a=await Rd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Gt)}}function _d(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 xs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function kw(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 Rd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Gt(n)))return!0;await Sw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Gt(n))}async function vs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await _w("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await kd(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function un(e){return(await kd(e))?.[19]}async function yr(e,t){if(!Gt(e))return!1;if(!t)return!0;let r=await un(e);return r===void 0?process.platform!=="linux":r===t}function Gt(e){try{return process.kill(e,0),!0}catch{return!1}}async function kd(e){if(process.platform!=="linux")return null;try{let t=await Rw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function Sw(e){await new Promise(t=>setTimeout(t,e))}var at=h(()=>{"use strict"});import{constants as Ew}from"node:os";async function Sd(e){let t=e[1],r={timeoutMs:ca.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:yd,terminateGraceMs:bd,probeTimeoutMs:wd,format:"toon",captureBytes:hd},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=ca[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=ln(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Cw(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=ln(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=ln(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=ln(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=vw(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 xw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function xw(e){if(!(e.signal in Ew.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(!Gt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await un(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function ln(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 dn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return ln(n)}catch{return t}}function vw(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Cw(e){return e.startsWith("SIG")?e:`SIG${e}`}var Ed=h(()=>{"use strict";Ht();at()});import{existsSync as ma,readFileSync as Tw,statSync as Ow}from"node:fs";import{basename as xd,dirname as Cs,isAbsolute as Aw,join as vd,resolve as mn}from"node:path";function Ts(e,t=process.env){let r=mn(e);if(Ci.map(i=>t[i]).find(Boolean))return Cl({startDir:r,env:t,exists:ma});let s=Iw(r),o=Pw(r,s);return o||(s??r)}function Pw(e,t){let r=e;for(;;){if(ma(vd(r,".red")))return r;if(t&&r===t)return null;let n=mn(r,"..");if(n===r)return null;r=n}}function Iw(e){let t=e;for(;;){let r=vd(t,".git");if(ma(r))return Nw(r)?t:Lw(r)??t;let n=mn(t,"..");if(n===t)return null;t=n}}function Lw(e){let t=Dw(e);if(!t)return null;let r=Cs(t),n=Cs(r);return xd(r)!=="worktrees"||xd(n)!==".git"?null:Cs(n)}function Dw(e){let t;try{t=Tw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Aw(n)?mn(n):mn(Cs(e),n)}function Nw(e){try{return Ow(e).isDirectory()}catch{return!1}}var pa=h(()=>{pe()});import{join as $w}from"node:path";function Bw(e,t=process.env){return Ts(e,t)}function br(e,t=process.env){return vl(Bw(e,t))}function Cd(e,t=process.env){return $w(br(e,t),Mw)}var Mw,fa=h(()=>{"use strict";pe();pa();Mw="spool"});import{randomUUID as Fw}from"node:crypto";import{existsSync as jw}from"node:fs";import{mkdir as Hw,readdir as Gw,readFile as Ww,rename as Uw,rm as ga,writeFile as Jw}from"node:fs/promises";import{dirname as qw,join as Od}from"node:path";function Ad(e,t,r=process.env){return Od(br(e,r),`${t}${Vw}`)}async function wr(e,t){await ha(e,`${W(t)}
38
+ `)}async function Os(e,t,r){t.status=r,await wr(e,t)}async function As(e,t=process.env){let r=br(e,t);if(!jw(r))return[];let n=await Gw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Kw.some(a=>i.endsWith(a)))){let i=Od(r,o),a=await zw(i);if(!a){await ga(i,{force:!0});continue}if(!await Yw(a)){await ga(i,{force:!0});continue}s.push(a)}return s}async function zw(e){let t;try{t=await Ww(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Xw(r);return n&&Object.keys(n).length>0?n:null}async function Yw(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 yr(t,r)}function Xw(e){try{let t=D(e);if(Td(t))return t}catch{}try{let t=JSON.parse(e);if(Td(t))return t}catch{}return null}async function ha(e,t){await Hw(qw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Fw()}`;try{await Jw(r,t,"utf8"),await Uw(r,e)}finally{await ga(r,{force:!0})}}function ya(e){return{schema:fd,version:1,...e}}function Td(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vw,Kw,fn=h(()=>{"use strict";L();rt();Ht();fa();at();Vw=".toon",Kw=[".toon",".json"]});function _r(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){return _r(e)?e:{}}function Wt(e){return Array.isArray(e)?e.filter(_r):[]}function X(e,t){let r=e[t];return typeof r=="string"?r:""}function Rr(e,t){let r=e[t];return typeof r=="number"?r:0}function ba(e){let t=JSON.parse(e);if(!_r(t))throw new Error("expected JSON object");return t}function Ps(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Is=h(()=>{"use strict"});import{spawn as Qw}from"node:child_process";import{resolve as Zw}from"node:path";async function Pd(e,t,r){let n=[];if(e.signalPid){let s=await e_(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await t_(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function e_(e){let t=e.signalPid;if(!await yr(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:Id(r),pid:t,signal:e.signal}}}async function t_(e,t,r){let n=We(t.wait),s=We(t.verdict);return await r_(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Zw(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 r_(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=Qw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,hr(u,n).then(m=>c({error:`timed out after ${r}ms`,...m.cleaned?{}:{survivors:m.survivors}}))},r);u.once("error",m=>{clearTimeout(l),c({error:Id(m)})}),u.once("close",(m,d)=>{clearTimeout(l),!a&&c(m===0?null:{error:`exited with ${d??m??"unknown"}`,status:m??null,signal:d??null})})})}function Id(e){return e instanceof Error?e.message:String(e)}var Ld=h(()=>{"use strict";Is();at()});import{resolve as n_}from"node:path";async function Dd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=s_(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=gn(t,r,o,{status:"pending"},i);await hn(n.resultFile,a,n.format);let c=await Pd(n,a,s),u=gn(t,r,o,c,i);return await hn(n.resultFile,u,n.format),{result:u,exitCode:Nd(o,c)}}function Nd(e,t){return t.status!=="success"||e.status==="running"?2:la(e.status)}function s_(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 gn(e,t,r,n,s){return{schema:pd,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:Nd(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function hn(e,t,r){e&&await ha(n_(e),kr(t,r))}function kr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
39
+ `:`${W(e)}
40
+ `}var $d=h(()=>{"use strict";rt();Ht();fn();Ld()});import{createWriteStream as o_,mkdirSync as i_}from"node:fs";import{readFile as a_,rm as c_}from"node:fs/promises";import{dirname as u_}from"node:path";import{join as Md}from"node:path";function Bd(e,t,r){return{stdout:new Ls(r,Md(e,`${t}.stdout.bin`)),stderr:new Ls(r,Md(e,`${t}.stderr.bin`))}}function l_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!d_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function d_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ls,Fd=h(()=>{"use strict";Ls=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,...l_(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 a_(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{i_(u_(this.spoolPath),{recursive:!0}),t=o_(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 c_(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as m_,readFileSync as vP}from"node:fs";import{dirname as p_,join as f_}from"node:path";function jd(e,t){let r=e;for(let n=0;n<16;n++){let s=f_(r,t);if(m_(s))return s;let o=p_(r);if(o===r)break;r=o}return null}function g_(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ds(e,t){let r=[];for(let n of e.split(`
41
+ `)){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(m=>m.key).join(".")===t)return g_(u)}}var Hd=h(()=>{});var Xd={};M(Xd,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Er,GH_ETAG_CACHE_DIR_NAME:()=>Jd,LEGACY_GH_ETAG_CACHE_FILE:()=>qd,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Vd,enforceGhEtagCacheCeiling:()=>Ea,ghEtagCacheDir:()=>Ns,ghEtagEntryPath:()=>$s,isCacheEntry:()=>Bs,legacyGhEtagCachePaths:()=>Ra,migrateLegacyGhEtagCache:()=>va,readGhEtagCache:()=>Ms,readGhEtagEntry:()=>ka,resetGhEtagCacheMigrationMemo:()=>k_,sweepGhEtagCache:()=>xa,writeGhEtagEntry:()=>Sa});import{existsSync as h_}from"node:fs";import{mkdir as y_,readdir as b_,rename as w_,rm as Gd,stat as Wd,unlink as Ud,writeFile as __}from"node:fs/promises";import{dirname as R_,join as Sr}from"node:path";function Ns(e){return Sr(G(e),Jd)}function $s(e,t){return Sr(Ns(e),`${v_(t)}.toon`)}function Ra(e){let t=G(e);return[Sr(t,qd),Sr(t,Vd)]}async function ka(e,t){await va(e);try{let r=Yd(await gs($s(e,t)));return Bs(r)?r:void 0}catch{return}}async function Sa(e,t,r={}){return await zd($s(e,t.key),t),await Ea(e,r.maxBytes??Er)}async function Ea(e,t=Er){let r=await E_(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 Ud(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function xa(e,t={}){let r=await va(e,{force:!0}),n=await S_(e);return{...await Ea(e,t.maxBytes??Er),reclaimedTmp:n,migratedEntries:r}}async function Ms(e){for(let t of Ra(e))try{let r=Yd(await gs(t));if(C_(r))return r}catch{}return{version:1,entries:{}}}async function va(e,t={}){if(!t.force&&wa.has(e))return 0;wa.add(e);let r=Ra(e).filter(o=>h_(o));if(r.length===0)return 0;let n=await Ms(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Bs(i))continue;let a=$s(e,o);await x_(a)||(await zd(a,{...i,key:o}),s+=1)}for(let o of r)await Gd(o,{force:!0});return s}function k_(){wa.clear()}async function S_(e){let t=0;for(let r of[G(e),Ns(e)])for(let n of await Kd(r))if(n.endsWith(".tmp"))try{await Ud(Sr(r,n)),t+=1}catch{}return t}async function E_(e){let t=Ns(e),r=[];for(let n of await Kd(t)){if(!n.endsWith(".toon"))continue;let s=Sr(t,n);try{let o=await Wd(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function Kd(e){try{return await b_(e)}catch{return[]}}async function x_(e){try{return await Wd(e),!0}catch{return!1}}async function zd(e,t){await y_(R_(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await __(r,`${C(t)}
42
+ `,{encoding:"utf8",mode:384}),await w_(r,e)}catch(n){throw await Gd(r,{force:!0}),n}}function v_(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Yd(e){try{return JSON.parse(e)}catch{return D(e)}}function C_(e){return _a(e)&&e.version===1&&_a(e.entries)&&Object.values(e.entries).every(Bs)}function Bs(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 Jd,qd,Vd,Er,wa,yn=h(()=>{"use strict";pe();L();U();Jd="gh-etag",qd="gh-etag-cache.toon",Vd="gh-etag-cache.json",Er=4*1024*1024;wa=new Set});var nm={};M(nm,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,DEFAULT_RSP_IDLE_MS:()=>Hs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>rm,DEFAULT_RSP_STORE_PATH:()=>Ca,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>js,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Zd,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>em,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Fs,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>tm,resolveRspConfig:()=>Ae});import{existsSync as T_,readFileSync as O_}from"node:fs";import{join as A_,resolve as Qd}from"node:path";function Ae(e,t,r){let n=jd(Qd(e),A_(".red","config.yaml")),s=n?O_(n,"utf8"):"",o=Ds(s,"rsp.enabled")==="true",i=Ds(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(V(s,"rsp.ttlDays"),Ce),u=ne(Ue(t.RSP_EPHEMERAL_TTL_HOURS)??V(s,"rsp.ephemeralTtlHours"),Te),l=ne(V(s,"rsp.byteBudget"),Oe),m=ne(V(s,"rsp.telemetryTtlDays"),Fs),d=ne(V(s,"rsp.telemetryByteBudget")??V(s,"rsp.byteBudget"),js),p=ne(Ue(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??V(s,"rsp.telemetryDrainIntervalMs"),Zd),f=ne(Ue(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??V(s,"rsp.telemetryDrainTimeoutMs"),em),_=P_(Ue(t.RSP_IDLE_MS)??V(s,"rsp.idleMs"),Hs,tm),g=ne(Ue(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??V(s,"rsp.heavyGitByteThreshold"),ct),y=I_(Ue(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??V(s,"rsp.measurement.holdoutShare"),rm),b=ne(Ue(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??V(s,"rsp.ghEtagCacheMaxBytes"),Er),w={maxOverheadMs:ne(Ue(t.RSP_MAX_OVERHEAD_MS)??V(s,"rsp.overhead.maxOverheadMs"),us),maxSelfStateBytes:ne(Ue(t.RSP_MAX_SELF_STATE_BYTES)??V(s,"rsp.overhead.maxSelfStateBytes"),ls),netLossFloorBytes:ne(V(s,"rsp.overhead.netLossFloorBytes"),ds),consecutiveBreaches:ne(Ue(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??V(s,"rsp.overhead.consecutiveBreaches"),ms),cooldownMs:ne(V(s,"rsp.overhead.cooldownMs"),ps)},S=He(e).rootDir,O=r??t.RSP_STORE_URI??`file://${xl(Qd(S),T_)}`;return{enabled:o,proxyEnabled:a,storeUri:O,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y,ghEtagCacheMaxBytes:b,overhead:w}}function V(e,t){let r=Ds(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 P_(e,t,r){let n=ne(e,t);return Math.max(n,r)}function I_(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Ue(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ct,Ca,Ce,Te,Oe,Fs,js,Zd,em,Hs,tm,rm,Pe=h(()=>{"use strict";Hd();pe();Ss();U();yn();ct=8*1024,Ca=Sl,Ce=7,Te=6,Oe=64*1024*1024,Fs=90,js=4*1024*1024,Zd=3e4,em=2e3,Hs=5*6e4,tm=5e3,rm=0});function sm(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(jt(),cn)),o=s(e,Ae(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var om=h(()=>{"use strict";Pe()});import{spawn as L_}from"node:child_process";async function am(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Y("missing command line")};let a=e.store??sm(n),c=Bd(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await Os(s,o,y.verdict.status).catch(()=>{}),u(y))},p=L_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),p.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||m)return;m=!0,clearTimeout(g);let w=await hr(p,r.terminateGraceMs),S=await im(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:S},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${cm(r.timeoutMs)}`)},r.timeoutMs);p.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),p.once("close",(y,b)=>{if(clearTimeout(g),l||m)return;let w=y===0;im(y,b,c,a,t).then(S=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:S}}))}),i.aborted&&_()})}async function Gs(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:D_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=Y(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ta(l),await wr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Os(s,o,l.status).catch(()=>{}),{verdict:l};let m=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),p=Math.min(m+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await N_(p,i,f)}return await Os(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${cm(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ta(u)}:{attempts:c}}}}async function im(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 Ta(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function D_(e,t,r){return Y("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ta(e)}:{}})}async function N_(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 cm(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var um=h(()=>{"use strict";Fd();om();Ht();at();fn()});var Oa,Aa,Pa,ce,Q,ge,Je,bn,Ws=h(()=>{"use strict";Oa="rsp-telemetry.spool.toonl",Aa="rsp-telemetry.spool.jsonl",Pa="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",Q="rsp_decisions_v1",ge="rsp_telemetry_invocations_v1",Je="rsp_telemetry_degradations_v1",bn="rsp_telemetry_index_v1"});function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function he(e){return gt(e)??0}function gt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Ia=h(()=>{"use strict"});import{randomUUID as Da,createHash as $_}from"node:crypto";import{appendFileSync as fm,existsSync as M_,mkdirSync as gm}from"node:fs";import{mkdir as hm,readdir as B_,readFile as ym,rename as F_,rm as bm,writeFile as Na}from"node:fs/promises";import{basename as La,dirname as wn,join as vr,resolve as lm}from"node:path";function Js(e){if(!e)return null;let t=lm(e);for(;;){if(M_(vr(t,".red")))return t;let r=lm(vr(t,".."));if(r===t)break;t=r}return null}function ut(e){return vr(G(e),Oa)}function qs(e){return vr(G(e),Aa)}function Ma(e){return vr(G(e),Pa)}async function lt(e,t){ht(e,t)}function ht(e,t){try{let r=Js(e);if(!r)return;let n=ut(r);gm(wn(n),{recursive:!0}),fm(n,J_({spool_id:Da(),event:H_(t)}),{encoding:"utf8",mode:384})}catch{}}function H_(e){return dm(dm(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function dm(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=j_)return e;let o={...e};return delete o[t],he(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function G_(e){let t=Js(e);if(!t)return[];let r=ut(t);await hm(wn(r),{recursive:!0}).catch(()=>{});let n=await Rm(t),s=[...await km(t),...await V_(n)];return await Promise.all(n.map(o=>bm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Ba(e,t){let r=Js(e);if(!r)return;let n=ut(r);await hm(wn(n),{recursive:!0}).catch(()=>{}),await q_(r);for(let s of await W_(r))await mm(r,s,t);for(let s of await km(r))await wm(r,s,t,!0);for(let s of await Rm(r))await mm(r,s,t)}async function W_(e){let t=[ut(e),qs(e)],r=wn(t[0]);return(await B_(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${La(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${La(c)}.`));if(!o)return!1;let i=`${La(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&U_(a))}).sort().map(s=>vr(r,s))}function U_(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function mm(e,t,r){try{let n=await _m(t);for(let s of Sm(n))await wm(e,s,r,!1)}finally{await bm(t,{force:!0})}}async function wm(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&pm(e,{correction_id:Da(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}pm(e,{correction_id:Da(),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 _m(e){let t="";for(let r=0;r<5;r++){let n=await ym(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Cr(e){try{let t=JSON.parse(e);return!xr(t)||t.collection!==ce&&t.collection!==Q&&t.collection!==ge&&t.collection!==Je?null:t}catch{return null}}function J_(e){return et().push(Y_(e))}function pm(e,t){try{let r=Js(e);if(!r)return;let n=Ma(r);gm(wn(n),{recursive:!0});let s=et();fm(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 Rm(e){let t=[ut(e),qs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await F_(n,s),await Na(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function q_(e){await Promise.all([Na(ut(e),"",{flag:"a"}),Na(qs(e),"",{flag:"a"})]).catch(()=>{})}async function V_(e){let t=[];for(let r of e)t.push(...Sm(await _m(r)));return t}async function km(e){let t=await ym(Ma(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:Cr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function Sm(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(xr(o)){let i=Cr(JSON.stringify(o));t.push(i?{spool_id:Us(JSON.stringify(o)),event:i}:{spool_id:Us(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Us(s),raw_line:s});continue}try{for(let o of Ze(`${r}
41
43
  ${s}
42
- `))qi(o)&&dw(o)&&t.push({spool_id:o.spool_id,event:md(o)})}catch{s.startsWith("{")&&t.push({spool_id:Rs(s),raw_line:s})}}}return t}function cw(e){return uw(e).map(pw).filter(t=>t!==null)}function uw(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);qi(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Ke(`${r}
44
+ `))$a(o)&&X_(o)&&t.push({spool_id:o.spool_id,event:Em(o)})}catch{s.startsWith("{")&&t.push({spool_id:Us(s),raw_line:s})}}}return t}function K_(e){return z_(e).map(Q_).filter(t=>t!==null)}function z_(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);$a(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Ze(`${r}
43
45
  ${s}
44
- `))qi(o)&&t.push(o)}catch{}}}return t}function Rs(e){return`legacy:${Yb("sha256").update(e).digest("hex").slice(0,24)}`}function lw(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 md(e){let{spool_id:t,...r}=e;return _r(JSON.stringify(r))}function dw(e){return typeof e.spool_id=="string"&&md(e)!==null}function pw(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 qi(e){return br(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var ew,fd=h(()=>{"use strict";ke();L();_s();Gi();ew=64*1024});function Es(e){return e.trim().split(/\s+/).filter(Boolean)}function un(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function ln(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function me(e){let t=Es(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Bt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Bt(t)&&t[1]?`gh ${t[1]} json-jq`:Bt(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 Bt(e){return e[0]==="gh"&&e.some(mw)}function mw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Rr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var dn=h(()=>{"use strict"});var J,xs=h(()=>{"use strict";Te();J="rsp_elisions_v1"});import{spawnSync as fn}from"node:child_process";import{createHash as Xi}from"node:crypto";import{existsSync as fw}from"node:fs";import{mkdir as gw,readFile as hw,readdir as gd,rename as yw,writeFile as bw}from"node:fs/promises";import{homedir as ww}from"node:os";import{basename as _w,dirname as Rw,join as pn}from"node:path";import{fileURLToPath as kw}from"node:url";import{gunzipSync as Sw,gzipSync as Ew}from"node:zlib";function gn(e,t){return`el:${Xi("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 mt(e){return`record:${e.slice(3)}`}function jt(e){return`expired:${e.slice(3)}`}function Ts(){return"index:v1"}function xw(e){return`blob:${e}`}function hd(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function it(e){let t=Es(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":As(t)?"re-executable":"ephemeral"}return"ephemeral"}function hn(e){return Ls(e.storage_class)?e.storage_class:it(e.command)}function yd(e){return Ls(e.storage_class)?e.storage_class:it(e.command)}function Qi(e){let t=Tw(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=yd(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 Zi(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:vw(o),storage_class:yd(s),recover:`rsp show ${s.handle}`}})}function vw(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 ea(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 Ht(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 ta(e,t){let r=process.cwd(),n=fn("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=fn("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:Cw(r),original_bytes:e.length}:null}function Cw(e){let t=zi(e,["rev-parse","HEAD"])||"unborn",r=zi(e,["write-tree"])||"no-index",n=zi(e,["status","--porcelain=v1","-z"])||"";return Xi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function zi(e,t){let r=fn("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ra(e,t){let r=Es(t);if(!As(r))return null;let n=Rd(process.cwd(),r,e.length);return!n||Ft(n)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Ft(e)}}function As(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 Ft(e){return Xi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function na(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 sa(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 oa(e,t,r){let n=Ew(e);return{key:xw(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function bd(e){try{let t=Sw(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function wd(e){let t=e.object_ids[0];if(!t)return null;let r=fn("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 _d(e){if(!As(e.argv))return null;let t=Rd(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
45
- `,"utf8"),t]):null}function Rd(e,t,r){let n=t[0];if(!n)return null;let s=fn(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 Tw(){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 yn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Cs(e){return/^blob:[a-f0-9]{64}$/.test(e)}function kd(e){if(!mn(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:mn(e.scope)?e.scope:void 0,ranking:mn(e.ranking)?e.ranking:void 0}}}function Sd(e){if(!mn(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 mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ed(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 gd(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 xd(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=mn(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 Os(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function bn(e){if(!fe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Ow(e.derivation_recipe),n=Pw(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Cs(s);return e.collection===J&&typeof e.handle=="string"&&yn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||aa(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Cs(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Aw(e.loss)&&(e.storage_class===void 0||Ls(e.storage_class))}function ia(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!fe(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&yn(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||Ls(t.storage_class))&&(r===void 0||typeof r=="string"&&Cs(r))})}function Ps(e){return fe(e)&&typeof e.key=="string"&&Cs(e.key)&&aa(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 Is(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Aw(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Ls(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Ow(e){return fe(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 Pw(e){return fe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&As(e.argv)&&typeof e.original_bytes=="number"&&aa(e.content_hash)}function aa(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vd(e){try{let n=(await hw(e,"utf8")).trim();if(n==="")return vs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(Iw(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=vs();return await kr(e,s),s}let n=vs();return await kr(e,n),n}let t=vs();return await kr(e,t),t}async function Cd(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Td(e){return _w(e)==="red-skills.rdb"}async function Ds(){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(ww(),".cache","red-skills","bundles")),t=pn(e,"reddb"),r;try{r=await gd(t)}catch{return}r.sort().reverse();for(let n of r){let s=pn(t,n,process.platform==="win32"?"red.exe":"red");if(fw(s)){process.env.REDDB_BIN=s;return}}}async function kr(e,t){await gw(Rw(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await bw(r,`${C(Yi(t))}
46
- `,"utf8"),await yw(r,e)}function Yi(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=>Yi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Yi(n));return t}return String(e)}function vs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Iw(e){return fe(e)&&e.version===1&&fe(e.records)&&Object.values(e.records).every(bn)&&(e.blobs===void 0||fe(e.blobs)&&Object.values(e.blobs).every(Ps))&&fe(e.tombstones)&&Object.values(e.tombstones).every(Is)&&ia(e.index)}function Ad(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return kw(e)}var Ns=h(()=>{"use strict";L();dn();xs()});async function Od(e,t){return Lw?$w(e,t):Dw?Bw(e,t):Nw(e,t)}async function Nw(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 $w(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:Mw(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Mw(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 Bw(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:Fw(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Fw(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Lw,Dw,Pd=h(()=>{Lw=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Dw=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as jw}from"node:fs";import{join as Hw}from"node:path";function Id(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=Hw(r,"bin",t);if(jw(o))return o;throw new Error(`reddb: binary "${t}" not found.
46
+ `))$a(o)&&t.push(o)}catch{}}}return t}function Us(e){return`legacy:${$_("sha256").update(e).digest("hex").slice(0,24)}`}function Y_(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 Em(e){let{spool_id:t,...r}=e;return Cr(JSON.stringify(r))}function X_(e){return typeof e.spool_id=="string"&&Em(e)!==null}function Q_(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 $a(e){return xr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var j_,xm=h(()=>{"use strict";pe();L();Ws();Ia();j_=64*1024});function Vs(e){return e.trim().split(/\s+/).filter(Boolean)}function _n(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Rn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ye(e){let t=Vs(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Ut(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Ut(t)&&t[1]?`gh ${t[1]} json-jq`:Ut(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 Ut(e){return e[0]==="gh"&&e.some(Z_)}function Z_(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Tr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var kn=h(()=>{"use strict"});var K,Ks=h(()=>{"use strict";Pe();K="rsp_elisions_v1"});import{spawnSync as xn}from"node:child_process";import{createHash as Ha}from"node:crypto";import{existsSync as eR}from"node:fs";import{mkdir as tR,readFile as rR,readdir as vm,rename as nR,writeFile as sR}from"node:fs/promises";import{homedir as oR}from"node:os";import{basename as iR,dirname as aR,join as Sn}from"node:path";import{fileURLToPath as cR}from"node:url";import{gunzipSync as uR,gzipSync as lR}from"node:zlib";function vn(e,t){return`el:${Ha("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 yt(e){return`record:${e.slice(3)}`}function qt(e){return`expired:${e.slice(3)}`}function Xs(){return"index:v1"}function dR(e){return`blob:${e}`}function Cm(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function dt(e){let t=Vs(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":Qs(t)?"re-executable":"ephemeral"}return"ephemeral"}function Cn(e){return ro(e.storage_class)?e.storage_class:dt(e.command)}function Tm(e){return ro(e.storage_class)?e.storage_class:dt(e.command)}function Ga(e){let t=fR(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Tm(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 Wa(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:mR(o),storage_class:Tm(s),recover:`rsp show ${s.handle}`}})}function mR(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 Ua(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 Vt(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 Ja(e,t){let r=process.cwd(),n=xn("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=xn("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:pR(r),original_bytes:e.length}:null}function pR(e){let t=Fa(e,["rev-parse","HEAD"])||"unborn",r=Fa(e,["write-tree"])||"no-index",n=Fa(e,["status","--porcelain=v1","-z"])||"";return Ha("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Fa(e,t){let r=xn("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function qa(e,t){let r=Vs(t);if(!Qs(r))return null;let n=Im(process.cwd(),r,e.length);return!n||Jt(n)!==Jt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Jt(e)}}function Qs(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 Jt(e){return Ha("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Va(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 Ka(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 za(e,t,r){let n=lR(e);return{key:dR(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function Om(e){try{let t=uR(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Am(e){let t=e.object_ids[0];if(!t)return null;let r=xn("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 Pm(e){if(!Qs(e.argv))return null;let t=Im(e.cwd,e.argv,e.original_bytes);return t?Jt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
47
+ `,"utf8"),t]):null}function Im(e,t,r){let n=t[0];if(!n)return null;let s=xn(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 fR(){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 Tn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ys(e){return/^blob:[a-f0-9]{64}$/.test(e)}function Lm(e){if(!En(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:En(e.scope)?e.scope:void 0,ranking:En(e.ranking)?e.ranking:void 0}}}function Dm(e){if(!En(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 En(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Nm(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 vm(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=Sn(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 $m(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=En(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 Zs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function On(e){if(!be(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=hR(e.derivation_recipe),n=yR(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Ys(s);return e.collection===K&&typeof e.handle=="string"&&Tn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Xa(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Ys(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&gR(e.loss)&&(e.storage_class===void 0||ro(e.storage_class))}function Ya(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!be(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Tn(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||ro(t.storage_class))&&(r===void 0||typeof r=="string"&&Ys(r))})}function eo(e){return be(e)&&typeof e.key=="string"&&Ys(e.key)&&Xa(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 to(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function gR(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function ro(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function hR(e){return be(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function yR(e){return be(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Qs(e.argv)&&typeof e.original_bytes=="number"&&Xa(e.content_hash)}function Xa(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Mm(e){try{let n=(await rR(e,"utf8")).trim();if(n==="")return zs();let s;try{s=JSON.parse(n)}catch{s=D(n)}if(bR(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=zs();return await Or(e,s),s}let n=zs();return await Or(e,n),n}let t=zs();return await Or(e,t),t}async function Bm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Fm(e){return iR(e)==="red-skills.rdb"}async function no(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Sn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Sn(oR(),".cache","red-skills","bundles")),t=Sn(e,"reddb"),r;try{r=await vm(t)}catch{return}r.sort().reverse();for(let n of r){let s=Sn(t,n,process.platform==="win32"?"red.exe":"red");if(eR(s)){process.env.REDDB_BIN=s;return}}}async function Or(e,t){await tR(aR(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await sR(r,`${C(ja(t))}
48
+ `,"utf8"),await nR(r,e)}function ja(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=>ja(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=ja(n));return t}return String(e)}function zs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function bR(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(On)&&(e.blobs===void 0||be(e.blobs)&&Object.values(e.blobs).every(eo))&&be(e.tombstones)&&Object.values(e.tombstones).every(to)&&Ya(e.index)}function jm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return cR(e)}var so=h(()=>{"use strict";L();kn();Ks()});async function Hm(e,t){return wR?kR(e,t):_R?ER(e,t):RR(e,t)}async function RR(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 kR(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:SR(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*SR(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 ER(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:xR(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*xR(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var wR,_R,Gm=h(()=>{wR=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",_R=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as vR}from"node:fs";import{join as CR}from"node:path";function Wm(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=CR(r,"bin",t);if(vR(o))return o;throw new Error(`reddb: binary "${t}" not found.
47
49
  expected at: ${o}
48
50
  override: set ${n}=/path/to/${t}
49
51
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
50
- or check the postinstall log for a download error.`)}var Ld=h(()=>{});import{fileURLToPath as Gw}from"node:url";import{dirname as Ww,resolve as Uw,join as $O}from"node:path";function Vw(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Dd(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Id({name:Vw(),packageRoot:qw,envVar:"REDDB_BIN"})}var Jw,qw,Nd=h(()=>{Ld();Jw=Ww(Gw(import.meta.url)),qw=Uw(Jw,"..")});var Kw,zw,v,$s,ft=h(()=>{Kw=new TextEncoder,zw=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},$s=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(Kw.encode(s+`
51
- `)).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(zw.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 ua(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:/"?Yw(e):Xw(e)}function Yw(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=Qw(s),a=r.port?Number(r.port):ca(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 Xw(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):ca(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):ca(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 Qw(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 ca(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 la=h(()=>{ft()});function e_(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $d(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $d(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $d(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 t_(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 Zw,wn,da=h(()=>{ft();Zw=new Set(["embedded"]),wn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Zw.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:t_(n.value)}async put(t,r,n,s={}){this._guard("put");let o=e_(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 pa(e,t){return`${ma(e)}.${r_(t)}`}function ma(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 r_(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function n_(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 Md(e){return`'${String(e).replace(/'/g,"''")}'`}var Sr,fa=h(()=>{ft();Sr=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(Md).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${pa(s,t)} = ${n_(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 ${pa(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 ${pa(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 ${ma(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(Md).join(", ")}] FROM ${ma(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(`
52
+ or check the postinstall log for a download error.`)}var Um=h(()=>{});import{fileURLToPath as TR}from"node:url";import{dirname as OR,resolve as AR,join as AI}from"node:path";function LR(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Jm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Wm({name:LR(),packageRoot:IR,envVar:"REDDB_BIN"})}var PR,IR,qm=h(()=>{Um();PR=OR(TR(import.meta.url)),IR=AR(PR,"..")});var DR,NR,v,oo,bt=h(()=>{DR=new TextEncoder,NR=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},oo=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(DR.encode(s+`
53
+ `)).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(NR.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 Za(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:/"?$R(e):MR(e)}function $R(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=BR(s),a=r.port?Number(r.port):Qa(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 MR(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):Qa(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):Qa(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 BR(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 Qa(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 ec=h(()=>{bt()});function jR(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Vm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Vm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Vm(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 HR(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 FR,An,tc=h(()=>{bt();FR=new Set(["embedded"]),An=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&FR.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:HR(n.value)}async put(t,r,n,s={}){this._guard("put");let o=jR(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 rc(e,t){return`${nc(e)}.${GR(t)}`}function nc(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 GR(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function WR(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 Km(e){return`'${String(e).replace(/'/g,"''")}'`}var Ar,sc=h(()=>{bt();Ar=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(Km).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${rc(s,t)} = ${WR(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 ${rc(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 ${rc(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 ${nc(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(Km).join(", ")}] FROM ${nc(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(`
52
54
 
53
55
  `)){let l=u.split(`
54
- `).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function s_(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=at(e),a=at(t),c=s!=null?` GROUP ${at(s)}`:"",u=o!=null?ha(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function at(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 ha(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 o_(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function i_(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 ${o_(e.priority)}`),e.key!=null&&(t+=` KEY ${ya(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ya(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function a_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ya(e):JSON.stringify(e)}function ya(e){return`'${String(e).replace(/'/g,"''")}'`}function ga(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var _n,ba=h(()=>{ft();_n=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${at(t)}`})}push(t,r,n={}){let s=i_(n);return this.client.call("query",{sql:`QUEUE PUSH ${at(t)} ${a_(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${at(t)}${ha(r)}`});return ga(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${at(t)}${ha(r)}`});return ga(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${at(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${at(t)}`})}async readWait(t,r,n={}){let s=s_(t,r,n),o=await this.client.call("query",{sql:s});return ga(o)}}});function Bd(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function c_(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 Ms(e){return String(e).split(".").map(Fd).join(".")}function Fd(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 u_(e){return jd(JSON.stringify(e))}function l_(e){return JSON.stringify(e)}function d_(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?u_(e):jd(e)}function jd(e){return`'${String(e).replace(/'/g,"''")}'`}var Rn,wa=h(()=>{ft();Rn=class{constructor(t){this.db=t}async insert(t,r){Bd(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Ms(t)} DOCUMENT VALUES (${l_(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=c_(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 ${Ms(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Bd(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])=>`${Fd(c)} = ${d_(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Ms(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 ${Ms(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function p_(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${gt(r)}.${gt(n)})`}return f_(e)}function m_(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 gt(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 f_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Hd(e)}function Hd(e){return`'${String(e).replace(/'/g,"''")}'`}var kn,_a=h(()=>{kn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){m_(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Hd).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${gt(s)} ${gt(t)} = ${p_(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${gt(n)} ${gt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${gt(n)} ${gt(t)}`})}}});function g_(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 Er(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 h_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Gd(e)}function Gd(e){return`'${String(e).replace(/'/g,"''")}'`}var Sn,Ra=h(()=>{Sn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){g_(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Gd).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Er(s)}.${Er(t)} = ${h_(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Er(n)}.${Er(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Er(n)}.${Er(t)}`})}}});async function Ud(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(y_)}async function Jd(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${w_(t)}`)).rows??[]).some(n=>n.name===String(t))}function y_(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Wd(e){return String(e).split(".").map(b_).join(".")}function b_(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 w_(e){return`'${String(e).replace(/'/g,"''")}'`}var En,ka=h(()=>{ft();En=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(Wd).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Wd(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 js(e,t={}){let r=ua(e);if(A_(r),r.kind==="embedded"){let n=T_(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=C_(r),o=t.binary??Dd(),i=await Od(o,s),a=new $s(i);return await a.call("version",{}),new Ea(a,{transport:"embedded"})}}function Vd(e){return k_(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:E_(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&v_(e)?{$uuid:e}:e}function k_(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(Vd):e.map(Vd)}function E_(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 x_(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 v_(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Bs(e){if(Array.isArray(e))return e.map(Bs);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return x_(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]=Bs(s);return r}return e}function C_(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function T_(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 A_(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",__)}function xa(){return new v(qd,`${qd}: nested transactions are not supported on one connection`)}function zd(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function O_(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Kd} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function P_(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 >= ${Kd} 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 __,R_,Kd,qd,Fs,Sa,Ea,Yd=h(()=>{Pd();Nd();ft();la();da();fa();ba();wa();_a();Ra();ka();da();fa();ba();wa();_a();Ra();ka();la();__="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",R_="1.0",Kd="1.0.9",qd="NESTED_TX_NOT_SUPPORTED";Fs=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 xa()}},Sa=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw xa();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 Fs(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){zd(r,n)}throw r}}},Ea=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=R_,this.cache=new wn(t,this.transport),this.queue=new _n(t),this.queues=this.queue,this.documents=new Rn(this);let n=new Sr(t);this.kv=Object.assign((s="kv_default")=>new Sr(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 kn(t,s),this.vault=(s="red.vault")=>new Sn(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(Bs):this.client.call("query",{sql:t,params:n}).then(Bs)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return O_(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 P_(n,r.length)}tx(){return new Sa(this)}async transaction(t){if(this.inTransaction)throw xa();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 Fs(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){zd(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Jd(this,t)}list(){return Ud(this)}from(t){return new En(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 I_}from"node:crypto";import{existsSync as Xd}from"node:fs";import{mkdir as L_,readFile as D_,rename as va,rm as xn,stat as Ca}from"node:fs/promises";import{basename as N_,dirname as $_}from"node:path";async function Qd(e){await(await Gt.open({...e,allowResidentOpen:!0})).close()}var Gt,Zd=h(()=>{"use strict";Yd();xs();Ns();Gt=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=Ad(t.uri),n=await Cd(r),s=new e(n,{uri:t.uri,ttlDays:Os(t.ttlDays,Ee),ephemeralTtlHours:Os(t.ephemeralTtlHours,xe),byteBudget:Os(t.byteBudget,ve),now:t.now??(()=>new Date)});return Td(n)?(await Ds(),await L_($_(n),{recursive:!0}),s.db=await js(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await vd(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=gn(n,r),a=mt(i),c=it(r.command),u=c==="derivable"?ta(n,r.command):null,l=c==="re-executable"?ra(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ea(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Ft(n),f=p==="ephemeral"?oa(n,m,o):null,_=na(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:J,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[jt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!yn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[mt(t)];if(!bn(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:mt(n.handle),bytes:sa(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:hn(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:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:hn(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:Ht(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Qi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Zi(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=Ht(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=Ht(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[jt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[jt(t)];return Is(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return wd(t.derivation_recipe);if(t.reexecution_recipe)return _d(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Ps(r)?bd(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 kr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ca(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)}
55
- `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await kr(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(J)}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===J);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${J}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${J}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${J}`),await this.db.query(`CREATE KV IF NOT EXISTS ${J}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=gn(n,r),a=mt(i),c=it(r.command),u=c==="derivable"?ta(n,r.command):null,l=c==="re-executable"?ra(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ea(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Ft(n),f=p==="ephemeral"?oa(n,m,o):null,_=na(n,u,l,f);f&&!Ps(await this.kvGet(f.key))&&await this.kv().put(f.key,f);let g={collection:J,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};await this.kv().delete(jt(i)),await this.kv().put(a,g);let b=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return b.push({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:f?.key}),await this.pruneRedDb({version:1,records:b},!0),await this.assertRedDbMintPersisted(i,_),i}async getRedDb(t){if(!yn(t))return null;let r=await this.kvGet(jt(t));if(Is(r))return r;let n=await this.kvGet(mt(t));if(!bn(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:mt(n.handle),bytes:sa(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:hn(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:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:hn(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Ht(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:Qi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Zi(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=kd(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Sd(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 Ed(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await D_(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=N_(s),c=I_("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=>xd(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(`
56
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Ts());return ia(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Ts(),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=Ht(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=Ht(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 Ca(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 xn(o,{force:!0}),await xn(i,{force:!0});let a=await js(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${hd(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 Ca(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await xn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await va(this.path,i),await va(o,this.path),await xn(i,{force:!0})}catch(u){throw!Xd(this.path)&&Xd(i)&&await va(i,this.path),await xn(o,{force:!0}),u}finally{this.db=await js(`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===J){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:Ts(),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:J,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(jt(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(mt(t));if(!bn(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 ep={};j(ep,{DEFAULT_RSP_BYTE_BUDGET:()=>ve,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>xe,DEFAULT_RSP_TTL_DAYS:()=>Ee,RSP_ELISION_COLLECTION:()=>J,RspElisionStore:()=>Gt,contentHandle:()=>gn,ensureReddbBinaryFromWarmCache:()=>Ds,provisionElisionStore:()=>Qd,storageClassForCommand:()=>it});var Hs=h(()=>{"use strict";xs();Ns();Ns();Zd()});async function Gs(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await np(e,s),i=(await vn(e,K)).filter(S=>vr(S)>=s),a=o.filter(S=>A(S.event_type)!=="show"&&A(S.degradation_reason)===""),c=o.filter(S=>A(S.event_type)==="show"),u=o.filter(S=>A(S.degradation_reason)!==""),l=0,p=0,d=0,m=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,x=0;for(let S of a){S.elided===!0&&l++;let I=pe(S.raw_bytes),qe=pe(S.emitted_bytes),xt=Math.max(0,I-qe),Qt=Cr(S,"raw"),R=Cr(S,"emitted"),T=Math.max(0,Qt.tokens-R.tokens);f||=(S.estimated===!0||Qt.estimated||R.estimated)&&T>0,p+=I,d+=qe,m+=T;let vt=Wt(S).slice(0,10);vt&&_.set(vt,(_.get(vt)??0)+T);let Ct=A(S.command)||"unknown",ye=g.get(Ct)??{command:Ct,invocations:0,bytes_saved:0,tokens_saved:0};ye.invocations++,ye.bytes_saved+=xt,ye.tokens_saved+=T,g.set(Ct,ye);let be=dt(S.wrapper_ms);be!=null&&y.push(be),b+=pe(S.store_open_count);let Zt=dt(S.store_elapsed_ms);Zt!=null&&(w+=Zt,x++)}let O=new Map,F=new Map,he=[],Pe=null;for(let S of u){let I=A(S.degradation_reason)||A(S.reason)||"unknown",qe=A(S.wrapper_family)||me(A(S.command));O.set(I,(O.get(I)??0)+1),F.set(qe,(F.get(qe)??0)+1);let xt=Wt(S);he.push({timestamp:xt,family:qe,command:A(S.command)||"unknown",reason:I,exit_code:dt(S.wrapper_exit_code),stderr_head:A(S.stderr_head)||null}),(!Pe||xt>Pe.timestamp)&&(Pe={timestamp:xt,reason:I,command:A(S.command)||"unknown"})}let te=a.length+u.length,ct=c.filter(S=>S.hit===!0).length,re=ai(m,f),Br=M_(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:m,tokens_saved_estimated:re.tokens_saved_estimated,token_estimate_range_pct:re.token_estimate_range_pct,tokens_saved_low:re.tokens_saved_low,tokens_saved_high:re.tokens_saved_high,dollars_saved_estimate_usd:re.dollars_saved_estimate_usd,dollars_saved_low_usd:re.dollars_saved_low_usd,dollars_saved_high_usd:re.dollars_saved_high_usd,pricing_model_family:re.pricing_model_family,pricing_input_usd_per_million_tokens:re.pricing_input_usd_per_million_tokens,pricing_note:re.pricing_note,daily_tokens_saved:[..._.entries()].sort(([S],[I])=>S.localeCompare(I)).map(([S,I])=>({date:S,tokens_saved:I})),top_commands:[...g.values()].sort((S,I)=>I.bytes_saved-S.bytes_saved||I.tokens_saved-S.tokens_saved||S.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:ct,show_misses:Math.max(0,c.length-ct),show_hit_rate:c.length===0?0:z(ct/c.length),by_reason:[...O.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({reason:S,count:I})),by_family:[...F.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({family:S,count:I})),recent_failures:he.sort((S,I)=>I.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:Pe},latency:{wrapper_ms_p50:xr(y,.5),wrapper_ms_p95:xr(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:z(w),store_elapsed_ms_avg:x===0?null:z(w/x)},decisions:Br}}function M_(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,pe(a.saved_units))),c!=="contributed"){let p=A(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed: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 Ta(e,t,r=new Date){let s=(await vn(e,se)).filter(o=>vr(o)<=r.getTime()||Wt(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=Wt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:q_(s)}}async function Aa(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 np(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),p=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...p].map(vr).filter(R=>Number.isFinite(R)&&R>0),m=d.length===0?null:Math.min(...d),f=m==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-m)/tR()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,x=new Map,O=new Map,F=0,he=!1,Pe=0,te=null,ct=0,re=0;for(let R of c){let T=Wt(R),vt=T.slice(0,10),Ct=T.slice(0,16),ye=me(A(R.command)),be=Math.max(0,Cr(R,"raw").tokens-Cr(R,"emitted").tokens);F+=be,he||=R.estimated===!0&&be>0;let Zt=Math.max(0,pe(R.raw_bytes)-pe(R.emitted_bytes)),$o=dt(R.wrapper_ms);if($o!=null){_.push($o);let nu=g.get(ye)??[];nu.push($o),g.set(ye,nu)}vt&&y.set(vt,(y.get(vt)??0)+1),Ct&&b.set(Ct,(b.get(Ct)??0)+1);let Mo=Y_(T);Mo&&w.set(Mo,(w.get(Mo)??0)+1);let Bo=Z_(T);Bo&&x.set(Bo,(x.get(Bo)??0)+be);let qn=O.get(ye)??{command_family:ye,invocations:0,tokens_saved:0,bytes_saved:0};qn.invocations++,qn.tokens_saved+=be,qn.bytes_saved+=Zt,O.set(ye,qn),R.elided===!0&&Pe++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(ct++,pe(R.store_open_count)>0&&re++),be>0&&(!te||be>te.tokens_saved||be===te.tokens_saved&&Zt>te.bytes_saved)&&(te={timestamp:T,command_family:ye,tokens_saved:be,bytes_saved:Zt})}let Br=p.map(R=>({timestamp:Wt(R),command_family:me(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),S=new Map;for(let R of Br)S.set(R.reason,(S.get(R.reason)??0)+1);let I=H_(Br),qe=j_(l),xt=W_([...O.values()],qe,I),Qt=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:rp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...rp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:Qt?{minute:Qt[0],requests:Qt[1]}:null,hour_weekday_heatmap:X_(w)},savings:{tokens:ai(F,he),measured_control_holdout:B_(c,u),weekly_tokens_saved:eR(x),elision_rate:c.length===0?0:z(Pe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:Br,degradations_by_reason:[...S.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:ct===0?null:re,warm_hits:ct===0?null:Math.max(0,ct-re)},mining:{recovery_usage_by_family:qe,degradation_clusters:I,threshold_tuning_suggestions:xt}}}async function np(e,t){let r=(await vn(e,se)).filter(i=>vr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await vn(e,de)).filter(i=>vr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await vn(e,Fe)).filter(i=>vr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Cr(e,t){let r=dt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=pe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function B_(e,t){let r=J_(t.map(a=>dt(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(tp).filter(a=>a!=null),s=t.map(tp).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:z(U_(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:F_(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function tp(e){let t=Cr(e,"raw").tokens;if(t<=0)return null;let r=Cr(e,"emitted").tokens;return Math.max(0,t-r)/t}function F_(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 j_(e){let t=new Map;for(let r of e){let n=me(A(r.recovered_command)||A(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 H_(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:G_(r)}))}function G_(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 W_(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 U_(e){return e.reduce((t,r)=>t+r,0)/e.length}function J_(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function q_(e){let t=K_();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=V_(r.storage_class)??it(A(r.command));t[n].records+=1;let s=pe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function V_(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function K_(){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 vn(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=>z_(n.value)).filter(n=>br(n))}function z_(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function vr(e){let t=Date.parse(Wt(e));return Number.isFinite(t)?t:0}function Wt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function xr(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 rp(e){return{wrapper_ms_p50:xr(e,.5),wrapper_ms_p90:xr(e,.9),wrapper_ms_p95:xr(e,.95),wrapper_ms_p99:xr(e,.99)}}function z(e){return Math.round(e*100)/100}function Y_(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Q_(t.getUTCDay())}:${t.getUTCHours()}`:null}function X_(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 Q_(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Z_(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 eR(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 tR(){return 24*60*60*1e3}var sp=h(()=>{"use strict";dn();Hs();ci();_s();Gi()});var Ws={};j(Ws,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>K,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Fe,RSP_TELEMETRY_INDEX_COLLECTION:()=>an,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>de,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>ji,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Hi,RSP_TELEMETRY_SPOOL_FILE:()=>Fi,appendTelemetryEvent:()=>ot,appendTelemetryEventSync:()=>pt,drainTelemetrySpool:()=>Ki,parseTelemetryEvent:()=>_r,readAccountingLaneStats:()=>Ta,readTelemetryGainsReport:()=>Aa,readTelemetryStats:()=>Gs,takeTelemetrySpool:()=>rw,telemetryLegacySpoolPath:()=>Ss,telemetrySpoolCorrectionsPath:()=>Vi,telemetrySpoolPath:()=>st});var je=h(()=>{"use strict";_s();fd();sp()});var cp={};j(cp,{readGhConditionalJson:()=>oe});import{spawn as rR}from"node:child_process";import{createHash as nR,randomUUID as sR}from"node:crypto";import{mkdir as oR,readFile as iR,rename as aR,writeFile as cR}from"node:fs/promises";import{dirname as uR,join as op}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=pR(e.path,e.params),s=mR(n),o=await hR(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[p,d]of ip(e.params))a.push("-f",`${p}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await fR(a,t,e.env,e.signal),u=gR(c.stdout);if(u.statusCode===304&&!!i)return await Oa(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:i.body,stderr:c.stderr,etag:i.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let p=u.headers.get("etag");return p&&(o.entries[s]={key:s,request:n,etag:p,body:u.body,updated_at:new Date().toISOString()},await yR(r,o)),await Oa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:p??void 0,quotaFree:!1}}return await Oa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function ip(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function pR(e,t){return JSON.stringify({method:"GET",path:e,params:ip(t)})}function mR(e){return nR("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function fR(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=p=>{o||(o=!0,n?.removeEventListener("abort",c),s(p))},a=rR("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=[],l=[];a.stdout.on("data",p=>u.push(Buffer.from(p))),a.stderr.on("data",p=>l.push(Buffer.from(p))),a.once("error",p=>i({status:1,stdout:"",stderr:p.message})),a.once("close",p=>{i({status:p??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function gR(e){let t=e.replace(/\r\n/g,`
56
+ `).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function UR(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=mt(e),a=mt(t),c=s!=null?` GROUP ${mt(s)}`:"",u=o!=null?ic(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function mt(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 ic(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 JR(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function qR(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 ${JR(e.priority)}`),e.key!=null&&(t+=` KEY ${ac(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ac(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function VR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ac(e):JSON.stringify(e)}function ac(e){return`'${String(e).replace(/'/g,"''")}'`}function oc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Pn,cc=h(()=>{bt();Pn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${mt(t)}`})}push(t,r,n={}){let s=qR(n);return this.client.call("query",{sql:`QUEUE PUSH ${mt(t)} ${VR(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${mt(t)}${ic(r)}`});return oc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${mt(t)}${ic(r)}`});return oc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${mt(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${mt(t)}`})}async readWait(t,r,n={}){let s=UR(t,r,n),o=await this.client.call("query",{sql:s});return oc(o)}}});function zm(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function KR(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 io(e){return String(e).split(".").map(Ym).join(".")}function Ym(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 zR(e){return Xm(JSON.stringify(e))}function YR(e){return JSON.stringify(e)}function XR(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?zR(e):Xm(e)}function Xm(e){return`'${String(e).replace(/'/g,"''")}'`}var In,uc=h(()=>{bt();In=class{constructor(t){this.db=t}async insert(t,r){zm(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${io(t)} DOCUMENT VALUES (${YR(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=KR(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 ${io(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){zm(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])=>`${Ym(c)} = ${XR(u)}`).join(", "),a=(await this.db.query(`UPDATE ${io(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 ${io(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function QR(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${wt(r)}.${wt(n)})`}return ek(e)}function ZR(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 wt(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 ek(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qm(e)}function Qm(e){return`'${String(e).replace(/'/g,"''")}'`}var Ln,lc=h(()=>{Ln=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ZR(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Qm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${wt(s)} ${wt(t)} = ${QR(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${wt(n)} ${wt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${wt(n)} ${wt(t)}`})}}});function tk(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 Pr(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 rk(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zm(e)}function Zm(e){return`'${String(e).replace(/'/g,"''")}'`}var Dn,dc=h(()=>{Dn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){tk(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Zm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Pr(s)}.${Pr(t)} = ${rk(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Pr(n)}.${Pr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Pr(n)}.${Pr(t)}`})}}});async function tp(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(nk)}async function rp(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${ok(t)}`)).rows??[]).some(n=>n.name===String(t))}function nk(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ep(e){return String(e).split(".").map(sk).join(".")}function sk(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 ok(e){return`'${String(e).replace(/'/g,"''")}'`}var Nn,mc=h(()=>{bt();Nn=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(ep).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${ep(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 uo(e,t={}){let r=Za(e);if(gk(r),r.kind==="embedded"){let n=fk(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=pk(r),o=t.binary??Jm(),i=await Hm(o,s),a=new oo(i);return await a.call("version",{}),new fc(a,{transport:"embedded"})}}function sp(e){return ck(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:lk(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&mk(e)?{$uuid:e}:e}function ck(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 uk(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(sp):e.map(sp)}function lk(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 dk(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 mk(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function ao(e){if(Array.isArray(e))return e.map(ao);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return dk(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]=ao(s);return r}return e}function pk(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function fk(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 gk(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",ik)}function gc(){return new v(np,`${np}: nested transactions are not supported on one connection`)}function ip(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function hk(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${op} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function yk(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 >= ${op} 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 ik,ak,op,np,co,pc,fc,ap=h(()=>{Gm();qm();bt();ec();tc();sc();cc();uc();lc();dc();mc();tc();sc();cc();uc();lc();dc();mc();ec();ik="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ak="1.0",op="1.0.9",np="NESTED_TX_NOT_SUPPORTED";co=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 gc()}},pc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw gc();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 co(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){ip(r,n)}throw r}}},fc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=ak,this.cache=new An(t,this.transport),this.queue=new Pn(t),this.queues=this.queue,this.documents=new In(this);let n=new Ar(t);this.kv=Object.assign((s="kv_default")=>new Ar(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 Ln(t,s),this.vault=(s="red.vault")=>new Dn(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=uk(r);return n==null?this.client.call("query",{sql:t}).then(ao):this.client.call("query",{sql:t,params:n}).then(ao)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return hk(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 yk(n,r.length)}tx(){return new pc(this)}async transaction(t){if(this.inTransaction)throw gc();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 co(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){ip(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return rp(this,t)}list(){return tp(this)}from(t){return new Nn(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 bk}from"node:crypto";import{existsSync as cp}from"node:fs";import{mkdir as wk,readFile as _k,rename as hc,rm as $n,stat as yc}from"node:fs/promises";import{basename as Rk,dirname as kk}from"node:path";async function up(e){await(await Kt.open({...e,allowResidentOpen:!0})).close()}var Kt,lp=h(()=>{"use strict";ap();Ks();so();Kt=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=jm(t.uri),n=await Bm(r),s=new e(n,{uri:t.uri,ttlDays:Zs(t.ttlDays,Ce),ephemeralTtlHours:Zs(t.ephemeralTtlHours,Te),byteBudget:Zs(t.byteBudget,Oe),now:t.now??(()=>new Date)});return Fm(n)?(await no(),await wk(kk(n),{recursive:!0}),s.db=await uo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Mm(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=vn(n,r),a=yt(i),c=dt(r.command),u=c==="derivable"?Ja(n,r.command):null,l=c==="re-executable"?qa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ua(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Jt(n),f=m==="ephemeral"?za(n,p,o):null,_=Va(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[qt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Tn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[yt(t)];if(!On(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:yt(n.handle),bytes:Ka(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(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:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(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:Vt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Ga(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Wa(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=Vt(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=Vt(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[qt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[qt(t)];return to(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Am(t.derivation_recipe);if(t.reexecution_recipe)return Pm(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return eo(r)?Om(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 Or(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await yc(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)}
57
+ `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Or(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(K)}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===K);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${K}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${K}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${K}`),await this.db.query(`CREATE KV IF NOT EXISTS ${K}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=vn(n,r),a=yt(i),c=dt(r.command),u=c==="derivable"?Ja(n,r.command):null,l=c==="re-executable"?qa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ua(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Jt(n),f=m==="ephemeral"?za(n,p,o):null,_=Va(n,u,l,f);f&&!eo(await this.kvGet(f.key))&&await this.kv().put(f.key,f);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};await this.kv().delete(qt(i)),await this.kv().put(a,g);let b=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return b.push({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),await this.pruneRedDb({version:1,records:b},!0),await this.assertRedDbMintPersisted(i,_),i}async getRedDb(t){if(!Tn(t))return null;let r=await this.kvGet(qt(t));if(to(r))return r;let n=await this.kvGet(yt(t));if(!On(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:yt(n.handle),bytes:Ka(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(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:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Vt(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:Ga(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Wa(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=Lm(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Dm(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 Nm(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await _k(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Rk(s),c=bk("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}},m=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(m.rows[0]?.red_entity_id??m.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=>$m(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(`
58
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Xs());return Ya(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Xs(),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=Vt(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=Vt(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 yc(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 $n(o,{force:!0}),await $n(i,{force:!0});let a=await uo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${Cm(u.name)}`);let l=a.kv(u.name);for(let m of u.items)await l.put(m.key,m.value)}}finally{await a.close()}let c=await yc(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await $n(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await hc(this.path,i),await hc(o,this.path),await $n(i,{force:!0})}catch(u){throw!cp(this.path)&&cp(i)&&await hc(i,this.path),await $n(o,{force:!0}),u}finally{this.db=await uo(`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===K){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:Xs(),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:K,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(qt(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(yt(t));if(!On(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 dp={};M(dp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>K,RspElisionStore:()=>Kt,contentHandle:()=>vn,ensureReddbBinaryFromWarmCache:()=>no,provisionElisionStore:()=>up,storageClassForCommand:()=>dt});var lo=h(()=>{"use strict";Ks();so();so();lp()});async function mo(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await fp(e,s),i=(await Mn(e,Q)).filter(E=>Lr(E)>=s),a=o.filter(E=>A(E.event_type)!=="show"&&A(E.degradation_reason)===""),c=o.filter(E=>A(E.event_type)==="show"),u=o.filter(E=>A(E.degradation_reason)!==""),l=0,m=0,d=0,p=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,S=0;for(let E of a){E.elided===!0&&l++;let I=he(E.raw_bytes),Xe=he(E.emitted_bytes),Ot=Math.max(0,I-Xe),or=Dr(E,"raw"),R=Dr(E,"emitted"),T=Math.max(0,or.tokens-R.tokens);f||=(E.estimated===!0||or.estimated||R.estimated)&&T>0,m+=I,d+=Xe,p+=T;let At=zt(E).slice(0,10);At&&_.set(At,(_.get(At)??0)+T);let Pt=A(E.command)||"unknown",Re=g.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};Re.invocations++,Re.bytes_saved+=Ot,Re.tokens_saved+=T,g.set(Pt,Re);let ke=gt(E.wrapper_ms);ke!=null&&y.push(ke),b+=he(E.store_open_count);let ir=gt(E.store_elapsed_ms);ir!=null&&(w+=ir,S++)}let O=new Map,j=new Map,_e=[],Ne=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",Xe=A(E.wrapper_family)||ye(A(E.command));O.set(I,(O.get(I)??0)+1),j.set(Xe,(j.get(Xe)??0)+1);let Ot=zt(E);_e.push({timestamp:Ot,family:Xe,command:A(E.command)||"unknown",reason:I,exit_code:gt(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!Ne||Ot>Ne.timestamp)&&(Ne={timestamp:Ot,reason:I,command:A(E.command)||"unknown"})}let oe=a.length+u.length,pt=c.filter(E=>E.hit===!0).length,ie=Qi(p,f),Ur=Sk(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:m,emitted_bytes:d,bytes_saved:Math.max(0,m-d),tokens_saved:p,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:[..._.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[...g.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:pt,show_misses:Math.max(0,c.length-pt),show_hit_rate:c.length===0?0:Z(pt/c.length),by_reason:[...O.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...j.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:_e.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:Ne},latency:{wrapper_ms_p50:Ir(y,.5),wrapper_ms_p95:Ir(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Z(w),store_elapsed_ms_avg:S===0?null:Z(w/S)},decisions:Ur}}function Sk(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,he(a.saved_units))),c!=="contributed"){let m=A(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed: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 bc(e,t,r=new Date){let s=(await Mn(e,ce)).filter(o=>Lr(o)<=r.getTime()||zt(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=zt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:Ik(s)}}async function wc(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 fp(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),m=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...m].map(Lr).filter(R=>Number.isFinite(R)&&R>0),p=d.length===0?null:Math.min(...d),f=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/Hk()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,S=new Map,O=new Map,j=0,_e=!1,Ne=0,oe=null,pt=0,ie=0;for(let R of c){let T=zt(R),At=T.slice(0,10),Pt=T.slice(0,16),Re=ye(A(R.command)),ke=Math.max(0,Dr(R,"raw").tokens-Dr(R,"emitted").tokens);j+=ke,_e||=R.estimated===!0&&ke>0;let ir=Math.max(0,he(R.raw_bytes)-he(R.emitted_bytes)),ii=gt(R.wrapper_ms);if(ii!=null){_.push(ii);let Ju=g.get(Re)??[];Ju.push(ii),g.set(Re,Ju)}At&&y.set(At,(y.get(At)??0)+1),Pt&&b.set(Pt,(b.get(Pt)??0)+1);let ai=$k(T);ai&&w.set(ai,(w.get(ai)??0)+1);let ci=Fk(T);ci&&S.set(ci,(S.get(ci)??0)+ke);let ss=O.get(Re)??{command_family:Re,invocations:0,tokens_saved:0,bytes_saved:0};ss.invocations++,ss.tokens_saved+=ke,ss.bytes_saved+=ir,O.set(Re,ss),R.elided===!0&&Ne++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(pt++,he(R.store_open_count)>0&&ie++),ke>0&&(!oe||ke>oe.tokens_saved||ke===oe.tokens_saved&&ir>oe.bytes_saved)&&(oe={timestamp:T,command_family:Re,tokens_saved:ke,bytes_saved:ir})}let Ur=m.map(R=>({timestamp:zt(R),command_family:ye(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),E=new Map;for(let R of Ur)E.set(R.reason,(E.get(R.reason)??0)+1);let I=Ck(Ur),Xe=vk(l),Ot=Ok([...O.values()],Xe,I),or=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:pp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...pp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:Z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:or?{minute:or[0],requests:or[1]}:null,hour_weekday_heatmap:Mk(w)},savings:{tokens:Qi(j,_e),measured_control_holdout:Ek(c,u),weekly_tokens_saved:jk(S),elision_rate:c.length===0?0:Z(Ne/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Ur,degradations_by_reason:[...E.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:pt===0?null:ie,warm_hits:pt===0?null:Math.max(0,pt-ie)},mining:{recovery_usage_by_family:Xe,degradation_clusters:I,threshold_tuning_suggestions:Ot}}}async function fp(e,t){let r=(await Mn(e,ce)).filter(i=>Lr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await Mn(e,ge)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await Mn(e,Je)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Dr(e,t){let r=gt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=he(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function Ek(e,t){let r=Pk(t.map(a=>gt(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(mp).filter(a=>a!=null),s=t.map(mp).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(Ak(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:xk(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function mp(e){let t=Dr(e,"raw").tokens;if(t<=0)return null;let r=Dr(e,"emitted").tokens;return Math.max(0,t-r)/t}function xk(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 vk(e){let t=new Map;for(let r of e){let n=ye(A(r.recovered_command)||A(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 Ck(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:Tk(r)}))}function Tk(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 Ok(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 Ak(e){return e.reduce((t,r)=>t+r,0)/e.length}function Pk(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Ik(e){let t=Dk();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Lk(r.storage_class)??dt(A(r.command));t[n].records+=1;let s=he(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Lk(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Dk(){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 Mn(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=>Nk(n.value)).filter(n=>xr(n))}function Nk(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Lr(e){let t=Date.parse(zt(e));return Number.isFinite(t)?t:0}function zt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function Ir(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 pp(e){return{wrapper_ms_p50:Ir(e,.5),wrapper_ms_p90:Ir(e,.9),wrapper_ms_p95:Ir(e,.95),wrapper_ms_p99:Ir(e,.99)}}function Z(e){return Math.round(e*100)/100}function $k(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Bk(t.getUTCDay())}:${t.getUTCHours()}`:null}function Mk(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 Bk(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Fk(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 jk(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 Hk(){return 24*60*60*1e3}var gp=h(()=>{"use strict";kn();lo();Zi();Ws();Ia()});var Bn={};M(Bn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>Q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Je,RSP_TELEMETRY_INDEX_COLLECTION:()=>bn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ge,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Aa,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Pa,RSP_TELEMETRY_SPOOL_FILE:()=>Oa,appendTelemetryEvent:()=>lt,appendTelemetryEventSync:()=>ht,drainTelemetrySpool:()=>Ba,parseTelemetryEvent:()=>Cr,readAccountingLaneStats:()=>bc,readTelemetryGainsReport:()=>wc,readTelemetryStats:()=>mo,takeTelemetrySpool:()=>G_,telemetryLegacySpoolPath:()=>qs,telemetrySpoolCorrectionsPath:()=>Ma,telemetrySpoolPath:()=>ut});var Ie=h(()=>{"use strict";Ws();xm();gp()});var yp={};M(yp,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Ms,sweepGhEtagCache:()=>xa});import{spawn as Gk}from"node:child_process";import{createHash as Wk,randomUUID as Uk}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=Jk(e.path,e.params),i=qk(o),c=Di(r,"gh-api-json")?void 0:await ka(r,i),u=["api","--include","--method","GET",e.path];for(let[f,_]of hp(e.params))u.push("-f",`${f}=${String(_)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await Vk(u,t,e.env,e.signal),m=f=>{let _=rn();en(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:_.childMs,selfStateBytesRead:_.selfStateBytesRead,bytesSaved:f},s)},d=Kk(l.stdout);if(d.statusCode===304&&!!c)return m(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 f=d.headers.get("etag");return f&&await Sa(r,{key:i,request:o,etag:f,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),m(0),await _c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:f??void 0,quotaFree:!1}}return m(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 hp(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function Jk(e,t){return JSON.stringify({method:"GET",path:e,params:hp(t)})}function qk(e){return Wk("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Vk(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=Gk("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=[],m=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>m.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(m).toString("utf8").trim()})})})}function Kk(e){let t=e.replace(/\r\n/g,`
57
59
  `),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(`
58
60
 
59
61
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
60
- `)){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 hR(e){for(let t of[ap(e),bR(e)])try{let r=wR(await iR(t,"utf8"));if(_R(r))return r}catch{}return{version:1,entries:{}}}async function yR(e,t){let r=ap(e);await oR(uR(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await cR(n,`${C(t)}
61
- `,{encoding:"utf8",mode:384}),await aR(n,r)}function ap(e){return op(X(e),lR)}function bR(e){return op(X(e),dR)}function wR(e){try{return JSON.parse(e)}catch{return N(e)}}async function Oa(e,t,r){await ot(e,{collection:K,id:sR(),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})}function _R(e){return Pa(e)&&e.version===1&&Pa(e.entries)&&Object.values(e.entries).every(RR)}function RR(e){return Pa(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Pa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lR,dR,Us=h(()=>{"use strict";ke();L();je();lR="gh-etag-cache.toon",dR="gh-etag-cache.json"});import{spawn as kR}from"node:child_process";async function Cn(e,t){return await SR(t,async r=>{let n=await xR(e,t.cwd,r);return n||await ER(e,t.cwd,r)})}async function SR(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 ER(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=kR("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&as(l).then(p=>is(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 xR(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await vR(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await oe({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:gr(s,"database_id")||gr(s,"id"),status:V(s,"status").toUpperCase(),conclusion:V(s,"conclusion").toUpperCase(),workflowName:V(s,"workflow_name")||V(s,"name"),headBranch:V(s,"head_branch"),url:V(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=ps(e,"--branch"),s=ps(e,"--limit")??"20",o=await oe({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=Mt(Be(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:gr(a,"database_id")||gr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=ps(e,"--limit")??"20",s=await oe({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=Mt(JSON.parse(s.stdout)).map(i=>({tagName:V(i,"tag_name"),publishedAt:V(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function vR(e,t,r){let n=await oe({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=V(Be(s.head),"sha"),[i,a]=o?await Promise.all([oe({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),oe({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?Mt(Be(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Mt(Be(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
62
- `),stdout:JSON.stringify({number:gr(s,"number"),state:V(s,"state").toUpperCase(),mergeable:CR(s),statusCheckRollup:[...c.map(l=>({conclusion:V(l,"state").toUpperCase()})),...u.map(l=>({status:V(l,"status").toUpperCase(),conclusion:V(l,"conclusion").toUpperCase()}))],url:V(s,"html_url")})}}function CR(e){let t=V(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var up=h(()=>{"use strict";Us();ms();tt()});function dp(e,t,r){let n=Date.now();return()=>TR(e,t,r,n)}async function TR(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return q("missing PR number");let s=await Cn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return q(s.stderr||"gh pr view failed");let o=$i(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(AR),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return et("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return et("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return et("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return ur(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||p<r.emptyChecksGraceMs?ur(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):et("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?ur(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):et("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function pp(e,t){if(!e)return q("missing run id");let r=await Cn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return q(r.stderr||"gh run view failed");let n=$i(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?ur(`run ${e} is ${s||"pending"}`):o==="success"?et("success",`run ${e} succeeded`,lp(n)):et("failure",`run ${e} concluded ${o||"unknown"}`,lp(n))}async function mp(e,t){let r=await Cn(["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 fr(s)&&s.databaseId!=null?String(s.databaseId):""}async function fp(e,t,r){let n=await Cn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return q(n.stderr||"gh release list failed");let o=Mt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||OR(e,a))&&c>=t});return o?et("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):ur("no matching release is published yet")}function AR(e){let t=fr(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 lp(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 OR(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var gp=h(()=>{"use strict";Nt();up();ms()});function Tn(){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(`
63
- `)}var Ia=h(()=>{"use strict"});var hp=h(()=>{"use strict";L()});var yp=h(()=>{"use strict"});function PR(e){return Object.keys(e)}function Ut(e){return{...e,fields:PR(e.fields)}}var bp,wp,_p,La,IR,LR,DR,Js,qs=h(()=>{"use strict";bp="red.castle.lane.v1",wp="red.castle.state.v1",_p="red.castle.history.v1",La="red.castle.attempt.v1",IR="red.castle.validation.v2",LR="red.castle.envelope.v1",DR="red.castle.hitl-card.v1",Js=[Ut({schemaId:bp,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}}),Ut({schemaId:wp,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}}),Ut({schemaId:_p,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}}),Ut({schemaId:La,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),Ut({schemaId:IR,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}}),Ut({schemaId:LR,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}}),Ut({schemaId:DR,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 dI,Vs=h(()=>{"use strict";L();qs();dI=new Map(Js.map(e=>[e.schemaId,new Set(e.fields)]))});var Rp=h(()=>{"use strict";yp();Vs()});var kp=h(()=>{"use strict"});var SI,Sp=h(()=>{"use strict";L();qs();SI=new Set(Js.find(e=>e.schemaId===La).fields)});var MR,BR,FR,xI,Ep=h(()=>{"use strict";MR=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],BR=["log","diagnostic","envelope","transcript","patch","handoff","report"],FR=["branch","pr","commit","tag","issue"],xI=new Map([...MR.map(e=>[e,"workspace"]),...BR.map(e=>[e,"evidence"]),...FR.map(e=>[e,"pointer"])])});var Ks=h(()=>{"use strict"});var Da=h(()=>{"use strict";Ks()});var zs=h(()=>{"use strict"});import{appendFile as jR,mkdir as HR,readFile as GR}from"node:fs/promises";import{dirname as WR,join as UR}from"node:path";function Na(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function xp(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:Na(t.at,"at"),singleton:Na(t.singleton,"singleton"),kind:Na(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function JR(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function qR(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function VR(e){return UR(e.castleStateRoot,"singleton-events.toonl")}function $a(e,t={}){let r=t.fs??{appendFile:jR,mkdir:HR,readFile:GR},n=t.clock??(()=>new Date().toISOString()),s=VR(e);return{path:s,async append(o){let i=xp({at:o.at??n(),...o});return await r.mkdir(WR(s),{recursive:!0}),await r.appendFile(s,ze().push(JR(i)),"utf8"),i},async read(o={}){qR(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Ke(i).map(xp);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var Ma=h(()=>{"use strict";L()});var Ys=h(()=>{"use strict";L();zs();Ma()});var vp=h(()=>{"use strict";Ks();Da();Ys()});var Cp=h(()=>{"use strict"});var tL,Tp=h(()=>{"use strict";L();tL=24*60*60*1e3});var Ap=h(()=>{"use strict";Vs()});var oL,iL,Op=h(()=>{"use strict";oL=15*6e4,iL=30*6e4});var Pp=h(()=>{"use strict"});var zR,YR,uL,lL,Ip=h(()=>{"use strict";zR=["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"],YR={pre_worktree:["cargo","gradle"]},uL=Object.values(YR).flat(),lL=new Set(zR)});var Lp=h(()=>{"use strict"});var Dp=h(()=>{"use strict";Ys()});var Np=h(()=>{"use strict"});var $p=h(()=>{"use strict"});var Mp=h(()=>{"use strict";L()});var Ba=h(()=>{"use strict"});var Bp=h(()=>{"use strict";L();Ba()});var Fp=h(()=>{"use strict";L()});var Fa=h(()=>{"use strict"});var ja=h(()=>{"use strict"});import{resolve as W}from"node:path";function jp(e){let t=W(e),r=W(t,"state"),n=W(r,"castle"),s=W(t,"tmp"),o=W(s,"supervisors"),i=W(s,"workers"),a=W(s,"monitors"),c=W(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:W(n,"history.toonl"),castleAttempts:W(n,"attempts.toonl"),castleValidation:W(n,"validation.toonl"),castleFleets:W(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>W(o,u),fleet:u=>W(o,u),workersRoot:i,worker:u=>W(i,u),workerSteerFile:u=>W(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>W(a,u),worktreesRoot:c,worktreeLane:u=>W(c,u)}}var Hp=h(()=>{"use strict"});var Gp=h(()=>{"use strict";zs()});var Wp=h(()=>{"use strict"});var Up=h(()=>{"use strict";Fa();ja()});import{mkdir as XR,readFile as QR,rename as ZR,rm as ek,writeFile as tk}from"node:fs/promises";import{dirname as rk,join as nk}from"node:path";function ok(e){if(!sk.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function ik(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function ak(e){return e.code==="ENOENT"}function ck(e){return e.code==="EEXIST"}function uk(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 Ha(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Xs(e,t){return ok(t),nk(e.castleStateRoot,"singletons",t,"lease.toon")}function Jp(e,t={}){let r=t.fs??{mkdir:XR,readFile:QR,rename:ZR,rm:ek,writeFile:tk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??ik;async function o(a){try{return uk(N(await r.readFile(a,"utf8")))}catch(c){if(ak(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(Xs(e,a))},async acquire(a,c){let u=Xs(e,a);await r.mkdir(rk(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(f){if(!ck(f))throw f}let m=await o(u);if(m){if(Ha(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Xs(e,a),l=await o(u);if(!l||!Ha(l,c))throw new Qs(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=Xs(e,a),l=await o(u);if(!l)return!1;if(!Ha(l,c))throw new Qs(a);return await r.rm(u,{force:!0}),!0}}}var Qs,sk,qp=h(()=>{"use strict";L();Qs=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},sk=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Ga=h(()=>{"use strict"});var Vp=h(()=>{"use strict"});var lk,dk,pk,KL,Kp=h(()=>{"use strict";lk={refreshCadenceS:270,tolerance:3},dk=270,pk=2700,KL={...lk,claimGraceS:dk,recentCommitProtectionS:pk}});var zp=h(()=>{"use strict"});import{execFile as hk}from"node:child_process";import{promisify as yk}from"node:util";var ZL,Yp=h(()=>{"use strict";Ga();ZL=yk(hk)});var Xp=h(()=>{"use strict";hp();Rp();kp();Sp();Ep();Ks();vp();Cp();Tp();Ap();Vs();Op();Pp();Ip();Lp();Da();Dp();Np();$p();Mp();Ys();Bp();Fp();qs();Fa();ja();Hp();Gp();Wp();Up();zs();Ba();Ma();qp();Ga();Vp();Kp();zp();Yp()});import{EventEmitter as bk}from"node:events";import{spawn as wk}from"node:child_process";function eo(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 to(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var An,Wa,_k,Rk,kk,Sk,Zs,Ua=h(()=>{An="github-webhook",Wa="github.webhook.delivery";_k="pull_request,pull_request_review,check_run,check_suite,workflow_run",Rk=3,kk=1e3,Sk=/no extension matched|unknown command|command not found/i,Zs=class extends bk{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,kk).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?eo(c,n):to(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=wk(r,["webhook","forward",`--events=${_k}`],{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(`
64
- `))>=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");Sk.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>=Rk)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var ro,Qp=h(()=>{"use strict";Ua();Ua();tt();ro=class extends Zs{constructor(t){super(t,lr)}}});import{EventEmitter as Ek}from"node:events";import{join as xk}from"node:path";function qa(e){let t=us(e.cwd),r=jp(xk(t,".red"));return new Ja({...e,leases:e.leases??Jp(r),lane:e.lane??$a(r),makeForwarder:e.makeForwarder??((n,s)=>new ro({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>dr(n.pid,n.start_time))})}var Ja,Zp=h(()=>{"use strict";Xp();Qp();tt();Pi();Ja=class extends Ek{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(An).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"?eo(a,n):to(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===An&&o.kind===Wa&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(An);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Va={};j(Va,{listWaits:()=>ds,renderWaitHelp:()=>Tn,runWait:()=>Tk});import{randomUUID as em}from"node:crypto";import{mkdir as vk,rm as Ck}from"node:fs/promises";async function Tk(e,t=process.cwd()){let r;try{r=await kl(e)}catch(n){return await Lk(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Tn()),0;if(r.kind==="ls"){let n={schema:fl,version:1,waits:await ds(t)};return process.stdout.write(hr(n,r.options.format)),0}return Ai(r.kind)?await Ak({...r,kind:r.kind},t):(process.stdout.write(Tn()),2)}async function Ak(e,t){let r=e.kind,n=Ni({id:em(),kind:r,target:Ik(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Qr(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Ci[r],status:"running",attempts:0}),s=Al(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 vk(pr(t),{recursive:!0}),await mr(s,n);let l=await Ok(e,t,s,n,o.signal);i&&(l={...l,verdict:q(`wait interrupted by ${i}`,l.verdict.details)});let p=await Ll({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(hr(p.result,e.options.format)),p.exitCode}catch(l){let p=q(l instanceof Error?l.message:String(l)),d=sn(r,n,p,{status:"success"},new Date().toISOString());return await on(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(hr(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Ck(s,{force:!0}).catch(()=>{})}}async function Ok(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Yl({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:vl(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:q("missing PR number")};n.webhook_mode="polling";let a=qa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await ws({probe:dp(i,o,{emptyChecksGraceMs:en("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:en("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 Pk(e,o,r,n);if(!i.ok)return{verdict:q(i.reason)};n.webhook_mode="polling";let a=qa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await ws({probe:()=>pp(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:en("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 ws({probe:()=>fp(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:en("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Pk(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 mp(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await mr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Ik(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 Lk(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=Ai(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Ni({id:em(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Ci[o],status:"indeterminate",attempts:0}),c=sn(o,a,q(t instanceof Error?t.message:String(t)),{status:"success"},i);return await on(s,c,r).catch(()=>{}),process.stdout.write(hr(c,r)),2}var Ka=h(()=>{"use strict";Sl();Nl();Ql();Nt();Ii();gp();tt();nn();Ia();Zp();nn();Ia()});import{existsSync as Bk}from"node:fs";import{join as Fk}from"node:path";function jk(){for(let e of(process.env.PATH??"").split(":"))if(e&&Bk(Fk(e,"rsp")))return!0;return!1}function On(){return jk()?["rsp"]:[process.execPath,process.argv[1]]}var za=h(()=>{"use strict"});var no={};j(no,{parseProxyCommandLine:()=>om,rewriteProxyCommandLine:()=>sm,runProxy:()=>Wk});import{spawn as Hk}from"node:child_process";function Gk(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function Wk(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=om(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=sm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await Uk(t.telemetryRoot,r,c),await nm(r);throw c}for(let c of s)await Jk(t.telemetryRoot,c);let i=await nm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await ot(t.telemetryRoot,{collection:de,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 sm(e,t="lossless",r=On()){let n=Xk(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||Yk(n,a)==="|")return i.text;let c=qk(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function om(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 Uk(e,t,r){await ot(e,{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:me(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Jk(e,t){await ot(e,{collection:K,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 nm(e){let t=Hk(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
65
- `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function qk(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=Zk(o);if(!i)return null;let a=zk(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(Bt(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:me(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Vk(c);if(!l)return null;let p=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],m=[...p,...r.map(Gk),...d,...l.wrapperWords].join(" ");return{text:`${n}${m}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:me(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Vk(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}:Kk(t,r)}function Kk(e,t){return e[0]==="cat"&&e.length===2&&Ya(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ya(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])&&Ya(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ya(e){return!!e&&!e.startsWith("-")}function zk(e){let t=0;for(;t<e.length&&Rr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Rr(e[t].value);)t+=1;return t}function Yk(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Xk(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=Qk(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 Qk(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 Zk(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 so=h(()=>{"use strict";dn();za();je()});function cm(e,t={}){let r=eS(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 m of new Set(d.tokens))n.set(m,(n.get(m)??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=Xa(o),u=Xa(i),l=Xa(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(m=>iS(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Qa(d.length,c)+Qa(d.tokens.length,u)+Qa(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+sS(d.tokens,n,r.length)+oS(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function eS(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(im(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(im(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function im(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:tS(n),tokens:rS(n),numbers:nS(n),length:n.length}}function tS(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 rS(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function nS(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function sS(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 oS(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Xa(e){let t=am(e),r=am(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Qa(e,t){return Math.abs(e-t.median)/t.mad}function am(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 iS(e,t,r,n){return e<n&&r<t}var um=h(()=>{"use strict"});var Za={};j(Za,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>nt,GIT_LOG_MACHINE_FIELDS:()=>dm,StructuredUsageError:()=>oo,cleanStatusPayload:()=>gm,recoveryInstruction:()=>Ae,renderGitContract:()=>pm,runGitWrapper:()=>cS});import{spawn as aS}from"node:child_process";async function cS(e,t){let r=mm(e),n=fm(r.argv),s=await pS(n,r.argv.slice(1));return pm(e,s,t)}async function pm(e,t,r){let n=mm(e);if((t.status??0)!==0||t.signal){let p=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=fm(n.argv),o;try{o=mS(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof io)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(uS(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=PS(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 ${Ae(u)}
62
+ `)){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 lt(e,{collection:Q,id:Uk(),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 po=h(()=>{"use strict";yn();yn();U();Ie()});import{spawn as zk}from"node:child_process";async function Fn(e,t){return await Yk(t,async r=>{let n=await Qk(e,t.cwd,r);return n||await Xk(e,t.cwd,r)})}async function Yk(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 Xk(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=zk("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&vs(l).then(m=>xs(m,"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 Qk(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Zk(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=We(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Rr(s,"database_id")||Rr(s,"id"),status:X(s,"status").toUpperCase(),conclusion:X(s,"conclusion").toUpperCase(),workflowName:X(s,"workflow_name")||X(s,"name"),headBranch:X(s,"head_branch"),url:X(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ps(e,"--branch"),s=Ps(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=Wt(We(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Rr(a,"database_id")||Rr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Ps(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=Wt(JSON.parse(s.stdout)).map(i=>({tagName:X(i,"tag_name"),publishedAt:X(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function Zk(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=We(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=X(We(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?Wt(We(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Wt(We(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
63
+ `),stdout:JSON.stringify({number:Rr(s,"number"),state:X(s,"state").toUpperCase(),mergeable:eS(s),statusCheckRollup:[...c.map(l=>({conclusion:X(l,"state").toUpperCase()})),...u.map(l=>({status:X(l,"status").toUpperCase(),conclusion:X(l,"conclusion").toUpperCase()}))],url:X(s,"html_url")})}}function eS(e){let t=X(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var bp=h(()=>{"use strict";po();Is();at()});function _p(e,t,r){let n=Date.now();return()=>tS(e,t,r,n)}async function tS(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return Y("missing PR number");let s=await Fn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Y(s.stderr||"gh pr view failed");let o=ba(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(rS),u=c.filter(m=>m==="failure").length,l=c.filter(m=>m==="pending").length;if(String(o.state)!=="OPEN")return it("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return it("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return it("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return gr(`PR #${e} has ${l} pending checks`);if(i.length===0){let m=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||m<r.emptyChecksGraceMs?gr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:m}):it("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?gr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):it("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Rp(e,t){if(!e)return Y("missing run id");let r=await Fn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return Y(r.stderr||"gh run view failed");let n=ba(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?gr(`run ${e} is ${s||"pending"}`):o==="success"?it("success",`run ${e} succeeded`,wp(n)):it("failure",`run ${e} concluded ${o||"unknown"}`,wp(n))}async function kp(e,t){let r=await Fn(["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 _r(s)&&s.databaseId!=null?String(s.databaseId):""}async function Sp(e,t,r){let n=await Fn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return Y(n.stderr||"gh release list failed");let o=Wt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||nS(e,a))&&c>=t});return o?it("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):gr("no matching release is published yet")}function rS(e){let t=_r(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 wp(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 nS(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Ep=h(()=>{"use strict";Ht();bp();Is()});function jn(){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(`
64
+ `)}var Rc=h(()=>{"use strict"});var xp=h(()=>{"use strict";L()});var vp=h(()=>{"use strict"});function sS(e){return Object.keys(e)}function Yt(e){return{...e,fields:sS(e.fields)}}var Cp,Tp,Op,kc,oS,iS,aS,fo,go=h(()=>{"use strict";Cp="red.castle.lane.v1",Tp="red.castle.state.v1",Op="red.castle.history.v1",kc="red.castle.attempt.v1",oS="red.castle.validation.v2",iS="red.castle.envelope.v1",aS="red.castle.hitl-card.v1",fo=[Yt({schemaId:Cp,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}}),Yt({schemaId:Tp,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}}),Yt({schemaId:Op,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}}),Yt({schemaId:kc,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),Yt({schemaId:oS,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}}),Yt({schemaId:iS,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}}),Yt({schemaId:aS,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 sD,ho=h(()=>{"use strict";L();go();sD=new Map(fo.map(e=>[e.schemaId,new Set(e.fields)]))});var Ap=h(()=>{"use strict";vp();ho()});var Pp=h(()=>{"use strict"});var hD,Ip=h(()=>{"use strict";L();go();hD=new Set(fo.find(e=>e.schemaId===kc).fields)});var lS,dS,mS,bD,Lp=h(()=>{"use strict";lS=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],dS=["log","diagnostic","envelope","transcript","patch","handoff","report"],mS=["branch","pr","commit","tag","issue"],bD=new Map([...lS.map(e=>[e,"workspace"]),...dS.map(e=>[e,"evidence"]),...mS.map(e=>[e,"pointer"])])});var yo=h(()=>{"use strict"});var Sc=h(()=>{"use strict";yo()});var bo=h(()=>{"use strict"});import{appendFile as pS,mkdir as fS,readFile as gS}from"node:fs/promises";import{dirname as hS,join as yS}from"node:path";function Ec(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Dp(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:Ec(t.at,"at"),singleton:Ec(t.singleton,"singleton"),kind:Ec(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function bS(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function wS(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function _S(e){return yS(e.castleStateRoot,"singleton-events.toonl")}function xc(e,t={}){let r=t.fs??{appendFile:pS,mkdir:fS,readFile:gS},n=t.clock??(()=>new Date().toISOString()),s=_S(e);return{path:s,async append(o){let i=Dp({at:o.at??n(),...o});return await r.mkdir(hS(s),{recursive:!0}),await r.appendFile(s,et().push(bS(i)),"utf8"),i},async read(o={}){wS(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Ze(i).map(Dp);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var vc=h(()=>{"use strict";L()});var wo=h(()=>{"use strict";L();bo();vc()});var Np=h(()=>{"use strict";yo();Sc();wo()});var $p=h(()=>{"use strict"});var KD,Mp=h(()=>{"use strict";L();KD=24*60*60*1e3});var Bp=h(()=>{"use strict";ho()});var QD,ZD,Fp=h(()=>{"use strict";QD=15*6e4,ZD=30*6e4});var jp=h(()=>{"use strict"});var kS,SS,rN,nN,Hp=h(()=>{"use strict";kS=["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"],SS={pre_worktree:["cargo","gradle"]},rN=Object.values(SS).flat(),nN=new Set(kS)});var Gp=h(()=>{"use strict"});var Wp=h(()=>{"use strict";wo()});var Up=h(()=>{"use strict"});var Jp=h(()=>{"use strict"});var qp=h(()=>{"use strict";L()});var Cc=h(()=>{"use strict"});var Vp=h(()=>{"use strict";L();Cc()});var Kp=h(()=>{"use strict";L()});var Tc=h(()=>{"use strict"});var Oc=h(()=>{"use strict"});import{resolve as J}from"node:path";function zp(e){let t=J(e),r=J(t,"state"),n=J(r,"castle"),s=J(t,"tmp"),o=J(s,"supervisors"),i=J(s,"workers"),a=J(s,"monitors"),c=J(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:J(n,"history.toonl"),castleAttempts:J(n,"attempts.toonl"),castleValidation:J(n,"validation.toonl"),castleFleets:J(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>J(o,u),fleet:u=>J(o,u),workersRoot:i,worker:u=>J(i,u),workerSteerFile:u=>J(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>J(a,u),worktreesRoot:c,worktreeLane:u=>J(c,u)}}var Yp=h(()=>{"use strict"});var Xp=h(()=>{"use strict";bo()});var Qp=h(()=>{"use strict"});var Zp=h(()=>{"use strict";Tc();Oc()});import{mkdir as ES,readFile as xS,rename as vS,rm as CS,writeFile as TS}from"node:fs/promises";import{dirname as OS,join as AS}from"node:path";function IS(e){if(!PS.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function LS(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function DS(e){return e.code==="ENOENT"}function NS(e){return e.code==="EEXIST"}function $S(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 Ac(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function _o(e,t){return IS(t),AS(e.castleStateRoot,"singletons",t,"lease.toon")}function ef(e,t={}){let r=t.fs??{mkdir:ES,readFile:xS,rename:vS,rm:CS,writeFile:TS},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??LS;async function o(a){try{return $S(D(await r.readFile(a,"utf8")))}catch(c){if(DS(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(_o(e,a))},async acquire(a,c){let u=_o(e,a);await r.mkdir(OS(u),{recursive:!0});let l=!1;for(;;){let m=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:m,renewed_at:m};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!NS(f))throw f}let p=await o(u);if(p){if(Ac(p,c))return{acquired:!0,reaped:l,lease:p};if(await s(p.pid))return{acquired:!1,lease:p};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=_o(e,a),l=await o(u);if(!l||!Ac(l,c))throw new Ro(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=_o(e,a),l=await o(u);if(!l)return!1;if(!Ac(l,c))throw new Ro(a);return await r.rm(u,{force:!0}),!0}}}var Ro,PS,tf=h(()=>{"use strict";L();Ro=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},PS=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Pc=h(()=>{"use strict"});var rf=h(()=>{"use strict"});var MS,BS,FS,GN,nf=h(()=>{"use strict";MS={refreshCadenceS:270,tolerance:3},BS=270,FS=2700,GN={...MS,claimGraceS:BS,recentCommitProtectionS:FS}});var sf=h(()=>{"use strict"});import{execFile as WS}from"node:child_process";import{promisify as US}from"node:util";var VN,of=h(()=>{"use strict";Pc();VN=US(WS)});var af=h(()=>{"use strict";xp();Ap();Pp();Ip();Lp();yo();Np();$p();Mp();Bp();ho();Fp();jp();Hp();Gp();Sc();Wp();Up();Jp();qp();wo();Vp();Kp();go();Tc();Oc();Yp();Xp();Qp();Zp();bo();Cc();vc();tf();Pc();rf();nf();sf();of()});import{EventEmitter as JS}from"node:events";import{spawn as qS}from"node:child_process";function So(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 Eo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Hn,Ic,VS,KS,zS,YS,ko,Lc=h(()=>{Hn="github-webhook",Ic="github.webhook.delivery";VS="pull_request,pull_request_review,check_run,check_suite,workflow_run",KS=3,zS=1e3,YS=/no extension matched|unknown command|command not found/i,ko=class extends JS{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,zS).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?So(c,n):Eo(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=qS(r,["webhook","forward",`--events=${VS}`],{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(`
65
+ `))>=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");YS.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>=KS)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var xo,cf=h(()=>{"use strict";Lc();Lc();at();xo=class extends ko{constructor(t){super(t,hr)}}});import{EventEmitter as XS}from"node:events";import{join as QS}from"node:path";function Nc(e){let t=Ts(e.cwd),r=zp(QS(t,".red"));return new Dc({...e,leases:e.leases??ef(r),lane:e.lane??xc(r),makeForwarder:e.makeForwarder??((n,s)=>new xo({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>yr(n.pid,n.start_time))})}var Dc,uf=h(()=>{"use strict";af();cf();at();pa();Dc=class extends XS{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(Hn).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"?So(a,n):Eo(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===Hn&&o.kind===Ic&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Hn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var $c={};M($c,{listWaits:()=>As,renderWaitHelp:()=>jn,runWait:()=>tE});import{randomUUID as lf}from"node:crypto";import{mkdir as ZS,rm as eE}from"node:fs/promises";async function tE(e,t=process.cwd()){let r;try{r=await Sd(e)}catch(n){return await iE(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(jn()),0;if(r.kind==="ls"){let n={schema:gd,version:1,waits:await As(t)};return process.stdout.write(kr(n,r.options.format)),0}return da(r.kind)?await rE({...r,kind:r.kind},t):(process.stdout.write(jn()),2)}async function rE(e,t){let r=e.kind,n=ya({id:lf(),kind:r,target:oE(e),reason:e.options.reason,pid:process.pid,pid_start_time:await un(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:ua[r],status:"running",attempts:0}),s=Ad(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 ZS(br(t),{recursive:!0}),await wr(s,n);let l=await nE(e,t,s,n,o.signal);i&&(l={...l,verdict:Y(`wait interrupted by ${i}`,l.verdict.details)});let m=await Dd({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(kr(m.result,e.options.format)),m.exitCode}catch(l){let m=Y(l instanceof Error?l.message:String(l)),d=gn(r,n,m,{status:"success"},new Date().toISOString());return await hn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(kr(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await eE(s,{force:!0}).catch(()=>{})}}async function nE(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await am({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:Cd(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Y("missing PR number")};n.webhook_mode="polling";let a=Nc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Gs({probe:_p(i,o,{emptyChecksGraceMs:dn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("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 sE(e,o,r,n);if(!i.ok)return{verdict:Y(i.reason)};n.webhook_mode="polling";let a=Nc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Gs({probe:()=>Rp(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("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 Gs({probe:()=>Sp(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function sE(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 kp(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await wr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function oE(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 iE(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=da(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=ya({id:lf(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:ua[o],status:"indeterminate",attempts:0}),c=gn(o,a,Y(t instanceof Error?t.message:String(t)),{status:"success"},i);return await hn(s,c,r).catch(()=>{}),process.stdout.write(kr(c,r)),2}var Mc=h(()=>{"use strict";Ed();$d();um();Ht();fa();Ep();at();fn();Rc();uf();fn();Rc()});import{existsSync as dE}from"node:fs";import{join as mE}from"node:path";function pE(){for(let e of(process.env.PATH??"").split(":"))if(e&&dE(mE(e,"rsp")))return!0;return!1}function Gn(){return pE()?["rsp"]:[process.execPath,process.argv[1]]}var Bc=h(()=>{"use strict"});var vo={};M(vo,{parseProxyCommandLine:()=>gf,rewriteProxyCommandLine:()=>ff,runProxy:()=>hE});import{spawn as fE}from"node:child_process";function gE(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function hE(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=gf(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=ff(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await yE(t.telemetryRoot,r,c),await pf(r);throw c}for(let c of s)await bE(t.telemetryRoot,c);let i=await pf(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await lt(t.telemetryRoot,{collection:ge,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function ff(e,t="lossless",r=Gn()){let n=EE(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||SE(n,a)==="|")return i.text;let c=wE(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function gf(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 yE(e,t,r){await lt(e,{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:ye(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function bE(e,t){await lt(e,{collection:Q,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 pf(e){let t=fE(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)}
66
+ `),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function wE(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=vE(o);if(!i)return null;let a=kE(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(Ut(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=_E(c);if(!l)return null;let m=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],p=[...m,...r.map(gE),...d,...l.wrapperWords].join(" ");return{text:`${n}${p}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function _E(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}:RE(t,r)}function RE(e,t){return e[0]==="cat"&&e.length===2&&Fc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Fc(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])&&Fc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Fc(e){return!!e&&!e.startsWith("-")}function kE(e){let t=0;for(;t<e.length&&Tr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Tr(e[t].value);)t+=1;return t}function SE(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function EE(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=xE(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 xE(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 vE(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 Co=h(()=>{"use strict";U();kn();Bc();Ie()});function bf(e,t={}){let r=CE(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 p of new Set(d.tokens))n.set(p,(n.get(p)??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=jc(o),u=jc(i),l=jc(a),m=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!m.some(p=>LE(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:Hc(d.length,c)+Hc(d.tokens.length,u)+Hc(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+PE(d.tokens,n,r.length)+IE(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function CE(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(hf(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(hf(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function hf(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:TE(n),tokens:OE(n),numbers:AE(n),length:n.length}}function TE(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 OE(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function AE(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function PE(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 IE(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function jc(e){let t=yf(e),r=yf(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Hc(e,t){return Math.abs(e-t.median)/t.mad}function yf(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 LE(e,t,r,n){return e<n&&r<t}var wf=h(()=>{"use strict"});var Gc={};M(Gc,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,GIT_LOG_MACHINE_FIELDS:()=>Rf,StructuredUsageError:()=>To,cleanStatusPayload:()=>xf,recoveryInstruction:()=>Le,renderGitContract:()=>kf,runGitWrapper:()=>NE});import{spawn as DE}from"node:child_process";async function NE(e,t){let r=Sf(e),n=Ef(r.argv),s=await FE(n,r.argv.slice(1));return kf(e,s,t)}async function kf(e,t,r){let n=Sf(e);if((t.status??0)!==0||t.signal){let m=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let s=Ef(n.argv),o;try{o=jE(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof Oo)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:m.reason,family:"git status",stderrHead:m.message}};throw m}let i=C(o);if($E(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=sx(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)}
66
67
  `;return{stdout:Buffer.from(`${C(a.payload)}
67
- ${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 Ae(e){return e.startsWith("el:")?`rsp show ${e}`:e}function mm(e){let t=Ot(e),r=[],n=!1;for(let o of t.argv){if(o==="--full"){n=!0;continue}r.push(o)}let s=r.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new oo(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function uS(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!lS(e)||n.level!=="lossless")return!0;let s=OS(n.heavyGitByteThreshold,nt);return Buffer.byteLength(t)<=s}function lS(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function fm(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 dS(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${dm.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 pS(e,t){let r=aS("git",dS(e,t),{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",o=>n.push(o)),r.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{r.on("error",i),r.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function mS(e,t,r,n){switch(e){case"status":return fS(t,r,n);case"log":return kS(t,r,n);case"diff":return SS(t,r,n);case"commit":return ht(ES(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ht(xS(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return vS(t,r,n);case"branch":return CS(t,r,n);case"show":return TS(t,r,n)}}function fS(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of gS(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=bS(u),o=!0;continue}let l=hS(u);if(l){o=!0,s.push(l);continue}let p=yS(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return gm(e.join(" "),n);throw new io("git-status-unparseable")}let a=Q(s,r),c=hm(a,"state");return ht({command:e.join(" "),branch:n,rows:a,summary:RS(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function gS(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function hS(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Pn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Pn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Pn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Pn(e.slice(2),"??"):null}function yS(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Pn(wS(e.slice(3),t),t):null}function Pn(e,t){let r=lm(t[0]??"."),n=lm(t[1]??".");return{path:_S(e),index:r,worktree:n,state:AS(`${r}${n}`)}}function lm(e){return e===" "?".":e}function bS(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function wS(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function _S(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function RS(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 gm(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 kS(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=Q(n,r);return ht({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 SS(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=Q(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 ht({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 ES(e,t){let r=t.split(`
68
- `)[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 xS(e,t){let r=t.split(`
69
- `).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,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:p}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote: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 vS(e,t,r){let n=t.split(`
70
- `),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=Q(s,r),a=hm(i,"author");return ht({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 CS(e,t,r){let n=t.split(`
71
- `).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=Q(n,r),o=s.find(i=>i.current)?.name??"";return ht({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 TS(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(""),m=[];for(let b of i.split(`
72
- `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let x=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let f=Q(m,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return ht({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
73
- `).length:0,files:f,summary:`${r?`${f.length}/${m.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ht(e,t,r){return t?Xe(e,r):e}function AS(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function hm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function OS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function PS(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 dm,oo,io,Jt=h(()=>{"use strict";L();Te();qr();Ne();Te();dm=["%h","%an","%as","%s"];oo=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Kn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},io=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var nc={};j(nc,{NORMALIZATION_ALLOWLIST:()=>Sm,NORMALIZE_ANSI:()=>co,NORMALIZE_BLANK_LINES:()=>po,NORMALIZE_CR_PROGRESS:()=>uo,NORMALIZE_JSON_TOON:()=>km,NORMALIZE_TRAILING_WHITESPACE:()=>lo,crushJsonArrayItems:()=>In,formatCodexNormalizeDecision:()=>Tm,formatNormalizeDecision:()=>Cm,hookDecisionFromClaudePostExecJson:()=>Em,hookDecisionFromCodexPostExecJson:()=>xm,normalizeOutput:()=>mo,renderGenericJsonLane:()=>tc,runClaudePostExecHook:()=>DS,runCodexPostExecHook:()=>NS,transcodeJsonToToon:()=>Rm});import{readFileSync as ao}from"node:fs";function Rm(e,t){let r=t?.encode??C,n=t?.decode??N,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 ec(o,a)?i.trimEnd():e}async function tc(e,t={}){let r=FS(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=_m(t.minTokens,IS),i=_m(t.maxItems,LS);if(!(s>i&&US(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??In)(n,i)}catch(_){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:JS(_)}}}let u=c.items,l={items:u},p=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,f=C(l).trimEnd();return{output:[p,m,f].filter(Boolean).join(`
74
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function In(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=jS(e),s=new Set;n&&e.forEach((a,c)=>{rc(a)!==n&&s.add(c)});let o=HS(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 mo(e){let t=e;for(let r of Sm)t=r.apply(t);return t}async function Em(e,t){return await vm(e,t)}async function xm(e,t){return await vm(e,t)}async function vm(e,t){let r=BS(e),n=qS(r,["cwd"])||t.cwd;if(!await(t.isEnabled??MS)(n))return{kind:"passthrough",reason:"disabled"};let o=VS(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??mo)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Cm(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Tm(e){return{stdout:"",status:0}}async function DS(e){let t=e?ao(e,"utf8"):ao(0,"utf8"),r=await Em(t,{cwd:process.cwd()}),n=Cm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function NS(e){let t=e?ao(e,"utf8"):ao(0,"utf8"),r=await xm(t,{cwd:process.cwd()}),n=Tm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function $S(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&&ym(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&ym(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function ym(e){return e>=32&&e<=63}function MS(e){return Ce(e,process.env).enabled}function BS(e){try{let t=JSON.parse(e);return Tr(t)?t:{}}catch{return{}}}function FS(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Tr(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 jS(e){let t=new Map;for(let s of e){let o=rc(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 rc(e){return Array.isArray(e)?"array":Tr(e)?Object.keys(e).sort().map(t=>`${t}:${bm(e[t])}`).join("|"):bm(e)}function HS(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&rc(s)!==t))for(let[i,a]of Am(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 GS(s))r.add(o);for(let o of WS(s))r.add(o)}return r}function GS(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=wm(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=wm(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 WS(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 Am(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Tr(e)?Object.entries(e).flatMap(([r,n])=>Am(n,t?`${t}.${r}`:r)):[]}function bm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function wm(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 US(e){return Math.ceil(e.length/4)}function _m(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function JS(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 qS(e,t){let r=e;for(let n of t){if(!Tr(r))return"";r=r[n]}return typeof r=="string"?r:""}function VS(e,t){let r=e[t];return Tr(r)?r:null}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ec(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)=>ec(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)&&ec(r[i],n[i]))}var co,uo,lo,po,km,IS,LS,Sm,Ln=h(()=>{"use strict";L();Te();co={id:"ansi",apply:$S},uo={id:"cr-progress",apply:e=>e.split(`
68
+ ${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 Sf(e){let t=Dt(e),r=[],n=!1;for(let o of t.argv){if(o==="--full"){n=!0;continue}r.push(o)}let s=r.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new To(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function $E(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!ME(e)||n.level!=="lossless")return!0;let s=nx(n.heavyGitByteThreshold,ct);return Buffer.byteLength(t)<=s}function ME(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ef(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 BE(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${Rf.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 FE(e,t){let r=DE("git",BE(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 jE(e,t,r,n){switch(e){case"status":return HE(t,r,n);case"log":return zE(t,r,n);case"diff":return YE(t,r,n);case"commit":return _t(XE(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return _t(QE(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return ZE(t,r,n);case"branch":return ex(t,r,n);case"show":return tx(t,r,n)}}function HE(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of GE(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=JE(u),o=!0;continue}let l=WE(u);if(l){o=!0,s.push(l);continue}let m=UE(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return xf(e.join(" "),n);throw new Oo("git-status-unparseable")}let a=te(s,r),c=vf(a,"state");return _t({command:e.join(" "),branch:n,rows:a,summary:KE(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function GE(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function WE(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Wn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Wn(e.slice(2),"??"):null}function UE(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Wn(qE(e.slice(3),t),t):null}function Wn(e,t){let r=_f(t[0]??"."),n=_f(t[1]??".");return{path:VE(e),index:r,worktree:n,state:rx(`${r}${n}`)}}function _f(e){return e===" "?".":e}function JE(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function qE(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function VE(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function KE(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 xf(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 zE(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 _t({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 YE(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 _t({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 XE(e,t){let r=t.split(`
69
+ `)[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),m=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:m,summary:`commit ${c} on ${a}: ${u} files, +${l} -${m}`}}function QE(e,t){let r=t.split(`
70
+ `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,m=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:m}}),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 ZE(e,t,r){let n=t.split(`
71
+ `),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),m=o.commit.slice(0,12);l&&l.commit===m&&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:m,path:o.path}),o=null}let i=te(s,r),a=vf(i,"author");return _t({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 ex(e,t,r){let n=t.split(`
72
+ `).filter(Boolean).map(i=>{let[a,c,u,l,m,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:m||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return _t({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 tx(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,m,d=""]=o.split(""),p=[];for(let b of i.split(`
73
+ `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let S=w[3]??"";p.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...S].filter(O=>O==="+").length,deleted:[...S].filter(O=>O==="-").length,binary:S.startsWith("Bin")})}let f=te(p,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return _t({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:m??"",body_lines:d.trim()?d.trim().split(`
74
+ `).length:0,files:f,summary:`${r?`${f.length}/${p.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function _t(e,t,r){return t?nt(e,r):e}function rx(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function vf(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function nx(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function sx(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 Rf,To,Oo,Xt=h(()=>{"use strict";U();L();Pe();Qr();Fe();Pe();Rf=["%h","%an","%as","%s"];To=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return is(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Oo=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var qc={};M(qc,{NORMALIZATION_ALLOWLIST:()=>Lf,NORMALIZE_ANSI:()=>Po,NORMALIZE_BLANK_LINES:()=>Do,NORMALIZE_CR_PROGRESS:()=>Io,NORMALIZE_JSON_TOON:()=>If,NORMALIZE_TRAILING_WHITESPACE:()=>Lo,crushJsonArrayItems:()=>Un,formatCodexNormalizeDecision:()=>Bf,formatNormalizeDecision:()=>Mf,hookDecisionFromClaudePostExecJson:()=>Df,hookDecisionFromCodexPostExecJson:()=>Nf,normalizeOutput:()=>No,renderGenericJsonLane:()=>Uc,runClaudePostExecHook:()=>ax,runCodexPostExecHook:()=>cx,transcodeJsonToToon:()=>Pf});import{readFileSync as Ao}from"node:fs";function Pf(e,t){let r=t?.encode??C,n=t?.decode??D,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return Wc(o,a)?i.trimEnd():e}async function Uc(e,t={}){let r=mx(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=Af(t.minTokens,ox),i=Af(t.maxItems,ix);if(!(s>i&&yx(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Un)(n,i)}catch(_){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:bx(_)}}}let u=c.items,l={items:u},m=`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 p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,f=C(l).trimEnd();return{output:[m,p,f].filter(Boolean).join(`
75
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Un(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=px(e),s=new Set;n&&e.forEach((a,c)=>{Jc(a)!==n&&s.add(c)});let o=fx(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 No(e){let t=e;for(let r of Lf)t=r.apply(t);return t}async function Df(e,t){return await $f(e,t)}async function Nf(e,t){return await $f(e,t)}async function $f(e,t){let r=dx(e),n=wx(r,["cwd"])||t.cwd;if(!await(t.isEnabled??lx)(n))return{kind:"passthrough",reason:"disabled"};let o=_x(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??No)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Mf(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Bf(e){return{stdout:"",status:0}}async function ax(e){let t=e?Ao(e,"utf8"):Ao(0,"utf8"),r=await Df(t,{cwd:process.cwd()}),n=Mf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function cx(e){let t=e?Ao(e,"utf8"):Ao(0,"utf8"),r=await Nf(t,{cwd:process.cwd()}),n=Bf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function ux(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&&Cf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Cf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Cf(e){return e>=32&&e<=63}function lx(e){return Ae(e,process.env).enabled}function dx(e){try{let t=JSON.parse(e);return Nr(t)?t:{}}catch{return{}}}function mx(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Nr(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 px(e){let t=new Map;for(let s of e){let o=Jc(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 Jc(e){return Array.isArray(e)?"array":Nr(e)?Object.keys(e).sort().map(t=>`${t}:${Tf(e[t])}`).join("|"):Tf(e)}function fx(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Jc(s)!==t))for(let[i,a]of Ff(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 gx(s))r.add(o);for(let o of hx(s))r.add(o)}return r}function gx(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=Of(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Of(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 hx(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 Ff(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Nr(e)?Object.entries(e).flatMap(([r,n])=>Ff(n,t?`${t}.${r}`:r)):[]}function Tf(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Of(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 yx(e){return Math.ceil(e.length/4)}function Af(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function bx(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 wx(e,t){let r=e;for(let n of t){if(!Nr(r))return"";r=r[n]}return typeof r=="string"?r:""}function _x(e,t){let r=e[t];return Nr(r)?r:null}function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wc(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)=>Wc(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)&&Wc(r[i],n[i]))}var Po,Io,Lo,Do,If,ox,ix,Lf,Jn=h(()=>{"use strict";L();Pe();Po={id:"ansi",apply:ux},Io={id:"cr-progress",apply:e=>e.split(`
75
76
  `).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(`
76
- `)},lo={id:"trailing-whitespace",apply:e=>e.split(`
77
+ `)},Lo={id:"trailing-whitespace",apply:e=>e.split(`
77
78
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
78
- `)},po={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
79
+ `)},Do={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
79
80
 
80
- `)};km={id:"json-to-toon",apply:e=>Rm(e)},IS=200,LS=15;Sm=[co,uo,lo,po,km]});var $n={};j($n,{parseExecCommandLine:()=>Nm,renderExecContract:()=>Dm,runExecWrapper:()=>QS});import{isUtf8 as KS}from"node:buffer";import{spawn as zS}from"node:child_process";async function QS(e,t){let r=Nm(e),n=await ZS(r);return await Dm(r,n,t)}async function Dm(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=_e(e,t.stdout,t.stderr);return{stdout:$(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=eE(n),i=o.kind==="text"?Buffer.from(o.text):n,a=_E(r.heavyByteThreshold,YS);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"?rE(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):nE(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 Nm(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 ZS(e){let t=zS(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",(i,a)=>{s({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(n).toString("binary"),status:i,signal:a})})})}function eE(e){return KS(e)?{kind:"text",text:tE(e.toString("utf8"))}:{kind:"bytes"}}function tE(e){let t=e;for(let r of[co,uo,lo,po])t=r.apply(t);return t}function rE(e,t,r,n,s,o=mE,i=In){let c=Math.max(1,Math.floor((n==="terse"?Lm:XS)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=pE(e,c,l,o),d=sE(e),m=oE(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),f=$m(s,d,t,wE(u),r,m.summary),_=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Gm(p.error)}:m.degradation;return{text:Hm(f),degradation:_}}function nE(e,t,r,n){let s=Math.max(1,Math.floor(Lm/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Hm($m(n,"bytes",t,0,r,o))}}function $m(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Ae(s)}}}function sE(e){let t=e.trim();return t?Bm(t)?"json":Fm(e)?"jsonl":fE(e)?"unified-diff":jm(e)?"tabular":gE(e)?"log-like":hE(e)?"prose":"untyped":"untyped"}function oE(e,t,r,n,s,o,i=In){switch(e){case"json":return iE(t,i);case"jsonl":return{summary:aE(t)};case"unified-diff":return{summary:cE(t)};case"tabular":return{summary:uE(t)};case"log-like":return{summary:lE(t,o)};case"prose":return{summary:dE(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Mm(r,n,s,o)}}}function iE(e,t){let r=Bm(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(yt),item_keys:oc(r)}}}catch(n){return{summary:Pm(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Gm(n)}}}return{summary:Pm(r)}}if(Nn(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,yt(o)]))}}}return{summary:{root_type:typeof r,value:yt(r)}}}function Pm(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(yt),item_keys:oc(e)}}function aE(e){let t=Fm(e)??[],r=yE(t,"level");return{records:t.length,keys:oc(t),levels:r,first:yt(t[0]),last:yt(t.at(-1))}}function cE(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 uE(e){let t=jm(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Mm(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function lE(e,t){let r=Dn(e);return{entries:r.length,levels:bE(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 dE(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 Mm(e,t,r,n){let s=Im(e.subarray(0,t)),o=Im(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 pE(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function mE(e,t){return cm(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Bm(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Nn(r)||Array.isArray(r)?r:null}catch{return null}}function Fm(e){let t=Dn(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 fE(e){let t=Dn(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 jm(e){let t=Dn(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 gE(e){let t=Dn(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 hE(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 Dn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function oc(e){let t=new Map;for(let r of e)if(Nn(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 yE(e,t){let r=new Map;for(let n of e){if(!Nn(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 bE(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 yt(e){return typeof e=="string"?qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(yt):Nn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,yt(r)])):String(e)}function qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Om?t:`${t.slice(0,Om-1)}\u2026`}function Hm(e){let t=C(e).trimEnd(),r=N(t);if(!sc(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
81
- `}function sc(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)=>sc(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)&&sc(r[i],n[i]))}function Nn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gm(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 Im(e){return e.toString("utf8").replace(/�$/g,"")}function wE(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 _E(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var YS,XS,Lm,Om,Mn=h(()=>{"use strict";L();um();Jt();Ln();Ne();YS=8*1024,XS=2*1024,Lm=1024,Om=240});var Ro={};j(Ro,{RSP_WRAPPER_CAPABILITIES:()=>jn,_testOnlyResetBinaryState:()=>IE,formatCodexHookDecision:()=>ef,formatHookDecision:()=>Zm,hookDecisionFromClaudePreExecJson:()=>BE,hookDecisionFromCodexPreExecJson:()=>FE,rewriteCommand:()=>Xm,rewriteTableFromCapabilities:()=>Ym,runClaudePreExecHook:()=>jE,runCodexPreExecHook:()=>HE});import{accessSync as TE,constants as AE,existsSync as OE,readFileSync as wo}from"node:fs";import{fileURLToPath as PE}from"node:url";function IE(){bo=void 0,ac=!1}function LE(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return TE(`${t}/rsp`,AE.X_OK),!0}catch{}return!1}function DE(e){return bo===void 0&&(bo=e()),bo}function NE(){ac||(ac=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Ym(e){let t=new Map;for(let r of e)t.set(ox(r.command),["rsp",...r.wrapper]);return t}function Xm(e,t=On()){let r=YE(e);if(r)return r;let n=KE(e);if(!n)return yo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Rr(s[0]))return yo(e,t);let o=ME(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return yo(e,t);let i=[...jn].sort((u,l)=>l.command.length-u.command.length).find(u=>zE(s,u.command));if(!i)return yo(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=of(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(bt),...c].join(" "),capabilityId:i.id}}function ME(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=of(e.redirectSuffix),o=t.map(bt);return n==="cat"&&r.length===2&&ho(r[1])?{kind:"rewrite",command:[...o,"cat",bt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&ho(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",bt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&ho(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],bt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&ho(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),bt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function ho(e){return!!e&&!e.startsWith("-")}async function BE(e,t){return await Qm(e,t)}async function FE(e,t){return await Qm(e,t)}async function Qm(e,t){return(await uc(e,t,"pre-exec")).decision}async function uc(e,t,r){let n=lf(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:Ar({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,o=Oe(s,["cwd"])||Oe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??GE)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:cc(s),decision:f,reason:"disabled"})}}let a=cc(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:"missing-command"})}}if(!DE(t.resolveBinary??LE)){NE();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Ce(o,process.env),p=t.rspInvocationPrefix??On(),d=l.proxyEnabled?XE(a,p):(t.rewrite??(f=>Xm(f,p)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:m})}}return await UE(o,t.wakeResident??WE),{decision:d,telemetryRoot:o,event:Ar({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function Zm(e){return e.kind==="rewrite"?tf(e.command):{stdout:"",status:0}}function ef(e){return e.kind==="rewrite"?tf(e.command):{stdout:"",status:0}}function tf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
82
- `,status:0}}async function jE(e){let t="";try{t=e?wo(e,"utf8"):wo(0,"utf8");let r=await uc(t,{cwd:process.cwd()},"claude-pre-exec");_o(r.telemetryRoot,r.event);let n=r.decision;nf("claude-pre-exec",n);let s=Zm(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return _o(process.cwd(),rf("claude-pre-exec",t,r)),sf("claude-pre-exec",r),0}}async function HE(e){let t="";try{t=e?wo(e,"utf8"):wo(0,"utf8");let r=await uc(t,{cwd:process.cwd()},"codex-pre-exec");_o(r.telemetryRoot,r.event);let n=r.decision;nf("codex-pre-exec",n);let s=ef(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return _o(process.cwd(),rf("codex-pre-exec",t,r)),sf("codex-pre-exec",r),0}}function _o(e,t){ot(e,t).catch(()=>{})}function Ar(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:me(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function rf(e,t,r){let n=lf(t),s=n.ok?cc(n.payload):"";return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:me(s),decision:"failed-open",reason:"hook-exception",error:lc(r)}}function GE(e){return Ce(e,process.env).enabled}async function WE(e){let t=Ce(e,process.env);if(!t.enabled||!VE(t))return;let r=lt(e);await ts(r,qE(t))}async function UE(e,t){try{await Promise.resolve(t(e))}catch(r){JE(r)}}function nf(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
81
+ `)};If={id:"json-to-toon",apply:e=>Pf(e)},ox=200,ix=15;Lf=[Po,Io,Lo,Do,If]});var Kn={};M(Kn,{parseExecCommandLine:()=>Jf,renderExecContract:()=>Uf,runExecWrapper:()=>xx});import{isUtf8 as Rx}from"node:buffer";import{spawn as kx}from"node:child_process";async function xx(e,t){let r=Jf(e),n=await vx(r);return await Uf(r,n,t)}async function Uf(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=Ee(e,t.stdout,t.stderr);return{stdout:$(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let o=Cx(n),i=o.kind==="text"?Buffer.from(o.text):n,a=Vx(r.heavyByteThreshold,Sx);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 m=o.kind==="text"?Ox(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Ax(n,n.length,l,e);return{stdout:Buffer.from(m.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:m.degradation}}function Jf(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 vx(e){let t=kx(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 Cx(e){return Rx(e)?{kind:"text",text:Tx(e.toString("utf8"))}:{kind:"bytes"}}function Tx(e){let t=e;for(let r of[Po,Io,Lo,Do])t=r.apply(t);return t}function Ox(e,t,r,n,s,o=jx,i=Un){let c=Math.max(1,Math.floor((n==="terse"?Wf:Ex)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=Fx(e,c,l,o),d=Px(e),p=Ix(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),f=qf(s,d,t,qx(u),r,p.summary),_=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Qf(m.error)}:p.degradation;return{text:Xf(f),degradation:_}}function Ax(e,t,r,n){let s=Math.max(1,Math.floor(Wf/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Xf(qf(n,"bytes",t,0,r,o))}}function qf(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Le(s)}}}function Px(e){let t=e.trim();return t?Kf(t)?"json":zf(e)?"jsonl":Hx(e)?"unified-diff":Yf(e)?"tabular":Gx(e)?"log-like":Wx(e)?"prose":"untyped":"untyped"}function Ix(e,t,r,n,s,o,i=Un){switch(e){case"json":return Lx(t,i);case"jsonl":return{summary:Dx(t)};case"unified-diff":return{summary:Nx(t)};case"tabular":return{summary:$x(t)};case"log-like":return{summary:Mx(t,o)};case"prose":return{summary:Bx(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Vf(r,n,s,o)}}}function Lx(e,t){let r=Kf(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(Rt),item_keys:Kc(r)}}}catch(n){return{summary:Hf(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Qf(n)}}}return{summary:Hf(r)}}if(Vn(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,Rt(o)]))}}}return{summary:{root_type:typeof r,value:Rt(r)}}}function Hf(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Rt),item_keys:Kc(e)}}function Dx(e){let t=zf(e)??[],r=Ux(t,"level");return{records:t.length,keys:Kc(t),levels:r,first:Rt(t[0]),last:Rt(t.at(-1))}}function Nx(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 $x(e){let t=Yf(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Vf(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Mx(e,t){let r=qn(e);return{entries:r.length,levels:Jx(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 Bx(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 Vf(e,t,r,n){let s=Gf(e.subarray(0,t)),o=Gf(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 Fx(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function jx(e,t){return bf(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Kf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Vn(r)||Array.isArray(r)?r:null}catch{return null}}function zf(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 Hx(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 Yf(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 Gx(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 Wx(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 Kc(e){let t=new Map;for(let r of e)if(Vn(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 Ux(e,t){let r=new Map;for(let n of e){if(!Vn(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 Jx(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 Rt(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Rt):Vn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,Rt(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=jf?t:`${t.slice(0,jf-1)}\u2026`}function Xf(e){let t=C(e).trimEnd(),r=D(t);if(!Vc(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
82
+ `}function Vc(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)=>Vc(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)&&Vc(r[i],n[i]))}function Vn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qf(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 Gf(e){return e.toString("utf8").replace(/�$/g,"")}function qx(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 Vx(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Sx,Ex,Wf,jf,zn=h(()=>{"use strict";U();L();wf();Xt();Jn();Fe();Sx=8*1024,Ex=2*1024,Wf=1024,jf=240});var Jo={};M(Jo,{RSP_WRAPPER_CAPABILITIES:()=>Qn,_testOnlyResetBinaryState:()=>sv,formatCodexHookDecision:()=>dg,formatHookDecision:()=>lg,hookDecisionFromClaudePreExecJson:()=>lv,hookDecisionFromCodexPreExecJson:()=>dv,rewriteCommand:()=>cg,rewriteTableFromCapabilities:()=>ag,runClaudePreExecHook:()=>mv,runCodexPreExecHook:()=>pv});import{accessSync as ev,constants as tv,existsSync as rv,readFileSync as Wo}from"node:fs";import{fileURLToPath as nv}from"node:url";function sv(){Go=void 0,zc=!1}function ov(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return ev(`${t}/rsp`,tv.X_OK),!0}catch{}return!1}function iv(e){return Go===void 0&&(Go=e()),Go}function av(){zc||(zc=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function ag(e){let t=new Map;for(let r of e)t.set(Pv(r.command),["rsp",...r.wrapper]);return t}function cg(e,t=Gn()){let r=kv(e);if(r)return r;let n=_v(e);if(!n)return Ho(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Tr(s[0]))return Ho(e,t);let o=uv(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Ho(e,t);let i=[...Qn].sort((u,l)=>l.command.length-u.command.length).find(u=>Rv(s,u.command));if(!i)return Ho(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=hg(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(kt),...c].join(" "),capabilityId:i.id}}function uv(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=hg(e.redirectSuffix),o=t.map(kt);return n==="cat"&&r.length===2&&jo(r[1])?{kind:"rewrite",command:[...o,"cat",kt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&jo(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",kt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&jo(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],kt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&jo(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),kt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function jo(e){return!!e&&!e.startsWith("-")}async function lv(e,t){return await ug(e,t)}async function dv(e,t){return await ug(e,t)}async function ug(e,t){return(await Xc(e,t,"pre-exec")).decision}async function Xc(e,t,r){let n=_g(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:$r({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,o=De(s,["cwd"])||De(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??fv)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:Yc(s),decision:f,reason:"disabled"})}}let a=Yc(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"missing-command"})}}if(!iv(t.resolveBinary??ov)){av();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Ae(o,process.env),m=t.rspInvocationPrefix??Gn(),d=l.proxyEnabled?Sv(a,m):(t.rewrite??(f=>cg(f,m)))(a),p=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:p})}}return await hv(o,t.wakeResident??gv),{decision:d,telemetryRoot:o,event:$r({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:p})}}function lg(e){return e.kind==="rewrite"?mg(e.command):{stdout:"",status:0}}function dg(e){return e.kind==="rewrite"?mg(e.command):{stdout:"",status:0}}function mg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
83
+ `,status:0}}async function mv(e){let t="";try{t=e?Wo(e,"utf8"):Wo(0,"utf8");let r=await Xc(t,{cwd:process.cwd()},"claude-pre-exec");Uo(r.telemetryRoot,r.event);let n=r.decision;fg("claude-pre-exec",n);let s=lg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Uo(process.cwd(),pg("claude-pre-exec",t,r)),gg("claude-pre-exec",r),0}}async function pv(e){let t="";try{t=e?Wo(e,"utf8"):Wo(0,"utf8");let r=await Xc(t,{cwd:process.cwd()},"codex-pre-exec");Uo(r.telemetryRoot,r.event);let n=r.decision;fg("codex-pre-exec",n);let s=dg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Uo(process.cwd(),pg("codex-pre-exec",t,r)),gg("codex-pre-exec",r),0}}function Uo(e,t){lt(e,t).catch(()=>{})}function $r(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:ye(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function pg(e,t,r){let n=_g(t),s=n.ok?Yc(n.payload):"";return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:ye(s),decision:"failed-open",reason:"hook-exception",error:Qc(r)}}function fv(e){return Ae(e,process.env).enabled}async function gv(e){let t=Ae(e,process.env);if(!t.enabled||!wv(t))return;let r=He(e);await _s(r,bv(t))}async function hv(e,t){try{await Promise.resolve(t(e))}catch(r){yv(r)}}function fg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
83
84
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
84
- `)}}function sf(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${lc(t)}
85
- `)}function JE(e){wi(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${lc(e)}
86
- `)}function lc(e){return e instanceof Error?e.name||"Error":typeof e}function qE(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 VE(e){if(!e.storeUri.startsWith("file://"))return!0;try{return OE(PE(e.storeUri))}catch{return!1}}function cc(e){return Oe(e,["tool_input","command"])||Oe(e,["tool_input","cmd"])||Oe(e,["tool_input","args","command"])||Oe(e,["input","command"])||Oe(e,["input","cmd"])||Oe(e,["arguments","command"])||Oe(e,["arguments","cmd"])||Oe(e,["command"])||Oe(e,["cmd"])}function KE(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=dc(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Rr(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 dc(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 zE(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function YE(e){let t=dc(e.trim()).map(r=>r.text);return Bt(t)?{kind:"passthrough",reason:$E}:null}function of(e){return e.map(t=>t.text)}function bt(e){return/[^\w@%+=:,./-]/.test(e)?pc(e):e}function XE(e,t){let r=ZE(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(bt).join(" ")} proxy -- ${pc(e.trim())}`,capabilityId:"proxy:universal"}}function QE(e){if(!process.argv[1])return!1;let t=dc(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function ZE(e){let t=e.trim();if(!t)return"missing-command";if(cf(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=ln(un(t)[0]??"")[0];if(r==="rsp"||QE(t))return"opt-out";if(r&&af.has(r))return"interactive"}function yo(e,t){let r=e.trim();return ex(r)?{kind:"rewrite",command:`${t.map(bt).join(" ")} exec -- ${pc(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function ex(e){return!(!e||!tx(e)||!rx(e)||cf(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||nx(e,"rsp")||uf(e,af)||sx(e))}function tx(e){return/&&|[;|]/.test(e)}function cf(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 rx(e){return un(e).some(t=>{let r=ln(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 uf(e,t){return un(e).some(r=>{let n=ln(r)[0];return n?t.has(n):!1})}function nx(e,t){return uf(e,new Set([t]))}function sx(e){return un(e).some(t=>{let r=ln(t);return r[0]==="grep"&&r.includes("-q")})}function pc(e){return`'${e.replace(/'/g,"'\\''")}'`}function ox(e){return e.join("\0")}function lf(e){try{let t=JSON.parse(e);return df(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Oe(e,t){let r=e;for(let n of t){if(!df(r))return"";r=r[n]}return typeof r=="string"?r:""}function df(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bo,ac,jn,p$,$E,af,Hn=h(()=>{"use strict";dn();Te();Ze();Dt();za();je();ac=!1;jn=[{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"]}],p$=Ym(jn),$E="lossless-gh-json-jq";af=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var bf={};j(bf,{fastTelemetryRoot:()=>fc,isFastGitStatus:()=>ko,runFastGitStatus:()=>So});import{spawnSync as hf}from"node:child_process";import{existsSync as yf,readdirSync as mx}from"node:fs";function ko(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function So(){if(fx(process.cwd()))return{stdout:mc(),stderr:Buffer.alloc(0),status:0,signal:null};if(hf("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:mc(),stderr:Buffer.alloc(0),status:0,signal:null};let t=hf("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?mc():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function fc(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ze(),Lt));return t(e).rootDir}catch{return e}}function mc(){return Buffer.from(`${H({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
87
- `)}function fx(e){try{return!yf(`${e}/.git`)||yf(`${e}/.git/index`)?!1:mx(e).every(t=>t===".git")}catch{return!1}}var gc=h(()=>{"use strict";$e()});async function Ir(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 Rf(e,t,r,n={}){Ox(t);let s=e==="issue"?"i":"p",o=t.map((d,m)=>({alias:`${s}${m}`,number:d})),i=(n.labelNames??[]).map((d,m)=>({alias:`l${m}`,name:d})),c=Px(["id","number",...r]).map(d=>Ix(Ax[d],6)).join(`
88
- `),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
89
- `)),l=i.map(({alias:d,name:m})=>` ${d}: label(name: ${JSON.stringify(m)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
90
- `);return{kind:e,query:p,aliases:o,labelAliases:i}}function kf(e,t){let r=Pr(t),n=Pr(r.data),s=Pr(n.repository),o=Array.isArray(r.errors)?r.errors.map(Pr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(xf(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:vf(u?.message)||"not found"}})}function Sf(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: ${_t(o.nodeId)}, labelIds: ${_f(t)}, clientMutationId: ${_t(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: ${_t(o.nodeId)}, labelIds: ${_f(r)}, clientMutationId: ${_t(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
91
- `)}}function Ef(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${_t(e.nodeId)}, subIssueId: ${_t(s.nodeId)}, clientMutationId: ${_t(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
92
- `)}}function hc(e,t){let r=Pr(t),n=Array.isArray(r.errors)?r.errors.map(Pr):[],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,vf(i.message)||"mutation failed")}return s}function Ox(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 Px(e){return[...new Set(e)]}function Ix(e,t){let r=" ".repeat(t);return e.split(`
85
+ `)}}function gg(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Qc(t)}
86
+ `)}function yv(e){ta(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Qc(e)}
87
+ `)}function Qc(e){return e instanceof Error?e.name||"Error":typeof e}function bv(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 wv(e){if(!e.storeUri.startsWith("file://"))return!0;try{return rv(nv(e.storeUri))}catch{return!1}}function Yc(e){return De(e,["tool_input","command"])||De(e,["tool_input","cmd"])||De(e,["tool_input","args","command"])||De(e,["input","command"])||De(e,["input","cmd"])||De(e,["arguments","command"])||De(e,["arguments","cmd"])||De(e,["command"])||De(e,["cmd"])}function _v(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Zc(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Tr(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 Zc(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 Rv(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function kv(e){let t=Zc(e.trim()).map(r=>r.text);return Ut(t)?{kind:"passthrough",reason:cv}:null}function hg(e){return e.map(t=>t.text)}function kt(e){return/[^\w@%+=:,./-]/.test(e)?eu(e):e}function Sv(e,t){let r=xv(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(kt).join(" ")} proxy -- ${eu(e.trim())}`,capabilityId:"proxy:universal"}}function Ev(e){if(!process.argv[1])return!1;let t=Zc(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function xv(e){let t=e.trim();if(!t)return"missing-command";if(bg(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Rn(_n(t)[0]??"")[0];if(r==="rsp"||Ev(t))return"opt-out";if(r&&yg.has(r))return"interactive"}function Ho(e,t){let r=e.trim();return vv(r)?{kind:"rewrite",command:`${t.map(kt).join(" ")} exec -- ${eu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function vv(e){return!(!e||!Cv(e)||!Tv(e)||bg(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Ov(e,"rsp")||wg(e,yg)||Av(e))}function Cv(e){return/&&|[;|]/.test(e)}function bg(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 Tv(e){return _n(e).some(t=>{let r=Rn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function wg(e,t){return _n(e).some(r=>{let n=Rn(r)[0];return n?t.has(n):!1})}function Ov(e,t){return wg(e,new Set([t]))}function Av(e){return _n(e).some(t=>{let r=Rn(t);return r[0]==="grep"&&r.includes("-q")})}function eu(e){return`'${e.replace(/'/g,"'\\''")}'`}function Pv(e){return e.join("\0")}function _g(e){try{let t=JSON.parse(e);return Rg(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function De(e,t){let r=e;for(let n of t){if(!Rg(r))return"";r=r[n]}return typeof r=="string"?r:""}function Rg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Go,zc,Qn,dB,cv,yg,Zn=h(()=>{"use strict";kn();Pe();Ge();jt();Bc();Ie();zc=!1;Qn=[{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"]}],dB=ag(Qn),cv="lossless-gh-json-jq";yg=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Tg={};M(Tg,{fastTelemetryRoot:()=>ru,isFastGitStatus:()=>qo,runFastGitStatus:()=>Vo});import{spawnSync as vg}from"node:child_process";import{existsSync as Cg,readdirSync as jv}from"node:fs";function qo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Vo(){if(Hv(process.cwd()))return{stdout:tu(),stderr:Buffer.alloc(0),status:0,signal:null};if(vg("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:tu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=vg("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?tu():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function ru(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ge(),Ft));return t(e).rootDir}catch{return e}}function tu(){return Buffer.from(`${W({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
88
+ `)}function Hv(e){try{return!Cg(`${e}/.git`)||Cg(`${e}/.git/index`)?!1:jv(e).every(t=>t===".git")}catch{return!1}}var nu=h(()=>{"use strict";rt()});async function Br(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 Pg(e,t,r,n={}){sC(t);let s=e==="issue"?"i":"p",o=t.map((d,p)=>({alias:`${s}${p}`,number:d})),i=(n.labelNames??[]).map((d,p)=>({alias:`l${p}`,name:d})),c=oC(["id","number",...r]).map(d=>iC(nC[d],6)).join(`
89
+ `),u=o.map(({alias:d,number:p})=>[` ${d}: ${e}(number: ${p}) {`,c," }"].join(`
90
+ `)),l=i.map(({alias:d,name:p})=>` ${d}: label(name: ${JSON.stringify(p)}) { id name }`),m=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
91
+ `);return{kind:e,query:m,aliases:o,labelAliases:i}}function Ig(e,t){let r=Mr(t),n=Mr(r.data),s=Mr(n.repository),o=Array.isArray(r.errors)?r.errors.map(Mr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Ng(c))return{number:a,value:c};let u=o.find(l=>{let m=l.path;return Array.isArray(m)&&m.includes(i)});return{number:a,error:$g(u?.message)||"not found"}})}function Lg(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: ${Et(o.nodeId)}, labelIds: ${Ag(t)}, clientMutationId: ${Et(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: ${Et(o.nodeId)}, labelIds: ${Ag(r)}, clientMutationId: ${Et(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
92
+ `)}}function Dg(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${Et(e.nodeId)}, subIssueId: ${Et(s.nodeId)}, clientMutationId: ${Et(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
93
+ `)}}function su(e,t){let r=Mr(t),n=Array.isArray(r.errors)?r.errors.map(Mr):[],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,$g(i.message)||"mutation failed")}return s}function sC(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 oC(e){return[...new Set(e)]}function iC(e,t){let r=" ".repeat(t);return e.split(`
93
94
  `).map(n=>`${r}${n}`).join(`
94
- `)}function _t(e){return JSON.stringify(e)}function _f(e){return`[${e.map(_t).join(", ")}]`}function Pr(e){return xf(e)?e:{}}function xf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function vf(e){return typeof e=="string"?e:""}var Ax,Cf=h(()=>{Ax={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(`
95
- `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as Dx,spawnSync as Nx}from"node:child_process";function wc(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Of(e,t={}){let r=zx(e),n=r.repo??t.repo??process.env.GH_REPO??Xx();if(!n||!n.includes("/"))return kc(e,"repository is required; pass --repo owner/repo");let s=t.exec??Qx,o=Math.max(1,Math.floor(t.restConcurrency??Af));return r.verb==="issues"||r.verb==="prs"?await Bx(r,n,s,o,e):r.verb==="edit-labels"?await jx(r,n,s,o,e):await Gx(r,n,s,o,e)}async function Bx(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Pf(e),a=[],c=[];for(let l of Rc(e.numbers,100)){let p=Rf(o,l,i.query),d=await _c(r,t,p.query);if(Ec(d))return await Fx(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(m=>({number:m,value:{error:ge(d)||`failed to read ${m}`},failed:!0})));continue}a.push(...kf(p,Rt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:Ux(e.verb,m.value??{},i.output),failed:!!m.error})))}let u=a.filter(l=>l.failed).length;return xo({command:vo(s),transport:"graphql",order:e.numbers,[e.verb]:Gn(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
96
- `))}async function Fx(e,t,r,n,s){let o=Pf(e),i=e.verb==="issues"?"issues":"pulls",a=await Ir(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:ge(l)||"REST fallback failed"}};let p=Ge(Rt(l.stdout));if(e.verb==="prs"&&o.output.some(If)){let d=G(Ge(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let m=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(m.code!==0)return{number:u,value:{error:ge(m)||"REST check-runs fallback failed"}};let f=await r(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:ge(f)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:qx(Ge(Rt(m.stdout)),Ge(Rt(f.stdout)))}}return{number:u,value:Jx(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return xo({command:vo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:Gn(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function jx(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return kc(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Lf(e.numbers,t,r,n),Ir(o,n,async d=>{let m=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(Ge(Rt(m.stdout)).node_id),error:m.code===0?"":ge(m)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Dr(s,e.numbers,Sc(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 Rc(p,100)){let m=Sf(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),f=await _c(r,t,m.query);if(Ec(f))return await Hx(e,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:ge(f)||"label mutation failed"});continue}let _=hc(m.aliases,Rt(f.stdout));for(let g of d){let b=m.aliases.filter(w=>w.number===g.number).map(w=>_.get(w.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return Dr(s,e.numbers,Df(e.numbers,l),"graphql")}async function Hx(e,t,r,n,s){let o=await Ir(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:ge(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:ge(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Dr(s,e.numbers,Gn(o),"rest-fallback",n)}async function Gx(e,t,r,n,s){if(e.numbers.length<2)return kc(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Lf(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Dr(s,i,Sc(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 Rc(p,100)){let m=Ef({number:o,nodeId:u},d),f=await _c(r,t,m.query);if(Ec(f))return await Wx(o,i,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:ge(f)||"sub-issue mutation failed"});continue}let _=hc(m.aliases,Rt(f.stdout));for(let g of m.aliases){let y=_.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return Dr(s,i,Df(i,l),"graphql")}async function Wx(e,t,r,n,s,o){let i=await Ir(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:ge(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:ge(l)||"REST link failed"}}});return Dr(o,t,Gn(i),"rest-fallback",s)}function Dr(e,t,r,n,s){let o=Object.values(r).filter(i=>Nr(i)&&"error"in i).length;return xo({command:vo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Af}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function Pf(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Tf(r,$x),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Tf(t,Mx),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Tf(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function Ux(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=yc(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=Kx(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Nf(t[s]));return"number"in n||(n.number=xc(t.number)),n}function Jx(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Nr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(If(s))n[s]=Ge(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]=Nf(t[s]);return"number"in n||(n.number=xc(t.number)),n}function qx(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Nr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Nr):[],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()||Vx(s.map(o=>o.state)),contexts:s}}function Vx(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 If(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function Kx(e){let t=yc(e).at(-1),r=Ge(Ge(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:yc(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function _c(e,t,r){let[n,s]=Yx(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Lf(e,t,r,n){return await Ir(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Ge(Rt(o.stdout)),a=G(i.node_id),c=xc(i.id);return o.code!==0||!a?{number:s,error:ge(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Rc(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function zx(e){if(!wc(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(...Lr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Lr(c.slice(7)));else if(c==="--add")s.push(...Lr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Lr(c.slice(6)));else if(c==="--remove")o.push(...Lr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Lr(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 xo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
97
- `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function kc(e,t){return xo({command:vo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Sc(e,t){return Gn(e.map(r=>({number:r,value:t(r)})))}function Gn(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Df(e,t){return Sc(e,r=>t.get(r)??{error:"mutation skipped"})}function Ec(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
98
- ${e.stdout}`)}function ge(e){return(e.stderr||e.stdout).trim().split(`
99
- `)[0]?.slice(0,240)??""}function Rt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function yc(e){let t=Ge(e).nodes;return Array.isArray(t)?t.filter(Nr):[]}function Nf(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function xc(e){let t=Number(e);return Number.isFinite(t)?t:0}function Lr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function Yx(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function vo(e){return`rsp ${e.join(" ")}`}function Xx(){let e=Nx("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 Qx(e){let t=Dx("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",i=>s({code:i??1,stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8")}))})}function Ge(e){return Nr(e)?e:{}}function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Af,$x,Mx,$f=h(()=>{"use strict";L();Cf();Af=4,$x=new Set(["number","title","state","labels","body"]),Mx=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Lc={};j(Lc,{renderGhContract:()=>Gf,runGhWrapper:()=>sv});import{spawn as Zx}from"node:child_process";async function sv(e,t){if(wc(e))return await Of(e);let r=Wf(e),n=await iv(r);return Gf(e,n,t)}async function Gf(e,t,r){if((t.status??0)!==0||t.signal){let m=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let n=Wf(e),s=Wn(t.stdout),o=fv(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=kv(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let m=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=m}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=Sv(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 ${Ae(p)}
95
+ `)}function Et(e){return JSON.stringify(e)}function Ag(e){return`[${e.map(Et).join(", ")}]`}function Mr(e){return Ng(e)?e:{}}function Ng(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $g(e){return typeof e=="string"?e:""}var nC,Mg=h(()=>{nC={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(`
96
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as cC,spawnSync as uC}from"node:child_process";function au(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function jg(e,t={}){let r=SC(e),n=r.repo??t.repo??process.env.GH_REPO??xC();if(!n||!n.includes("/"))return lu(e,"repository is required; pass --repo owner/repo");let s=t.exec??vC,o=Math.max(1,Math.floor(t.restConcurrency??Fg));return r.verb==="issues"||r.verb==="prs"?await mC(r,n,s,o,e):r.verb==="edit-labels"?await fC(r,n,s,o,e):await hC(r,n,s,o,e)}async function mC(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Hg(e),a=[],c=[];for(let l of uu(e.numbers,100)){let m=Pg(o,l,i.query),d=await cu(r,t,m.query);if(mu(d))return await pC(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(p=>({number:p,value:{error:we(d)||`failed to read ${p}`},failed:!0})));continue}a.push(...Ig(m,xt(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:bC(e.verb,p.value??{},i.output),failed:!!p.error})))}let u=a.filter(l=>l.failed).length;return zo({command:Yo(s),transport:"graphql",order:e.numbers,[e.verb]:es(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
97
+ `))}async function pC(e,t,r,n,s){let o=Hg(e),i=e.verb==="issues"?"issues":"pulls",a=await Br(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:we(l)||"REST fallback failed"}};let m=Ve(xt(l.stdout));if(e.verb==="prs"&&o.output.some(Gg)){let d=H(Ve(m.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let p=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(p.code!==0)return{number:u,value:{error:we(p)||"REST check-runs fallback failed"}};let f=await r(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:we(f)||"REST commit-status fallback failed"}};m={...m,restCheckRollup:_C(Ve(xt(p.stdout)),Ve(xt(f.stdout)))}}return{number:u,value:wC(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return zo({command:Yo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:es(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function fC(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return lu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Wg(e.numbers,t,r,n),Br(o,n,async d=>{let p=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:H(Ve(xt(p.stdout)).node_id),error:p.code===0?"":we(p)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return jr(s,e.numbers,du(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}])),m=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of uu(m,100)){let p=Lg(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),f=await cu(r,t,p.query);if(mu(f))return await gC(e,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:we(f)||"label mutation failed"});continue}let _=su(p.aliases,xt(f.stdout));for(let g of d){let b=p.aliases.filter(w=>w.number===g.number).map(w=>_.get(w.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return jr(s,e.numbers,Ug(e.numbers,l),"graphql")}async function gC(e,t,r,n,s){let o=await Br(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:we(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:we(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return jr(s,e.numbers,es(o),"rest-fallback",n)}async function hC(e,t,r,n,s){if(e.numbers.length<2)return lu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Wg(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return jr(s,i,du(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,m=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 uu(m,100)){let p=Dg({number:o,nodeId:u},d),f=await cu(r,t,p.query);if(mu(f))return await yC(o,i,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:we(f)||"sub-issue mutation failed"});continue}let _=su(p.aliases,xt(f.stdout));for(let g of p.aliases){let y=_.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return jr(s,i,Ug(i,l),"graphql")}async function yC(e,t,r,n,s,o){let i=await Br(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:we(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:we(l)||"REST link failed"}}});return jr(o,t,es(i),"rest-fallback",s)}function jr(e,t,r,n,s){let o=Object.values(r).filter(i=>Hr(i)&&"error"in i).length;return zo({command:Yo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Fg}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function Hg(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Bg(r,lC),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Bg(t,dC),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Bg(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function bC(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=ou(t.labels).map(o=>H(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=kC(t.commits):s==="state"||s==="mergeable"?n[s]=H(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Jg(t[s]));return"number"in n||(n.number=pu(t.number)),n}function wC(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Hr):[];n.labels=o.map(i=>H(i.name)).filter(Boolean)}else if(Gg(s))n[s]=Ve(t.restCheckRollup);else if(s==="state")n.state=H(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=Jg(t[s]);return"number"in n||(n.number=pu(t.number)),n}function _C(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Hr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Hr):[],s=[...r.map(o=>({name:H(o.name),state:(H(o.conclusion)||H(o.status)).toLowerCase()})),...n.map(o=>({name:H(o.context),state:H(o.state).toLowerCase()}))];return{state:H(t.state).toLowerCase()||RC(s.map(o=>o.state)),contexts:s}}function RC(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 Gg(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function kC(e){let t=ou(e).at(-1),r=Ve(Ve(t?.commit).statusCheckRollup);return{state:H(r.state).toLowerCase(),contexts:ou(r.contexts).map(n=>({name:H(n.name)||H(n.context),state:(H(n.conclusion)||H(n.status)||H(n.state)).toLowerCase()}))}}async function cu(e,t,r){let[n,s]=EC(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Wg(e,t,r,n){return await Br(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Ve(xt(o.stdout)),a=H(i.node_id),c=pu(i.id);return o.code!==0||!a?{number:s,error:we(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function uu(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function SC(e){if(!au(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(...Fr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Fr(c.slice(7)));else if(c==="--add")s.push(...Fr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Fr(c.slice(6)));else if(c==="--remove")o.push(...Fr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Fr(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 zo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
98
+ `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function lu(e,t){return zo({command:Yo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function du(e,t){return es(e.map(r=>({number:r,value:t(r)})))}function es(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Ug(e,t){return du(e,r=>t.get(r)??{error:"mutation skipped"})}function mu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
99
+ ${e.stdout}`)}function we(e){return(e.stderr||e.stdout).trim().split(`
100
+ `)[0]?.slice(0,240)??""}function xt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function ou(e){let t=Ve(e).nodes;return Array.isArray(t)?t.filter(Hr):[]}function Jg(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function pu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Fr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function EC(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Yo(e){return`rsp ${e.join(" ")}`}function xC(){let e=uC("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 vC(e){let t=cC("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 Ve(e){return Hr(e)?e:{}}function Hr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function H(e){return typeof e=="string"?e:""}var Fg,lC,dC,qg=h(()=>{"use strict";U();L();Mg();Fg=4,lC=new Set(["number","title","state","labels","body"]),dC=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Ru={};M(Ru,{renderGhContract:()=>Qg,runGhWrapper:()=>IC});import{spawn as CC}from"node:child_process";async function IC(e,t){if(au(e))return await jg(e);let r=Zg(e),n=await DC(r);return Qg(e,n,t)}async function Qg(e,t,r){if((t.status??0)!==0||t.signal){let p=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let n=Zg(e),s=ts(t.stdout),o=GC(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=YC(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let p=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=p}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=XC(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),m=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!m)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Le(m)}
100
101
  `;return{stdout:Buffer.from(`${C(u.payload)}
101
- ${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 Wf(e){let t=Ot(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 m=0;m<l.length;m+=1){let f=l[m]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Bf(l[++m]??""):f.startsWith("--fields=")?u=Bf(f.slice(9)):i.push(f)}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 ov(d),d}function Mf(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?tv[t]:ev[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Bf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function ov(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Co(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=nv[t];for(let n of e.fields)if(!r.includes(n))throw new Co(e,`unknown field: ${n}`,r)}async function iv(e){if(e.action==="combined")return await av(e);let t=cv(e);if(!t)return await mv(Mf(e));let r=await oe({...t,command:["gh",...Mf(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await uv(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function av(e){let t=e.target??"",[r,n,s]=await Promise.all([oe({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),oe({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),oe({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=Jf(Wn(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Wn(s.stdout)).map(dv)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function cv(e){let t=qf(e.passthrough),r=pv(e.passthrough,"--limit")??30,n=We(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:We(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 uv(e,t){let r=Wn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(Uf);case"pr:view":return Jf(r);case"issue:list":return ce(r).filter(n=>!Kt(n.pull_request)).map(Ff);case"issue:view":return Ff(r);case"run:list":return{items:ce(M(r).workflow_runs).map(jf),total:ie(M(r),"total_count")};case"run:view":{let n=jf(r),s=qf(e.passthrough);if(!s)return n;let o=await oe({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?ce(M(Wn(o.stdout)).jobs).map(lv):[]}}default:return r}}function Uf(e){let t=M(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),isDraft:!!t.draft,author:Pc(t.user),labels:ce(t.labels).map(r=>({name:E(r,"name")})),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body"),baseRefName:E(M(t.base),"ref"),headRefName:E(M(t.head),"ref")}}function Jf(e){return Uf(e)}function Ff(e){let t=M(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),labels:ce(t.labels).map(r=>({name:E(r,"name")})),author:Pc(t.user),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body")}}function jf(e){let t=M(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:E(t,"name")||E(t,"display_title"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),event:E(t,"event"),headBranch:E(t,"head_branch"),workflowName:E(t,"workflow_name"),createdAt:E(t,"created_at"),url:E(t,"html_url"),jobs:[]}}function lv(e){let t=M(e);return{name:E(t,"name"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),log:""}}function dv(e){let t=M(e);return{author:Pc(t.user),body:E(t,"body"),createdAt:E(t,"created_at")}}function Pc(e){let t=M(e);return{login:E(t,"login")}}function qf(e){return e.find(t=>!t.startsWith("-"))}function We(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function pv(e,t){let r=We(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function mv(e){let t=Zx("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",(i,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:i,signal:a})})})}function fv(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=vc(r,"prs"),o=s.rows.map(c=>Vf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):$r({...n,prs:i,aggregate:a,summary:`${Ac(i.length,o.length,e.query)} ${Hf(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return $r({...n,pr:Kf(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return gv(e,t,M(r));case"issue:list":{let s=vc(r,"issues"),o=s.rows.map(c=>zf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):$r({...n,issues:i,aggregate:a,summary:`${Ac(i.length,o.length,e.query)} ${Hf(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return $r({...n,issue:_v(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=vc(r,"runs"),o=s.rows.map(c=>Yf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):$r({...n,runs:i,aggregate:a,summary:`${Ac(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 $r({...n,run:Rv(M(r),e),summary:`run ${ie(M(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function gv(e,t,r){let n=Kf(M(r.view),{...e,action:"view",wide:!0}),s=Q(ce(r.checks).map(hv),e.query),o=M(r.comments).comments,i=Q(ce(o).map(yv).slice(-3),e.query);return Xe({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${ie(M(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 hv(e){return{name:E(e,"name"),state:Un(e),bucket:E(e,"bucket"),conclusion:E(e,"conclusion"),workflow:E(e,"workflow"),link:E(e,"link")}}function yv(e){return{author:Qf(e.author),body:To(e,"body",Oc,!1),created:E(e,"createdAt")}}function vc(e,t){if(Array.isArray(e))return{rows:ce(e)};let r=M(e),n=ie(r,"total")||ie(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ce(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ce(r.workflow_runs),total:n}:{rows:[]}}function Cc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Tc(e,t,r,n,s){return Xe({...e,empty:!0,scope:bv(t),[r]:[],aggregate:n,summary:`0 ${wv(t)}`},s)}function bv(e){let t=We(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=We(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=We(e.passthrough,"--branch")??We(e.passthrough,"-b"),s=We(e.passthrough,"--workflow")??We(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function wv(e){let t=We(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Vf(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Un(e),draft:!!e.isDraft};return Ic(r,e,t,["author","labels","url","updated"]),r}function Kf(e,t){let r=Vf(e,t);return r.body=To(e,"body",Oc,t.full),t.wide&&(r.base=E(e,"baseRefName"),r.head=E(e,"headRefName")),r}function zf(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Un(e),labels:Xf(e.labels)};return Ic(r,e,t,["author","url","updated"]),r}function _v(e,t){let r=zf(e,t);return r.body=To(e,"body",Oc,t.full),r}function Yf(e,t){let r={id:ie(e,"databaseId"),name:E(e,"name"),status:Un(e),conclusion:E(e,"conclusion")};return Ic(r,e,t,["event","branch","workflow","created"]),r}function Rv(e,t){let r=Yf(e,t),n=ce(e.jobs).map(s=>({name:E(s,"name"),status:Un(s),conclusion:E(s,"conclusion"),log:To(s,"log",rv,t.full)}));return r.jobs=n,r}function To(e,t,r,n){let s=E(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 kv(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Kt(r)){if(Kt(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 Sv(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 Hf(e,t){return e.every(r=>r.state===t)?t:"returned"}function Ac(e,t,r){return r?`${e}/${t}`:String(e)}function $r(e,t,r){return t.query?Xe(e,r):e}function Un(e){return(E(e,"state")||E(e,"status")).toLowerCase()}function Ic(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=Qf(t.author):s==="labels"?e.labels=Xf(t.labels):s==="url"?e.url=E(t,"url"):s==="updated"?e.updated=E(t,"updatedAt"):s==="event"?e.event=E(t,"event"):s==="branch"?e.branch=E(t,"headBranch"):s==="workflow"?e.workflow=E(t,"workflowName"):s==="created"&&(e.created=E(t,"createdAt")))}function Xf(e){return Array.isArray(e)?e.map(t=>Kt(t)?E(t,"name"):String(t)).filter(Boolean):[]}function Qf(e){return Kt(e)?E(e,"login"):""}function Wn(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Kt):[]}function M(e){return Kt(e)?e:{}}function E(e,t){let r=e[t];return typeof r=="string"?r:""}function ie(e,t){let r=e[t];return typeof r=="number"?r:0}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ev,tv,Oc,rv,nv,Co,Dc=h(()=>{"use strict";L();Us();$f();Jt();qr();Ne();ev={"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"]},tv={"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"]},Oc=160,rv=160,nv={"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"]};Co=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Mc={};j(Mc,{renderTestContract:()=>Zf,runTestWrapper:()=>Tv});import{spawn as Ev}from"node:child_process";async function Tv(e,t){let r=Ot(e),n=await Lv(r.argv);return await Zf(e,n,t)}async function Zf(e,t,r){let n=Ot(e),o=eg(n.argv)==="vitest"?Dv(t.stdout):Nv(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Bv(o.durationSeconds)}`,c=Q(o.failures,n.query);if(r.level==="terse")return await Av(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let f of c){let _=await $v(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,p+=_.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 m=n.query?Xe(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function Av(e,t,r,n,s,o,i){let a=Ov(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?Xe(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((w,x)=>w.excerpt!==r.failures[x].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:u};let m={exit_code:n,summary:s};r.failures.length>0&&(m.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(m),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${_}) \u2014 ${Ae(g)}`;return{stdout:Buffer.from(`${l}
102
- ${b}`),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:_,rowsElided:p,rawOutput:Buffer.from(f)}}function $c(e){return e===0||e===null?0:1}function Ov(e){let t=[],r=vv;for(let n of e.slice(0,Cv)){let s=Pv(n.excerpt,Math.min(xv,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Pv(e,t){if(t<=0)return"";let r=e.split(`
102
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Zg(e){let t=Dt(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 p=0;p<l.length;p+=1){let f=l[p]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Kg(l[++p]??""):f.startsWith("--fields=")?u=Kg(f.slice(9)):i.push(f)}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 LC(d),d}function Vg(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?OC[t]:TC[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Kg(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function LC(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Xo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=PC[t];for(let n of e.fields)if(!r.includes(n))throw new Xo(e,`unknown field: ${n}`,r)}async function DC(e){if(e.action==="combined")return await NC(e);let t=$C(e);if(!t)return await HC(Vg(e));let r=await ue({...t,command:["gh",...Vg(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await MC(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function NC(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=th(ts(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:me(ts(s.stdout)).map(FC)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function $C(e){let t=rh(e.passthrough),r=jC(e.passthrough,"--limit")??30,n=Ke(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:Ke(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 MC(e,t){let r=ts(t);switch(`${e.kind}:${e.action}`){case"pr:list":return me(r).map(eh);case"pr:view":return th(r);case"issue:list":return me(r).filter(n=>!tr(n.pull_request)).map(zg);case"issue:view":return zg(r);case"run:list":return{items:me(B(r).workflow_runs).map(Yg),total:le(B(r),"total_count")};case"run:view":{let n=Yg(r),s=rh(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?me(B(ts(o.stdout)).jobs).map(BC):[]}}default:return r}}function eh(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:wu(t.user),labels:me(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(B(t.base),"ref"),headRefName:x(B(t.head),"ref")}}function th(e){return eh(e)}function zg(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:me(t.labels).map(r=>({name:x(r,"name")})),author:wu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Yg(e){let t=B(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 BC(e){let t=B(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function FC(e){let t=B(e);return{author:wu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function wu(e){let t=B(e);return{login:x(t,"login")}}function rh(e){return e.find(t=>!t.startsWith("-"))}function Ke(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function jC(e,t){let r=Ke(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function HC(e){let t=CC("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 GC(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=fu(r,"prs"),o=s.rows.map(c=>nh(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Gr({...n,prs:i,aggregate:a,summary:`${yu(i.length,o.length,e.query)} ${Xg(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Gr({...n,pr:sh(B(r),e),summary:`PR #${le(B(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return WC(e,t,B(r));case"issue:list":{let s=fu(r,"issues"),o=s.rows.map(c=>oh(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Gr({...n,issues:i,aggregate:a,summary:`${yu(i.length,o.length,e.query)} ${Xg(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Gr({...n,issue:KC(B(r),e),summary:`issue #${le(B(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=fu(r,"runs"),o=s.rows.map(c=>ih(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Gr({...n,runs:i,aggregate:a,summary:`${yu(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 Gr({...n,run:zC(B(r),e),summary:`run ${le(B(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function WC(e,t,r){let n=sh(B(r.view),{...e,action:"view",wide:!0}),s=te(me(r.checks).map(UC),e.query),o=B(r.comments).comments,i=te(me(o).map(JC).slice(-3),e.query);return nt({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(B(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 UC(e){return{name:x(e,"name"),state:rs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function JC(e){return{author:ch(e.author),body:Qo(e,"body",bu,!1),created:x(e,"createdAt")}}function fu(e,t){if(Array.isArray(e))return{rows:me(e)};let r=B(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:me(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:me(r.workflow_runs),total:n}:{rows:[]}}function gu(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function hu(e,t,r,n,s){return nt({...e,empty:!0,scope:qC(t),[r]:[],aggregate:n,summary:`0 ${VC(t)}`},s)}function qC(e){let t=Ke(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ke(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ke(e.passthrough,"--branch")??Ke(e.passthrough,"-b"),s=Ke(e.passthrough,"--workflow")??Ke(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function VC(e){let t=Ke(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function nh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),draft:!!e.isDraft};return _u(r,e,t,["author","labels","url","updated"]),r}function sh(e,t){let r=nh(e,t);return r.body=Qo(e,"body",bu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function oh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),labels:ah(e.labels)};return _u(r,e,t,["author","url","updated"]),r}function KC(e,t){let r=oh(e,t);return r.body=Qo(e,"body",bu,t.full),r}function ih(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:rs(e),conclusion:x(e,"conclusion")};return _u(r,e,t,["event","branch","workflow","created"]),r}function zC(e,t){let r=ih(e,t),n=me(e.jobs).map(s=>({name:x(s,"name"),status:rs(s),conclusion:x(s,"conclusion"),log:Qo(s,"log",AC,t.full)}));return r.jobs=n,r}function Qo(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 YC(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(tr(r)){if(tr(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 XC(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 Xg(e,t){return e.every(r=>r.state===t)?t:"returned"}function yu(e,t,r){return r?`${e}/${t}`:String(e)}function Gr(e,t,r){return t.query?nt(e,r):e}function rs(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=ch(t.author):s==="labels"?e.labels=ah(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 ah(e){return Array.isArray(e)?e.map(t=>tr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function ch(e){return tr(e)?x(e,"login"):""}function ts(e){return e.trim()?JSON.parse(e):null}function me(e){return Array.isArray(e)?e.filter(tr):[]}function B(e){return tr(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 tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var TC,OC,bu,AC,PC,Xo,ku=h(()=>{"use strict";U();L();po();qg();Xt();Qr();Fe();TC={"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"]},OC={"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"]},bu=160,AC=160,PC={"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"]};Xo=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var xu={};M(xu,{renderTestContract:()=>uh,runTestWrapper:()=>r0});import{spawn as QC}from"node:child_process";async function r0(e,t){let r=Dt(e),n=await a0(r.argv);return await uh(e,n,t)}async function uh(e,t,r){let n=Dt(e),o=lh(n.argv)==="vitest"?c0(t.stdout):u0(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${m0(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await n0(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let f of c){let _=await l0(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,m+=_.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 p=n.query?nt(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(p)),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:m>0?m:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function n0(e,t,r,n,s,o,i){let a=s0(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?nt(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),m=Math.max(0,r.failures.length-a.length),d=a.some((w,S)=>w.excerpt!==r.failures[S].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:u};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(p),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${_}) \u2014 ${Le(g)}`;return{stdout:Buffer.from(`${l}
103
+ ${b}`),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:_,rowsElided:m,rawOutput:Buffer.from(f)}}function Eu(e){return e===0||e===null?0:1}function s0(e){let t=[],r=e0;for(let n of e.slice(0,t0)){let s=o0(n.excerpt,Math.min(ZC,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function o0(e,t){if(t<=0)return"";let r=e.split(`
103
104
  `),n=r.length<=2?e:`${r[0]}
104
105
  \u2026
105
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function eg(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 Iv(e){if(eg(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 Lv(e){let t=Iv(e),r=Ev(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",o=>n.push(o)),r.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{r.on("error",i),r.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Dv(e){let t=tg(e);if(!kt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=St(t.numTotalTests),o=St(t.numFailedTests),i=Fv(St(t.startTime),St(t.endTime));for(let a of r){if(!kt(a))continue;let c=Ue(a.name)||Ue(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)kt(l)&&l.status==="failed"&&n.push({suite:c,name:Ue(l.fullName)||Ue(l.title)||Ue(l.name),excerpt:Mv(l.failureMessages)||Ue(l.failureMessage)})}return s||=r.reduce((a,c)=>!kt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>kt(c)?a+St(c.perfStats&&kt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function Nv(e){let t=e.split(`
106
- `).filter(Boolean).map(c=>tg(c)).filter(kt);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+=St(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=St(c.failed),i+=St(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ue(c.name).split("::").slice(0,-1).join("::"),name:Ue(c.name),excerpt:Ue(c.stdout)});continue}if(c.reason==="compiler-message"&&kt(c.message)){let u=Ue(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(`
107
- `)}),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 $v(e,t,r){let n=Buffer.from(e);if(n.length<=Nc)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,Nc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
108
- \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Ae(s)}`,handle:s,bytesElided:n.length}}function tg(e){try{return JSON.parse(e)}catch{return null}}function Mv(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
109
- `):""}function Bv(e){return`${Number(e.toFixed(1))}s`}function Fv(e,t){return e>0&&t>e?(t-e)/1e3:0}function St(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ue(e){return typeof e=="string"?e:""}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Nc,xv,vv,Cv,Bc=h(()=>{"use strict";L();Jt();qr();Ne();Nc=320,xv=160,vv=Nc,Cv=3});var Hc={};j(Hc,{parseCatCommand:()=>jc,renderCatContract:()=>Vv,runCatWrapper:()=>qv});import{isUtf8 as jv}from"node:buffer";import{readFile as Hv}from"node:fs/promises";import{extname as Gv}from"node:path";async function qv(e,t){let r=jc(e),n;try{n=await Hv(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=_e(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
110
- `),status:1,signal:null}}return ag(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await ig(e,r,n,t)}async function Vv(e,t,r){if((t.status??0)!==0||t.signal){let i=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=jc(e),s=Buffer.from(t.stdout,"utf8");return ag(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ig(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function jc(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=og(t[++i],Fc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=og(u,Fc);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 ig(e,t,r,n){let s=r.toString("utf8"),o=Yv(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>sg(n.heavyByteThreshold,rg)||o.truncated;if(!ng(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=ng(t.file)?Kv(e,t.file,r,s,n.level,o):zv(e,t.file,r,s,o),c=`${C(a)}
111
- `;if(!i&&Buffer.byteLength(c)<=sg(n.heavyByteThreshold,rg))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 ${Ae(u)}
112
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function Kv(e,t,r,n,s,o){let i=Ao(n),a=s==="terse"?Uv:Wv,c=Ao(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:Xv(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function zv(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Ao(n).length,content:Ao(s.text),truncated:s.truncated}}function Yv(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
113
- `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Fc,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
106
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function lh(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 i0(e){if(lh(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 a0(e){let t=i0(e),r=QC(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 c0(e){let t=dh(e);if(!vt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=Ct(t.numTotalTests),o=Ct(t.numFailedTests),i=p0(Ct(t.startTime),Ct(t.endTime));for(let a of r){if(!vt(a))continue;let c=ze(a.name)||ze(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)vt(l)&&l.status==="failed"&&n.push({suite:c,name:ze(l.fullName)||ze(l.title)||ze(l.name),excerpt:d0(l.failureMessages)||ze(l.failureMessage)})}return s||=r.reduce((a,c)=>!vt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>vt(c)?a+Ct(c.perfStats&&vt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function u0(e){let t=e.split(`
107
+ `).filter(Boolean).map(c=>dh(c)).filter(vt);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+=Ct(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ct(c.failed),i+=Ct(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:ze(c.name).split("::").slice(0,-1).join("::"),name:ze(c.name),excerpt:ze(c.stdout)});continue}if(c.reason==="compiler-message"&&vt(c.message)){let u=ze(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(`
108
+ `)}),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 l0(e,t,r){let n=Buffer.from(e);if(n.length<=Su)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,Su).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
109
+ \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Le(s)}`,handle:s,bytesElided:n.length}}function dh(e){try{return JSON.parse(e)}catch{return null}}function d0(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
110
+ `):""}function m0(e){return`${Number(e.toFixed(1))}s`}function p0(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ct(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function ze(e){return typeof e=="string"?e:""}function vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Su,ZC,e0,t0,vu=h(()=>{"use strict";U();L();Xt();Qr();Fe();Su=320,ZC=160,e0=Su,t0=3});var Ou={};M(Ou,{parseCatCommand:()=>Tu,renderCatContract:()=>R0,runCatWrapper:()=>_0});import{isUtf8 as f0}from"node:buffer";import{readFile as g0}from"node:fs/promises";import{extname as h0}from"node:path";async function _0(e,t){let r=Tu(e),n;try{n=await g0(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=Ee(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
111
+ `),status:1,signal:null}}return yh(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await hh(e,r,n,t)}async function R0(e,t,r){if((t.status??0)!==0||t.signal){let i=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Tu(e),s=Buffer.from(t.stdout,"utf8");return yh(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await hh(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Tu(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=gh(t[++i],Cu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=gh(u,Cu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function hh(e,t,r,n){let s=r.toString("utf8"),o=E0(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>fh(n.heavyByteThreshold,mh)||o.truncated;if(!ph(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=ph(t.file)?k0(e,t.file,r,s,n.level,o):S0(e,t.file,r,s,o),c=`${C(a)}
112
+ `;if(!i&&Buffer.byteLength(c)<=fh(n.heavyByteThreshold,mh))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let u=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${Le(u)}
113
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function k0(e,t,r,n,s,o){let i=Zo(n),a=s==="terse"?b0:y0,c=Zo(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:x0(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function S0(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Zo(n).length,content:Zo(s.text),truncated:s.truncated}}function E0(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
114
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Cu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
114
115
  `)}${n&&i.length>0?`
115
- `:""}`,truncated:i.length<s.length}}function Xv(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&&!Qv(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Ao(e){let t=e.split(`
116
- `);return t.at(-1)===""?t.slice(0,-1):t}function ag(e){return e.includes(0)||!jv(e)}function ng(e){return Jv.has(Gv(e).toLowerCase())}function Qv(e){return["for","if","switch","while"].includes(e)}function sg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function og(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var rg,Fc,Wv,Uv,Jv,Gc=h(()=>{"use strict";L();Jt();Ne();rg=8*1024,Fc=10,Wv=8,Uv=2,Jv=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var gg={};j(gg,{REPO_STORE_PATH:()=>Jc,mergeRspBlock:()=>pg,provisionRspRepoStore:()=>cC});import{constants as Zv}from"node:fs";import{access as eC,copyFile as tC,mkdir as ug,readFile as rC,rename as nC,writeFile as lg}from"node:fs/promises";import{dirname as sC,join as Jn,resolve as oC}from"node:path";async function cC(e,t={}){let r=oC(e),n=Jn(r,".red"),s=Jn(n,"config.yaml"),o=Jn(r,Jc);await ug(n,{recursive:!0}),await ug(sC(o),{recursive:!0});let i="";try{i=await rC(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=pg(i,{enabled:!0,ttlDays:t.ttlDays??Ee,ephemeralTtlHours:t.ephemeralTtlHours??xe,byteBudget:t.byteBudget??ve,heavyGitByteThreshold:t.heavyGitByteThreshold??nt}),c=a!==i;c&&await lg(s,a,"utf8");let u=!await Uc(o),l=!1,p=!1;if(u){let m=Jn(r,iC),f=Jn(r,aC);if(await Uc(m))await nC(m,o),p=!0;else if(await Uc(f))await tC(f,o),l=!0;else{let{provisionElisionStore:_}=await Promise.resolve().then(()=>(Hs(),ep)),g=process.env.REDDB_BIN;try{await _({uri:`file://${o}`,ttlDays:t.ttlDays??Ee,ephemeralTtlHours:t.ephemeralTtlHours??xe,byteBudget:t.byteBudget??ve})}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=uC(a,Jc);return d!==a&&await lg(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function pg(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Oo(t.ttlDays,Ee)}`,` ephemeralTtlHours: ${Oo(t.ephemeralTtlHours,xe)}`,` byteBudget: ${Oo(t.byteBudget,ve)}`,` heavyGitByteThreshold: ${Oo(t.heavyGitByteThreshold,nt)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
117
- `),s=mg(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
116
+ `:""}`,truncated:i.length<s.length}}function x0(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&&!v0(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Zo(e){let t=e.split(`
117
+ `);return t.at(-1)===""?t.slice(0,-1):t}function yh(e){return e.includes(0)||!f0(e)}function ph(e){return w0.has(h0(e).toLowerCase())}function v0(e){return["for","if","switch","while"].includes(e)}function fh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function gh(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var mh,Cu,y0,b0,w0,Au=h(()=>{"use strict";L();Xt();Fe();mh=8*1024,Cu=10,y0=8,b0=2,w0=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var xh={};M(xh,{REPO_STORE_PATH:()=>Lu,mergeRspBlock:()=>kh,provisionRspRepoStore:()=>$0});import{constants as C0}from"node:fs";import{access as T0,copyFile as O0,mkdir as wh,readFile as A0,rename as P0,writeFile as _h}from"node:fs/promises";import{dirname as I0,join as ns,resolve as L0}from"node:path";async function $0(e,t={}){let r=L0(e),n=ns(r,".red"),s=ns(n,"config.yaml"),o=ns(r,Lu);await wh(n,{recursive:!0}),await wh(I0(o),{recursive:!0});let i="";try{i=await A0(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=kh(i,{enabled:!0,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ct}),c=a!==i;c&&await _h(s,a,"utf8");let u=!await Iu(o),l=!1,m=!1;if(u){let p=ns(r,D0),f=ns(r,N0);if(await Iu(p))await P0(p,o),m=!0;else if(await Iu(f))await O0(f,o),l=!0;else{let{provisionElisionStore:_}=await Promise.resolve().then(()=>(lo(),dp)),g=process.env.REDDB_BIN;try{await _({uri:`file://${o}`,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe})}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=M0(a,Lu);return d!==a&&await _h(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function kh(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ei(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ei(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ei(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ei(t.heavyGitByteThreshold,ct)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
118
+ `),s=Sh(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
118
119
  `)}
119
- `}let o=qc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
120
+ `}let o=Du(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
120
121
  `)}
121
- `}function mg(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Kc(n)&&Vc(n)===0&&fg(n)===t)return r}return-1}function qc(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Kc(e[s])&&Vc(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Vc(e){return(e.match(/^ */)?.[0]??"").length}function Kc(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function fg(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Oo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function uC(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
122
- `),n=mg(r,"plugins");if(n===-1)return e;let s=qc(r,n,0),o=dg(r,"memory",n+1,s,2);if(o===-1)return e;let i=qc(r,o,2),a=[...r],c=dg(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
122
+ `}function Sh(e,t){for(let r=0;r<e.length;r++){let n=e[r];if($u(n)&&Nu(n)===0&&Eh(n)===t)return r}return-1}function Du(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if($u(e[s])&&Nu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Nu(e){return(e.match(/^ */)?.[0]??"").length}function $u(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Eh(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ei(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function M0(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
123
+ `),n=Sh(r,"plugins");if(n===-1)return e;let s=Du(r,n,0),o=Rh(r,"memory",n+1,s,2);if(o===-1)return e;let i=Du(r,o,2),a=[...r],c=Rh(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
123
124
  `)}
124
- `}function dg(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Kc(i)&&Vc(i)===s&&fg(i)===t)return o}return-1}async function Uc(e){try{return await eC(e,Zv.F_OK),!0}catch{return!1}}var Jc,iC,aC,hg=h(()=>{"use strict";ke();Te();Jc=Mi,iC=$u,aC=".red/memory/graph.rdb"});var kg={};j(kg,{runRspMcpServer:()=>dC});import{createInterface as lC}from"node:readline";async function dC(){let e=Ce(process.cwd(),process.env),t=lC({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 pC(n,e);wg({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){wg({jsonrpc:"2.0",id:typeof _g(r)?.id>"u"?null:_g(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function pC(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:bg(t)}]};if(!t.enabled)return{content:[{type:"text",text:bg(t)}],isError:!0};let n=_C(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:zt({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:zt({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:zt({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:zt(mC(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await fC(r.arguments,n)}]}}return{}}function zt(e){return`${H(e)}
125
- `}function mC(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function fC(e,t){let r=hC(e?.payload);try{return await gC(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return Rg(r)}}async function gC(e,t,r){let n=yC(t?.level),s=await tc(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return Rg(s.output);let o=mo(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return zt({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 bC(o,i.length,a,n)}function hC(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function yC(e){return e==="terse"?"terse":"brief"}function bC(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=yg(o.subarray(0,i)),c=yg(o.subarray(Math.max(0,o.length-i)));return zt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:wC(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function Rg(e){return e.endsWith(`
125
+ `}function Rh(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if($u(i)&&Nu(i)===s&&Eh(i)===t)return o}return-1}async function Iu(e){try{return await T0(e,C0.F_OK),!0}catch{return!1}}var Lu,D0,N0,vh=h(()=>{"use strict";pe();Pe();Lu=Ca,D0=El,N0=".red/memory/graph.rdb"});var Ih={};M(Ih,{runRspMcpServer:()=>F0});import{createInterface as B0}from"node:readline";async function F0(){let e=Ae(process.cwd(),process.env),t=B0({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 j0(n,e);Oh({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Oh({jsonrpc:"2.0",id:typeof Ah(r)?.id>"u"?null:Ah(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function j0(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:Th(t)}]};if(!t.enabled)return{content:[{type:"text",text:Th(t)}],isError:!0};let n=K0(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:rr({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:rr({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:rr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:rr(H0(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await G0(r.arguments,n)}]}}return{}}function rr(e){return`${W(e)}
126
+ `}function H0(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function G0(e,t){let r=U0(e?.payload);try{return await W0(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return Ph(r)}}async function W0(e,t,r){let n=J0(t?.level),s=await Uc(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return Ph(s.output);let o=No(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return rr({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 q0(o,i.length,a,n)}function U0(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function J0(e){return e==="terse"?"terse":"brief"}function q0(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Ch(o.subarray(0,i)),c=Ch(o.subarray(Math.max(0,o.length-i)));return rr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:V0(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function Ph(e){return e.endsWith(`
126
127
  `)?e:`${e}
127
- `}function yg(e){return e.toString("utf8").replace(/�$/g,"")}function wC(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 _C(e){return bi(process.cwd(),e)}function bg(e){return zt({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",help:e.enabled?[]:["/red-setup"]})}function wg(e){process.stdout.write(`${JSON.stringify(e)}
128
- `)}function _g(e){try{return JSON.parse(e)}catch{return null}}var Sg=h(()=>{"use strict";$e();Te();Ln();Dt()});var xg={};j(xg,{renderShellInit:()=>RC});function RC(e,t=jn){if(e==="fish")return kC(t);if(e==="bash"||e==="zsh")return SC(e,t);throw new Error(`unsupported shell: ${e}`)}function kC(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(Io))].map(r=>` abbr --add --position command -- ${r} '${CC(`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(`
129
- `)}function SC(e,t){let r=xC(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Po("git",r.get("git")??[]),...Po("gh",r.get("gh")??[]),...Po("vitest",r.get("vitest")??[]),...Po("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(`
130
- `)}function Po(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(Io),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(Io)),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=>Eg(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of EC(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${vC(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Eg(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function EC(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 xC(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!Io(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Io(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Eg(e){return e.replace(/[\\|)&;]/g,"\\$&")}function vC(e){return e.replace(/'/g,"'\\''")}function CC(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var vg=h(()=>{"use strict";Hn()});function zc(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"&&TC(t.chosenOption)&&AC(t.outcome)&&OC(t.cost)}function TC(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function AC(e){return e==="success"||e==="failure"||e==="escalated"}function OC(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 Cg=h(()=>{});import{createHash as PC}from"node:crypto";function Fg(e,t){return new Xc(e,t)}function Tg(e){let t=Number(e.red_entity_id??e.rid),r=Qc(e.properties??e.PROPERTIES),n=jg(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 Ag(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=Hg(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:Qc(e.properties??e.PROPERTIES)}}function DC(e){let t=Number(e.red_entity_id??e.rid),r=Qc(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!zc(r)?null:{rid:t,event:r}}function Qc(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Lo(e)?e:{}}function jg(e){let t=e==="contact"?"person":e;if(IC.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Hg(e){if(LC.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function NC(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Og(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Xt(e){return Lo(e)?e:{}}function Pg(e,t){return Xt(e)[t]}function Ig(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Lg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Dg(e){let t=Xt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ae(e){return typeof e=="string"&&e.length>0?e:void 0}function Lo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yc(e){return e!=null}function $C(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function MC(e){return PC("sha256").update(JSON.stringify(e)).digest("hex")}function BC(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ng(e){return`artifact-hash:${e}`}function $g(e,t,r){return`connection:${e}:${t}:${r}`}function Mg(){return"model-tier-bandit:v1"}function FC(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Bg(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Gg(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+Bg(r,a)*3+Bg(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 jC(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=Wg({...Gg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Yt(s)}function Wg(e){return{...e,lexical:Yt(e.lexical),tags:Yt(e.tags),kind:Yt(e.kind),connections:Yt(e.connections),vector:Yt(e.vector),total:Yt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Yt(e){return Math.round(e*1e3)/1e3}function HC(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 GC(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 WC(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Je,IC,LC,Xc,Ug=h(()=>{"use strict";Cg();Je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},IC=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),LC=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Xc=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(Xt(r));if(t==="getArtifact")return await this.getArtifact(Pg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Xt(r);return await this.search(Ig(n,"query"),Lg(n,"limit")??10,Dg(n.options))}if(t==="think"){let n=Xt(r);return await this.think(Ig(n,"query"),Lg(n,"limit")??8,Dg(n.options))}if(t==="link")return await this.link(Xt(r));if(t==="backlinks")return await this.backlinks(Pg(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Xt(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 ${Je.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Je.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Je.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:WC(t.map(n=>n.kind))}}async capture(t){let r=ae(t.title)||"Untitled artifact",n=ae(t.content);if(!n)throw new Error("brain capture requires content");let s=jg(ae(t.kind)||"note"),o=$C(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=MC([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(Ng(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${BC(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:ae(t.sourceAgent),source_runner:ae(t.sourceRunner),source_session:ae(t.sourceSession),source_path:ae(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:Lo(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Je.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let m=Tg(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ng(a),m.rid),await this.materializeTagConnections(m),m}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 ${Je.artifacts}`)).rows.map(Tg).filter(Yc)}async search(t,r,n={}){let s=FC(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=Gg(u,s),p=Wg({...l,connections:jC(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:HC(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 GC(t,s)}async link(t){let r=await this.getArtifact(Og(t.from)),n=await this.getArtifact(Og(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=Hg(ae(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:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:Lo(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Je.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=Ag(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put($g(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 ${Je.connections}`)).rows.map(Ag).filter(Yc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=NC(ae(t.interval)||"day"),s=ae(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(!zc(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Je.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 ${Je.outcomeEvents}`)).rows.map(DC).filter(Yc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Mg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Mg(),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($g(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Je.kv)}}});var nh={};j(nh,{runResidentServer:()=>XC});import{randomUUID as Mr}from"node:crypto";import{execFileSync as UC,spawn as JC}from"node:child_process";import{existsSync as qC}from"node:fs";import{mkdir as Xg,rename as VC,rm as Jg,writeFile as Qg}from"node:fs/promises";import{createServer as KC}from"node:net";import{dirname as ru,join as Do}from"node:path";import{fileURLToPath as zC,pathToFileURL as YC}from"node:url";async function XC(e){await Xg(ru(e.socketPath),{recursive:!0});let t=l0();u0();let r=e.telemetryDrainTimeoutMs??Zg,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??bs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=KC(x=>{l.add(x),x.once("close",()=>l.delete(x)),f(),y0(x,async O=>{f();let F=await b0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),he={id:O.id,ok:!0,value:F,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};rh(x,he),O.op==="handover"&&setImmediate(()=>m())})});function m(){o=!0,u=!0,c=c0(c),d.close();for(let x of l)x.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{No(),d.close();for(let F of l)F.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(te=>setTimeout(te,O));let F=await Gt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),he=Number(process.hrtime.bigint()-x)/1e6,Pe=new tu(F,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??hs,byteBudget:e.telemetryByteBudget??e.byteBudget??ys});if(o){await F.close();return}if(await Zc(Pe,r),o){await F.close();return}n={kind:"ready",store:F,telemetry:Pe,storeOpenCount:1,storeElapsedMs:he},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Zc(te.telemetry,r)},p),s.unref(),f()})().catch(x=>{n={kind:"failed",error:x instanceof Error?x:new Error(String(x))},f()}),e.pidPath&&await Qg(e.pidPath,`${process.pid}
131
- `,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??Do(X(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await rs(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await Jg(e.socketPath,{force:!0});let w=n;w.kind==="ready"&&(await Zc(w.telemetry,r,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),No(),e.pidPath&&await Jg(e.pidPath,{force:!0}),await ns(b)}async function n0(e,t,r=new Date){let n=await Gs(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=Do(X(t),t0),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 Xg(ru(a),{recursive:!0}),await Qg(c,`${H(u)}
132
- `,{encoding:"utf8",mode:384}),await VC(c,a)}async function Zc(e,t=Zg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await th(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
133
- `)}}async function s0(e){let t=[];for(let r of r0){let n=await o0(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await i0(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${eh(r)}`))}return t}async function o0(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 i0(e,t,r){let n=a0(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${eh(t)}`)}function a0(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 eh(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function c0(e){return e&&clearTimeout(e),setTimeout(()=>{No(),process.exit(0)},e0)}function u0(){qg||(qg=!0,process.on("exit",()=>No()))}function l0(){if(process.platform==="win32")return;let t=JC(process.execPath,["-e",`
128
+ `}function Ch(e){return e.toString("utf8").replace(/�$/g,"")}function V0(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 K0(e){return ea(process.cwd(),e)}function Th(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return rr({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 Oh(e){process.stdout.write(`${JSON.stringify(e)}
129
+ `)}function Ah(e){try{return JSON.parse(e)}catch{return null}}var Lh=h(()=>{"use strict";rt();Pe();U();Jn();jt()});var Nh={};M(Nh,{renderShellInit:()=>z0});function z0(e,t=Qn){if(e==="fish")return Y0(t);if(e==="bash"||e==="zsh")return X0(e,t);throw new Error(`unsupported shell: ${e}`)}function Y0(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(ri))].map(r=>` abbr --add --position command -- ${r} '${tT(`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(`
130
+ `)}function X0(e,t){let r=Z0(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ti("git",r.get("git")??[]),...ti("gh",r.get("gh")??[]),...ti("vitest",r.get("vitest")??[]),...ti("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(`
131
+ `)}function ti(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(ri),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ri)),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=>Dh(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of Q0(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${eT(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Dh(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Q0(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 Z0(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ri(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ri(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Dh(e){return e.replace(/[\\|)&;]/g,"\\$&")}function eT(e){return e.replace(/'/g,"'\\''")}function tT(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var $h=h(()=>{"use strict";Zn()});function Mu(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"&&rT(t.chosenOption)&&nT(t.outcome)&&sT(t.cost)}function rT(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function nT(e){return e==="success"||e==="failure"||e==="escalated"}function sT(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 Mh=h(()=>{});import{createHash as oT}from"node:crypto";function zh(e,t){return new Fu(e,t)}function Bh(e){let t=Number(e.red_entity_id??e.rid),r=ju(e.properties??e.PROPERTIES),n=Yh(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 Fh(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=Xh(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:ju(e.properties??e.PROPERTIES)}}function cT(e){let t=Number(e.red_entity_id??e.rid),r=ju(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Mu(r)?null:{rid:t,event:r}}function ju(e){return e==null?{}:typeof e=="string"?JSON.parse(e):ni(e)?e:{}}function Yh(e){let t=e==="contact"?"person":e;if(iT.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Xh(e){if(aT.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function uT(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function jh(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function sr(e){return ni(e)?e:{}}function Hh(e,t){return sr(e)[t]}function Gh(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Wh(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Uh(e){let t=sr(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 ni(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bu(e){return e!=null}function lT(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function dT(e){return oT("sha256").update(JSON.stringify(e)).digest("hex")}function mT(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Jh(e){return`artifact-hash:${e}`}function qh(e,t,r){return`connection:${e}:${t}:${r}`}function Vh(){return"model-tier-bandit:v1"}function pT(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Kh(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Qh(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+Kh(r,a)*3+Kh(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 fT(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=Zh({...Qh(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return nr(s)}function Zh(e){return{...e,lexical:nr(e.lexical),tags:nr(e.tags),kind:nr(e.kind),connections:nr(e.connections),vector:nr(e.vector),total:nr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function nr(e){return Math.round(e*1e3)/1e3}function gT(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 hT(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 yT(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ye,iT,aT,Fu,ey=h(()=>{"use strict";Mh();Ye={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},iT=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),aT=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fu=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(sr(r));if(t==="getArtifact")return await this.getArtifact(Hh(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=sr(r);return await this.search(Gh(n,"query"),Wh(n,"limit")??10,Uh(n.options))}if(t==="think"){let n=sr(r);return await this.think(Gh(n,"query"),Wh(n,"limit")??8,Uh(n.options))}if(t==="link")return await this.link(sr(r));if(t==="backlinks")return await this.backlinks(Hh(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(sr(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 ${Ye.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ye.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ye.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:yT(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=Yh(de(t.kind)||"note"),o=lT(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=dT([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Jh(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${mT(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:ni(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ye.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 p=Bh(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Jh(a),p.rid),await this.materializeTagConnections(p),p}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 ${Ye.artifacts}`)).rows.map(Bh).filter(Bu)}async search(t,r,n={}){let s=pT(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=Qh(u,s),m=Zh({...l,connections:fT(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:gT(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 hT(t,s)}async link(t){let r=await this.getArtifact(jh(t.from)),n=await this.getArtifact(jh(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=Xh(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(m=>m.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:ni(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ye.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=Fh(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(qh(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 ${Ye.connections}`)).rows.map(Fh).filter(Bu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=uT(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(!Mu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ye.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 ${Ye.outcomeEvents}`)).rows.map(cT).filter(Bu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Vh());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Vh(),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(qh(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ye.kv)}}});var py={};M(py,{runResidentServer:()=>xT});import{randomUUID as Wr}from"node:crypto";import{execFileSync as bT,spawn as wT}from"node:child_process";import{existsSync as _T}from"node:fs";import{mkdir as ay,rename as RT,rm as ty,writeFile as cy}from"node:fs/promises";import{createServer as kT}from"node:net";import{dirname as Uu,join as si}from"node:path";import{fileURLToPath as ST,pathToFileURL as ET}from"node:url";async function xT(e){await ay(Uu(e.socketPath),{recursive:!0});let t=BT();MT();let r=e.telemetryDrainTimeoutMs??uy,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Hs,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=kT(S=>{l.add(S),S.once("close",()=>l.delete(S)),f(),JT(S,async O=>{f();let j=await qT(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),_e={id:O.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};my(S,_e),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=$T(c),d.close();for(let S of l)S.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(S=>{let O=()=>{oi(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(S,O),{signal:S,handler:O}});await new Promise((S,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),S()})}),(async()=>{let S=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(oe=>setTimeout(oe,O));let j=await Kt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),_e=Number(process.hrtime.bigint()-S)/1e6,Ne=new Wu(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Fs,byteBudget:e.telemetryByteBudget??e.byteBudget??js});if(o){await j.close();return}if(await Hu(Ne,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:Ne,storeOpenCount:1,storeElapsedMs:_e},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&Hu(oe.telemetry,r)},m),s.unref(),f()})().catch(S=>{n={kind:"failed",error:S instanceof Error?S:new Error(String(S))},f()}),e.pidPath&&await cy(e.pidPath,`${process.pid}
132
+ `,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??si(G(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Rs(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(S=>d.once("close",S)),a&&clearTimeout(a),s&&clearInterval(s),await ty(e.socketPath,{force:!0});let w=n;w.kind==="ready"&&(await Hu(w.telemetry,r,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:S,handler:O}of g)process.off(S,O);t?.kill("SIGTERM"),oi(),e.pidPath&&await ty(e.pidPath,{force:!0}),await ks(b)}async function PT(e,t,r=new Date){let n=await mo(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=si(G(t),OT),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 ay(Uu(a),{recursive:!0}),await cy(c,`${W(u)}
133
+ `,{encoding:"utf8",mode:384}),await RT(c,a)}async function Hu(e,t=uy,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await dy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
134
+ `)}}async function IT(e){let t=[];for(let r of AT){let n=await LT(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await DT(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${ly(r)}`))}return t}async function LT(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 DT(e,t,r){let n=NT(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${ly(t)}`)}function NT(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 ly(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function $T(e){return e&&clearTimeout(e),setTimeout(()=>{oi(),process.exit(0)},TT)}function MT(){ry||(ry=!0,process.on("exit",()=>oi()))}function BT(){if(process.platform==="win32")return;let t=wT(process.execPath,["-e",`
134
135
  const { execFileSync } = require("node:child_process");
135
136
  const parentPid = Number(process.argv[1]);
136
137
  const known = new Set();
@@ -171,23 +172,23 @@ const timer = setInterval(() => {
171
172
  clearInterval(timer);
172
173
  process.exit(0);
173
174
  }, 500);
174
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function No(){for(let e of d0())try{process.kill(e,"SIGTERM")}catch{}}function d0(){if(process.platform==="win32")return[];let e="";try{e=UC("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 p0(e){if(e.collection!==de)return e;let t=await Vg(e.raw_text,zg(e.raw_bytes)),r=await Vg(e.emitted_text,zg(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 Vg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=QC)try{return await th((async()=>({tokens:(await m0())("cl100k_base").encode(e).length,estimated:!1}))(),ZC,"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 m0(){return Kg??=import(YC(f0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Kg}function f0(){let e=ru(zC(import.meta.url)),r=[Do(e,"..","node_modules","js-tiktoken","dist","index.js"),Do(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>qC(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function zg(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Y(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function eu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function th(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 g0(e){try{return JSON.parse(e)}catch{return e}}function h0(e){return Yg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Yg(t)&&(t.collection===se||t.collection===K||t.collection===de||t.collection===Fe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Yg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function y0(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
175
- `);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??Mr(),ok:!1,error:a instanceof Error?a.message:String(a)};rh(e,u)}finally{e.end()}})()})}function rh(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
176
- `)}catch{}}async function b0(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 Ta(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 Gs(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 Aa(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return _0(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await w0(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function w0(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Fg(s,t).request(r,n)}function _0(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var QC,ZC,Zg,e0,t0,r0,tu,qg,Kg,sh=h(()=>{"use strict";ke();ss();$e();Hs();Ug();je();Te();QC=256*1024,ZC=500,Zg=2e3,e0=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),t0="rsp-status-summary.json",r0=[se,K,de,Fe,an],tu=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 s0(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 Ki(this.opts.rootDir,async a=>{let c=_r(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:Y(c.command)||"unknown",source_id:Y(c.id),source_collection:Y(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 n0(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:Mr(),a={...await p0(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===se?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===se||r.accounting_recorded===!0?null:r.collection===de?await this.writeEvent(t,{collection:se,id:`mirror:${Y(r.id)||Mr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:eu(Y(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===Fe?await this.writeEvent(t,{collection:se,id:`mirror:${Y(r.id)||Mr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:eu(Y(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:Y(r.reason)||"unknown",wrapper_family:Y(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:Y(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Fe,id:Mr(),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:se,id:`mirror:${Mr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:eu(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(an).get("index:v1"),n=typeof r=="string"?g0(r):r;return h0(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(an).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})}};qg=!1});Ne();function Re(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=Re(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function Cu(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function Tu(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new ei(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var ei=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Kn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function nr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function Au(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let o=e[++n]??"",i=o.indexOf("=");i<=0||(r[o.slice(0,i)]=o.slice(i+1))}return{path:t,params:r}}function zn(e,t){let r=Re(e,"--since")??e.find(o=>o.startsWith("--since="))?.slice(8);if(!r)return t;let n=/^(\d+)(d)?$/.exec(r);if(!n)return t;let s=Number(n[1]);return Number.isFinite(s)&&s>0?s:t}function Ou(e){return e.includes("--full")}$e();ni();Ne();import{existsSync as R0}from"node:fs";import{fileURLToPath as k0}from"node:url";$e();qr();import{existsSync as Dk}from"node:fs";import{fileURLToPath as Nk}from"node:url";$e();ci();import{existsSync as Hy}from"node:fs";import{fileURLToPath as Gy}from"node:url";async function cr(e,t){let r={stats:Wy(e.telemetryByteBudget),telemetry:ki(t)};if(!e.storeUri.startsWith("file://"))return r;let n=Gy(e.storeUri);if(!Hy(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Dt(),Xr)),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:ki(t)}}catch{return r}finally{await o.close()}}function Si(e,t=ki(30),r=!1){return`${H(Ei(e,t,r))}
177
- `}function Ei(e,t,r){let n=t.savings.top_commands.slice(0,r?10:3),s=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),o=e.storage_classes??os(),i=t.health.recent_failures.slice(0,r?20:5),a=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:o,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:Uy(t.savings),dollars_saved_estimate_usd_display:Jy(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:n,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-n.length)},health:{...t.health,degradation_rate_display:Ri(t.health.degradation_rate),show_hit_rate_display:Ri(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:i,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-i.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:Ri(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-a.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:_i(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:_i(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:_i(t.latency.store_elapsed_ms_avg)}}}function dl(e){return`${H(e)}
178
- `}function ki(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 Wy(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:os()}}function os(){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 xi(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
179
- `)}function Uy(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 Jy(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Vr(e.dollars_saved_estimate_usd):`${Vr(e.dollars_saved_low_usd)}-${Vr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Vr(e.dollars_saved_estimate_usd)})`}function _i(e){return e==null?"none":String(e)}function Ri(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function tm(e){let{stats:t,telemetry:r}=await cr(e,30),[n,s]=await Promise.all([$k(e),Promise.resolve().then(()=>(Ka(),Va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function rm(e){let t=Ei(e.stats,e.telemetry,!1),r=oi({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??os()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},Mk(e));return`${H(r)}
180
- `}async function $k(e){if(!e.storeUri.startsWith("file://"))return[];let t=Nk(e.storeUri);if(!Dk(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Dt(),Xr)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function Mk(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"]}$e();Ne();import{existsSync as ix}from"node:fs";import{fileURLToPath as ax}from"node:url";je();import{spawn as fo}from"node:child_process";async function Jm(e,t,r){let n=process.hrtime.bigint(),s=await RE(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return kE(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function RE(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(()=>(so(),no)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Mn(),$n)).then(i=>i.parseExecCommandLine(e));r=fo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=fo(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)}
181
- `;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 qm(e){return e>0&&Math.random()<e}async function Fn(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
182
- `);let s=await zm(t);if(n){let o=SE(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(je(),Ws));Um(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:ic(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})),Um(i(n,{collection:c,ts:new Date().toISOString(),command:ic(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Vm(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${go()}, passing through
183
- `),await zm(e)}function go(){return"rsp is not enabled in this directory; run /red-setup"}function Km(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function He(e){return ic(e.positional)}function ic(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 Bn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function kE(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:He(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};pt(e,{collection:"rsp_accounting_events_v1",...i}),pt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function SE(e,t,r){let n=t[0]??"unknown",s=EE(r)||e;return{reason:Wm(r)==="ENOENT"||Wm(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:vE(r)??1,stderrHead:xE(s,240)}}function EE(e){return e instanceof Error?Bn(e.message):Bn(String(e??""))}function xE(e,t){let r=Bn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Wm(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function vE(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 Um(e){e.catch(()=>{})}async function zm(e){if(e[0]==="exec"||e[0]==="proxy")return await CE(e);let t=e[0];if(!t)return 2;let r=fo(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)}
184
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function CE(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(so(),no));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(Mn(),$n));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
185
- `),2}let r=fo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
186
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function mf(e,t,r){let n=[],s=!e.enabled;if(n.push(s?Z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(Z("hook_wiring","skipped because rsp is disabled"),Z("proxy_mode","skipped because rsp is disabled"),Z("resident_liveness","skipped because rsp is disabled"),Z("store_provisioning","skipped because rsp is disabled"),Z("recent_degradation_rate","skipped because rsp is disabled")),pf("disabled",n,r);n.push(await cx(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Or("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ze(),Lt));if(n.push(ux(await o(t))),n.push(lx(e)),gf(e)){let{telemetry:i}=await cr(e,r);n.push(dx(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return pf(n.some(i=>!i.pass)?"fail":"pass",n,r)}function ff(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
187
- `}async function cx(e){try{if(e.proxyEnabled)return Z("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Hn(),Ro)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Or("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Or("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Bn(t.message):"unknown error"}`,"rsp setup")}}function ux(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):Or("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function lx(e){return e.storeUri.startsWith("file://")?gf(e)?Z("store_provisioning","rsp store exists for this directory"):Or("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function dx(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return Z("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 Or("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,px(s,t))}function px(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 gf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ix(ax(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function Or(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Zo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function pf(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)}}gc();function wf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${gx(t).join(`
175
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function oi(){for(let e of FT())try{process.kill(e,"SIGTERM")}catch{}}function FT(){if(process.platform==="win32")return[];let e="";try{e=bT("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 jT(e){if(e.collection!==ge)return e;let t=await ny(e.raw_text,oy(e.raw_bytes)),r=await ny(e.emitted_text,oy(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 ny(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=vT)try{return await dy((async()=>({tokens:(await HT())("cl100k_base").encode(e).length,estimated:!1}))(),CT,"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 HT(){return sy??=import(ET(GT()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await sy}function GT(){let e=Uu(ST(import.meta.url)),r=[si(e,"..","node_modules","js-tiktoken","dist","index.js"),si(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>_T(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function oy(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 Gu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function dy(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 WT(e){try{return JSON.parse(e)}catch{return e}}function UT(e){return iy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>iy(t)&&(t.collection===ce||t.collection===Q||t.collection===ge||t.collection===Je)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function iy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function JT(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
176
+ `);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??Wr(),ok:!1,error:a instanceof Error?a.message:String(a)};my(e,u)}finally{e.end()}})()})}function my(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
177
+ `)}catch{}}async function qT(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 bc(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 mo(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 wc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return KT(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await VT(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function VT(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await zh(s,t).request(r,n)}function KT(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var vT,CT,uy,TT,OT,AT,Wu,ry,sy,fy=h(()=>{"use strict";pe();Ss();rt();lo();ey();Ie();Pe();vT=256*1024,CT=500,uy=2e3,TT=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),OT="rsp-status-summary.json",AT=[ce,Q,ge,Je,bn],Wu=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 IT(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 Ba(this.opts.rootDir,async a=>{let c=Cr(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 PT(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:Wr(),a={...await jT(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===ge?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Gu(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===Je?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Gu(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:Je,id:Wr(),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:${Wr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Gu(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(bn).get("index:v1"),n=typeof r=="string"?WT(r):r;return UT(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(bn).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})}};ry=!1});Fe();function xe(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function q(e,t){let r=xe(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function gl(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function hl(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new Ei(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var Ei=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return is("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function lr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function yl(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let o=e[++n]??"",i=o.indexOf("=");i<=0||(r[o.slice(0,i)]=o.slice(i+1))}return{path:t,params:r}}function as(e,t){let r=xe(e,"--since")??e.find(o=>o.startsWith("--since="))?.slice(8);if(!r)return t;let n=/^(\d+)(d)?$/.exec(r);if(!n)return t;let s=Number(n[1]);return Number.isFinite(s)&&s>0?s:t}function bl(e){return e.includes("--full")}xi();Fe();import{existsSync as zT}from"node:fs";import{fileURLToPath as YT}from"node:url";rt();Qr();U();Ge();import{existsSync as aE}from"node:fs";import{fileURLToPath as cE}from"node:url";rt();Zi();U();import{existsSync as gw}from"node:fs";import{fileURLToPath as hw}from"node:url";async function fr(e,t){let r={stats:yw(e.telemetryByteBudget),telemetry:sa(t)};if(!e.storeUri.startsWith("file://"))return r;let n=hw(e.storeUri);if(!gw(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(jt(),cn)),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:sa(t)}}catch{return r}finally{await o.close()}}function oa(e,t=sa(30),r=!1,n=ld()){return`${W(ia(e,t,r,n))}
178
+ `}function ud(e,t){return`${W({...e,overhead:dd(t)})}
179
+ `}function ld(){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 dd(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 ia(e,t,r,n=ld()){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??Es(),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:bw(t.savings),dollars_saved_estimate_usd_display:ww(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:dd(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:na(t.health.degradation_rate),show_hit_rate_display:na(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:na(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:ra(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ra(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ra(t.latency.store_elapsed_ms_avg)}}}function md(e){return`${W(e)}
180
+ `}function sa(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 yw(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Es()}}function Es(){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 aa(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
181
+ `)}function bw(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 ww(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?an(e.dollars_saved_estimate_usd):`${an(e.dollars_saved_low_usd)}-${an(e.dollars_saved_high_usd)} (estimate_midpoint: ${an(e.dollars_saved_estimate_usd)})`}function ra(e){return e==null?"none":String(e)}function na(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function df(e){let{stats:t,telemetry:r}=await fr(e,30),[n,s]=await Promise.all([uE(e),Promise.resolve().then(()=>(Mc(),$c)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(He(process.cwd()).rootDir,e.overhead)}}function mf(e){let t=ia(e.stats,e.telemetry,!1,e.overhead),r=Oi({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??Es()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},lE(e));return`${W(r)}
182
+ `}async function uE(e){if(!e.storeUri.startsWith("file://"))return[];let t=cE(e.storeUri);if(!aE(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(jt(),cn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function lE(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"]}rt();U();Fe();import{existsSync as Iv}from"node:fs";import{fileURLToPath as Lv}from"node:url";Ie();import{spawn as $o}from"node:child_process";async function eg(e,t,r){let n=process.hrtime.bigint(),s=await tg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return Kx(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function tg(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(()=>(Co(),vo)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(zn(),Kn)).then(i=>i.parseExecCommandLine(e));r=$o(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=$o(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)}
183
+ `;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 rg(e){return e>0&&Math.random()<e}async function Xn(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
184
+ `);let s=await ig(t);if(n){let o=zx(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Bn));Bo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Mo(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})),Bo(i(n,{collection:c,ts:new Date().toISOString(),command:Mo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function ng(e,t,r){let n=await tg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ie(),Bn)),a={ts:new Date().toISOString(),command:Mo(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 Bo(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})),Bo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function sg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Fo()}, passing through
185
+ `),await ig(e)}function Fo(){return"rsp is not enabled in this directory; run /red-setup"}function og(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function qe(e){return Mo(e.positional)}function Mo(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 Yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Kx(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:qe(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};ht(e,{collection:"rsp_accounting_events_v1",...i}),ht(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function zx(e,t,r){let n=t[0]??"unknown",s=Yx(r)||e;return{reason:Zf(r)==="ENOENT"||Zf(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:Qx(r)??1,stderrHead:Xx(s,240)}}function Yx(e){return e instanceof Error?Yn(e.message):Yn(String(e??""))}function Xx(e,t){let r=Yn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Zf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function Qx(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 Bo(e){e.catch(()=>{})}async function ig(e){if(e[0]==="exec"||e[0]==="proxy")return await Zx(e);let t=e[0];if(!t)return 2;let r=$o(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)}
186
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Zx(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Co(),vo));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(zn(),Kn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
187
+ `),2}let r=$o(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
188
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Sg(e,t,r){let n=[],s=!e.enabled;if(n.push(s?z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(z("hook_wiring","skipped because rsp is disabled"),z("proxy_mode","skipped because rsp is disabled"),z("resident_liveness","skipped because rsp is disabled"),z("store_provisioning","skipped because rsp is disabled"),z("recent_degradation_rate","skipped because rsp is disabled"),z("overhead_budget","skipped because rsp is disabled")),kg("disabled",n,r);n.push(await Dv(e)),n.push(e.proxyEnabled?z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Zt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ge(),Ft));if(n.push(Nv(await o(t))),n.push($v(e)),xg(e)){let{telemetry:i}=await fr(e,r);n.push(Mv(i,r))}else n.push(z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(Bv(ft(process.cwd(),e.overhead))),kg(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Eg(e){let{exitCode:t,...r}=e;return`${W({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
189
+ `}async function Dv(e){try{if(e.proxyEnabled)return z("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Zn(),Jo)),r=t("git status");return r.kind==="rewrite"?z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Zt("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Zt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Yn(t.message):"unknown error"}`,"rsp setup")}}function Nv(e){return e.state==="registered-alive-socket-healthy"?z("resident_liveness","resident registry points at a healthy socket"):Zt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function $v(e){return e.storeUri.startsWith("file://")?xg(e)?z("store_provisioning","rsp store exists for this directory"):Zt("store_provisioning","rsp store is not provisioned","rsp setup"):z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Mv(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return z("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 Zt("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,Fv(s,t))}function Bv(e){return e.verdict==="green"?z("overhead_budget",e.summary):Zt("overhead_budget",e.summary,"rsp status")}function Fv(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 xg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Iv(Lv(e.storeUri))}catch{return!1}}function z(e,t){return{name:e,pass:!0,finding:t}}function Zt(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Si({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function kg(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)}}nu();function Og(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${Gv(t).join(`
188
190
  `)}
189
- `}function gx(e){switch(e){case"stats":return B("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 B("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 B("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 B("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 B("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 B("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 B("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 B("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 B('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 B("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 B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("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 B("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 B("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"hook":return B("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:"," 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","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}ke();je();import{spawn as hx}from"node:child_process";import{createHash as yx}from"node:crypto";import{existsSync as bx,readFileSync as wx,statSync as _x}from"node:fs";import{tmpdir as Rx}from"node:os";import{dirname as kx,join as wt}from"node:path";async function ee(e,t,r,n,s=process.cwd(),o){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let i=Number(process.hrtime.bigint()-r)/1e6;return n?(Vt(Cx(s,e,t,i,n.lastResponseMetrics())),o&&Sx(s,o)):Tx(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Vt(e){e.catch(()=>{})}async function Eo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(je(),Ws));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 Sx(e,t){try{let r=st(e),n=_x(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!vx(r,Date.now()-s))return;let o=Ex(e),i=xx(o),a=wt(i,"rsp.sock"),c=wt(i,"rsp.pid"),u=wt(X(o),"rsp-resident.pid.json"),l=wt(o,".red","tmp","rsp","wake.lock");hx(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 Ex(e){let t=e;for(;;){if(bx(wt(t,".git")))return t;let r=kx(t);if(r===t)return e;t=r}}function xx(e){let t=yx("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=wt(r,"red-skills",t);if(wt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return wt(Rx(),`red-skills-${n}`,t)}function vx(e,t){try{let r=wx(e,"utf8");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 Cx(e,t,r,n,s){let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(je(),Ws));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:He(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,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:He(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,raw_text:i.toString("utf8"),emitted_text:o.toString("utf8"),wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:He(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:i.length,emitted_bytes:o.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:He(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function Tx(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);pt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:He(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,wrapper_ms:n}),pt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:He(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var Et=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}},Wc=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function cg(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Wc,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(gc(),bf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Jt(),Za)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await ee(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(Dc(),Lc)),a=await i(e.positional,{level:e.level,store:s});return await ee(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(Bc(),Mc)),a=await i(e.positional,{level:e.level,store:s});return await ee(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Gc(),Hc)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(Mn(),$n)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return nr(i)?(process.stdout.write(i.render()),2):await Fn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Fn("wrapper failed",e.positional,n,r)}async function oh(e=process.argv.slice(2)){let t=Yn("rsp");if(Cu(e))return process.stdout.write(wf(e)),0;let r=Tu(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Hn(),Ro));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Hn(),Ro));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Ln(),nc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Ln(),nc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(hg(),gg)),y=await g(process.cwd());return process.stdout.write(xi(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Sg(),kg));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Ka(),Va));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(vg(),xg));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Te(),ql)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(Ze(),Lt)),y=g(process.cwd()),b=await mf(s,y,zn(r.positional,1));return process.stdout.write(ff(b)),b.exitCode}let o=Km(r.command);if(!s.enabled)return o?await Vm(r.positional):(process.stdout.write(`${go()}
190
- `),0);if(r.command==="git"&&ko(r.positional)){let g=process.hrtime.bigint();return await ee(r,await So(),g,void 0,await fc(process.cwd()))}let{resolveResidentPaths:i,ensureResidentServer:a}=await Promise.resolve().then(()=>(Ze(),Lt)),c=i(process.cwd());if(o&&qm(s.measurementHoldoutShare))return await Jm(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(sh(),nh)),y=i(process.cwd()),b=Re(r.positional,"--socket")??y.socketPath,w=n(process.cwd(),process.env,r.storeUri??Re(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:Re(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:y.rootDir,storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,residentVersion:Re(r.positional,"--resident-version")??t.version,registryPath:Re(r.positional,"--registry")??y.registryPath}),0):(process.stdout.write(`${go()}
191
- `),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=Re(r.positional,"--socket")??g.socketPath,b=Re(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??Re(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:x}=await Promise.resolve().then(()=>(Ze(),Lt));return await x({...g,socketPath:y,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(so(),no));return await g(r.positional,{telemetryRoot:c.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ze(),Lt)),b=r.command==="sweep"?await y(c):await g(c);return process.stdout.write(`${H(b)}
192
- `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(Us(),cp)),y=Au(r.positional);if(!y)return process.stdout.write($({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
193
- `),b.status}if(!r.command){let g=await tm(s);return process.stdout.write(rm(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!R0(k0(s.storeUri)))return o?await cg(r,s,c.rootDir):(process.stdout.write($({command:He(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:u,residentElisionStore:l,reportResidentEntryDiagnostic:p}=await Promise.resolve().then(()=>(Dt(),Xr)),d=(g=!0)=>Promise.resolve(l(process.cwd(),s,{ensureResident:g,paths:c})),m=()=>a(c,u(s,t.version)).catch(g=>void p(g)),f=()=>d(),_;try{if(r.command==="stats"){let{stats:g,telemetry:y}=await cr(s,zn(r.positional,30));return process.stdout.write(Si(g,y,Ou(r.positional))),0}if(r.command==="gains"){let g=await f();_=()=>g.close();let y;try{y=await g.telemetryGains(zn(r.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${r.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(dl(y)),0}if(r.command==="git"){if(Vt(m()),ko(r.positional)){let x=process.hrtime.bigint();return await ee(r,await So(),x,void 0,c.rootDir)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Jt(),Za)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="gh"){Vt(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Dc(),Lc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await ee(r,w,b,y,c.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Vt(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Bc(),Mc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await ee(r,w,b,y,c.rootDir)}if(r.command==="cat"){Vt(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Gc(),Hc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="exec"){Vt(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(Mn(),$n)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="show"&&r.handle){let g=await f();_=()=>g.close();let y=await g.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await Eo(c.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(w),await Eo(c.rootDir,r.handle,!1,w.length),1}let b=$({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(b),await Eo(c.rootDir,r.handle,!1,b.length),1}return process.stdout.write($({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(nr(g))return process.stdout.write(g.render()),2;if(o)return await Fn("wrapper failed",r.positional,g,c.rootDir);throw g}finally{await _?.()}}Ne();import.meta.url===`file://${process.argv[1]}`&&oh().then(e=>process.exit(e),e=>{nr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write($({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{oh as main,xi as renderSetupResult,Si as renderStats};
191
+ `}function Gv(e){switch(e){case"stats":return F("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return F("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return F("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return F("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return F("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return F("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return F("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return F("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return F('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return F("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return F("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return F("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return F("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return F("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return F("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return F("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return F("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return F("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return F("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return F("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," 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","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return F(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function F(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}pe();U();Ie();import{spawn as Wv}from"node:child_process";import{createHash as Uv}from"node:crypto";import{existsSync as Jv,readFileSync as qv,statSync as Vv}from"node:fs";import{tmpdir as Kv}from"node:os";import{dirname as zv,join as St}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&&Xv(s,o);let c=Yv(e,t,a);return en(s,c,i),n?er(tC(s,e,t,c,i,n.lastResponseMetrics())):rC(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Yv(e,t,r){let n=rn(),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 er(e){e.catch(()=>{})}async function Ko(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Bn));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 Xv(e,t){try{let r=ut(e),n=Vv(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!eC(r,Date.now()-s))return;let o=Qv(e),i=Zv(o),a=St(i,"rsp.sock"),c=St(i,"rsp.pid"),u=St(G(o),"rsp-resident.pid.json"),l=St(o,".red","tmp","rsp","wake.lock");Wv(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 Qv(e){let t=e;for(;;){if(Jv(St(t,".git")))return t;let r=zv(t);if(r===t)return e;t=r}}function Zv(e){let t=Uv("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=St(r,"red-skills",t);if(St(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return St(Kv(),`red-skills-${n}`,t)}function eC(e,t){try{let r=qv(e,"utf8");tn(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 tC(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=fs(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:m}=await Promise.resolve().then(()=>(Ie(),Bn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:qe(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:m,ts:new Date().toISOString(),command:qe(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:qe(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:qe(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function rC(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=fs(n,s);ht(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:qe(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}),ht(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:qe(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 Tt=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}},Pu=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function bh(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Pu,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(nu(),Tg));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Xt(),Gc)),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(()=>(ku(),Ru)),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(()=>(vu(),xu)),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(()=>(Au(),Ou)),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(()=>(zn(),Kn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return lr(i)?(process.stdout.write(i.render()),2):await Xn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Xn("wrapper failed",e.positional,n,r)}async function gy(e=process.argv.slice(2)){let t=cs("rsp");if(gl(e))return process.stdout.write(Og(e)),0;let r=hl(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Zn(),Jo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Zn(),Jo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Jn(),qc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Jn(),qc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(vh(),xh)),y=await g(process.cwd());return process.stdout.write(aa(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Lh(),Ih));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Mc(),$c));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>($h(),Nh));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Pe(),nm)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(Ge(),Ft)),y=g(process.cwd()),b=await Sg(s,y,as(r.positional,1));return process.stdout.write(Eg(b)),b.exitCode}let o=og(r.command);if(!s.enabled)return o?await sg(r.positional):(process.stdout.write(`${Fo()}
192
+ `),0);if(r.command==="git"&&qo(r.positional)){let g=process.hrtime.bigint();return await se(r,await Vo(),g,void 0,await ru(process.cwd()),s)}let{resolveResidentPaths:i,ensureResidentServer:a}=await Promise.resolve().then(()=>(Ge(),Ft)),c=i(process.cwd());if(o&&r.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(U(),hs)),y=g(c.rootDir,r.command);if(y)return await ng(r.positional,c.rootDir,y)}if(o&&rg(s.measurementHoldoutShare))return await eg(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(fy(),py)),y=i(process.cwd()),b=xe(r.positional,"--socket")??y.socketPath,w=n(process.cwd(),process.env,r.storeUri??xe(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:xe(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:y.rootDir,storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,residentVersion:xe(r.positional,"--resident-version")??t.version,registryPath:xe(r.positional,"--registry")??y.registryPath}),0):(process.stdout.write(`${Fo()}
193
+ `),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=xe(r.positional,"--socket")??g.socketPath,b=xe(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??xe(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:S}=await Promise.resolve().then(()=>(Ge(),Ft));return await S({...g,socketPath:y,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(Co(),vo));return await g(r.positional,{telemetryRoot:c.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ge(),Ft)),b=r.command==="sweep"?await y(c):await g(c);if(r.command==="sweep"){let{sweepGhEtagCache:O}=await Promise.resolve().then(()=>(yn(),Xd));await O(c.rootDir,{maxBytes:s.ghEtagCacheMaxBytes})}let{overheadHealth:w}=await Promise.resolve().then(()=>(U(),hs)),S=w(c.rootDir,s.overhead);return process.stdout.write(ud(b,S)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(po(),yp)),y=yl(r.positional);if(!y)return process.stdout.write($({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`,overheadCeiling:s.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
194
+ `),b.status}if(!r.command){let g=await df(s);return process.stdout.write(mf(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!zT(YT(s.storeUri)))return o?await bh(r,s,c.rootDir):(process.stdout.write($({command:qe(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:u,residentElisionStore:l,reportResidentEntryDiagnostic:m}=await Promise.resolve().then(()=>(jt(),cn)),d=(g=!0)=>Promise.resolve(l(process.cwd(),s,{ensureResident:g,paths:c})),p=()=>a(c,u(s,t.version)).catch(g=>void m(g)),f=()=>d(),_;try{if(r.command==="stats"){let{stats:g,telemetry:y}=await fr(s,as(r.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(U(),hs));return process.stdout.write(oa(g,y,bl(r.positional),b(c.rootDir,s.overhead))),0}if(r.command==="gains"){let g=await f();_=()=>g.close();let y;try{y=await g.telemetryGains(as(r.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${r.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(md(y)),0}if(r.command==="git"){if(er(p()),qo(r.positional)){let S=process.hrtime.bigint();return await se(r,await Vo(),S,void 0,c.rootDir,s)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Xt(),Gc)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="gh"){er(p());let{runGhWrapper:g}=await Promise.resolve().then(()=>(ku(),Ru)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="vitest"||r.command==="cargo"){er(p());let{runTestWrapper:g}=await Promise.resolve().then(()=>(vu(),xu)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="cat"){er(p());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Au(),Ou)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="exec"){er(p());let{runExecWrapper:g}=await Promise.resolve().then(()=>(zn(),Kn)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="show"&&r.handle){let g=await f();_=()=>g.close();let y=await g.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await Ko(c.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(w),await Ko(c.rootDir,r.handle,!1,w.length),1}let b=$({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(b),await Ko(c.rootDir,r.handle,!1,b.length),1}return process.stdout.write($({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(lr(g))return process.stdout.write(g.render()),2;if(o)return await Xn("wrapper failed",r.positional,g,c.rootDir);throw g}finally{await _?.()}}Fe();import.meta.url===`file://${process.argv[1]}`&&gy().then(e=>process.exit(e),e=>{lr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write($({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{gy as main,aa as renderSetupResult,oa as renderStats};