@reddb-io/red-skills 2.87.2 → 2.87.4

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,131 +1,131 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Lg=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)Lg(e,r,{get:t[r],enumerable:!0})};function R(e,t){return new Ir(e,t)}function A(e,t){return new vt(e,t)}function Vt(e){return e instanceof vt?e:e instanceof Ir?new vt(e.line,e.reason):new vt(0,String(e&&e.message?e.message:e))}var Ir,vt,Lr=y(()=>{Ir=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},vt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function Mn(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 Ae(e){return R(e,"invalid quoted string")}function Ie(e,t){if(e==="")return"";if(e.startsWith('"'))return Nc(e,t);if(e.includes('"'))throw Ae(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Dg(e)?Number(e):e}function Je(e,t){let r=e.trim();if(r.startsWith('"'))return[Nc(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function Nc(e,t){if(e[0]!=='"')throw Ae(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 Ae(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 Ae(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ae(t);r+=String.fromCharCode(a),n+=4;break}default:throw Ae(t)}continue}if(s<" "&&s!==" ")throw Ae(t);r+=s}throw Ae(t)}function Ct(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 Ae(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 Ae(r);return-1}function Dg(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ng(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function $g(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw R(0,"number is not representable in TOON");return String(e)}function Dr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Le(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return $g(e);if(typeof e=="string")return Bg(e,t);throw R(0,"not a primitive")}function Mg(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ye(e){return Mg(e)?e:$c(e)}function Bg(e,t){return Fg(e,t)?$c(e):e}function Fg(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ng(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function $c(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 Kt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var L,Eo=y(()=>{Lr();L=","});function jg(e={}){return{indent:Math.max(1,e.indent??Ao),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Hg(e,t){let r=[],n=!1;return Mn(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 R(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(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=jg(t),n=Hg(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Do(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Oo(l,s.number);u=void 0}if(u!==void 0)return Ug(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Ie(s.content.trim(),s.number);let i={index:0},a=Io(n,i,0,r),c=n[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Io(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 R(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=Gg(e,t,r,n);Fc(s,i,a,c,n,o.number)}return s}function Gg(e,t,r,n){let s=e[t.index],o=s.content,i=ne(o,":",s.number);if(i===-1)throw R(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ne(a,"[",s.number),l=ne(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Kg(a)}catch(g){if(n.strict)throw Oo(g,s.number);t.index+=1;let b=xo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let f=Wg(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:f}}if(u!==-1){let h;try{h=Do(a,i)}catch(g){if(n.strict)throw Oo(g,s.number);t.index+=1;let b=xo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(h.key===""&&!h.keyQuoted)throw R(s.number,"expected non-empty field name");let f=Lo(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:f}}let[m,d]=Je(a,s.number);if(m===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let p=xo(e,t,r,c,s.number,n);return{key:m,quoted:d,value:p}}function xo(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ie(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Io(e,t,r+1,o):{}}function Wg(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 R(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw R(i.number,"blank line inside keyed map");let a=ne(i.content,":",i.number);if(a===-1)throw R(i.number,"expected `key: value`");let[c,u]=Je(i.content.slice(0,a),i.number);if(c===""&&!u)throw R(i.number,"expected non-empty field name");let l=Ct(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw R(i.number,"keyed map row length mismatch");let m={};e.fields.forEach((d,p)=>{Nr(m,d,Ie(l[p],i.number),s,i.number)}),Fc(o,c,u,m,s,i.number),r.index+=1}return o}function Ug(e,t,r){let n=t[0],s=ne(n.content,":",n.number);if(s===-1)throw R(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=Lo(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Lo(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 R(i,"expected tabular rows");return Jg(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Ct(a,e.delimiter,i).map(u=>Ie(u,i));if(c.length!==e.len)throw R(i,"array length mismatch");return c}return qg(e,r,n,s+1,o)}function Jg(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Co(r,n.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw R(c.number,"blank line inside array");if(!Mc(c.content,e.delimiter,c.number))break;let u=Ct(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((m,d)=>{Nr(l,m,Ie(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Co(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Mc(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return i}function Mc(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 qg(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 Co(t,r.index);if(a.depth>n)throw R(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw R(a.number,"blank line inside array");o.push(Vg(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw R(i.number,"array length mismatch");return o}function Vg(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ne(o,":",s.number),a;try{a=Do(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Lo(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 Io(i,{index:0},r+1,n)}return t.index+=1,Ie(o,s.number)}function Co(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function Do(e,t){if(t===-1)throw R(0,"array header missing colon");let r=e.slice(0,t),n=ne(r,"[",0);if(n===-1)throw R(0,"invalid array header");let s,o;try{[s,o]=Je(r.slice(0,n),0)}catch{throw R(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw R(0,"invalid array header");let l=Number.parseInt(u,10),m;switch(c.slice(u.length)){case"":m=",";break;case" ":m=" ";break;case"|":m="|";break;default:throw R(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=Bc(d.slice(1,-1),m)}catch(h){throw R(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:m,fields:p}}function Kg(e){let t=ne(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let r,n;try{[r,n]=Je(e.slice(0,t),0)}catch{throw R(0,"invalid keyed map header")}if(r===""&&!n)throw R(0,"expected non-empty field name");let s;try{s=Bc(e.slice(t+1,-1),L)}catch(o){throw R(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:L,fields:s}}function Bc(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 R(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]=Je(e.slice(l,n),0);if(m==="")throw R(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 R(0,"invalid array header");n+=1}else r.push([...a,m]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw R(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw R(0,"invalid array header")}if(u===0)throw R(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 R(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(zg(r[a],r[c])||To(r[a],r[c])||To(r[c],r[a]))throw R(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw R(0,"duplicate key");i.add(c)}return r}function zg(e,t){return e.length===t.length&&To(e,t)}function To(e,t){return t.every((r,n)=>e[n]===r)}function Oo(e,t){return R(t,e.reason??String(e.message))}function Fc(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Yg)){Nr(e,i,n,s,o);return}}Nr(e,[t],n,s,o)}function Nr(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 R(s,"duplicate key");Kt(e,o,r);return}if(i&&!zt(e[o])){if(n.strict)throw R(s,"path expansion conflict");Kt(e,o,{})}else i||Kt(e,o,{});Nr(e[o],t.slice(1),r,n,s)}function Yg(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function zt(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)?No(n,void 0,e,0,!1,r):zt(e)?jc(n,e,0,r):n.push(Le(e,L)),n.join("")}function $r(e,t){e.push(" ".repeat(t*Ao))}function jc(e,t,r,n){for(let[s,o]of Object.entries(t))$r(e,r),Po(e,s,o,r,n)}function Po(e,t,r,n,s){if(Array.isArray(r)){No(e,t,r,n,!1,s);return}if(zt(r)){let o=s.keyedMapCollapse?Qg(r,s):void 0;if(o!==void 0){e.push(ye(t),"{",o.fields.map($o).join(L),`}:
7
- `);for(let[i,a]of Object.entries(r))$r(e,n+1),e.push(ye(i),": ",o.paths.map(c=>Le(Uc(a,c),L)).join(L),`
8
- `);return}e.push(ye(t),`:
9
- `),jc(e,r,n+1,s);return}e.push(ye(t),": ",Le(r,L),`
10
- `)}function No(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(ye(t),`: []
3
+ var Mg=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)Mg(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Mr(e,t)}function A(e,t){return new Tt(e,t)}function Yt(e){return e instanceof Tt?e:e instanceof Mr?new Tt(e.line,e.reason):new Tt(0,String(e&&e.message?e.message:e))}var Mr,Tt,Br=y(()=>{Mr=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 Un(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 Gc(e,t);if(e.includes('"'))throw Ie(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Bg(e)?Number(e):e}function qe(e,t){let r=e.trim();if(r.startsWith('"'))return[Gc(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function Gc(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 Pt(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 Bg(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Fg(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function jg(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 Fr(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 jg(e);if(typeof e=="string")return Gg(e,t);throw k(0,"not a primitive")}function Hg(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function be(e){return Hg(e)?e:Wc(e)}function Gg(e,t){return Wg(e,t)?Wc(e):e}function Wg(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Fg(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Wc(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 Xt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var L,To=y(()=>{Br();L=","});function Ug(e={}){return{indent:Math.max(1,e.indent??No),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Jg(e,t){let r=[],n=!1;return Un(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=Ug(t),n=Jg(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=Bo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Lo(l,s.number);u=void 0}if(u!==void 0)return Kg(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Le(s.content.trim(),s.number);let i={index:0},a=$o(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function $o(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}=qg(e,t,r,n);qc(s,i,a,c,n,o.number)}return s}function qg(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 p;try{p=Qg(a)}catch(h){if(n.strict)throw Lo(h,s.number);t.index+=1;let b=Po(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let g=Vg(p,e,t,r+1,n);return{key:p.key,quoted:p.keyQuoted,value:g}}if(u!==-1){let p;try{p=Bo(a,i)}catch(h){if(n.strict)throw Lo(h,s.number);t.index+=1;let b=Po(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(p.key===""&&!p.keyQuoted)throw k(s.number,"expected non-empty field name");let g=Mo(p,c,e,t,r,n);return{key:p.key,quoted:p.keyQuoted,value:g}}let[m,d]=qe(a,s.number);if(m===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let f=Po(e,t,r,c,s.number,n);return{key:m,quoted:d,value:f}}function Po(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?$o(e,t,r+1,o):{}}function Vg(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]=qe(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Pt(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,f)=>{jr(m,d,Le(l[f],i.number),s,i.number)}),qc(o,c,u,m,s,i.number),r.index+=1}return o}function Kg(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=Mo(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 Mo(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 zg(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Pt(a,e.delimiter,i).map(u=>Le(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Yg(e,r,n,s+1,o)}function zg(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Ao(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(!Uc(c.content,e.delimiter,c.number))break;let u=Pt(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)=>{jr(l,m,Le(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Ao(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Uc(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function Uc(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 Yg(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 Ao(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(Xg(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 Xg(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=Bo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Mo(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 $o(i,{index:0},r+1,n)}return t.index+=1,Le(o,s.number)}function Ao(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function Bo(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]=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),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=Jc(d.slice(1,-1),m)}catch(p){throw k(0,p.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:f}}function Qg(e){let t=ne(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=Jc(e.slice(t+1,-1),L)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:L,fields:s}}function Jc(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(Zg(r[a],r[c])||Io(r[a],r[c])||Io(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 Zg(e,t){return e.length===t.length&&Io(e,t)}function Io(e,t){return t.every((r,n)=>e[n]===r)}function Lo(e,t){return k(t,e.reason??String(e.message))}function qc(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(eh)){jr(e,i,n,s,o);return}}jr(e,[t],n,s,o)}function jr(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");Xt(e,o,r);return}if(i&&!Qt(e[o])){if(n.strict)throw k(s,"path expansion conflict");Xt(e,o,{})}else i||Xt(e,o,{});jr(e[o],t.slice(1),r,n,s)}function eh(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Qt(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)?Fo(n,void 0,e,0,!1,r):Qt(e)?Vc(n,e,0,r):n.push(De(e,L)),n.join("")}function Hr(e,t){e.push(" ".repeat(t*No))}function Vc(e,t,r,n){for(let[s,o]of Object.entries(t))Hr(e,r),Do(e,s,o,r,n)}function Do(e,t,r,n,s){if(Array.isArray(r)){Fo(e,t,r,n,!1,s);return}if(Qt(r)){let o=s.keyedMapCollapse?rh(r,s):void 0;if(o!==void 0){e.push(be(t),"{",o.fields.map(jo).join(L),`}:
7
+ `);for(let[i,a]of Object.entries(r))Hr(e,n+1),e.push(be(i),": ",o.paths.map(c=>De(Xc(a,c),L)).join(L),`
8
+ `);return}e.push(be(t),`:
9
+ `),Vc(e,r,n+1,s);return}e.push(be(t),": ",De(r,L),`
10
+ `)}function Fo(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(be(t),`: []
11
11
  `):s?e.push(`[0]:
12
12
  `):e.push(`[]
13
- `);return}if(r.every(Dr)){vo(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Le(a,L)).join(L)),e.push(`
14
- `);return}let i=s?void 0:Hc(r,o);if(i!==void 0){vo(e,t,r.length,i.fields),e.push(`
15
- `);for(let a of r)$r(e,n+1),e.push(i.paths.map(c=>Le(Uc(a,c),L)).join(L)),e.push(`
16
- `);return}vo(e,t,r.length,void 0),e.push(`
17
- `);for(let a of r)$r(e,n+1),Xg(e,a,n+1,o)}function Xg(e,t,r,n){if(Array.isArray(t)){e.push("- "),No(e,void 0,t,r,!0,n);return}if(zt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
- `);return}e.push("- "),Po(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))$r(e,r+1),Po(e,o,i,r+1,n);return}e.push("- ",Le(t,L),`
19
- `)}function vo(e,t,r,n){t!==void 0&&e.push(ye(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map($o).join(L),"}"),e.push(":")}function Hc(e,t){let r=Gc(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Wc(r)}}function Qg(e,t){let r=Object.values(e);if(!(r.length<2))return Hc(r,t)}function Gc(e,t){let r=e[0]?.value;if(!zt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!zt(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})=>Dr(a)))continue;if(!t.nestedTabularHeaders)return;let i=Gc(o,t);if(i===void 0)return;s.children=i}return n}}function Wc(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Wc(r.children,n)})}function Uc(e,t){let r=e;for(let n of t)r=r[n];return r}function $o(e){return e.children===void 0?ye(e.key):`${ye(e.key)}{${e.children.map($o).join(L)}}`}var Ao,Mr=y(()=>{Lr();Eo();Ao=2});var Jc=y(()=>{Mr()});function eh(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function ru(e,t){if(!tu.test(e))throw A(t,"invalid tag")}function th(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!tu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function rh(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Zc.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?L:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),ru(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),m;try{m=Ct(l,a,t).map(d=>Je(d,t)[0])}catch(d){throw Vt(d)}if(m.length===0||m.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:m,fieldText:l,continuation:o,tag:u}}function nh(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function qc(e,t,r,n){let s;try{s=Ct(e,t,n)}catch(o){throw Vt(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Ie(o,n)}catch(i){throw Vt(i)}return s}function sh(e,t,r){let n={};return e.forEach((s,o)=>{try{Kt(n,s,Ie(t[o],r))}catch(i){throw Vt(i)}}),n}function oh(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=eh(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=rh(e,t);if(s!==null)return s.continuation?(nh(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 A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:qc(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:qc(e,r.delimiter,r.fields.length,t)}}function ih(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(p,h){let f=o.at(-1);if(f!==void 0&&f.lane===p.lane&&f.delimiter===p.delimiter&&f.fieldText===p.fieldText){f.rows.push(h);return}o.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[h]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function m(p,h,f){let g=n.get(p);if(g===void 0){if(n.size>=eu)throw A(f,"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:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Mn(e).forEach((p,h)=>{let f=h+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},b=oh(p,f,g);if(b.kind==="trailer"){l(),i=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,m(b.header.tag,b.header,f);return}if(b.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:b.header.delimiter,fields:b.header.fields,fieldText:b.header.fieldText,rows:[]};return}if(b.kind==="tagged-row"){c=!0;let w=n.get(b.tag).current;w.rows.push(b.cells),u(w,b.cells);return}if(i===null)throw A(f,"row before header");i.rows.push(b.cells),u(i,b.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of r){if(p===null){d.push(...s);continue}let h=n.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?o:d}function ot(e){return ih(e).flatMap(t=>t.rows.map(r=>sh(t.fields,r,0)))}function ah(e){if(!Zc.includes(e))throw A(0,"invalid header delimiter")}function Vc(e,t,r=!1){return`[${`${r?"~":""}${e===L?"":e}`}]{${t}}:
20
- `}function Kc(e,t){return`[]<${e}>{${t}}:
21
- `}function Mo(e,t){return t.map(ye).join(e)}function ch(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Je(String(t),0)}catch(n){throw Vt(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function zc(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Yc(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function uh(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Xc(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Dr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function lh(e){return JSON.stringify([...e].sort())}function Qc(e,t){let r=lh(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function it({delimiter:e=L,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){ah(e),Yc(r),Yc(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
- `,h=()=>uh(d,c,u)?(c=0,u=0,Vc(e,o,!0)):"",f=g=>{ru(g,0);let b=l.get(g);if(b===void 0){if(l.size>=eu)throw A(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(g,b)}return b};return{push(g){if(m)throw A(0,"TOONL encoder is closed");let b=Qc(Xc(g),i),w="";(s===null||s.length!==b.length||s.some((O,F)=>O!==b[F]))&&(w+=p(),s=b,o=Mo(e,s),a=0,c=0,u=0,w+=Vc(e,o));let E=s.map(O=>Le(g[O],e));w+=h();let v=`${E.join(e)}
23
- `;return w+=v,a+=1,c+=1,u+=v.length,w},declareLane(g,b){if(m)throw A(0,"TOONL encoder is closed");let w=ch(b),E=Mo(L,w),v=f(g);return zc(v.fields,w)?"":(v.fields=w,Kc(g,E))},pushTagged(g,b){if(m)throw A(0,"TOONL encoder is closed");let w=f(g),E=Qc(Xc(b),w.fieldsByShape),v=Mo(L,E),O=E.map(fe=>Le(b[fe],L)),F="";return zc(w.fields,E)||(w.fields=E,F+=Kc(g,v)),`${F}${g}:${O.join(L)}
24
- `},end(){return m?"":(m=!0,p())}}}var Zc,eu,tu,$0,M0,nu=y(()=>{Lr();Mr();Eo();Zc=[L,"|"," "],eu=8,tu=/^[A-Za-z0-9_-]+$/,$0=new TextEncoder,M0=new TextDecoder});var D=y(()=>{Lr();Mr();Mr();Jc();nu()});function mh(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Bo(e))}
25
- `)}function Bo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??mh(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ph(e.diagnostics,3)),t}function be(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:Br(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Br(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Br(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:Br(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Br(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Bn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Br(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function ph(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
- `).trim()}var De=y(()=>{"use strict";D()});import{isAbsolute as fh,join as qe,resolve as jo}from"node:path";function yh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function uu(e){return qe(yh(e),cu)}function lu(e){return qe(uu(e),"state")}function du(e){return qe(uu(e),"tmp")}function Y(e){return qe(lu(e),"rsp")}function bh(e){return qe(lu(e),"red-skills.rdb")}function wh(e){return qe(du(e),"red-skills.rdb")}function fu(e,t){let r=bh(e);if(t(r))return r;let n=wh(e);if(t(n))throw _h();return r}function _h(){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 gu(e){return qe(du(e),"waits")}function hu(e){let t=e.overrideEnvVars??Ho;for(let n of t){let s=e.env[n];if(s)return fh(s)?s:jo(e.startDir,s)}let r=jo(e.startDir);for(;;){if(e.exists(qe(r,cu)))return r;let n=qe(r,".."),s=jo(n);if(s===r)break;r=s}return e.startDir}var cu,gh,hh,Ho,mu,pu,_e=y(()=>{cu=".red",gh="MEMORY_ROOT",hh="RED_BRAIN_ROOT",Ho=[gh,hh];mu=".red/state/red-skills.rdb";pu=".red/tmp/red-skills.rdb"});function H(e){return C(e,{keyedMapCollapse:!0})}var Rh,kh,gC,Ne=y(()=>{D();_e();Rh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],kh=[{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"}],gC=[...Rh,...kh]});function Tt(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 Eh(e,t){if(!t)return!0;let r=Go(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function X(e,t){return t?e.filter(r=>Eh(r,t)):[...e]}function Ve(e,t){return Wo(e,t,{includeLegacyHelp:!0})}function Wo(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Go(e){return Array.isArray(e)?e.map(Go).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Go).join(" "):String(e??"")}var Fr=y(()=>{"use strict"});async function bu(e,t){return xh?Th(e,t):vh?Ph(e,t):Ch(e,t)}async function Ch(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 Th(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:Oh(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Oh(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 Ph(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:Ah(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Ah(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var xh,vh,wu=y(()=>{xh=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",vh=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Ih}from"node:fs";import{join as Lh}from"node:path";function _u(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=Lh(r,"bin",t);if(Ih(o))return o;throw new Error(`reddb: binary "${t}" not found.
13
+ `);return}if(r.every(Fr)){Oo(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>De(a,L)).join(L)),e.push(`
14
+ `);return}let i=s?void 0:Kc(r,o);if(i!==void 0){Oo(e,t,r.length,i.fields),e.push(`
15
+ `);for(let a of r)Hr(e,n+1),e.push(i.paths.map(c=>De(Xc(a,c),L)).join(L)),e.push(`
16
+ `);return}Oo(e,t,r.length,void 0),e.push(`
17
+ `);for(let a of r)Hr(e,n+1),th(e,a,n+1,o)}function th(e,t,r,n){if(Array.isArray(t)){e.push("- "),Fo(e,void 0,t,r,!0,n);return}if(Qt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
+ `);return}e.push("- "),Do(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))Hr(e,r+1),Do(e,o,i,r+1,n);return}e.push("- ",De(t,L),`
19
+ `)}function Oo(e,t,r,n){t!==void 0&&e.push(be(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(jo).join(L),"}"),e.push(":")}function Kc(e,t){let r=zc(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Yc(r)}}function rh(e,t){let r=Object.values(e);if(!(r.length<2))return Kc(r,t)}function zc(e,t){let r=e[0]?.value;if(!Qt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!Qt(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})=>Fr(a)))continue;if(!t.nestedTabularHeaders)return;let i=zc(o,t);if(i===void 0)return;s.children=i}return n}}function Yc(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Yc(r.children,n)})}function Xc(e,t){let r=e;for(let n of t)r=r[n];return r}function jo(e){return e.children===void 0?be(e.key):`${be(e.key)}{${e.children.map(jo).join(L)}}`}var No,Gr=y(()=>{Br();To();No=2});var Qc=y(()=>{Gr()});function sh(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw A(t,"invalid trailer count");return Number.parseInt(r,10)}function uu(e,t){if(!cu.test(e))throw A(t,"invalid tag")}function oh(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!cu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw A(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function ih(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw A(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!iu.includes(i)&&i!=="")throw A(t,"invalid header delimiter");let a=i===""?L:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw A(t,"invalid tag");if(u=c.slice(1,d),uu(u,t),i!=="")throw A(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw A(t,"invalid header");let l=c.slice(1,-2),m;try{m=Pt(l,a,t).map(d=>qe(d,t)[0])}catch(d){throw Yt(d)}if(m.length===0||m.some(d=>d===""))throw A(t,"invalid header fields");return{delimiter:a,fields:m,fieldText:l,continuation:o,tag:u}}function ah(e,t,r){if(e===null||e.delimiter===void 0)throw A(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw A(r,"continuation header mismatch")}function Zc(e,t,r,n){let s;try{s=Pt(e,t,n)}catch(o){throw Yt(o)}if(s.length!==r)throw A(n,"row arity mismatch");for(let o of s)try{Le(o,n)}catch(i){throw Yt(i)}return s}function ch(e,t,r){let n={};return e.forEach((s,o)=>{try{Xt(n,s,Le(t[o],r))}catch(i){throw Yt(i)}}),n}function uh(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=sh(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw A(t,"trailer without header");if(r.rowCount!==n)throw A(t,"trailer count mismatch");return{kind:"trailer"}}let s=ih(e,t);if(s!==null)return s.continuation?(ah(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=oh(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw A(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:Zc(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw A(t,"row before header");return{kind:"row",cells:Zc(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(f,p){let g=o.at(-1);if(g!==void 0&&g.lane===f.lane&&g.delimiter===f.delimiter&&g.fieldText===f.fieldText){g.rows.push(p);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[p]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function m(f,p,g){let h=n.get(f);if(h===void 0){if(n.size>=au)throw A(g,"too many tagged lanes");h={segments:[],current:null},n.set(f,h),r.push(f)}else h.current!==null&&h.segments.push(h.current);h.current={lane:f,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[]},h.delimiter=p.delimiter,h.fields=p.fields,h.fieldText=p.fieldText}if(Un(e).forEach((f,p)=>{let g=p+1;if(f==="")return;let h=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},b=uh(f,g,h);if(b.kind==="trailer"){l(),i=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,m(b.header.tag,b.header,g);return}if(b.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:b.header.delimiter,fields:b.header.fields,fieldText:b.header.fieldText,rows:[]};return}if(b.kind==="tagged-row"){c=!0;let w=n.get(b.tag).current;w.rows.push(b.cells),u(w,b.cells);return}if(i===null)throw A(g,"row before header");i.rows.push(b.cells),u(i,b.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let p=n.get(f);d.push(...p.segments),p.current!==null&&d.push(p.current)}return t.preserveInterleaving===!0?o:d}function it(e){return lh(e).flatMap(t=>t.rows.map(r=>ch(t.fields,r,0)))}function dh(e){if(!iu.includes(e))throw A(0,"invalid header delimiter")}function eu(e,t,r=!1){return`[${`${r?"~":""}${e===L?"":e}`}]{${t}}:
20
+ `}function tu(e,t){return`[]<${e}>{${t}}:
21
+ `}function Ho(e,t){return t.map(be).join(e)}function mh(e){if(!Array.isArray(e)||e.length===0)throw A(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=qe(String(t),0)}catch(n){throw Yt(n)}if(r==="")throw A(0,"TOONL header requires fields");return r})}function ru(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function nu(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw A(0,"TOONL continuation cadence must be positive")}function fh(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function su(e){if(e===null||typeof e!="object"||Array.isArray(e))throw A(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw A(0,"TOONL output requires object rows");if(t.some(r=>!Fr(e[r])))throw A(0,"TOONL rows must be flat objects");return t}function ph(e){return JSON.stringify([...e].sort())}function ou(e,t){let r=ph(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function at({delimiter:e=L,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){dh(e),nu(r),nu(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,m=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
22
+ `,p=()=>fh(d,c,u)?(c=0,u=0,eu(e,o,!0)):"",g=h=>{uu(h,0);let b=l.get(h);if(b===void 0){if(l.size>=au)throw A(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(h,b)}return b};return{push(h){if(m)throw A(0,"TOONL encoder is closed");let b=ou(su(h),i),w="";(s===null||s.length!==b.length||s.some((O,F)=>O!==b[F]))&&(w+=f(),s=b,o=Ho(e,s),a=0,c=0,u=0,w+=eu(e,o));let E=s.map(O=>De(h[O],e));w+=p();let v=`${E.join(e)}
23
+ `;return w+=v,a+=1,c+=1,u+=v.length,w},declareLane(h,b){if(m)throw A(0,"TOONL encoder is closed");let w=mh(b),E=Ho(L,w),v=g(h);return ru(v.fields,w)?"":(v.fields=w,tu(h,E))},pushTagged(h,b){if(m)throw A(0,"TOONL encoder is closed");let w=g(h),E=ou(su(b),w.fieldsByShape),v=Ho(L,E),O=E.map(ge=>De(b[ge],L)),F="";return ru(w.fields,E)||(w.fields=E,F+=tu(h,v)),`${F}${h}:${O.join(L)}
24
+ `},end(){return m?"":(m=!0,f())}}}var iu,au,cu,Y0,X0,lu=y(()=>{Br();Gr();To();iu=[L,"|"," "],au=8,cu=/^[A-Za-z0-9_-]+$/,Y0=new TextEncoder,X0=new TextDecoder});var D=y(()=>{Br();Gr();Gr();Qc();lu()});function hh(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Go(e))}
25
+ `)}function Go(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??hh(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=yh(e.diagnostics,3)),t}function we(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:Wr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Wr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Wr(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:Wr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Wr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Jn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Wr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function yh(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var Ne=y(()=>{"use strict";D()});import{isAbsolute as bh,join as Ve,resolve as Uo}from"node:path";function kh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function hu(e){return Ve(kh(e),gu)}function yu(e){return Ve(hu(e),"state")}function bu(e){return Ve(hu(e),"tmp")}function X(e){return Ve(yu(e),"rsp")}function Rh(e){return Ve(yu(e),"red-skills.rdb")}function Sh(e){return Ve(bu(e),"red-skills.rdb")}function ku(e,t){let r=Rh(e);if(t(r))return r;let n=Sh(e);if(t(n))throw Eh();return r}function Eh(){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 Ru(e){return Ve(bu(e),"waits")}function Su(e){let t=e.overrideEnvVars??Jo;for(let n of t){let s=e.env[n];if(s)return bh(s)?s:Uo(e.startDir,s)}let r=Uo(e.startDir);for(;;){if(e.exists(Ve(r,gu)))return r;let n=Ve(r,".."),s=Uo(n);if(s===r)break;r=s}return e.startDir}var gu,wh,_h,Jo,wu,_u,ke=y(()=>{gu=".red",wh="MEMORY_ROOT",_h="RED_BRAIN_ROOT",Jo=[wh,_h];wu=".red/state/red-skills.rdb";_u=".red/tmp/red-skills.rdb"});function H(e){return C(e,{keyedMapCollapse:!0})}var xh,vh,PC,$e=y(()=>{D();ke();xh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],vh=[{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"}],PC=[...xh,...vh]});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 Th(e,t){if(!t)return!0;let r=qo(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Q(e,t){return t?e.filter(r=>Th(r,t)):[...e]}function Ke(e,t){return Vo(e,t,{includeLegacyHelp:!0})}function Vo(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function qo(e){return Array.isArray(e)?e.map(qo).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(qo).join(" "):String(e??"")}var Ur=y(()=>{"use strict"});async function xu(e,t){return Ph?Ih(e,t):Oh?Dh(e,t):Ah(e,t)}async function Ah(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 Ih(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:Lh(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Lh(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 Dh(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:Nh(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Nh(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Ph,Oh,vu=y(()=>{Ph=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Oh=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as $h}from"node:fs";import{join as Mh}from"node:path";function Cu(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=Mh(r,"bin",t);if($h(o))return o;throw new Error(`reddb: binary "${t}" not found.
27
27
  expected at: ${o}
28
28
  override: set ${n}=/path/to/${t}
29
29
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
30
- or check the postinstall log for a download error.`)}var Ru=y(()=>{});import{fileURLToPath as Dh}from"node:url";import{dirname as Nh,resolve as $h,join as xC}from"node:path";function Fh(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function ku(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:_u({name:Fh(),packageRoot:Bh,envVar:"REDDB_BIN"})}var Mh,Bh,Su=y(()=>{Ru();Mh=Nh(Dh(import.meta.url)),Bh=$h(Mh,"..")});var jh,Hh,x,jn,at=y(()=>{jh=new TextEncoder,Hh=new TextDecoder("utf-8"),x=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},jn=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 x("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(jh.encode(s+`
31
- `)).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(Hh.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 x(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 x("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function Jo(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:/"?Gh(e):Wh(e)}function Gh(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 x("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=Uh(s),a=r.port?Number(r.port):Uo(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 Wh(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 x("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):Uo(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 x("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Uo(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 x("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Uh(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 x("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Uo(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 qo=y(()=>{at()});function qh(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Eu(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Eu(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Eu(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 Vh(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 Jh,jr,Vo=y(()=>{at();Jh=new Set(["embedded"]),jr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Jh.has(this._transport))throw new x("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:Vh(n.value)}async put(t,r,n,s={}){this._guard("put");let o=qh(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 Ko(e,t){return`${zo(e)}.${Kh(t)}`}function zo(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new x("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Kh(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function zh(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 xu(e){return`'${String(e).replace(/'/g,"''")}'`}var Qt,Yo=y(()=>{at();Qt=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(xu).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Ko(s,t)} = ${zh(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 ${Ko(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 ${Ko(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 x("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 ${zo(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(xu).join(", ")}] FROM ${zo(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new x("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 x("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
30
+ or check the postinstall log for a download error.`)}var Tu=y(()=>{});import{fileURLToPath as Bh}from"node:url";import{dirname as Fh,resolve as jh,join as FC}from"node:path";function Wh(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Pu(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Cu({name:Wh(),packageRoot:Gh,envVar:"REDDB_BIN"})}var Hh,Gh,Ou=y(()=>{Tu();Hh=Fh(Bh(import.meta.url)),Gh=jh(Hh,"..")});var Uh,Jh,x,Vn,ct=y(()=>{Uh=new TextEncoder,Jh=new TextDecoder("utf-8"),x=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},Vn=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 x("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(Uh.encode(s+`
31
+ `)).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(Jh.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 x(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 x("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function zo(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:/"?qh(e):Vh(e)}function qh(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 x("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=Kh(s),a=r.port?Number(r.port):Ko(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 Vh(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 x("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):Ko(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 x("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Ko(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 x("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Kh(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 x("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Ko(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 Yo=y(()=>{ct()});function Yh(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Au(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Au(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Au(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 Xh(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 zh,Jr,Xo=y(()=>{ct();zh=new Set(["embedded"]),Jr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&zh.has(this._transport))throw new x("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:Xh(n.value)}async put(t,r,n,s={}){this._guard("put");let o=Yh(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 Qo(e,t){return`${Zo(e)}.${Qh(t)}`}function Zo(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new x("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Qh(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Zh(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 Iu(e){return`'${String(e).replace(/'/g,"''")}'`}var tr,ei=y(()=>{ct();tr=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(Iu).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Qo(s,t)} = ${Zh(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 ${Qo(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 ${Qo(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 x("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 ${Zo(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(Iu).join(", ")}] FROM ${Zo(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new x("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 x("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
32
32
 
33
33
  `)){let l=u.split(`
34
- `).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Yh(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new x("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=Ke(e),a=Ke(t),c=s!=null?` GROUP ${Ke(s)}`:"",u=o!=null?Qo(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function Ke(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Qo(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new x("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Xh(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Qh(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new x("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Xh(e.priority)}`),e.key!=null&&(t+=` KEY ${Zo(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Zo(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Zh(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Zo(e):JSON.stringify(e)}function Zo(e){return`'${String(e).replace(/'/g,"''")}'`}function Xo(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Hr,ei=y(()=>{at();Hr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ke(t)}`})}push(t,r,n={}){let s=Qh(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ke(t)} ${Zh(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ke(t)}${Qo(r)}`});return Xo(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ke(t)}${Qo(r)}`});return Xo(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ke(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ke(t)}`})}async readWait(t,r,n={}){let s=Yh(t,r,n),o=await this.client.call("query",{sql:s});return Xo(o)}}});function vu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function ey(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new x("INVALID_ARGUMENT","limit must be a positive integer");return e}function Hn(e){return String(e).split(".").map(Cu).join(".")}function Cu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function ty(e){return Tu(JSON.stringify(e))}function ry(e){return JSON.stringify(e)}function ny(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ty(e):Tu(e)}function Tu(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,ti=y(()=>{at();Gr=class{constructor(t){this.db=t}async insert(t,r){vu(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Hn(t)} DOCUMENT VALUES (${ry(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new x("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 x("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=ey(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 ${Hn(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){vu(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new x("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new x("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Cu(c)} = ${ny(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Hn(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new x("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 ${Hn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function sy(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ct(r)}.${ct(n)})`}return iy(e)}function oy(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 ct(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function iy(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ou(e)}function Ou(e){return`'${String(e).replace(/'/g,"''")}'`}var Wr,ri=y(()=>{Wr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){oy(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ou).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ct(s)} ${ct(t)} = ${sy(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ct(n)} ${ct(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ct(n)} ${ct(t)}`})}}});function ay(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 Zt(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 cy(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Pu(e)}function Pu(e){return`'${String(e).replace(/'/g,"''")}'`}var Ur,ni=y(()=>{Ur=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){ay(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Pu).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Zt(s)}.${Zt(t)} = ${cy(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Zt(n)}.${Zt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Zt(n)}.${Zt(t)}`})}}});async function Iu(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(uy)}async function Lu(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${dy(t)}`)).rows??[]).some(n=>n.name===String(t))}function uy(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Au(e){return String(e).split(".").map(ly).join(".")}function ly(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function dy(e){return`'${String(e).replace(/'/g,"''")}'`}var Jr,si=y(()=>{at();Jr=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 x("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(Au).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Au(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 er(e,t={}){let r=Jo(e);if(Ry(r),r.kind==="embedded"){let n=_y(r,t.auth);if(n.token||n.username)throw new x("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=wy(r),o=t.binary??ku(),i=await bu(o,s),a=new jn(i);return await a.call("version",{}),new ii(a,{transport:"embedded"})}}function Nu(e){return fy(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:hy(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&by(e)?{$uuid:e}:e}function fy(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new x("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 x("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new x("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function gy(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Nu):e.map(Nu)}function hy(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 yy(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 by(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Gn(e){if(Array.isArray(e))return e.map(Gn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return yy(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]=Gn(s);return r}return e}function wy(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function _y(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 Ry(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",my)}function ai(){return new x(Du,`${Du}: nested transactions are not supported on one connection`)}function Mu(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function ky(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new x("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${$u} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Sy(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new x("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${$u} 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 x("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var my,py,$u,Du,Wn,oi,ii,ci=y(()=>{wu();Su();at();qo();Vo();Yo();ei();ti();ri();ni();si();Vo();Yo();ei();ti();ri();ni();si();qo();my="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",py="1.0",$u="1.0.9",Du="NESTED_TX_NOT_SUPPORTED";Wn=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 ai()}},oi=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ai();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 x("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 x("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 x("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Wn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Mu(r,n)}throw r}}},ii=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=py,this.cache=new jr(t,this.transport),this.queue=new Hr(t),this.queues=this.queue,this.documents=new Gr(this);let n=new Qt(t);this.kv=Object.assign((s="kv_default")=>new Qt(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 Wr(t,s),this.vault=(s="red.vault")=>new Ur(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new x("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=gy(r);return n==null?this.client.call("query",{sql:t}).then(Gn):this.client.call("query",{sql:t,params:n}).then(Gn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return ky(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 Sy(n,r.length)}tx(){return new oi(this)}async transaction(t){if(this.inTransaction)throw ai();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 Wn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Mu(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Lu(this,t)}list(){return Iu(this)}from(t){return new Jr(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()}}});function li(e,t,r=Bu){let n=Math.max(0,Math.floor(e)),s=r in Fu?r:Bu,o=Fu[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:ui(n,o),dollars_saved_low_usd:i==null?null:ui(i,o),dollars_saved_high_usd:a==null?null:ui(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Ey}}function ui(e,t){return xy(Math.max(0,e)/1e6*t)}function qr(e){return`$${e.toFixed(6)}`}function xy(e){return Math.round(e*1e6)/1e6}var Bu,Fu,Ey,di=y(()=>{"use strict";Bu="gpt-5",Fu={"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},Ey="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as vy,readFileSync as mT}from"node:fs";import{dirname as Cy,join as Ty}from"node:path";function ju(e,t){let r=e;for(let n=0;n<16;n++){let s=Ty(r,t);if(vy(s))return s;let o=Cy(r);if(o===r)break;r=o}return null}function Oy(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Un(e,t){let r=[];for(let n of e.split(`
35
- `)){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 Oy(u)}}var Hu=y(()=>{});import{createConnection as Py}from"node:net";async function tr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=Py(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)}
34
+ `).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function ey(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new x("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=ze(e),a=ze(t),c=s!=null?` GROUP ${ze(s)}`:"",u=o!=null?ri(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ze(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ri(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new x("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ty(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ry(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new x("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ty(e.priority)}`),e.key!=null&&(t+=` KEY ${ni(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ni(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function ny(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ni(e):JSON.stringify(e)}function ni(e){return`'${String(e).replace(/'/g,"''")}'`}function ti(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var qr,si=y(()=>{ct();qr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ze(t)}`})}push(t,r,n={}){let s=ry(n);return this.client.call("query",{sql:`QUEUE PUSH ${ze(t)} ${ny(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ze(t)}${ri(r)}`});return ti(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ze(t)}${ri(r)}`});return ti(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ze(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ze(t)}`})}async readWait(t,r,n={}){let s=ey(t,r,n),o=await this.client.call("query",{sql:s});return ti(o)}}});function Lu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function sy(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new x("INVALID_ARGUMENT","limit must be a positive integer");return e}function Kn(e){return String(e).split(".").map(Du).join(".")}function Du(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function oy(e){return Nu(JSON.stringify(e))}function iy(e){return JSON.stringify(e)}function ay(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?oy(e):Nu(e)}function Nu(e){return`'${String(e).replace(/'/g,"''")}'`}var Vr,oi=y(()=>{ct();Vr=class{constructor(t){this.db=t}async insert(t,r){Lu(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${iy(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new x("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 x("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=sy(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 ${Kn(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Lu(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new x("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new x("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Du(c)} = ${ay(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new x("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 ${Kn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function cy(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ut(r)}.${ut(n)})`}return ly(e)}function uy(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 ut(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 ly(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):$u(e)}function $u(e){return`'${String(e).replace(/'/g,"''")}'`}var Kr,ii=y(()=>{Kr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){uy(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map($u).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ut(s)} ${ut(t)} = ${cy(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ut(n)} ${ut(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ut(n)} ${ut(t)}`})}}});function dy(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 rr(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 my(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Mu(e)}function Mu(e){return`'${String(e).replace(/'/g,"''")}'`}var zr,ai=y(()=>{zr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){dy(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Mu).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${rr(s)}.${rr(t)} = ${my(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${rr(n)}.${rr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${rr(n)}.${rr(t)}`})}}});async function Fu(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fy)}async function ju(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gy(t)}`)).rows??[]).some(n=>n.name===String(t))}function fy(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Bu(e){return String(e).split(".").map(py).join(".")}function py(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function gy(e){return`'${String(e).replace(/'/g,"''")}'`}var Yr,ci=y(()=>{ct();Yr=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 x("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(Bu).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Bu(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 nr(e,t={}){let r=zo(e);if(xy(r),r.kind==="embedded"){let n=Ey(r,t.auth);if(n.token||n.username)throw new x("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Sy(r),o=t.binary??Pu(),i=await xu(o,s),a=new Vn(i);return await a.call("version",{}),new li(a,{transport:"embedded"})}}function Gu(e){return by(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:_y(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Ry(e)?{$uuid:e}:e}function by(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new x("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 x("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new x("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function wy(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Gu):e.map(Gu)}function _y(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 ky(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 Ry(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function zn(e){if(Array.isArray(e))return e.map(zn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ky(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]=zn(s);return r}return e}function Sy(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ey(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 xy(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",hy)}function di(){return new x(Hu,`${Hu}: nested transactions are not supported on one connection`)}function Uu(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vy(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new x("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Wu} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Cy(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new x("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Wu} 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 x("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var hy,yy,Wu,Hu,Yn,ui,li,mi=y(()=>{vu();Ou();ct();Yo();Xo();ei();si();oi();ii();ai();ci();Xo();ei();si();oi();ii();ai();ci();Yo();hy="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yy="1.0",Wu="1.0.9",Hu="NESTED_TX_NOT_SUPPORTED";Yn=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 di()}},ui=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw di();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 x("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 x("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 x("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Yn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Uu(r,n)}throw r}}},li=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=yy,this.cache=new Jr(t,this.transport),this.queue=new qr(t),this.queues=this.queue,this.documents=new Vr(this);let n=new tr(t);this.kv=Object.assign((s="kv_default")=>new tr(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 Kr(t,s),this.vault=(s="red.vault")=>new zr(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new x("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=wy(r);return n==null?this.client.call("query",{sql:t}).then(zn):this.client.call("query",{sql:t,params:n}).then(zn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return vy(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 Cy(n,r.length)}tx(){return new ui(this)}async transaction(t){if(this.inTransaction)throw di();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 Yn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Uu(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ju(this,t)}list(){return Fu(this)}from(t){return new Yr(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()}}});function pi(e,t,r=Ju){let n=Math.max(0,Math.floor(e)),s=r in qu?r:Ju,o=qu[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:fi(n,o),dollars_saved_low_usd:i==null?null:fi(i,o),dollars_saved_high_usd:a==null?null:fi(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Ty}}function fi(e,t){return Py(Math.max(0,e)/1e6*t)}function Xr(e){return`$${e.toFixed(6)}`}function Py(e){return Math.round(e*1e6)/1e6}var Ju,qu,Ty,gi=y(()=>{"use strict";Ju="gpt-5",qu={"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},Ty="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Oy,readFileSync as vT}from"node:fs";import{dirname as Ay,join as Iy}from"node:path";function Vu(e,t){let r=e;for(let n=0;n<16;n++){let s=Iy(r,t);if(Oy(s))return s;let o=Ay(r);if(o===r)break;r=o}return null}function Ly(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Xn(e,t){let r=[];for(let n of e.split(`
35
+ `)){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 Ly(u)}}var Ku=y(()=>{});import{createConnection as Dy}from"node:net";async function sr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=Dy(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)}
36
36
  `)}),o.on("data",l=>{a+=l.toString("utf8");let m=a.indexOf(`
37
- `);if(m<0)return;let d=a.slice(0,m);u(()=>{try{n(JSON.parse(d))}catch(p){s(p)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var mi=y(()=>{});import{createHash as Ay,randomUUID as qu}from"node:crypto";import{spawn as Vu}from"node:child_process";import{constants as pi}from"node:fs";import{readFileSync as Iy}from"node:fs";import{mkdir as Jn,open as Ly,readFile as Ku,rename as Dy,rm as $e,stat as Ny,writeFile as $y}from"node:fs/promises";import{tmpdir as My}from"node:os";import{dirname as ut,join as ue,resolve as qn}from"node:path";import{fileURLToPath as zu}from"node:url";function lt(e){let t=zy(e)??qn(e),r=Ky(t),n=Y(t);return{rootDir:t,socketPath:ue(r,"rsp.sock"),pidPath:ue(r,"rsp.pid"),lockPath:ue(r,"rsp.lock"),wakeLockPath:ue(t,".red","tmp","rsp","wake.lock"),summaryPath:ue(n,"rsp-status-summary.json"),registryPath:ue(n,"rsp-resident.pid.json")}}async function Vn(e,t){if(await Jn(ut(e.socketPath),{recursive:!0,mode:448}),await Uu(e.socketPath,t))return;await Wu(e,t);let r=await el(e.lockPath);if(r)try{if(await Uu(e.socketPath,t))return;await Wu(e,t),await Hy(e.socketPath);let n=Gy(e,t);await Gu(e.socketPath,n);return}finally{await r.close(),await $e(e.lockPath,{force:!0})}await Gu(e.socketPath)}async function Ot(e,t=200){try{return await Xu(e,t)!=null}catch{return!1}}async function Xu(e,t=200){let r=await tr({socketPath:e,timeoutMs:t},{id:qu(),op:"ping"});return r.ok?sl(r.value)?{version:Zy(r.value.version)}:{}:null}async function Kn(e,t){if(await Jn(ut(e.socketPath),{recursive:!0,mode:448}),await Ot(e.socketPath,50))return!1;let r=await el(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=rl(t);return Vu(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 Qu(e,t){try{await Vn(e,t)}finally{await $e(e.wakeLockPath,{force:!0})}}async function Kr(e){try{let t=Jy(await Ku(e,"utf8"));return eb(t)?t:null}catch{return null}}async function zn(e,t){let r={version:Yu,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 Jn(ut(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await $y(n,`${C(r)}
38
- `,{encoding:"utf8",mode:384}),await Dy(n,e)}async function Yn(e,t=process.pid){try{let r=await Kr(e);if(r&&r.pid!==t)return;await $e(e,{force:!0})}catch{}}async function Vr(e){let t=await Kr(e.registryPath);if(!t)try{return await Ku(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!rr(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await Ot(t.socket_path,100);return r&&await Vy(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 Zu(e){let t=await Vr(e);return t.state==="registered-dead"||t.state==="invalid"?(await $e(e.registryPath,{force:!0}),await Vr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await tl(t.entry.pid),await $e(e.registryPath,{force:!0}),await $e(t.entry.socket_path,{force:!0}),await Vr(e)):t}async function Gu(e,t){let r=Date.now()+jy(),n;for(;Date.now()<r;){if(await Ot(e))return;if(t){let s=t.spawnError();if(s)throw new Error(fi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(fi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?fi("resident rsp server did not start",t):"resident rsp server did not start")}function jy(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Fy}async function Hy(e){await $e(e,{force:!0})}async function el(e){await Jn(ut(e),{recursive:!0,mode:448});try{return await Ly(e,pi.O_CREAT|pi.O_EXCL|pi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Gy(e,t){let[r,n]=rl(t),s=process.env.RSP_DEBUG==="1",o,i="",a=Vu(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=Uy(`${i}${c}`,Wy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function fi(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:
37
+ `);if(m<0)return;let d=a.slice(0,m);u(()=>{try{n(JSON.parse(d))}catch(f){s(f)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var hi=y(()=>{});import{createHash as Ny,randomUUID as Zu}from"node:crypto";import{spawn as el}from"node:child_process";import{constants as yi}from"node:fs";import{readFileSync as $y}from"node:fs";import{mkdir as Qn,open as My,readFile as tl,rename as By,rm as Me,stat as Fy,writeFile as jy}from"node:fs/promises";import{tmpdir as Hy}from"node:os";import{dirname as lt,join as ue,resolve as Zn}from"node:path";import{fileURLToPath as rl}from"node:url";function dt(e){let t=Zy(e)??Zn(e),r=Qy(t),n=X(t);return{rootDir:t,socketPath:ue(r,"rsp.sock"),pidPath:ue(r,"rsp.pid"),lockPath:ue(r,"rsp.lock"),wakeLockPath:ue(t,".red","tmp","rsp","wake.lock"),summaryPath:ue(n,"rsp-status-summary.json"),registryPath:ue(n,"rsp-resident.pid.json")}}async function es(e,t){if(await Qn(lt(e.socketPath),{recursive:!0,mode:448}),await Xu(e.socketPath,t))return;await Yu(e,t);let r=await al(e.lockPath);if(r)try{if(await Xu(e.socketPath,t))return;await Yu(e,t),await Jy(e.socketPath);let n=qy(e,t);await zu(e.socketPath,n);return}finally{await r.close(),await Me(e.lockPath,{force:!0})}await zu(e.socketPath)}async function At(e,t=200){try{return await sl(e,t)!=null}catch{return!1}}async function sl(e,t=200){let r=await sr({socketPath:e,timeoutMs:t},{id:Zu(),op:"ping"});return r.ok?dl(r.value)?{version:nb(r.value.version)}:{}:null}async function ts(e,t){if(await Qn(lt(e.socketPath),{recursive:!0,mode:448}),await At(e.socketPath,50))return!1;let r=await al(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=ul(t);return el(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 ol(e,t){try{await es(e,t)}finally{await Me(e.wakeLockPath,{force:!0})}}async function Zr(e){try{let t=zy(await tl(e,"utf8"));return sb(t)?t:null}catch{return null}}async function rs(e,t){let r={version:nl,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 Qn(lt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await jy(n,`${C(r)}
38
+ `,{encoding:"utf8",mode:384}),await By(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 Qr(e){let t=await Zr(e.registryPath);if(!t)try{return await tl(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!or(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await At(t.socket_path,100);return r&&await Xy(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 il(e){let t=await Qr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Me(e.registryPath,{force:!0}),await Qr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await cl(t.entry.pid),await Me(e.registryPath,{force:!0}),await Me(t.entry.socket_path,{force:!0}),await Qr(e)):t}async function zu(e,t){let r=Date.now()+Uy(),n;for(;Date.now()<r;){if(await At(e))return;if(t){let s=t.spawnError();if(s)throw new Error(bi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(bi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?bi("resident rsp server did not start",t):"resident rsp server did not start")}function Uy(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Wy}async function Jy(e){await Me(e,{force:!0})}async function al(e){await Qn(lt(e),{recursive:!0,mode:448});try{return await My(e,yi.O_CREAT|yi.O_EXCL|yi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function qy(e,t){let[r,n]=ul(t),s=process.env.RSP_DEBUG==="1",o,i="",a=el(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=Ky(`${i}${c}`,Vy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function bi(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:
39
39
  ${s}`),n.join(`
40
- `)}function Uy(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Jy(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function Wu(e,t){try{let r=await Kr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!rr(r.pid)){await $e(e.registryPath,{force:!0});return}if(await Ot(r.socket_path,100))return;if(nl(t.clientVersion,r.resident_version)&&(await qy(r.pid,1500),!rr(r.pid))){await $e(e.registryPath,{force:!0});return}await tl(r.pid),await $e(e.registryPath,{force:!0})}catch{}}function rr(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function tl(e){if(!rr(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!rr(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function qy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!rr(e))return;await new Promise(n=>setTimeout(n,50))}}async function Vy(e){if(!e.startsWith("file://"))return!1;try{return await Ny(zu(e)),!1}catch(t){return t.code==="ENOENT"}}function rl(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?qn(process.argv[1]):zu(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Ky(e){let t=Ay("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ue(r,"red-skills",t);if(ue(s,"rsp.sock").length<By)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(My(),`red-skills-${n}`,t)}function zy(e){let t=qn(e);for(let r=0;r<32;r++){try{let s=gi(ue(t,".git"));if(s!=null)return Yy(t,s)??t;if(gi(ue(t,".git","HEAD"))!=null||gi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function Yy(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=qn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?ut(ut(ut(n))):null}function gi(e){try{return Iy(e,"utf8")}catch{return null}}async function Uu(e,t){let r=await Xu(e).catch(()=>null);return r?nl(t.clientVersion,r.version)?(await Xy(e,t.clientVersion),await tb(e),!1):!0:!1}async function Xy(e,t){try{await tr({socketPath:e,timeoutMs:200},{id:qu(),op:"handover",clientVersion:t})}catch{}}function nl(e,t){return!e||!t?!1:Qy(e,t)>0}function Qy(e,t){let r=Ju(e),n=Ju(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ju(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 sl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zy(e){return typeof e=="string"&&e.length>0?e:void 0}function eb(e){return sl(e)&&e.version===Yu&&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 tb(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Ot(e,50))return;await new Promise(r=>setTimeout(r,50))}}var By,Yu,Fy,Wy,Xn=y(()=>{D();_e();mi();By=108,Yu=1,Fy=5e3;Wy=8*1024});var ll={};j(ll,{DEFAULT_RSP_BYTE_BUDGET:()=>Ee,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Se,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,DEFAULT_RSP_IDLE_MS:()=>es,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>ul,DEFAULT_RSP_STORE_PATH:()=>hi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Zn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>il,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>al,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Qn,DEFAULT_RSP_TTL_DAYS:()=>ke,MIN_RSP_IDLE_MS:()=>cl,resolveRspConfig:()=>xe});import{existsSync as rb,readFileSync as nb}from"node:fs";import{join as sb,resolve as ol}from"node:path";function xe(e,t,r){let n=ju(ol(e),sb(".red","config.yaml")),s=n?nb(n,"utf8"):"",o=Un(s,"rsp.enabled")==="true",i=Un(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ze(Re(s,"rsp.ttlDays"),ke),u=ze(nr(t.RSP_EPHEMERAL_TTL_HOURS)??Re(s,"rsp.ephemeralTtlHours"),Se),l=ze(Re(s,"rsp.byteBudget"),Ee),m=ze(Re(s,"rsp.telemetryTtlDays"),Qn),d=ze(Re(s,"rsp.telemetryByteBudget")??Re(s,"rsp.byteBudget"),Zn),p=ze(nr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Re(s,"rsp.telemetryDrainIntervalMs"),il),h=ze(nr(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Re(s,"rsp.telemetryDrainTimeoutMs"),al),f=ob(nr(t.RSP_IDLE_MS)??Re(s,"rsp.idleMs"),es,cl),g=ze(nr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Re(s,"rsp.heavyGitByteThreshold"),Ye),b=ib(nr(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??Re(s,"rsp.measurement.holdoutShare"),ul),w=lt(e).rootDir,E=r??t.RSP_STORE_URI??`file://${fu(ol(w),rb)}`;return{enabled:o,proxyEnabled:a,storeUri:E,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:f,heavyGitByteThreshold:g,measurementHoldoutShare:b}}function Re(e,t){let r=Un(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ze(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ob(e,t,r){let n=ze(e,t);return Math.max(n,r)}function ib(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function nr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ye,hi,ke,Se,Ee,Qn,Zn,il,al,es,cl,ul,ve=y(()=>{"use strict";Hu();_e();Xn();Ye=8*1024,hi=mu,ke=7,Se=6,Ee=64*1024*1024,Qn=90,Zn=4*1024*1024,il=3e4,al=2e3,es=5*6e4,cl=5e3,ul=0});var U,ts=y(()=>{"use strict";ve();U="rsp_elisions_v1"});import{spawnSync as Xr}from"node:child_process";import{createHash as wi}from"node:crypto";import{existsSync as ab}from"node:fs";import{mkdir as cb,readFile as ub,readdir as dl,rename as lb,writeFile as db}from"node:fs/promises";import{homedir as mb}from"node:os";import{basename as pb,dirname as fb,join as zr}from"node:path";import{fileURLToPath as gb}from"node:url";import{gunzipSync as hb,gzipSync as yb}from"node:zlib";function _i(e,t){return`el:${wi("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 dt(e){return`record:${e.slice(3)}`}function At(e){return`expired:${e.slice(3)}`}function ss(){return"index:v1"}function bb(e){return`blob:${e}`}function ml(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Xe(e){let t=e.trim().split(/\s+/).filter(Boolean),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":os(t)?"re-executable":"ephemeral"}return"ephemeral"}function Qr(e){return us(e.storage_class)?e.storage_class:Xe(e.command)}function pl(e){return us(e.storage_class)?e.storage_class:Xe(e.command)}function Ri(e){let t=Rb(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=pl(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 ki(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:wb(o),storage_class:pl(s),recover:`rsp show ${s.handle}`}})}function wb(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 Si(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 It(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 Ei(e,t){let r=process.cwd(),n=Xr("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=Xr("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:_b(r),original_bytes:e.length}:null}function _b(e){let t=yi(e,["rev-parse","HEAD"])||"unborn",r=yi(e,["write-tree"])||"no-index",n=yi(e,["status","--porcelain=v1","-z"])||"";return wi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function yi(e,t){let r=Xr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function xi(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!os(r))return null;let n=yl(process.cwd(),r,e.length);return!n||Pt(n)!==Pt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Pt(e)}}function os(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 Pt(e){return wi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function vi(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 Ci(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 Ti(e,t,r){let n=yb(e);return{key:bb(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function fl(e){try{let t=hb(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function gl(e){let t=e.object_ids[0];if(!t)return null;let r=Xr("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 hl(e){if(!os(e.argv))return null;let t=yl(e.cwd,e.argv,e.original_bytes);return t?Pt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
- `,"utf8"),t]):null}function yl(e,t,r){let n=t[0];if(!n)return null;let s=Xr(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 Rb(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Zr(e){return/^el:[a-f0-9]{12}$/.test(e)}function ns(e){return/^blob:[a-f0-9]{64}$/.test(e)}function bl(e){if(!Yr(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:Yr(e.scope)?e.scope:void 0,ranking:Yr(e.ranking)?e.ranking:void 0}}}function wl(e){if(!Yr(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 Yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function _l(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 dl(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=zr(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 Rl(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Yr(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 is(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function en(e){if(!le(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Sb(e.derivation_recipe),n=Eb(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&ns(s);return e.collection===U&&typeof e.handle=="string"&&Zr(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Pi(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&ns(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&kb(e.loss)&&(e.storage_class===void 0||us(e.storage_class))}function Oi(e){return!le(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!le(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Zr(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||us(t.storage_class))&&(r===void 0||typeof r=="string"&&ns(r))})}function as(e){return le(e)&&typeof e.key=="string"&&ns(e.key)&&Pi(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 cs(e){return le(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function kb(e){return le(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function us(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Sb(e){return le(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 Eb(e){return le(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&os(e.argv)&&typeof e.original_bytes=="number"&&Pi(e.content_hash)}function Pi(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function le(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function kl(e){try{let n=(await ub(e,"utf8")).trim();if(n==="")return rs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(xb(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=rs();return await sr(e,s),s}let n=rs();return await sr(e,n),n}let t=rs();return await sr(e,t),t}async function Sl(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function El(e){return pb(e)==="red-skills.rdb"}async function ls(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?zr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):zr(mb(),".cache","red-skills","bundles")),t=zr(e,"reddb"),r;try{r=await dl(t)}catch{return}r.sort().reverse();for(let n of r){let s=zr(t,n,process.platform==="win32"?"red.exe":"red");if(ab(s)){process.env.REDDB_BIN=s;return}}}async function sr(e,t){await cb(fb(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await db(r,`${C(bi(t))}
42
- `,"utf8"),await lb(r,e)}function bi(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=>bi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=bi(n));return t}return String(e)}function rs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function xb(e){return le(e)&&e.version===1&&le(e.records)&&Object.values(e.records).every(en)&&(e.blobs===void 0||le(e.blobs)&&Object.values(e.blobs).every(as))&&le(e.tombstones)&&Object.values(e.tombstones).every(cs)&&Oi(e.index)}function xl(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return gb(e)}var Ai=y(()=>{"use strict";D();ts()});import{createHash as vb}from"node:crypto";import{existsSync as vl}from"node:fs";import{mkdir as Cb,readFile as Tb,rename as Ii,rm as tn,stat as Li}from"node:fs/promises";import{basename as Ob,dirname as Pb}from"node:path";var mt,Cl=y(()=>{"use strict";ci();ts();Ai();mt=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=xl(t.uri),n=await Sl(r),s=new e(n,{uri:t.uri,ttlDays:is(t.ttlDays,ke),ephemeralTtlHours:is(t.ephemeralTtlHours,Se),byteBudget:is(t.byteBudget,Ee),now:t.now??(()=>new Date)});return El(n)?(await ls(),await Cb(Pb(n),{recursive:!0}),s.db=await er(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await kl(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=_i(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Ei(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Si(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Pt(n),h=m==="ephemeral"?Ti(n,p,o):null,f=vi(n,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:U,handle:i,original_bytes:n.length,stored_bytes:f,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:h?.key}};return delete this.document.tombstones[At(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:f,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:h?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Zr(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[dt(t)];if(!en(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:dt(n.handle),bytes:Ci(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Qr(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Qr(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:It(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Ri(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ki(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=It(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=It(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[At(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[At(t)];return cs(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return gl(t.derivation_recipe);if(t.reexecution_recipe)return hl(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return as(r)?fl(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 sr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Li(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)}
43
- `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await sr(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(U)}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===U);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${U}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${U}`),await this.db.query(`CREATE KV IF NOT EXISTS ${U}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=_i(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Ei(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Si(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Pt(n),h=m==="ephemeral"?Ti(n,p,o):null,f=vi(n,u,l,h);h&&!as(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:U,handle:i,original_bytes:n.length,stored_bytes:f,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:h?.key}};await this.kv().delete(At(i)),await this.kv().put(a,g);let w=(await this.readRedDbIndex()).records.filter(E=>E.handle!==i);return w.push({handle:i,key:a,bytes:f,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:h?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(i,f),i}async getRedDb(t){if(!Zr(t))return null;let r=await this.kvGet(At(t));if(cs(r))return r;let n=await this.kvGet(dt(t));if(!en(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:dt(n.handle),bytes:Ci(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Qr(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Qr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:It(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:Ri(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return ki(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=bl(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=wl(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 _l(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await Tb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Ob(s),c=vb("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=>Rl(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(`
44
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ss());return Oi(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ss(),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=It(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=It(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 Li(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 tn(o,{force:!0}),await tn(i,{force:!0});let a=await er(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${ml(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 Li(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await tn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Ii(this.path,i),await Ii(o,this.path),await tn(i,{force:!0})}catch(u){throw!vl(this.path)&&vl(i)&&await Ii(i,this.path),await tn(o,{force:!0}),u}finally{this.db=await er(`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===U){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:ss(),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:U,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(At(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(dt(t));if(!en(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 or={};j(or,{DEFAULT_RSP_BYTE_BUDGET:()=>Ee,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Se,DEFAULT_RSP_TTL_DAYS:()=>ke,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>mt,ensureReddbBinaryFromWarmCache:()=>ls,storageClassForCommand:()=>Xe});var Qe=y(()=>{"use strict";ts();Ai();Cl()});var Di,Ni,$i,se,q,de,Me,rn,ds=y(()=>{"use strict";Di="rsp-telemetry.spool.toonl",Ni="rsp-telemetry.spool.jsonl",$i="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",q="rsp_decisions_v1",de="rsp_telemetry_invocations_v1",Me="rsp_telemetry_degradations_v1",rn="rsp_telemetry_index_v1"});function ir(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function me(e){return pt(e)??0}function pt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Mi=y(()=>{"use strict"});import{randomUUID as Fi,createHash as Ab}from"node:crypto";import{appendFileSync as Il,existsSync as Ib,mkdirSync as Ll}from"node:fs";import{mkdir as Dl,readdir as Lb,readFile as Nl,rename as Db,rm as $l,writeFile as ji}from"node:fs/promises";import{basename as Bi,dirname as nn,join as ar,resolve as Tl}from"node:path";function ps(e){if(!e)return null;let t=Tl(e);for(;;){if(Ib(ar(t,".red")))return t;let r=Tl(ar(t,".."));if(r===t)break;t=r}return null}function Ze(e){return ar(Y(e),Di)}function fs(e){return ar(Y(e),Ni)}function Gi(e){return ar(Y(e),$i)}async function et(e,t){ft(e,t)}function ft(e,t){try{let r=ps(e);if(!r)return;let n=Ze(r);Ll(nn(n),{recursive:!0}),Il(n,jb({spool_id:Fi(),event:$b(t)}),{encoding:"utf8",mode:384})}catch{}}function $b(e){return Ol(Ol(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Ol(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Nb)return e;let o={...e};return delete o[t],me(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Mb(e){let t=ps(e);if(!t)return[];let r=Ze(t);await Dl(nn(r),{recursive:!0}).catch(()=>{});let n=await Fl(t),s=[...await jl(t),...await Gb(n)];return await Promise.all(n.map(o=>$l(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Wi(e,t){let r=ps(e);if(!r)return;let n=Ze(r);await Dl(nn(n),{recursive:!0}).catch(()=>{}),await Hb(r);for(let s of await Bb(r))await Pl(r,s,t);for(let s of await jl(r))await Ml(r,s,t,!0);for(let s of await Fl(r))await Pl(r,s,t)}async function Bb(e){let t=[Ze(e),fs(e)],r=nn(t[0]);return(await Lb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Bi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Bi(c)}.`));if(!o)return!1;let i=`${Bi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Fb(a))}).sort().map(s=>ar(r,s))}function Fb(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Pl(e,t,r){try{let n=await Bl(t);for(let s of Hl(n))await Ml(e,s,r,!1)}finally{await $l(t,{force:!0})}}async function Ml(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Al(e,{correction_id:Fi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Al(e,{correction_id:Fi(),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 Bl(e){let t="";for(let r=0;r<5;r++){let n=await Nl(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!ir(t)||t.collection!==se&&t.collection!==q&&t.collection!==de&&t.collection!==Me?null:t}catch{return null}}function jb(e){return it().push(Jb(e))}function Al(e,t){try{let r=ps(e);if(!r)return;let n=Gi(r);Ll(nn(n),{recursive:!0});let s=it();Il(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 Fl(e){let t=[Ze(e),fs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Db(n,s),await ji(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function Hb(e){await Promise.all([ji(Ze(e),"",{flag:"a"}),ji(fs(e),"",{flag:"a"})]).catch(()=>{})}async function Gb(e){let t=[];for(let r of e)t.push(...Hl(await Bl(r)));return t}async function jl(e){let t=await Nl(Gi(e),"utf8").catch(()=>""),r=new Map;for(let n of Wb(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 Hl(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(ir(o)){let i=cr(JSON.stringify(o));t.push(i?{spool_id:ms(JSON.stringify(o)),event:i}:{spool_id:ms(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:ms(s),raw_line:s});continue}try{for(let o of ot(`${r}
40
+ `)}function Ky(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function zy(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function Yu(e,t){try{let r=await Zr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!or(r.pid)){await Me(e.registryPath,{force:!0});return}if(await At(r.socket_path,100))return;if(ll(t.clientVersion,r.resident_version)&&(await Yy(r.pid,1500),!or(r.pid))){await Me(e.registryPath,{force:!0});return}await cl(r.pid),await Me(e.registryPath,{force:!0})}catch{}}function or(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function cl(e){if(!or(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!or(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Yy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!or(e))return;await new Promise(n=>setTimeout(n,50))}}async function Xy(e){if(!e.startsWith("file://"))return!1;try{return await Fy(rl(e)),!1}catch(t){return t.code==="ENOENT"}}function ul(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Zn(process.argv[1]):rl(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Qy(e){let t=Ny("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ue(r,"red-skills",t);if(ue(s,"rsp.sock").length<Gy)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Hy(),`red-skills-${n}`,t)}function Zy(e){let t=Zn(e);for(let r=0;r<32;r++){try{let s=wi(ue(t,".git"));if(s!=null)return eb(t,s)??t;if(wi(ue(t,".git","HEAD"))!=null||wi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=lt(t);if(n===t)return null;t=n}return null}function eb(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Zn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?lt(lt(lt(n))):null}function wi(e){try{return $y(e,"utf8")}catch{return null}}async function Xu(e,t){let r=await sl(e).catch(()=>null);return r?ll(t.clientVersion,r.version)?(await tb(e,t.clientVersion),await ob(e),!1):!0:!1}async function tb(e,t){try{await sr({socketPath:e,timeoutMs:200},{id:Zu(),op:"handover",clientVersion:t})}catch{}}function ll(e,t){return!e||!t?!1:rb(e,t)>0}function rb(e,t){let r=Qu(e),n=Qu(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Qu(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 dl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nb(e){return typeof e=="string"&&e.length>0?e:void 0}function sb(e){return dl(e)&&e.version===nl&&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 ob(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await At(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Gy,nl,Wy,Vy,ss=y(()=>{D();ke();hi();Gy=108,nl=1,Wy=5e3;Vy=8*1024});var yl={};j(yl,{DEFAULT_RSP_BYTE_BUDGET:()=>xe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ee,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Xe,DEFAULT_RSP_IDLE_MS:()=>as,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>hl,DEFAULT_RSP_STORE_PATH:()=>_i,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>is,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>fl,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>pl,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>os,DEFAULT_RSP_TTL_DAYS:()=>Se,MIN_RSP_IDLE_MS:()=>gl,resolveRspConfig:()=>ve});import{existsSync as ib,readFileSync as ab}from"node:fs";import{join as cb,resolve as ml}from"node:path";function ve(e,t,r){let n=Vu(ml(e),cb(".red","config.yaml")),s=n?ab(n,"utf8"):"",o=Xn(s,"rsp.enabled")==="true",i=Xn(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=Ye(Re(s,"rsp.ttlDays"),Se),u=Ye(ir(t.RSP_EPHEMERAL_TTL_HOURS)??Re(s,"rsp.ephemeralTtlHours"),Ee),l=Ye(Re(s,"rsp.byteBudget"),xe),m=Ye(Re(s,"rsp.telemetryTtlDays"),os),d=Ye(Re(s,"rsp.telemetryByteBudget")??Re(s,"rsp.byteBudget"),is),f=Ye(ir(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Re(s,"rsp.telemetryDrainIntervalMs"),fl),p=Ye(ir(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Re(s,"rsp.telemetryDrainTimeoutMs"),pl),g=ub(ir(t.RSP_IDLE_MS)??Re(s,"rsp.idleMs"),as,gl),h=Ye(ir(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Re(s,"rsp.heavyGitByteThreshold"),Xe),b=lb(ir(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??Re(s,"rsp.measurement.holdoutShare"),hl),w=dt(e).rootDir,E=r??t.RSP_STORE_URI??`file://${ku(ml(w),ib)}`;return{enabled:o,proxyEnabled:a,storeUri:E,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:p,idleMs:g,heavyGitByteThreshold:h,measurementHoldoutShare:b}}function Re(e,t){let r=Xn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Ye(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ub(e,t,r){let n=Ye(e,t);return Math.max(n,r)}function lb(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function ir(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Xe,_i,Se,Ee,xe,os,is,fl,pl,as,gl,hl,Ce=y(()=>{"use strict";Ku();ke();ss();Xe=8*1024,_i=wu,Se=7,Ee=6,xe=64*1024*1024,os=90,is=4*1024*1024,fl=3e4,pl=2e3,as=5*6e4,gl=5e3,hl=0});var U,cs=y(()=>{"use strict";Ce();U="rsp_elisions_v1"});function us(e){return e.trim().split(/\s+/).filter(Boolean)}function en(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function tn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function le(e){let t=us(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:It(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:It(t)&&t[1]?`gh ${t[1]} json-jq`:It(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 It(e){return e[0]==="gh"&&e.some(db)}function db(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function ar(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var rn=y(()=>{"use strict"});import{spawnSync as on}from"node:child_process";import{createHash as Si}from"node:crypto";import{existsSync as mb}from"node:fs";import{mkdir as fb,readFile as pb,readdir as bl,rename as gb,writeFile as hb}from"node:fs/promises";import{homedir as yb}from"node:os";import{basename as bb,dirname as wb,join as nn}from"node:path";import{fileURLToPath as _b}from"node:url";import{gunzipSync as kb,gzipSync as Rb}from"node:zlib";function Ei(e,t){return`el:${Si("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 Dt(e){return`expired:${e.slice(3)}`}function ms(){return"index:v1"}function Sb(e){return`blob:${e}`}function wl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Qe(e){let t=us(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":fs(t)?"re-executable":"ephemeral"}return"ephemeral"}function an(e){return ys(e.storage_class)?e.storage_class:Qe(e.command)}function _l(e){return ys(e.storage_class)?e.storage_class:Qe(e.command)}function xi(e){let t=vb(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=_l(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 vi(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:Eb(o),storage_class:_l(s),recover:`rsp show ${s.handle}`}})}function Eb(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 Ci(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 Nt(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 Ti(e,t){let r=process.cwd(),n=on("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=on("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:xb(r),original_bytes:e.length}:null}function xb(e){let t=ki(e,["rev-parse","HEAD"])||"unborn",r=ki(e,["write-tree"])||"no-index",n=ki(e,["status","--porcelain=v1","-z"])||"";return Si("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function ki(e,t){let r=on("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Pi(e,t){let r=us(t);if(!fs(r))return null;let n=El(process.cwd(),r,e.length);return!n||Lt(n)!==Lt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Lt(e)}}function fs(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 Lt(e){return Si("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Oi(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 Ai(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 Ii(e,t,r){let n=Rb(e);return{key:Sb(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function kl(e){try{let t=kb(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Rl(e){let t=e.object_ids[0];if(!t)return null;let r=on("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 Sl(e){if(!fs(e.argv))return null;let t=El(e.cwd,e.argv,e.original_bytes);return t?Lt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function El(e,t,r){let n=t[0];if(!n)return null;let s=on(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 vb(){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 cn(e){return/^el:[a-f0-9]{12}$/.test(e)}function ds(e){return/^blob:[a-f0-9]{64}$/.test(e)}function xl(e){if(!sn(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:sn(e.scope)?e.scope:void 0,ranking:sn(e.ranking)?e.ranking:void 0}}}function vl(e){if(!sn(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 sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Cl(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 bl(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=nn(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 Tl(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=sn(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 ps(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function un(e){if(!de(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Tb(e.derivation_recipe),n=Pb(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&ds(s);return e.collection===U&&typeof e.handle=="string"&&cn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Di(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&ds(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Cb(e.loss)&&(e.storage_class===void 0||ys(e.storage_class))}function Li(e){return!de(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!de(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&cn(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||ys(t.storage_class))&&(r===void 0||typeof r=="string"&&ds(r))})}function gs(e){return de(e)&&typeof e.key=="string"&&ds(e.key)&&Di(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 hs(e){return de(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Cb(e){return de(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function ys(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Tb(e){return de(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 Pb(e){return de(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&fs(e.argv)&&typeof e.original_bytes=="number"&&Di(e.content_hash)}function Di(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Pl(e){try{let n=(await pb(e,"utf8")).trim();if(n==="")return ls();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(Ob(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=ls();return await cr(e,s),s}let n=ls();return await cr(e,n),n}let t=ls();return await cr(e,t),t}async function Ol(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Al(e){return bb(e)==="red-skills.rdb"}async function bs(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?nn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):nn(yb(),".cache","red-skills","bundles")),t=nn(e,"reddb"),r;try{r=await bl(t)}catch{return}r.sort().reverse();for(let n of r){let s=nn(t,n,process.platform==="win32"?"red.exe":"red");if(mb(s)){process.env.REDDB_BIN=s;return}}}async function cr(e,t){await fb(wb(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await hb(r,`${C(Ri(t))}
42
+ `,"utf8"),await gb(r,e)}function Ri(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=>Ri(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Ri(n));return t}return String(e)}function ls(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Ob(e){return de(e)&&e.version===1&&de(e.records)&&Object.values(e.records).every(un)&&(e.blobs===void 0||de(e.blobs)&&Object.values(e.blobs).every(gs))&&de(e.tombstones)&&Object.values(e.tombstones).every(hs)&&Li(e.index)}function Il(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return _b(e)}var Ni=y(()=>{"use strict";D();rn();cs()});import{createHash as Ab}from"node:crypto";import{existsSync as Ll}from"node:fs";import{mkdir as Ib,readFile as Lb,rename as $i,rm as ln,stat as Mi}from"node:fs/promises";import{basename as Db,dirname as Nb}from"node:path";var ft,Dl=y(()=>{"use strict";mi();cs();Ni();ft=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=Il(t.uri),n=await Ol(r),s=new e(n,{uri:t.uri,ttlDays:ps(t.ttlDays,Se),ephemeralTtlHours:ps(t.ephemeralTtlHours,Ee),byteBudget:ps(t.byteBudget,xe),now:t.now??(()=>new Date)});return Al(n)?(await bs(),await Ib(Nb(n),{recursive:!0}),s.db=await nr(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Pl(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=Ei(n,r),a=mt(i),c=Qe(r.command),u=c==="derivable"?Ti(n,r.command):null,l=c==="re-executable"?Pi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ci(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Lt(n),p=m==="ephemeral"?Ii(n,f,o):null,g=Oi(n,u,l,p);p&&!this.document.blobs[p.key]&&(this.document.blobs[p.key]=p,this.dirty=!0);let h={collection:U,handle:i,original_bytes:n.length,stored_bytes:g,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};return delete this.document.tombstones[Dt(i)],this.document.records[a]=h,this.upsertIndex({handle:i,key:a,bytes:g,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:p?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!cn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[mt(t)];if(!un(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:Ai(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:an(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:an(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:Nt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:xi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),vi(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=Nt(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=Nt(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[Dt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Dt(t)];return hs(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Rl(t.derivation_recipe);if(t.reexecution_recipe)return Sl(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return gs(r)?kl(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 cr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Mi(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)}
43
+ `,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await cr(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(U)}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===U);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${U}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${U}`),await this.db.query(`CREATE KV IF NOT EXISTS ${U}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Ei(n,r),a=mt(i),c=Qe(r.command),u=c==="derivable"?Ti(n,r.command):null,l=c==="re-executable"?Pi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ci(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Lt(n),p=m==="ephemeral"?Ii(n,f,o):null,g=Oi(n,u,l,p);p&&!gs(await this.kvGet(p.key))&&await this.kv().put(p.key,p);let h={collection:U,handle:i,original_bytes:n.length,stored_bytes:g,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};await this.kv().delete(Dt(i)),await this.kv().put(a,h);let w=(await this.readRedDbIndex()).records.filter(E=>E.handle!==i);return w.push({handle:i,key:a,bytes:g,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:p?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(i,g),i}async getRedDb(t){if(!cn(t))return null;let r=await this.kvGet(Dt(t));if(hs(r))return r;let n=await this.kvGet(mt(t));if(!un(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:Ai(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:an(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:an(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Nt(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:xi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return vi(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=xl(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=vl(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 Cl(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await Lb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Db(s),c=Ab("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=>Tl(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(`
44
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ms());return Li(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ms(),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=Nt(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=Nt(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 Mi(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 ln(o,{force:!0}),await ln(i,{force:!0});let a=await nr(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${wl(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 Mi(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await ln(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await $i(this.path,i),await $i(o,this.path),await ln(i,{force:!0})}catch(u){throw!Ll(this.path)&&Ll(i)&&await $i(i,this.path),await ln(o,{force:!0}),u}finally{this.db=await nr(`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===U){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:ms(),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:U,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Dt(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(!un(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 ur={};j(ur,{DEFAULT_RSP_BYTE_BUDGET:()=>xe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ee,DEFAULT_RSP_TTL_DAYS:()=>Se,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>ft,ensureReddbBinaryFromWarmCache:()=>bs,storageClassForCommand:()=>Qe});var Ze=y(()=>{"use strict";cs();Ni();Dl()});var Bi,Fi,ji,se,q,me,Be,dn,ws=y(()=>{"use strict";Bi="rsp-telemetry.spool.toonl",Fi="rsp-telemetry.spool.jsonl",ji="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",q="rsp_decisions_v1",me="rsp_telemetry_invocations_v1",Be="rsp_telemetry_degradations_v1",dn="rsp_telemetry_index_v1"});function lr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function fe(e){return pt(e)??0}function pt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Hi=y(()=>{"use strict"});import{randomUUID as Wi,createHash as $b}from"node:crypto";import{appendFileSync as Fl,existsSync as Mb,mkdirSync as jl}from"node:fs";import{mkdir as Hl,readdir as Bb,readFile as Gl,rename as Fb,rm as Wl,writeFile as Ui}from"node:fs/promises";import{basename as Gi,dirname as mn,join as dr,resolve as Nl}from"node:path";function ks(e){if(!e)return null;let t=Nl(e);for(;;){if(Mb(dr(t,".red")))return t;let r=Nl(dr(t,".."));if(r===t)break;t=r}return null}function et(e){return dr(X(e),Bi)}function Rs(e){return dr(X(e),Fi)}function qi(e){return dr(X(e),ji)}async function tt(e,t){gt(e,t)}function gt(e,t){try{let r=ks(e);if(!r)return;let n=et(r);jl(mn(n),{recursive:!0}),Fl(n,Jb({spool_id:Wi(),event:Hb(t)}),{encoding:"utf8",mode:384})}catch{}}function Hb(e){return $l($l(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function $l(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=jb)return e;let o={...e};return delete o[t],fe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Gb(e){let t=ks(e);if(!t)return[];let r=et(t);await Hl(mn(r),{recursive:!0}).catch(()=>{});let n=await ql(t),s=[...await Vl(t),...await Vb(n)];return await Promise.all(n.map(o=>Wl(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Vi(e,t){let r=ks(e);if(!r)return;let n=et(r);await Hl(mn(n),{recursive:!0}).catch(()=>{}),await qb(r);for(let s of await Wb(r))await Ml(r,s,t);for(let s of await Vl(r))await Ul(r,s,t,!0);for(let s of await ql(r))await Ml(r,s,t)}async function Wb(e){let t=[et(e),Rs(e)],r=mn(t[0]);return(await Bb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Gi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Gi(c)}.`));if(!o)return!1;let i=`${Gi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Ub(a))}).sort().map(s=>dr(r,s))}function Ub(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Ml(e,t,r){try{let n=await Jl(t);for(let s of Kl(n))await Ul(e,s,r,!1)}finally{await Wl(t,{force:!0})}}async function Ul(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Bl(e,{correction_id:Wi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Bl(e,{correction_id:Wi(),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 Jl(e){let t="";for(let r=0;r<5;r++){let n=await Gl(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function mr(e){try{let t=JSON.parse(e);return!lr(t)||t.collection!==se&&t.collection!==q&&t.collection!==me&&t.collection!==Be?null:t}catch{return null}}function Jb(e){return at().push(Yb(e))}function Bl(e,t){try{let r=ks(e);if(!r)return;let n=qi(r);jl(mn(n),{recursive:!0});let s=at();Fl(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 ql(e){let t=[et(e),Rs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Fb(n,s),await Ui(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function qb(e){await Promise.all([Ui(et(e),"",{flag:"a"}),Ui(Rs(e),"",{flag:"a"})]).catch(()=>{})}async function Vb(e){let t=[];for(let r of e)t.push(...Kl(await Jl(r)));return t}async function Vl(e){let t=await Gl(qi(e),"utf8").catch(()=>""),r=new Map;for(let n of Kb(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:mr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function Kl(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(lr(o)){let i=mr(JSON.stringify(o));t.push(i?{spool_id:_s(JSON.stringify(o)),event:i}:{spool_id:_s(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:_s(s),raw_line:s});continue}try{for(let o of it(`${r}
45
45
  ${s}
46
- `))Hi(o)&&qb(o)&&t.push({spool_id:o.spool_id,event:Gl(o)})}catch{s.startsWith("{")&&t.push({spool_id:ms(s),raw_line:s})}}}return t}function Wb(e){return Ub(e).map(Vb).filter(t=>t!==null)}function Ub(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Hi(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of ot(`${r}
46
+ `))Ji(o)&&Xb(o)&&t.push({spool_id:o.spool_id,event:zl(o)})}catch{s.startsWith("{")&&t.push({spool_id:_s(s),raw_line:s})}}}return t}function Kb(e){return zb(e).map(Qb).filter(t=>t!==null)}function zb(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Ji(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of it(`${r}
47
47
  ${s}
48
- `))Hi(o)&&t.push(o)}catch{}}}return t}function ms(e){return`legacy:${Ab("sha256").update(e).digest("hex").slice(0,24)}`}function Jb(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 Gl(e){let{spool_id:t,...r}=e;return cr(JSON.stringify(r))}function qb(e){return typeof e.spool_id=="string"&&Gl(e)!==null}function Vb(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 Hi(e){return ir(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Nb,Wl=y(()=>{"use strict";_e();D();ds();Mi();Nb=64*1024});async function hs(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await ql(e,s),i=(await sn(e,q)).filter(k=>lr(k)>=s),a=o.filter(k=>P(k.event_type)!=="show"&&P(k.degradation_reason)===""),c=o.filter(k=>P(k.event_type)==="show"),u=o.filter(k=>P(k.degradation_reason)!==""),l=0,m=0,d=0,p=0,h=!1,f=new Map,g=new Map,b=[],w=0,E=0,v=0;for(let k of a){k.elided===!0&&l++;let I=me(k.raw_bytes),Ue=me(k.emitted_bytes),St=Math.max(0,I-Ue),Jt=dr(k,"raw"),_=dr(k,"emitted"),T=Math.max(0,Jt.tokens-_.tokens);h||=(k.estimated===!0||Jt.estimated||_.estimated)&&T>0,m+=I,d+=Ue,p+=T;let Et=Lt(k).slice(0,10);Et&&f.set(Et,(f.get(Et)??0)+T);let xt=P(k.command)||"unknown",ge=g.get(xt)??{command:xt,invocations:0,bytes_saved:0,tokens_saved:0};ge.invocations++,ge.bytes_saved+=St,ge.tokens_saved+=T,g.set(xt,ge);let he=pt(k.wrapper_ms);he!=null&&b.push(he),w+=me(k.store_open_count);let qt=pt(k.store_elapsed_ms);qt!=null&&(E+=qt,v++)}let O=new Map,F=new Map,fe=[],Pe=null;for(let k of u){let I=P(k.degradation_reason)||P(k.reason)||"unknown",Ue=P(k.wrapper_family)||gs(P(k.command));O.set(I,(O.get(I)??0)+1),F.set(Ue,(F.get(Ue)??0)+1);let St=Lt(k);fe.push({timestamp:St,family:Ue,command:P(k.command)||"unknown",reason:I,exit_code:pt(k.wrapper_exit_code),stderr_head:P(k.stderr_head)||null}),(!Pe||St>Pe.timestamp)&&(Pe={timestamp:St,reason:I,command:P(k.command)||"unknown"})}let te=a.length+u.length,st=c.filter(k=>k.hit===!0).length,re=li(p,h),Ar=Kb(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: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:[...f.entries()].sort(([k],[I])=>k.localeCompare(I)).map(([k,I])=>({date:k,tokens_saved:I})),top_commands:[...g.values()].sort((k,I)=>I.bytes_saved-k.bytes_saved||I.tokens_saved-k.tokens_saved||k.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:st,show_misses:Math.max(0,c.length-st),show_hit_rate:c.length===0?0:Q(st/c.length),by_reason:[...O.entries()].sort((k,I)=>I[1]-k[1]||k[0].localeCompare(I[0])).map(([k,I])=>({reason:k,count:I})),by_family:[...F.entries()].sort((k,I)=>I[1]-k[1]||k[0].localeCompare(I[0])).map(([k,I])=>({family:k,count:I})),recent_failures:fe.sort((k,I)=>I.timestamp.localeCompare(k.timestamp)).slice(0,20),most_recent:Pe},latency:{wrapper_ms_p50:ur(b,.5),wrapper_ms_p95:ur(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:Q(E),store_elapsed_ms_avg:v===0?null:Q(E/v)},decisions:Ar}}function Kb(e){let t=0,r=0,n=0,s=0,o=new Map;for(let i of e){let a=P(i.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,i.quota_free===!0&&(s+=Math.max(1,me(i.saved_units))),a!=="contributed"){let c=P(i.reason)||"unknown";o.set(c,(o.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Q(t/e.length),top_pass_reasons:[...o.entries()].sort((i,a)=>a[1]-i[1]||i[0].localeCompare(a[0])).map(([i,a])=>({reason:i,count:a}))}}async function Ui(e,t,r=new Date){let s=(await sn(e,se)).filter(o=>lr(o)<=r.getTime()||Lt(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=Lt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:nw(s)}}async function Ji(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 ql(e,i),c=a.filter(_=>P(_.event_type)!=="show"&&P(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&P(_.degradation_reason)===""),u=a.filter(_=>P(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>P(_.event_type)==="show"),m=a.filter(_=>P(_.degradation_reason)!==""),d=[...c,...m].map(lr).filter(_=>Number.isFinite(_)&&_>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/mw()))),f=[],g=new Map,b=new Map,w=new Map,E=new Map,v=new Map,O=new Map,F=0,fe=!1,Pe=0,te=null,st=0,re=0;for(let _ of c){let T=Lt(_),Et=T.slice(0,10),xt=T.slice(0,16),ge=gs(P(_.command)),he=Math.max(0,dr(_,"raw").tokens-dr(_,"emitted").tokens);F+=he,fe||=_.estimated===!0&&he>0;let qt=Math.max(0,me(_.raw_bytes)-me(_.emitted_bytes)),Ro=pt(_.wrapper_ms);if(Ro!=null){f.push(Ro);let Dc=g.get(ge)??[];Dc.push(Ro),g.set(ge,Dc)}Et&&b.set(Et,(b.get(Et)??0)+1),xt&&w.set(xt,(w.get(xt)??0)+1);let ko=aw(T);ko&&E.set(ko,(E.get(ko)??0)+1);let So=lw(T);So&&v.set(So,(v.get(So)??0)+he);let $n=O.get(ge)??{command_family:ge,invocations:0,tokens_saved:0,bytes_saved:0};$n.invocations++,$n.tokens_saved+=he,$n.bytes_saved+=qt,O.set(ge,$n),_.elided===!0&&Pe++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(st++,me(_.store_open_count)>0&&re++),he>0&&(!te||he>te.tokens_saved||he===te.tokens_saved&&qt>te.bytes_saved)&&(te={timestamp:T,command_family:ge,tokens_saved:he,bytes_saved:qt})}let Ar=m.map(_=>({timestamp:Lt(_),command_family:gs(P(_.command)),reason:P(_.degradation_reason)||P(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),k=new Map;for(let _ of Ar)k.set(_.reason,(k.get(_.reason)??0)+1);let I=Qb(Ar),Ue=Xb(l),St=ew([...O.values()],Ue,I),Jt=[...w.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:h,since:o,until:s,label:`window: ${n}d, data: ${h}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:Jl(f),by_command_family:[...g.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...Jl(T)}))},throughput:{requests_per_day:[...b.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:w.size===0?null:Q([...w.values()].reduce((_,T)=>_+T,0)/w.size),peak_minute:Jt?{minute:Jt[0],requests:Jt[1]}:null,hour_weekday_heatmap:cw(E)},savings:{tokens:li(F,fe),measured_control_holdout:zb(c,u),weekly_tokens_saved:dw(v),elision_rate:c.length===0?0:Q(Pe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((_,T)=>T.tokens_saved-_.tokens_saved||T.bytes_saved-_.bytes_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((_,T)=>T.invocations-_.invocations||T.tokens_saved-_.tokens_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:Ar,degradations_by_reason:[...k.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:st===0?null:re,warm_hits:st===0?null:Math.max(0,st-re)},mining:{recovery_usage_by_family:Ue,degradation_clusters:I,threshold_tuning_suggestions:St}}}async function ql(e,t){let r=(await sn(e,se)).filter(i=>lr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await sn(e,de)).filter(i=>lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await sn(e,Me)).filter(i=>lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function dr(e,t){let r=pt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=me(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function zb(e,t){let r=rw(t.map(a=>pt(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(Ul).filter(a=>a!=null),s=t.map(Ul).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Q(tw(o));return{enabled:!0,holdout_share:Q(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:Yb(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Ul(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 Yb(e,t){if(e.length<=1)return{low:Q(Math.max(0,t)),high:Q(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:Q(Math.max(0,t-n)),high:Q(Math.min(1,t+n))}}function Xb(e){let t=new Map;for(let r of e){let n=gs(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Q(r.show_hits/r.show_total)}))}function Qb(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:Zb(r)}))}function Zb(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 ew(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 tw(e){return e.reduce((t,r)=>t+r,0)/e.length}function rw(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function nw(e){let t=ow();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=sw(r.storage_class)??Xe(P(r.command));t[n].records+=1;let s=me(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function sw(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ow(){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 sn(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=>iw(n.value)).filter(n=>ir(n))}function iw(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function lr(e){let t=Date.parse(Lt(e));return Number.isFinite(t)?t:0}function Lt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function ur(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 Q(r[n])}function Jl(e){return{wrapper_ms_p50:ur(e,.5),wrapper_ms_p90:ur(e,.9),wrapper_ms_p95:ur(e,.95),wrapper_ms_p99:ur(e,.99)}}function Q(e){return Math.round(e*100)/100}function gs(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`: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 aw(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${uw(t.getUTCDay())}:${t.getUTCHours()}`:null}function cw(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 uw(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function lw(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 dw(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Q((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function mw(){return 24*60*60*1e3}var Vl=y(()=>{"use strict";Qe();di();ds();Mi()});var on={};j(on,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Me,RSP_TELEMETRY_INDEX_COLLECTION:()=>rn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>de,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>$i,RSP_TELEMETRY_SPOOL_FILE:()=>Di,appendTelemetryEvent:()=>et,appendTelemetryEventSync:()=>ft,drainTelemetrySpool:()=>Wi,parseTelemetryEvent:()=>cr,readAccountingLaneStats:()=>Ui,readTelemetryGainsReport:()=>Ji,readTelemetryStats:()=>hs,takeTelemetrySpool:()=>Mb,telemetryLegacySpoolPath:()=>fs,telemetrySpoolCorrectionsPath:()=>Gi,telemetrySpoolPath:()=>Ze});var Ce=y(()=>{"use strict";ds();Wl();Vl()});function ea(e){return e==="success"?0:e==="failure"?1:2}function ta(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function tt(e,t,r){return{status:e,exitCode:ea(e),summary:t,...r?{details:r}:{}}}function V(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function pr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var zl,Yl,Xl,Qi,Ql,Zl,ed,td,Zi,Dt=y(()=>{"use strict";zl="rsp.wait.result",Yl="rsp.wait.registry",Xl="rsp.wait.list",Qi={cmd:18e5,pr:27e5,run:27e5,release:72e5},Ql=16*1024,Zl=1e4,ed=2e3,td=6e4,Zi={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 bw,readFile as ww}from"node:fs/promises";async function fr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await ws(r),s=[r,...n];if(s.every(c=>!Nt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(rd(e,"SIGTERM"),bs(n,"SIGTERM"),await nd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await ws(r)])];rd(e,"SIGKILL"),bs(o,"SIGKILL");let i=Math.max(1e3,t);await _w(e,i);let a=await nd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Nt)}}function rd(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 bs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function _w(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 nd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Nt(n)))return!0;await Rw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Nt(n))}async function ws(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await bw("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await sd(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 an(e){return(await sd(e))?.[19]}async function gr(e,t){if(!Nt(e))return!1;if(!t)return!0;let r=await an(e);return r===void 0?process.platform!=="linux":r===t}function Nt(e){try{return process.kill(e,0),!0}catch{return!1}}async function sd(e){if(process.platform!=="linux")return null;try{let t=await ww(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function Rw(e){await new Promise(t=>setTimeout(t,e))}var rt=y(()=>{"use strict"});import{constants as kw}from"node:os";async function od(e){let t=e[1],r={timeoutMs:Qi.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Zl,terminateGraceMs:ed,probeTimeoutMs:td,format:"toon",captureBytes:Ql},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=Qi[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=cn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=xw(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=cn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=cn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=cn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Ew(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 Sw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Sw(e){if(!(e.signal in kw.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(!Nt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await an(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function cn(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 un(e,t,r=process.env){let n=r[e];if(!n)return t;try{return cn(n)}catch{return t}}function Ew(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function xw(e){return e.startsWith("SIG")?e:`SIG${e}`}var id=y(()=>{"use strict";Dt();rt()});import{existsSync as ra,readFileSync as vw,statSync as Cw}from"node:fs";import{basename as ad,dirname as _s,isAbsolute as Tw,join as cd,resolve as ln}from"node:path";function Rs(e,t=process.env){let r=ln(e);if(Ho.map(i=>t[i]).find(Boolean))return hu({startDir:r,env:t,exists:ra});let s=Pw(r),o=Ow(r,s);return o||(s??r)}function Ow(e,t){let r=e;for(;;){if(ra(cd(r,".red")))return r;if(t&&r===t)return null;let n=ln(r,"..");if(n===r)return null;r=n}}function Pw(e){let t=e;for(;;){let r=cd(t,".git");if(ra(r))return Lw(r)?t:Aw(r)??t;let n=ln(t,"..");if(n===t)return null;t=n}}function Aw(e){let t=Iw(e);if(!t)return null;let r=_s(t),n=_s(r);return ad(r)!=="worktrees"||ad(n)!==".git"?null:_s(n)}function Iw(e){let t;try{t=vw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Tw(n)?ln(n):ln(_s(e),n)}function Lw(e){try{return Cw(e).isDirectory()}catch{return!1}}var na=y(()=>{_e()});import{join as Dw}from"node:path";function $w(e,t=process.env){return Rs(e,t)}function hr(e,t=process.env){return gu($w(e,t))}function ud(e,t=process.env){return Dw(hr(e,t),Nw)}var Nw,sa=y(()=>{"use strict";_e();na();Nw="spool"});import{randomUUID as Mw}from"node:crypto";import{existsSync as Bw}from"node:fs";import{mkdir as Fw,readdir as jw,readFile as Hw,rename as Gw,rm as oa,writeFile as Ww}from"node:fs/promises";import{dirname as Uw,join as dd}from"node:path";function md(e,t,r=process.env){return dd(hr(e,r),`${t}${Jw}`)}async function yr(e,t){await ia(e,`${H(t)}
49
- `)}async function ks(e,t,r){t.status=r,await yr(e,t)}async function Ss(e,t=process.env){let r=hr(e,t);if(!Bw(r))return[];let n=await jw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>qw.some(a=>i.endsWith(a)))){let i=dd(r,o),a=await Vw(i);if(!a){await oa(i,{force:!0});continue}if(!await Kw(a)){await oa(i,{force:!0});continue}s.push(a)}return s}async function Vw(e){let t;try{t=await Hw(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=zw(r);return n&&Object.keys(n).length>0?n:null}async function Kw(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 gr(t,r)}function zw(e){try{let t=N(e);if(ld(t))return t}catch{}try{let t=JSON.parse(e);if(ld(t))return t}catch{}return null}async function ia(e,t){await Fw(Uw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Mw()}`;try{await Ww(r,t,"utf8"),await Gw(r,e)}finally{await oa(r,{force:!0})}}function aa(e){return{schema:Yl,version:1,...e}}function ld(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Jw,qw,mn=y(()=>{"use strict";D();Ne();Dt();sa();rt();Jw=".toon",qw=[".toon",".json"]});function br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){return br(e)?e:{}}function $t(e){return Array.isArray(e)?e.filter(br):[]}function K(e,t){let r=e[t];return typeof r=="string"?r:""}function wr(e,t){let r=e[t];return typeof r=="number"?r:0}function ca(e){let t=JSON.parse(e);if(!br(t))throw new Error("expected JSON object");return t}function Es(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var xs=y(()=>{"use strict"});import{spawn as Yw}from"node:child_process";import{resolve as Xw}from"node:path";async function pd(e,t,r){let n=[];if(e.signalPid){let s=await Qw(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Zw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function Qw(e){let t=e.signalPid;if(!await gr(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:fd(r),pid:t,signal:e.signal}}}async function Zw(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await e_(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Xw(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 e_(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=Yw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,fr(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:fd(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 fd(e){return e instanceof Error?e.message:String(e)}var gd=y(()=>{"use strict";xs();rt()});import{resolve as t_}from"node:path";async function hd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=r_(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=pn(t,r,o,{status:"pending"},i);await fn(n.resultFile,a,n.format);let c=await pd(n,a,s),u=pn(t,r,o,c,i);return await fn(n.resultFile,u,n.format),{result:u,exitCode:yd(o,c)}}function yd(e,t){return t.status!=="success"||e.status==="running"?2:ea(e.status)}function r_(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 pn(e,t,r,n,s){return{schema:zl,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:yd(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function fn(e,t,r){e&&await ia(t_(e),_r(t,r))}function _r(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
48
+ `))Ji(o)&&t.push(o)}catch{}}}return t}function _s(e){return`legacy:${$b("sha256").update(e).digest("hex").slice(0,24)}`}function Yb(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 zl(e){let{spool_id:t,...r}=e;return mr(JSON.stringify(r))}function Xb(e){return typeof e.spool_id=="string"&&zl(e)!==null}function Qb(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 Ji(e){return lr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var jb,Yl=y(()=>{"use strict";ke();D();ws();Hi();jb=64*1024});async function Ss(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await Zl(e,s),i=(await fn(e,q)).filter(R=>pr(R)>=s),a=o.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=o.filter(R=>P(R.event_type)==="show"),u=o.filter(R=>P(R.degradation_reason)!==""),l=0,m=0,d=0,f=0,p=!1,g=new Map,h=new Map,b=[],w=0,E=0,v=0;for(let R of a){R.elided===!0&&l++;let I=fe(R.raw_bytes),Je=fe(R.emitted_bytes),xt=Math.max(0,I-Je),Kt=gr(R,"raw"),_=gr(R,"emitted"),T=Math.max(0,Kt.tokens-_.tokens);p||=(R.estimated===!0||Kt.estimated||_.estimated)&&T>0,m+=I,d+=Je,f+=T;let vt=$t(R).slice(0,10);vt&&g.set(vt,(g.get(vt)??0)+T);let Ct=P(R.command)||"unknown",he=h.get(Ct)??{command:Ct,invocations:0,bytes_saved:0,tokens_saved:0};he.invocations++,he.bytes_saved+=xt,he.tokens_saved+=T,h.set(Ct,he);let ye=pt(R.wrapper_ms);ye!=null&&b.push(ye),w+=fe(R.store_open_count);let zt=pt(R.store_elapsed_ms);zt!=null&&(E+=zt,v++)}let O=new Map,F=new Map,ge=[],Ae=null;for(let R of u){let I=P(R.degradation_reason)||P(R.reason)||"unknown",Je=P(R.wrapper_family)||le(P(R.command));O.set(I,(O.get(I)??0)+1),F.set(Je,(F.get(Je)??0)+1);let xt=$t(R);ge.push({timestamp:xt,family:Je,command:P(R.command)||"unknown",reason:I,exit_code:pt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!Ae||xt>Ae.timestamp)&&(Ae={timestamp:xt,reason:I,command:P(R.command)||"unknown"})}let te=a.length+u.length,ot=c.filter(R=>R.hit===!0).length,re=pi(f,p),$r=Zb(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:f,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:[...g.entries()].sort(([R],[I])=>R.localeCompare(I)).map(([R,I])=>({date:R,tokens_saved:I})),top_commands:[...h.values()].sort((R,I)=>I.bytes_saved-R.bytes_saved||I.tokens_saved-R.tokens_saved||R.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:ot,show_misses:Math.max(0,c.length-ot),show_hit_rate:c.length===0?0:V(ot/c.length),by_reason:[...O.entries()].sort((R,I)=>I[1]-R[1]||R[0].localeCompare(I[0])).map(([R,I])=>({reason:R,count:I})),by_family:[...F.entries()].sort((R,I)=>I[1]-R[1]||R[0].localeCompare(I[0])).map(([R,I])=>({family:R,count:I})),recent_failures:ge.sort((R,I)=>I.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:Ae},latency:{wrapper_ms_p50:fr(b,.5),wrapper_ms_p95:fr(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:V(E),store_elapsed_ms_avg:v===0?null:V(E/v)},decisions:$r}}function Zb(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,fe(a.saved_units))),c!=="contributed"){let m=P(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:V(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:V(c.contributed/u)}})}}async function Ki(e,t,r=new Date){let s=(await fn(e,se)).filter(o=>pr(o)<=r.getTime()||$t(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=$t(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:cw(s)}}async function zi(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 Zl(e,i),c=a.filter(_=>P(_.event_type)!=="show"&&P(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&P(_.degradation_reason)===""),u=a.filter(_=>P(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>P(_.event_type)==="show"),m=a.filter(_=>P(_.degradation_reason)!==""),d=[...c,...m].map(pr).filter(_=>Number.isFinite(_)&&_>0),f=d.length===0?null:Math.min(...d),p=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/yw()))),g=[],h=new Map,b=new Map,w=new Map,E=new Map,v=new Map,O=new Map,F=0,ge=!1,Ae=0,te=null,ot=0,re=0;for(let _ of c){let T=$t(_),vt=T.slice(0,10),Ct=T.slice(0,16),he=le(P(_.command)),ye=Math.max(0,gr(_,"raw").tokens-gr(_,"emitted").tokens);F+=ye,ge||=_.estimated===!0&&ye>0;let zt=Math.max(0,fe(_.raw_bytes)-fe(_.emitted_bytes)),xo=pt(_.wrapper_ms);if(xo!=null){g.push(xo);let Hc=h.get(he)??[];Hc.push(xo),h.set(he,Hc)}vt&&b.set(vt,(b.get(vt)??0)+1),Ct&&w.set(Ct,(w.get(Ct)??0)+1);let vo=mw(T);vo&&E.set(vo,(E.get(vo)??0)+1);let Co=gw(T);Co&&v.set(Co,(v.get(Co)??0)+ye);let Wn=O.get(he)??{command_family:he,invocations:0,tokens_saved:0,bytes_saved:0};Wn.invocations++,Wn.tokens_saved+=ye,Wn.bytes_saved+=zt,O.set(he,Wn),_.elided===!0&&Ae++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(ot++,fe(_.store_open_count)>0&&re++),ye>0&&(!te||ye>te.tokens_saved||ye===te.tokens_saved&&zt>te.bytes_saved)&&(te={timestamp:T,command_family:he,tokens_saved:ye,bytes_saved:zt})}let $r=m.map(_=>({timestamp:$t(_),command_family:le(P(_.command)),reason:P(_.degradation_reason)||P(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),R=new Map;for(let _ of $r)R.set(_.reason,(R.get(_.reason)??0)+1);let I=nw($r),Je=rw(l),xt=ow([...O.values()],Je,I),Kt=[...w.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:p,since:o,until:s,label:`window: ${n}d, data: ${p}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:Ql(g),by_command_family:[...h.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...Ql(T)}))},throughput:{requests_per_day:[...b.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:w.size===0?null:V([...w.values()].reduce((_,T)=>_+T,0)/w.size),peak_minute:Kt?{minute:Kt[0],requests:Kt[1]}:null,hour_weekday_heatmap:fw(E)},savings:{tokens:pi(F,ge),measured_control_holdout:ew(c,u),weekly_tokens_saved:hw(v),elision_rate:c.length===0?0:V(Ae/c.length),top_commands_by_tokens_saved:[...O.values()].sort((_,T)=>T.tokens_saved-_.tokens_saved||T.bytes_saved-_.bytes_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((_,T)=>T.invocations-_.invocations||T.tokens_saved-_.tokens_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:$r,degradations_by_reason:[...R.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:ot===0?null:re,warm_hits:ot===0?null:Math.max(0,ot-re)},mining:{recovery_usage_by_family:Je,degradation_clusters:I,threshold_tuning_suggestions:xt}}}async function Zl(e,t){let r=(await fn(e,se)).filter(i=>pr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await fn(e,me)).filter(i=>pr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await fn(e,Be)).filter(i=>pr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function gr(e,t){let r=pt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=fe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function ew(e,t){let r=aw(t.map(a=>pt(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(Xl).filter(a=>a!=null),s=t.map(Xl).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:V(iw(o));return{enabled:!0,holdout_share:V(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:tw(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Xl(e){let t=gr(e,"raw").tokens;if(t<=0)return null;let r=gr(e,"emitted").tokens;return Math.max(0,t-r)/t}function tw(e,t){if(e.length<=1)return{low:V(Math.max(0,t)),high:V(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:V(Math.max(0,t-n)),high:V(Math.min(1,t+n))}}function rw(e){let t=new Map;for(let r of e){let n=le(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:V(r.show_hits/r.show_total)}))}function nw(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:sw(r)}))}function sw(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 ow(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 iw(e){return e.reduce((t,r)=>t+r,0)/e.length}function aw(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function cw(e){let t=lw();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=uw(r.storage_class)??Qe(P(r.command));t[n].records+=1;let s=fe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function uw(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function lw(){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 fn(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=>dw(n.value)).filter(n=>lr(n))}function dw(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function pr(e){let t=Date.parse($t(e));return Number.isFinite(t)?t:0}function $t(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function fr(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 V(r[n])}function Ql(e){return{wrapper_ms_p50:fr(e,.5),wrapper_ms_p90:fr(e,.9),wrapper_ms_p95:fr(e,.95),wrapper_ms_p99:fr(e,.99)}}function V(e){return Math.round(e*100)/100}function mw(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${pw(t.getUTCDay())}:${t.getUTCHours()}`:null}function fw(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 pw(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function gw(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 hw(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:V((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function yw(){return 24*60*60*1e3}var ed=y(()=>{"use strict";rn();Ze();gi();ws();Hi()});var pn={};j(pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Be,RSP_TELEMETRY_INDEX_COLLECTION:()=>dn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>me,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Fi,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>ji,RSP_TELEMETRY_SPOOL_FILE:()=>Bi,appendTelemetryEvent:()=>tt,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Vi,parseTelemetryEvent:()=>mr,readAccountingLaneStats:()=>Ki,readTelemetryGainsReport:()=>zi,readTelemetryStats:()=>Ss,takeTelemetrySpool:()=>Gb,telemetryLegacySpoolPath:()=>Rs,telemetrySpoolCorrectionsPath:()=>qi,telemetrySpoolPath:()=>et});var Te=y(()=>{"use strict";ws();Yl();ed()});function sa(e){return e==="success"?0:e==="failure"?1:2}function oa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function rt(e,t,r){return{status:e,exitCode:sa(e),summary:t,...r?{details:r}:{}}}function K(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var rd,nd,sd,ra,od,id,ad,cd,na,Mt=y(()=>{"use strict";rd="rsp.wait.result",nd="rsp.wait.registry",sd="rsp.wait.list",ra={cmd:18e5,pr:27e5,run:27e5,release:72e5},od=16*1024,id=1e4,ad=2e3,cd=6e4,na={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 Sw,readFile as Ew}from"node:fs/promises";async function br(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=>!Bt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ud(e,"SIGTERM"),xs(n,"SIGTERM"),await ld(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await vs(r)])];ud(e,"SIGKILL"),xs(o,"SIGKILL");let i=Math.max(1e3,t);await xw(e,i);let a=await ld(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Bt)}}function ud(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 xw(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 ld(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Bt(n)))return!0;await vw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Bt(n))}async function vs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await Sw("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await dd(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function gn(e){return(await dd(e))?.[19]}async function wr(e,t){if(!Bt(e))return!1;if(!t)return!0;let r=await gn(e);return r===void 0?process.platform!=="linux":r===t}function Bt(e){try{return process.kill(e,0),!0}catch{return!1}}async function dd(e){if(process.platform!=="linux")return null;try{let t=await Ew(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function vw(e){await new Promise(t=>setTimeout(t,e))}var nt=y(()=>{"use strict"});import{constants as Cw}from"node:os";async function md(e){let t=e[1],r={timeoutMs:ra.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:id,terminateGraceMs:ad,probeTimeoutMs:cd,format:"toon",captureBytes:od},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=ra[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=hn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Ow(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=hn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=hn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=hn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Pw(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 Tw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Tw(e){if(!(e.signal in Cw.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(!Bt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await gn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function hn(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function yn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return hn(n)}catch{return t}}function Pw(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Ow(e){return e.startsWith("SIG")?e:`SIG${e}`}var fd=y(()=>{"use strict";Mt();nt()});import{existsSync as ia,readFileSync as Aw,statSync as Iw}from"node:fs";import{basename as pd,dirname as Cs,isAbsolute as Lw,join as gd,resolve as bn}from"node:path";function Ts(e,t=process.env){let r=bn(e);if(Jo.map(i=>t[i]).find(Boolean))return Su({startDir:r,env:t,exists:ia});let s=Nw(r),o=Dw(r,s);return o||(s??r)}function Dw(e,t){let r=e;for(;;){if(ia(gd(r,".red")))return r;if(t&&r===t)return null;let n=bn(r,"..");if(n===r)return null;r=n}}function Nw(e){let t=e;for(;;){let r=gd(t,".git");if(ia(r))return Bw(r)?t:$w(r)??t;let n=bn(t,"..");if(n===t)return null;t=n}}function $w(e){let t=Mw(e);if(!t)return null;let r=Cs(t),n=Cs(r);return pd(r)!=="worktrees"||pd(n)!==".git"?null:Cs(n)}function Mw(e){let t;try{t=Aw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Lw(n)?bn(n):bn(Cs(e),n)}function Bw(e){try{return Iw(e).isDirectory()}catch{return!1}}var aa=y(()=>{ke()});import{join as Fw}from"node:path";function Hw(e,t=process.env){return Ts(e,t)}function _r(e,t=process.env){return Ru(Hw(e,t))}function hd(e,t=process.env){return Fw(_r(e,t),jw)}var jw,ca=y(()=>{"use strict";ke();aa();jw="spool"});import{randomUUID as Gw}from"node:crypto";import{existsSync as Ww}from"node:fs";import{mkdir as Uw,readdir as Jw,readFile as qw,rename as Vw,rm as ua,writeFile as Kw}from"node:fs/promises";import{dirname as zw,join as bd}from"node:path";function wd(e,t,r=process.env){return bd(_r(e,r),`${t}${Yw}`)}async function kr(e,t){await la(e,`${H(t)}
49
+ `)}async function Ps(e,t,r){t.status=r,await kr(e,t)}async function Os(e,t=process.env){let r=_r(e,t);if(!Ww(r))return[];let n=await Jw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Xw.some(a=>i.endsWith(a)))){let i=bd(r,o),a=await Qw(i);if(!a){await ua(i,{force:!0});continue}if(!await Zw(a)){await ua(i,{force:!0});continue}s.push(a)}return s}async function Qw(e){let t;try{t=await qw(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=e_(r);return n&&Object.keys(n).length>0?n:null}async function Zw(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await wr(t,r)}function e_(e){try{let t=N(e);if(yd(t))return t}catch{}try{let t=JSON.parse(e);if(yd(t))return t}catch{}return null}async function la(e,t){await Uw(zw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Gw()}`;try{await Kw(r,t,"utf8"),await Vw(r,e)}finally{await ua(r,{force:!0})}}function da(e){return{schema:nd,version:1,...e}}function yd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yw,Xw,_n=y(()=>{"use strict";D();$e();Mt();ca();nt();Yw=".toon",Xw=[".toon",".json"]});function Rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fe(e){return Rr(e)?e:{}}function Ft(e){return Array.isArray(e)?e.filter(Rr):[]}function z(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function ma(e){let t=JSON.parse(e);if(!Rr(t))throw new Error("expected JSON object");return t}function As(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Is=y(()=>{"use strict"});import{spawn as t_}from"node:child_process";import{resolve as r_}from"node:path";async function _d(e,t,r){let n=[];if(e.signalPid){let s=await n_(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await s_(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function n_(e){let t=e.signalPid;if(!await wr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:kd(r),pid:t,signal:e.signal}}}async function s_(e,t,r){let n=Fe(t.wait),s=Fe(t.verdict);return await o_(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?r_(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 o_(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=t_(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(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:kd(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 kd(e){return e instanceof Error?e.message:String(e)}var Rd=y(()=>{"use strict";Is();nt()});import{resolve as i_}from"node:path";async function Sd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=a_(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=kn(t,r,o,{status:"pending"},i);await Rn(n.resultFile,a,n.format);let c=await _d(n,a,s),u=kn(t,r,o,c,i);return await Rn(n.resultFile,u,n.format),{result:u,exitCode:Ed(o,c)}}function Ed(e,t){return t.status!=="success"||e.status==="running"?2:sa(e.status)}function a_(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function kn(e,t,r,n,s){return{schema:rd,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:Ed(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function Rn(e,t,r){e&&await la(i_(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
50
50
  `:`${H(e)}
51
- `}var bd=y(()=>{"use strict";Ne();Dt();mn();gd()});import{createWriteStream as n_,mkdirSync as s_}from"node:fs";import{readFile as o_,rm as i_}from"node:fs/promises";import{dirname as a_}from"node:path";import{join as wd}from"node:path";function _d(e,t,r){return{stdout:new vs(r,wd(e,`${t}.stdout.bin`)),stderr:new vs(r,wd(e,`${t}.stderr.bin`))}}function c_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!u_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function u_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var vs,Rd=y(()=>{"use strict";vs=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,...c_(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 o_(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{s_(a_(this.spoolPath),{recursive:!0}),t=n_(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 i_(this.spoolPath,{force:!0}).catch(()=>{})}}});function kd(e,t=process.env){return{async mint(r,n){let s=xe(e,t),o=await mt.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget});try{return await o.mint(r,n)}finally{await o.close()}}}}var Sd=y(()=>{"use strict";ve();Qe()});import{spawn as l_}from"node:child_process";async function xd(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:V("missing command line")};let a=e.store??kd(n),c=_d(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async b=>{l||(l=!0,i.removeEventListener("abort",f),await ks(s,o,b.verdict.status).catch(()=>{}),u(b))},p=l_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",b=>c.stdout.write(Buffer.from(b))),p.stderr?.on("data",b=>c.stderr.write(Buffer.from(b)));let h=async(b,w)=>{if(l||m)return;m=!0,clearTimeout(g);let E=await fr(p,r.terminateGraceMs),v=await Ed(null,null,c,a,t);await d({verdict:{status:b,exitCode:2,summary:w,details:v},cleanupProven:E.cleaned,survivors:E.survivors})},f=()=>void h("indeterminate","command interrupted");i.addEventListener("abort",f,{once:!0});let g=setTimeout(()=>{h("timeout",`command timed out after ${vd(r.timeoutMs)}`)},r.timeoutMs);p.once("error",b=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:b.message}})}),p.once("close",(b,w)=>{if(clearTimeout(g),l||m)return;let E=b===0;Ed(b,w,c,a,t).then(v=>d({verdict:{status:E?"success":"failure",exitCode:E?0:1,summary:E?"command exited successfully":`command exited with ${w??b??"unknown"}`,details:v}}))}),i.aborted&&f()})}async function Cs(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(f){l=V(f instanceof Error?f.message:String(f))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=ua(l),await yr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await ks(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())),h=e.makeWakeSignal?.();await m_(p,i,h)}return await ks(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${vd(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:ua(u)}:{attempts:c}}}}async function Ed(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 ua(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function d_(e,t,r){return V("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:ua(e)}:{}})}async function m_(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 vd(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Cd=y(()=>{"use strict";Rd();Sd();Dt();rt();mn()});var Ad={};j(Ad,{readGhConditionalJson:()=>oe});import{spawn as p_}from"node:child_process";import{createHash as f_,randomUUID as g_}from"node:crypto";import{mkdir as h_,readFile as y_,rename as b_,writeFile as w_}from"node:fs/promises";import{dirname as __,join as Td}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=S_(e.path,e.params),s=E_(n),o=await C_(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[m,d]of Od(e.params))a.push("-f",`${m}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await x_(a,t,e.env,e.signal),u=v_(c.stdout);if(u.statusCode===304&&!!i)return await la(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 m=u.headers.get("etag");return m&&(o.entries[s]={key:s,request:n,etag:m,body:u.body,updated_at:new Date().toISOString()},await T_(r,o)),await la(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:m??void 0,quotaFree:!1}}return await la(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Od(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function S_(e,t){return JSON.stringify({method:"GET",path:e,params:Od(t)})}function E_(e){return f_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function x_(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=m=>{o||(o=!0,n?.removeEventListener("abort",c),s(m))},a=p_("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",m=>u.push(Buffer.from(m))),a.stderr.on("data",m=>l.push(Buffer.from(m))),a.once("error",m=>i({status:1,stdout:"",stderr:m.message})),a.once("close",m=>{i({status:m??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function v_(e){let t=e.replace(/\r\n/g,`
51
+ `}var xd=y(()=>{"use strict";$e();Mt();_n();Rd()});import{createWriteStream as c_,mkdirSync as u_}from"node:fs";import{readFile as l_,rm as d_}from"node:fs/promises";import{dirname as m_}from"node:path";import{join as vd}from"node:path";function Cd(e,t,r){return{stdout:new Ls(r,vd(e,`${t}.stdout.bin`)),stderr:new Ls(r,vd(e,`${t}.stderr.bin`))}}function f_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!p_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function p_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ls,Td=y(()=>{"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,...f_(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 l_(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{u_(m_(this.spoolPath),{recursive:!0}),t=c_(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 d_(this.spoolPath,{force:!0}).catch(()=>{})}}});function Pd(e,t=process.env){return{async mint(r,n){let s=ve(e,t),o=await ft.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget});try{return await o.mint(r,n)}finally{await o.close()}}}}var Od=y(()=>{"use strict";Ce();Ze()});import{spawn as g_}from"node:child_process";async function Id(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:K("missing command line")};let a=e.store??Pd(n),c=Cd(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async b=>{l||(l=!0,i.removeEventListener("abort",g),await Ps(s,o,b.verdict.status).catch(()=>{}),u(b))},f=g_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",b=>c.stdout.write(Buffer.from(b))),f.stderr?.on("data",b=>c.stderr.write(Buffer.from(b)));let p=async(b,w)=>{if(l||m)return;m=!0,clearTimeout(h);let E=await br(f,r.terminateGraceMs),v=await Ad(null,null,c,a,t);await d({verdict:{status:b,exitCode:2,summary:w,details:v},cleanupProven:E.cleaned,survivors:E.survivors})},g=()=>void p("indeterminate","command interrupted");i.addEventListener("abort",g,{once:!0});let h=setTimeout(()=>{p("timeout",`command timed out after ${Ld(r.timeoutMs)}`)},r.timeoutMs);f.once("error",b=>{clearTimeout(h),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:b.message}})}),f.once("close",(b,w)=>{if(clearTimeout(h),l||m)return;let E=b===0;Ad(b,w,c,a,t).then(v=>d({verdict:{status:E?"success":"failure",exitCode:E?0:1,summary:E?"command exited successfully":`command exited with ${w??b??"unknown"}`,details:v}}))}),i.aborted&&g()})}async function Ds(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:h_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(g){l=K(g instanceof Error?g.message:String(g))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=fa(l),await kr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Ps(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),f=Math.min(m+d,Math.max(0,a-Date.now())),p=e.makeWakeSignal?.();await y_(f,i,p)}return await Ps(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Ld(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:fa(u)}:{attempts:c}}}}async function Ad(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 fa(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function h_(e,t,r){return K("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:fa(e)}:{}})}async function y_(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 Ld(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Dd=y(()=>{"use strict";Td();Od();Mt();nt();_n()});var Bd={};j(Bd,{readGhConditionalJson:()=>oe});import{spawn as b_}from"node:child_process";import{createHash as w_,randomUUID as __}from"node:crypto";import{mkdir as k_,readFile as R_,rename as S_,writeFile as E_}from"node:fs/promises";import{dirname as x_,join as Nd}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=T_(e.path,e.params),s=P_(n),o=await I_(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[m,d]of $d(e.params))a.push("-f",`${m}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await O_(a,t,e.env,e.signal),u=A_(c.stdout);if(u.statusCode===304&&!!i)return await pa(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 m=u.headers.get("etag");return m&&(o.entries[s]={key:s,request:n,etag:m,body:u.body,updated_at:new Date().toISOString()},await L_(r,o)),await pa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:m??void 0,quotaFree:!1}}return await pa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function $d(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function T_(e,t){return JSON.stringify({method:"GET",path:e,params:$d(t)})}function P_(e){return w_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function O_(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=m=>{o||(o=!0,n?.removeEventListener("abort",c),s(m))},a=b_("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",m=>u.push(Buffer.from(m))),a.stderr.on("data",m=>l.push(Buffer.from(m))),a.once("error",m=>i({status:1,stdout:"",stderr:m.message})),a.once("close",m=>{i({status:m??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function A_(e){let t=e.replace(/\r\n/g,`
52
52
  `),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(`
53
53
 
54
54
  `,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
55
- `)){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){for(let t of[Pd(e),O_(e)])try{let r=P_(await y_(t,"utf8"));if(A_(r))return r}catch{}return{version:1,entries:{}}}async function T_(e,t){let r=Pd(e);await h_(__(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await w_(n,`${C(t)}
56
- `,{encoding:"utf8",mode:384}),await b_(n,r)}function Pd(e){return Td(Y(e),R_)}function O_(e){return Td(Y(e),k_)}function P_(e){try{return JSON.parse(e)}catch{return N(e)}}async function la(e,t,r){await et(e,{collection:q,id:g_(),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 A_(e){return da(e)&&e.version===1&&da(e.entries)&&Object.values(e.entries).every(I_)}function I_(e){return da(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function da(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var R_,k_,Ts=y(()=>{"use strict";_e();D();Ce();R_="gh-etag-cache.toon",k_="gh-etag-cache.json"});import{spawn as L_}from"node:child_process";async function gn(e,t){return await D_(t,async r=>{let n=await $_(e,t.cwd,r);return n||await N_(e,t.cwd,r)})}async function D_(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 N_(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=L_("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&ws(l).then(m=>bs(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 $_(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await M_(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:wr(s,"database_id")||wr(s,"id"),status:K(s,"status").toUpperCase(),conclusion:K(s,"conclusion").toUpperCase(),workflowName:K(s,"workflow_name")||K(s,"name"),headBranch:K(s,"head_branch"),url:K(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Es(e,"--branch"),s=Es(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=$t(Be(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:wr(a,"database_id")||wr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Es(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=$t(JSON.parse(s.stdout)).map(i=>({tagName:K(i,"tag_name"),publishedAt:K(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function M_(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=K(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?$t(Be(JSON.parse(i.stdout)).statuses):[],u=a.status===0?$t(Be(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
57
- `),stdout:JSON.stringify({number:wr(s,"number"),state:K(s,"state").toUpperCase(),mergeable:B_(s),statusCheckRollup:[...c.map(l=>({conclusion:K(l,"state").toUpperCase()})),...u.map(l=>({status:K(l,"status").toUpperCase(),conclusion:K(l,"conclusion").toUpperCase()}))],url:K(s,"html_url")})}}function B_(e){let t=K(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Id=y(()=>{"use strict";Ts();xs();rt()});function Dd(e,t,r){let n=Date.now();return()=>F_(e,t,r,n)}async function F_(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return V("missing PR number");let s=await gn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return V(s.stderr||"gh pr view failed");let o=ca(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(j_),u=c.filter(m=>m==="failure").length,l=c.filter(m=>m==="pending").length;if(String(o.state)!=="OPEN")return tt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return tt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return tt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return pr(`PR #${e} has ${l} pending checks`);if(i.length===0){let m=Date.now()-n;return a==="UNKNOWN"||m<r.emptyChecksGraceMs?pr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:m}):tt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?pr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):tt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Nd(e,t){if(!e)return V("missing run id");let r=await gn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return V(r.stderr||"gh run view failed");let n=ca(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?pr(`run ${e} is ${s||"pending"}`):o==="success"?tt("success",`run ${e} succeeded`,Ld(n)):tt("failure",`run ${e} concluded ${o||"unknown"}`,Ld(n))}async function $d(e,t){let r=await gn(["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 br(s)&&s.databaseId!=null?String(s.databaseId):""}async function Md(e,t,r){let n=await gn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return V(n.stderr||"gh release list failed");let o=$t(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||H_(e,a))&&c>=t});return o?tt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):pr("no matching release is published yet")}function j_(e){let t=br(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 Ld(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 H_(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Bd=y(()=>{"use strict";Dt();Id();xs()});function hn(){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(`
58
- `)}var ma=y(()=>{"use strict"});var Fd=y(()=>{"use strict";D()});var jd=y(()=>{"use strict"});function G_(e){return Object.keys(e)}function Rr(e){return{...e,fields:G_(e.fields)}}var Hd,Gd,Wd,W_,U_,J_,Ud,pa=y(()=>{"use strict";Hd="red.castle.lane.v1",Gd="red.castle.state.v1",Wd="red.castle.history.v1",W_="red.castle.validation.v2",U_="red.castle.envelope.v1",J_="red.castle.hitl-card.v1",Ud=[Rr({schemaId:Hd,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}}),Rr({schemaId:Gd,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}}),Rr({schemaId:Wd,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}}),Rr({schemaId:W_,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}}),Rr({schemaId:U_,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}}),Rr({schemaId:J_,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 XP,Os=y(()=>{"use strict";D();pa();XP=new Map(Ud.map(e=>[e.schemaId,new Set(e.fields)]))});var Jd=y(()=>{"use strict";jd();Os()});var qd=y(()=>{"use strict"});var Ps=y(()=>{"use strict"});var fa=y(()=>{"use strict";Ps()});var As=y(()=>{"use strict"});import{appendFile as K_,mkdir as z_,readFile as Y_}from"node:fs/promises";import{dirname as X_,join as Q_}from"node:path";function ga(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Vd(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:ga(t.at,"at"),singleton:ga(t.singleton,"singleton"),kind:ga(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function Z_(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function eR(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function tR(e){return Q_(e.castleStateRoot,"singleton-events.toonl")}function ha(e,t={}){let r=t.fs??{appendFile:K_,mkdir:z_,readFile:Y_},n=t.clock??(()=>new Date().toISOString()),s=tR(e);return{path:s,async append(o){let i=Vd({at:o.at??n(),...o});return await r.mkdir(X_(s),{recursive:!0}),await r.appendFile(s,it().push(Z_(i)),"utf8"),i},async read(o={}){eR(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=ot(i).map(Vd);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var ya=y(()=>{"use strict";D()});var Is=y(()=>{"use strict";D();As();ya()});var Kd=y(()=>{"use strict";Ps();fa();Is()});var zd=y(()=>{"use strict"});var NA,Yd=y(()=>{"use strict";D();NA=24*60*60*1e3});var Xd=y(()=>{"use strict";Os()});var FA,jA,Qd=y(()=>{"use strict";FA=15*6e4,jA=30*6e4});var Zd=y(()=>{"use strict"});var nR,sR,WA,UA,em=y(()=>{"use strict";nR=["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"],sR={pre_worktree:["cargo","gradle"]},WA=Object.values(sR).flat(),UA=new Set(nR)});var tm=y(()=>{"use strict"});var rm=y(()=>{"use strict";Is()});var nm=y(()=>{"use strict"});var sm=y(()=>{"use strict"});var om=y(()=>{"use strict";D()});var im=y(()=>{"use strict";D()});var am=y(()=>{"use strict";D()});var ba=y(()=>{"use strict"});var wa=y(()=>{"use strict"});import{resolve as J}from"node:path";function cm(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"),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 um=y(()=>{"use strict"});var lm=y(()=>{"use strict";As()});var dm=y(()=>{"use strict"});var mm=y(()=>{"use strict";ba();wa()});import{mkdir as oR,readFile as iR,rename as aR,rm as cR,writeFile as uR}from"node:fs/promises";import{dirname as lR,join as dR}from"node:path";function pR(e){if(!mR.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function fR(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function gR(e){return e.code==="ENOENT"}function hR(e){return e.code==="EEXIST"}function yR(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 _a(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ls(e,t){return pR(t),dR(e.castleStateRoot,"singletons",t,"lease.toon")}function pm(e,t={}){let r=t.fs??{mkdir:oR,readFile:iR,rename:aR,rm:cR,writeFile:uR},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??fR;async function o(a){try{return yR(N(await r.readFile(a,"utf8")))}catch(c){if(gR(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(Ls(e,a))},async acquire(a,c){let u=Ls(e,a);await r.mkdir(lR(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(h){if(!hR(h))throw h}let p=await o(u);if(p){if(_a(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=Ls(e,a),l=await o(u);if(!l||!_a(l,c))throw new Ds(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=Ls(e,a),l=await o(u);if(!l)return!1;if(!_a(l,c))throw new Ds(a);return await r.rm(u,{force:!0}),!0}}}var Ds,mR,fm=y(()=>{"use strict";D();Ds=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},mR=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Ra=y(()=>{"use strict"});var gm=y(()=>{"use strict"});var bR,wR,_R,EI,hm=y(()=>{"use strict";bR={refreshCadenceS:270,tolerance:3},wR=270,_R=2700,EI={...bR,claimGraceS:wR,recentCommitProtectionS:_R}});var ym=y(()=>{"use strict"});import{execFile as ER}from"node:child_process";import{promisify as xR}from"node:util";var OI,bm=y(()=>{"use strict";Ra();OI=xR(ER)});var wm=y(()=>{"use strict";Fd();Jd();qd();Ps();Kd();zd();Yd();Xd();Os();Qd();Zd();em();tm();fa();rm();nm();sm();om();Is();im();am();pa();ba();wa();um();lm();dm();mm();As();ya();fm();Ra();gm();hm();ym();bm()});import{EventEmitter as vR}from"node:events";import{spawn as CR}from"node:child_process";function $s(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 Ms(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var yn,ka,TR,OR,PR,AR,Ns,Sa=y(()=>{yn="github-webhook",ka="github.webhook.delivery";TR="pull_request,pull_request_review,check_run,check_suite,workflow_run",OR=3,PR=1e3,AR=/no extension matched|unknown command|command not found/i,Ns=class extends vR{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,PR).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?$s(c,n):Ms(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=CR(r,["webhook","forward",`--events=${TR}`],{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(`
59
- `))>=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");AR.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>=OR)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Bs,_m=y(()=>{"use strict";Sa();Sa();rt();Bs=class extends Ns{constructor(t){super(t,fr)}}});import{EventEmitter as IR}from"node:events";import{join as LR}from"node:path";function xa(e){let t=Rs(e.cwd),r=cm(LR(t,".red"));return new Ea({...e,leases:e.leases??pm(r),lane:e.lane??ha(r),makeForwarder:e.makeForwarder??((n,s)=>new Bs({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>gr(n.pid,n.start_time))})}var Ea,Rm=y(()=>{"use strict";wm();_m();rt();na();Ea=class extends IR{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(yn).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"?$s(a,n):Ms(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===yn&&o.kind===ka&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(yn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var va={};j(va,{listWaits:()=>Ss,renderWaitHelp:()=>hn,runWait:()=>$R});import{randomUUID as km}from"node:crypto";import{mkdir as DR,rm as NR}from"node:fs/promises";async function $R(e,t=process.cwd()){let r;try{r=await od(e)}catch(n){return await HR(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(hn()),0;if(r.kind==="ls"){let n={schema:Xl,version:1,waits:await Ss(t)};return process.stdout.write(_r(n,r.options.format)),0}return ta(r.kind)?await MR({...r,kind:r.kind},t):(process.stdout.write(hn()),2)}async function MR(e,t){let r=e.kind,n=aa({id:km(),kind:r,target:jR(e),reason:e.options.reason,pid:process.pid,pid_start_time:await an(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Zi[r],status:"running",attempts:0}),s=md(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 DR(hr(t),{recursive:!0}),await yr(s,n);let l=await BR(e,t,s,n,o.signal);i&&(l={...l,verdict:V(`wait interrupted by ${i}`,l.verdict.details)});let m=await hd({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(_r(m.result,e.options.format)),m.exitCode}catch(l){let m=V(l instanceof Error?l.message:String(l)),d=pn(r,n,m,{status:"success"},new Date().toISOString());return await fn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(_r(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await NR(s,{force:!0}).catch(()=>{})}}async function BR(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await xd({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:ud(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:V("missing PR number")};n.webhook_mode="polling";let a=xa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Cs({probe:Dd(i,o,{emptyChecksGraceMs:un("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:un("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 FR(e,o,r,n);if(!i.ok)return{verdict:V(i.reason)};n.webhook_mode="polling";let a=xa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Cs({probe:()=>Nd(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:un("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 Cs({probe:()=>Md(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:un("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function FR(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 $d(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await yr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function jR(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 HR(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=ta(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=aa({id:km(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Zi[o],status:"indeterminate",attempts:0}),c=pn(o,a,V(t instanceof Error?t.message:String(t)),{status:"success"},i);return await fn(s,c,r).catch(()=>{}),process.stdout.write(_r(c,r)),2}var Ca=y(()=>{"use strict";id();bd();Cd();Dt();sa();Bd();rt();mn();ma();Rm();mn();ma()});var js={};j(js,{parseProxyCommandLine:()=>Tm,rewriteProxyCommandLine:()=>Cm,runProxy:()=>VR});import{spawn as qR}from"node:child_process";async function VR(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=Tm(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Cm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await KR(t.telemetryRoot,r,c),await xm(r);throw c}for(let c of s)await zR(t.telemetryRoot,c);let i=await xm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await et(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 Cm(e,t="lossless"){let r=tk(e),n=[];return{commandLine:r.map((o,i)=>{if(o.kind==="operator"||ek(r,i)==="|")return o.text;let a=YR(o.text,t);return a?(n.push(a.match),a.text):o.text}).join(""),matches:n}}function Tm(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 KR(e,t,r){await et(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Oa(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function zR(e,t){await et(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 xm(e){let t=qR(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
60
- `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function YR(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let o=nk(s);if(!o)return null;let i=ZR(o);if(i>=o.length)return null;let a=o.slice(i),c=a.map(p=>p.value);if(Fs(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Oa(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=XR(a);if(!u)return null;let l=o.slice(0,i).map(p=>p.raw),m=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...m,...u.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Oa(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function XR(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}:QR(t,r)}function QR(e,t){return e[0]==="cat"&&e.length===2&&Ta(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ta(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])&&Ta(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ta(e){return!!e&&!e.startsWith("-")}function ZR(e){let t=0;for(;t<e.length&&vm(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&vm(e[t].value);)t+=1;return t}function ek(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function tk(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=rk(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 rk(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 nk(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)}function Oa(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Fs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Fs(t)&&t[1]?`gh ${t[1]} json-jq`:Fs(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 Fs(e){return e[0]==="gh"&&e.some(sk)}function sk(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function vm(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Hs=y(()=>{"use strict";Ce()});function Am(e,t={}){let r=ok(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=Pa(o),u=Pa(i),l=Pa(a),m=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!m.some(p=>dk(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:Aa(d.length,c)+Aa(d.tokens.length,u)+Aa(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+uk(d.tokens,n,r.length)+lk(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 ok(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(Om(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(Om(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Om(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:ik(n),tokens:ak(n),numbers:ck(n),length:n.length}}function ik(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 ak(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function ck(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function uk(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 lk(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Pa(e){let t=Pm(e),r=Pm(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Aa(e,t){return Math.abs(e-t.median)/t.mad}function Pm(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 dk(e,t,r,n){return e<n&&r<t}var Im=y(()=>{"use strict"});var Ia={};j(Ia,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,GIT_LOG_MACHINE_FIELDS:()=>Dm,StructuredUsageError:()=>Gs,cleanStatusPayload:()=>Bm,recoveryInstruction:()=>Te,renderGitContract:()=>Nm,runGitWrapper:()=>pk});import{spawn as mk}from"node:child_process";async function pk(e,t){let r=$m(e),n=Mm(r.argv),s=await yk(n,r.argv.slice(1));return Nm(e,s,t)}async function Nm(e,t,r){let n=$m(e);if((t.status??0)!==0||t.signal){let m=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let s=Mm(n.argv),o;try{o=bk(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof Ws)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(fk(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=$k(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 ${Te(u)}
55
+ `)){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 I_(e){for(let t of[Md(e),D_(e)])try{let r=N_(await R_(t,"utf8"));if($_(r))return r}catch{}return{version:1,entries:{}}}async function L_(e,t){let r=Md(e);await k_(x_(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await E_(n,`${C(t)}
56
+ `,{encoding:"utf8",mode:384}),await S_(n,r)}function Md(e){return Nd(X(e),v_)}function D_(e){return Nd(X(e),C_)}function N_(e){try{return JSON.parse(e)}catch{return N(e)}}async function pa(e,t,r){await tt(e,{collection:q,id:__(),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 $_(e){return ga(e)&&e.version===1&&ga(e.entries)&&Object.values(e.entries).every(M_)}function M_(e){return ga(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function ga(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var v_,C_,Ns=y(()=>{"use strict";ke();D();Te();v_="gh-etag-cache.toon",C_="gh-etag-cache.json"});import{spawn as B_}from"node:child_process";async function Sn(e,t){return await F_(t,async r=>{let n=await H_(e,t.cwd,r);return n||await j_(e,t.cwd,r)})}async function F_(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 j_(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=B_("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 H_(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await G_(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=Fe(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Sr(s,"database_id")||Sr(s,"id"),status:z(s,"status").toUpperCase(),conclusion:z(s,"conclusion").toUpperCase(),workflowName:z(s,"workflow_name")||z(s,"name"),headBranch:z(s,"head_branch"),url:z(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=As(e,"--branch"),s=As(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=Ft(Fe(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Sr(a,"database_id")||Sr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=As(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=Ft(JSON.parse(s.stdout)).map(i=>({tagName:z(i,"tag_name"),publishedAt:z(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function G_(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=Fe(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=z(Fe(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?Ft(Fe(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Ft(Fe(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
57
+ `),stdout:JSON.stringify({number:Sr(s,"number"),state:z(s,"state").toUpperCase(),mergeable:W_(s),statusCheckRollup:[...c.map(l=>({conclusion:z(l,"state").toUpperCase()})),...u.map(l=>({status:z(l,"status").toUpperCase(),conclusion:z(l,"conclusion").toUpperCase()}))],url:z(s,"html_url")})}}function W_(e){let t=z(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Fd=y(()=>{"use strict";Ns();Is();nt()});function Hd(e,t,r){let n=Date.now();return()=>U_(e,t,r,n)}async function U_(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return K("missing PR number");let s=await Sn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return K(s.stderr||"gh pr view failed");let o=ma(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(J_),u=c.filter(m=>m==="failure").length,l=c.filter(m=>m==="pending").length;if(String(o.state)!=="OPEN")return rt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return rt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return rt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return yr(`PR #${e} has ${l} pending checks`);if(i.length===0){let m=Date.now()-n;return a==="UNKNOWN"||m<r.emptyChecksGraceMs?yr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:m}):rt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?yr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):rt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Gd(e,t){if(!e)return K("missing run id");let r=await Sn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return K(r.stderr||"gh run view failed");let n=ma(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?yr(`run ${e} is ${s||"pending"}`):o==="success"?rt("success",`run ${e} succeeded`,jd(n)):rt("failure",`run ${e} concluded ${o||"unknown"}`,jd(n))}async function Wd(e,t){let r=await Sn(["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 Rr(s)&&s.databaseId!=null?String(s.databaseId):""}async function Ud(e,t,r){let n=await Sn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return K(n.stderr||"gh release list failed");let o=Ft(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||q_(e,a))&&c>=t});return o?rt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):yr("no matching release is published yet")}function J_(e){let t=Rr(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 jd(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 q_(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Jd=y(()=>{"use strict";Mt();Fd();Is()});function En(){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(`
58
+ `)}var ha=y(()=>{"use strict"});var qd=y(()=>{"use strict";D()});var Vd=y(()=>{"use strict"});function V_(e){return Object.keys(e)}function xr(e){return{...e,fields:V_(e.fields)}}var Kd,zd,Yd,K_,z_,Y_,Xd,ya=y(()=>{"use strict";Kd="red.castle.lane.v1",zd="red.castle.state.v1",Yd="red.castle.history.v1",K_="red.castle.validation.v2",z_="red.castle.envelope.v1",Y_="red.castle.hitl-card.v1",Xd=[xr({schemaId:Kd,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}}),xr({schemaId:zd,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}}),xr({schemaId:Yd,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}}),xr({schemaId:K_,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}}),xr({schemaId:z_,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}}),xr({schemaId:Y_,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 pA,$s=y(()=>{"use strict";D();ya();pA=new Map(Xd.map(e=>[e.schemaId,new Set(e.fields)]))});var Qd=y(()=>{"use strict";Vd();$s()});var Zd=y(()=>{"use strict"});var Ms=y(()=>{"use strict"});var ba=y(()=>{"use strict";Ms()});var Bs=y(()=>{"use strict"});import{appendFile as Z_,mkdir as ek,readFile as tk}from"node:fs/promises";import{dirname as rk,join as nk}from"node:path";function wa(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function em(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:wa(t.at,"at"),singleton:wa(t.singleton,"singleton"),kind:wa(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function sk(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function ok(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function ik(e){return nk(e.castleStateRoot,"singleton-events.toonl")}function _a(e,t={}){let r=t.fs??{appendFile:Z_,mkdir:ek,readFile:tk},n=t.clock??(()=>new Date().toISOString()),s=ik(e);return{path:s,async append(o){let i=em({at:o.at??n(),...o});return await r.mkdir(rk(s),{recursive:!0}),await r.appendFile(s,at().push(sk(i)),"utf8"),i},async read(o={}){ok(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=it(i).map(em);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var ka=y(()=>{"use strict";D()});var Fs=y(()=>{"use strict";D();Bs();ka()});var tm=y(()=>{"use strict";Ms();ba();Fs()});var rm=y(()=>{"use strict"});var QA,nm=y(()=>{"use strict";D();QA=24*60*60*1e3});var sm=y(()=>{"use strict";$s()});var rI,nI,om=y(()=>{"use strict";rI=15*6e4,nI=30*6e4});var im=y(()=>{"use strict"});var ck,uk,iI,aI,am=y(()=>{"use strict";ck=["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"],uk={pre_worktree:["cargo","gradle"]},iI=Object.values(uk).flat(),aI=new Set(ck)});var cm=y(()=>{"use strict"});var um=y(()=>{"use strict";Fs()});var lm=y(()=>{"use strict"});var dm=y(()=>{"use strict"});var mm=y(()=>{"use strict";D()});var Ra=y(()=>{"use strict"});var fm=y(()=>{"use strict";D();Ra()});var pm=y(()=>{"use strict";D()});var Sa=y(()=>{"use strict"});var Ea=y(()=>{"use strict"});import{resolve as J}from"node:path";function gm(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"),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 hm=y(()=>{"use strict"});var ym=y(()=>{"use strict";Bs()});var bm=y(()=>{"use strict"});var wm=y(()=>{"use strict";Sa();Ea()});import{mkdir as lk,readFile as dk,rename as mk,rm as fk,writeFile as pk}from"node:fs/promises";import{dirname as gk,join as hk}from"node:path";function bk(e){if(!yk.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function wk(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function _k(e){return e.code==="ENOENT"}function kk(e){return e.code==="EEXIST"}function Rk(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 xa(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function js(e,t){return bk(t),hk(e.castleStateRoot,"singletons",t,"lease.toon")}function _m(e,t={}){let r=t.fs??{mkdir:lk,readFile:dk,rename:mk,rm:fk,writeFile:pk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??wk;async function o(a){try{return Rk(N(await r.readFile(a,"utf8")))}catch(c){if(_k(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(js(e,a))},async acquire(a,c){let u=js(e,a);await r.mkdir(gk(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(p){if(!kk(p))throw p}let f=await o(u);if(f){if(xa(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=js(e,a),l=await o(u);if(!l||!xa(l,c))throw new Hs(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=js(e,a),l=await o(u);if(!l)return!1;if(!xa(l,c))throw new Hs(a);return await r.rm(u,{force:!0}),!0}}}var Hs,yk,km=y(()=>{"use strict";D();Hs=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},yk=/^[a-z0-9][a-z0-9._-]{0,63}$/});var va=y(()=>{"use strict"});var Rm=y(()=>{"use strict"});var Sk,Ek,xk,JI,Sm=y(()=>{"use strict";Sk={refreshCadenceS:270,tolerance:3},Ek=270,xk=2700,JI={...Sk,claimGraceS:Ek,recentCommitProtectionS:xk}});var Em=y(()=>{"use strict"});import{execFile as Pk}from"node:child_process";import{promisify as Ok}from"node:util";var YI,xm=y(()=>{"use strict";va();YI=Ok(Pk)});var vm=y(()=>{"use strict";qd();Qd();Zd();Ms();tm();rm();nm();sm();$s();om();im();am();cm();ba();um();lm();dm();mm();Fs();fm();pm();ya();Sa();Ea();hm();ym();bm();wm();Bs();Ra();ka();km();va();Rm();Sm();Em();xm()});import{EventEmitter as Ak}from"node:events";import{spawn as Ik}from"node:child_process";function Ws(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 Us(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var xn,Ca,Lk,Dk,Nk,$k,Gs,Ta=y(()=>{xn="github-webhook",Ca="github.webhook.delivery";Lk="pull_request,pull_request_review,check_run,check_suite,workflow_run",Dk=3,Nk=1e3,$k=/no extension matched|unknown command|command not found/i,Gs=class extends Ak{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,Nk).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ws(c,n):Us(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=Ik(r,["webhook","forward",`--events=${Lk}`],{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(`
59
+ `))>=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");$k.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>=Dk)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Js,Cm=y(()=>{"use strict";Ta();Ta();nt();Js=class extends Gs{constructor(t){super(t,br)}}});import{EventEmitter as Mk}from"node:events";import{join as Bk}from"node:path";function Oa(e){let t=Ts(e.cwd),r=gm(Bk(t,".red"));return new Pa({...e,leases:e.leases??_m(r),lane:e.lane??_a(r),makeForwarder:e.makeForwarder??((n,s)=>new Js({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>wr(n.pid,n.start_time))})}var Pa,Tm=y(()=>{"use strict";vm();Cm();nt();aa();Pa=class extends Mk{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(xn).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"?Ws(a,n):Us(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===xn&&o.kind===Ca&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(xn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Aa={};j(Aa,{listWaits:()=>Os,renderWaitHelp:()=>En,runWait:()=>Hk});import{randomUUID as Pm}from"node:crypto";import{mkdir as Fk,rm as jk}from"node:fs/promises";async function Hk(e,t=process.cwd()){let r;try{r=await md(e)}catch(n){return await qk(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(En()),0;if(r.kind==="ls"){let n={schema:sd,version:1,waits:await Os(t)};return process.stdout.write(Er(n,r.options.format)),0}return oa(r.kind)?await Gk({...r,kind:r.kind},t):(process.stdout.write(En()),2)}async function Gk(e,t){let r=e.kind,n=da({id:Pm(),kind:r,target:Jk(e),reason:e.options.reason,pid:process.pid,pid_start_time:await gn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:na[r],status:"running",attempts:0}),s=wd(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 Fk(_r(t),{recursive:!0}),await kr(s,n);let l=await Wk(e,t,s,n,o.signal);i&&(l={...l,verdict:K(`wait interrupted by ${i}`,l.verdict.details)});let m=await Sd({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Er(m.result,e.options.format)),m.exitCode}catch(l){let m=K(l instanceof Error?l.message:String(l)),d=kn(r,n,m,{status:"success"},new Date().toISOString());return await Rn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Er(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await jk(s,{force:!0}).catch(()=>{})}}async function Wk(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Id({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:hd(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:K("missing PR number")};n.webhook_mode="polling";let a=Oa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ds({probe:Hd(i,o,{emptyChecksGraceMs:yn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await Uk(e,o,r,n);if(!i.ok)return{verdict:K(i.reason)};n.webhook_mode="polling";let a=Oa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ds({probe:()=>Gd(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Ds({probe:()=>Ud(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:yn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Uk(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 Wd(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await kr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Jk(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 qk(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=oa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=da({id:Pm(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:na[o],status:"indeterminate",attempts:0}),c=kn(o,a,K(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Rn(s,c,r).catch(()=>{}),process.stdout.write(Er(c,r)),2}var Ia=y(()=>{"use strict";fd();xd();Dd();Mt();ca();Jd();nt();_n();ha();Tm();_n();ha()});import{existsSync as Xk}from"node:fs";import{join as Qk}from"node:path";function Zk(){for(let e of(process.env.PATH??"").split(":"))if(e&&Xk(Qk(e,"rsp")))return!0;return!1}function vn(){return Zk()?["rsp"]:[process.execPath,process.argv[1]]}var La=y(()=>{"use strict"});var qs={};j(qs,{parseProxyCommandLine:()=>Dm,rewriteProxyCommandLine:()=>Lm,runProxy:()=>rR});import{spawn as eR}from"node:child_process";function tR(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function rR(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=Dm(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Lm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await nR(t.telemetryRoot,r,c),await Im(r);throw c}for(let c of s)await sR(t.telemetryRoot,c);let i=await Im(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await tt(t.telemetryRoot,{collection:me,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 Lm(e,t="lossless",r=vn()){let n=lR(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||uR(n,a)==="|")return i.text;let c=oR(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function Dm(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 nR(e,t,r){await tt(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:le(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function sR(e,t){await tt(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 Im(e){let t=eR(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
60
+ `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function oR(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=mR(o);if(!i)return null;let a=cR(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(It(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:le(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=iR(c);if(!l)return null;let m=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],f=[...m,...r.map(tR),...d,...l.wrapperWords].join(" ");return{text:`${n}${f}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:le(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function iR(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}:aR(t,r)}function aR(e,t){return e[0]==="cat"&&e.length===2&&Da(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Da(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])&&Da(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Da(e){return!!e&&!e.startsWith("-")}function cR(e){let t=0;for(;t<e.length&&ar(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&ar(e[t].value);)t+=1;return t}function uR(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function lR(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=dR(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 dR(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 mR(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 Vs=y(()=>{"use strict";rn();La();Te()});function Mm(e,t={}){let r=fR(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let f of new Set(d.tokens))n.set(f,(n.get(f)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Na(o),u=Na(i),l=Na(a),m=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!m.some(f=>wR(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:$a(d.length,c)+$a(d.tokens.length,u)+$a(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+yR(d.tokens,n,r.length)+bR(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function fR(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(Nm(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(Nm(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Nm(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:pR(n),tokens:gR(n),numbers:hR(n),length:n.length}}function pR(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 gR(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function hR(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function yR(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 bR(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Na(e){let t=$m(e),r=$m(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function $a(e,t){return Math.abs(e-t.median)/t.mad}function $m(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 wR(e,t,r,n){return e<n&&r<t}var Bm=y(()=>{"use strict"});var Ma={};j(Ma,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Xe,GIT_LOG_MACHINE_FIELDS:()=>jm,StructuredUsageError:()=>Ks,cleanStatusPayload:()=>Um,recoveryInstruction:()=>Pe,renderGitContract:()=>Hm,runGitWrapper:()=>kR});import{spawn as _R}from"node:child_process";async function kR(e,t){let r=Gm(e),n=Wm(r.argv),s=await xR(n,r.argv.slice(1));return Hm(e,s,t)}async function Hm(e,t,r){let n=Gm(e);if((t.status??0)!==0||t.signal){let m=we(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let s=Wm(n.argv),o;try{o=vR(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof zs)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(RR(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=UR(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 ${Pe(u)}
61
61
  `;return{stdout:Buffer.from(`${C(a.payload)}
62
- ${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 Te(e){return e.startsWith("el:")?`rsp show ${e}`:e}function $m(e){let t=Tt(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 Gs(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function fk(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!gk(e)||n.level!=="lossless")return!0;let s=Nk(n.heavyGitByteThreshold,Ye);return Buffer.byteLength(t)<=s}function gk(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Mm(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 hk(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 yk(e,t){let r=mk("git",hk(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 bk(e,t,r,n){switch(e){case"status":return wk(t,r,n);case"log":return Ck(t,r,n);case"diff":return Tk(t,r,n);case"commit":return gt(Ok(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return gt(Pk(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Ak(t,r,n);case"branch":return Ik(t,r,n);case"show":return Lk(t,r,n)}}function wk(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of _k(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=Sk(u),o=!0;continue}let l=Rk(u);if(l){o=!0,s.push(l);continue}let m=kk(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return Bm(e.join(" "),n);throw new Ws("git-status-unparseable")}let a=X(s,r),c=Fm(a,"state");return gt({command:e.join(" "),branch:n,rows:a,summary:vk(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function _k(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Rk(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return bn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return bn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return bn(t.slice(10).join(" "),r)}return e.startsWith("? ")?bn(e.slice(2),"??"):null}function kk(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?bn(Ek(e.slice(3),t),t):null}function bn(e,t){let r=Lm(t[0]??"."),n=Lm(t[1]??".");return{path:xk(e),index:r,worktree:n,state:Dk(`${r}${n}`)}}function Lm(e){return e===" "?".":e}function Sk(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function Ek(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function xk(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function vk(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 Bm(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 Ck(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=X(n,r);return gt({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 Tk(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=X(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 gt({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 Ok(e,t){let r=t.split(`
63
- `)[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 Pk(e,t){let r=t.split(`
64
- `).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 Ak(e,t,r){let n=t.split(`
65
- `),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=X(s,r),a=Fm(i,"author");return gt({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 Ik(e,t,r){let n=t.split(`
66
- `).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=X(n,r),o=s.find(i=>i.current)?.name??"";return gt({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 Lk(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 w of i.split(`
67
- `)){let E=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!E)continue;let v=E[3]??"";p.push({path:(E[1]??"").trim(),changed:Number(E[2]??0),added:[...v].filter(O=>O==="+").length,deleted:[...v].filter(O=>O==="-").length,binary:v.startsWith("Bin")})}let h=X(p,r),f=0,g=0,b=0;for(let w of h)f+=typeof w.changed=="number"?w.changed:0,g+=typeof w.added=="number"?w.added:0,b+=typeof w.deleted=="number"?w.deleted:0;return gt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:m??"",body_lines:d.trim()?d.trim().split(`
68
- `).length:0,files:h,summary:`${r?`${h.length}/${p.length}`:h.length} files, ${f} changed, +${g} -${b}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function gt(e,t,r){return t?Ve(e,r):e}function Dk(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Fm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Nk(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $k(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,Gs,Ws,Mt=y(()=>{"use strict";D();ve();Fr();De();ve();Dm=["%h","%an","%as","%s"];Gs=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Bn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Ws=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var $a={};j($a,{NORMALIZATION_ALLOWLIST:()=>qm,NORMALIZE_ANSI:()=>Js,NORMALIZE_BLANK_LINES:()=>Ks,NORMALIZE_CR_PROGRESS:()=>qs,NORMALIZE_JSON_TOON:()=>Jm,NORMALIZE_TRAILING_WHITESPACE:()=>Vs,crushJsonArrayItems:()=>wn,formatCodexNormalizeDecision:()=>Xm,formatNormalizeDecision:()=>Ym,hookDecisionFromClaudePostExecJson:()=>Vm,hookDecisionFromCodexPostExecJson:()=>Km,normalizeOutput:()=>zs,renderGenericJsonLane:()=>Da,runClaudePostExecHook:()=>Fk,runCodexPostExecHook:()=>jk,transcodeJsonToToon:()=>Um});import{readFileSync as Us}from"node:fs";function Um(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 La(o,a)?i.trimEnd():e}async function Da(e,t={}){let r=Uk(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=Wm(t.minTokens,Mk),i=Wm(t.maxItems,Bk);if(!(s>i&&zk(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??wn)(n,i)}catch(f){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Yk(f)}}}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"}`,h=C(l).trimEnd();return{output:[m,p,h].filter(Boolean).join(`
69
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function wn(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=Jk(e),s=new Set;n&&e.forEach((a,c)=>{Na(a)!==n&&s.add(c)});let o=qk(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 zs(e){let t=e;for(let r of qm)t=r.apply(t);return t}async function Vm(e,t){return await zm(e,t)}async function Km(e,t){return await zm(e,t)}async function zm(e,t){let r=Wk(e),n=Xk(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Gk)(n))return{kind:"passthrough",reason:"disabled"};let o=Qk(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??zs)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Ym(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Xm(e){return{stdout:"",status:0}}async function Fk(e){let t=e?Us(e,"utf8"):Us(0,"utf8"),r=await Vm(t,{cwd:process.cwd()}),n=Ym(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function jk(e){let t=e?Us(e,"utf8"):Us(0,"utf8"),r=await Km(t,{cwd:process.cwd()}),n=Xm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Hk(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&&jm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&jm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function jm(e){return e>=32&&e<=63}function Gk(e){return xe(e,process.env).enabled}function Wk(e){try{let t=JSON.parse(e);return kr(t)?t:{}}catch{return{}}}function Uk(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return kr(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 Jk(e){let t=new Map;for(let s of e){let o=Na(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 Na(e){return Array.isArray(e)?"array":kr(e)?Object.keys(e).sort().map(t=>`${t}:${Hm(e[t])}`).join("|"):Hm(e)}function qk(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Na(s)!==t))for(let[i,a]of Qm(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 Vk(s))r.add(o);for(let o of Kk(s))r.add(o)}return r}function Vk(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=Gm(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Gm(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 Kk(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 Qm(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:kr(e)?Object.entries(e).flatMap(([r,n])=>Qm(n,t?`${t}.${r}`:r)):[]}function Hm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Gm(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 zk(e){return Math.ceil(e.length/4)}function Wm(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Yk(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 Xk(e,t){let r=e;for(let n of t){if(!kr(r))return"";r=r[n]}return typeof r=="string"?r:""}function Qk(e,t){let r=e[t];return kr(r)?r:null}function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function La(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)=>La(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)&&La(r[i],n[i]))}var Js,qs,Vs,Ks,Jm,Mk,Bk,qm,_n=y(()=>{"use strict";D();ve();Js={id:"ansi",apply:Hk},qs={id:"cr-progress",apply:e=>e.split(`
62
+ ${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 Pe(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Gm(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 Ks(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function RR(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!SR(e)||n.level!=="lossless")return!0;let s=WR(n.heavyGitByteThreshold,Xe);return Buffer.byteLength(t)<=s}function SR(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Wm(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 ER(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${jm.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 xR(e,t){let r=_R("git",ER(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 vR(e,t,r,n){switch(e){case"status":return CR(t,r,n);case"log":return NR(t,r,n);case"diff":return $R(t,r,n);case"commit":return ht(MR(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ht(BR(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return FR(t,r,n);case"branch":return jR(t,r,n);case"show":return HR(t,r,n)}}function CR(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of TR(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=AR(u),o=!0;continue}let l=PR(u);if(l){o=!0,s.push(l);continue}let m=OR(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return Um(e.join(" "),n);throw new zs("git-status-unparseable")}let a=Q(s,r),c=Jm(a,"state");return ht({command:e.join(" "),branch:n,rows:a,summary:DR(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function TR(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function PR(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Cn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Cn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Cn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Cn(e.slice(2),"??"):null}function OR(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Cn(IR(e.slice(3),t),t):null}function Cn(e,t){let r=Fm(t[0]??"."),n=Fm(t[1]??".");return{path:LR(e),index:r,worktree:n,state:GR(`${r}${n}`)}}function Fm(e){return e===" "?".":e}function AR(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function IR(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function LR(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function DR(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 Um(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 NR(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 $R(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 MR(e,t){let r=t.split(`
63
+ `)[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 BR(e,t){let r=t.split(`
64
+ `).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,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",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 FR(e,t,r){let n=t.split(`
65
+ `),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=Q(s,r),a=Jm(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 jR(e,t,r){let n=t.split(`
66
+ `).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=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 HR(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(""),f=[];for(let w of i.split(`
67
+ `)){let E=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!E)continue;let v=E[3]??"";f.push({path:(E[1]??"").trim(),changed:Number(E[2]??0),added:[...v].filter(O=>O==="+").length,deleted:[...v].filter(O=>O==="-").length,binary:v.startsWith("Bin")})}let p=Q(f,r),g=0,h=0,b=0;for(let w of p)g+=typeof w.changed=="number"?w.changed:0,h+=typeof w.added=="number"?w.added:0,b+=typeof w.deleted=="number"?w.deleted:0;return ht({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:m??"",body_lines:d.trim()?d.trim().split(`
68
+ `).length:0,files:p,summary:`${r?`${p.length}/${f.length}`:p.length} files, ${g} changed, +${h} -${b}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ht(e,t,r){return t?Ke(e,r):e}function GR(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Jm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function WR(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function UR(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 jm,Ks,zs,jt=y(()=>{"use strict";D();Ce();Ur();Ne();Ce();jm=["%h","%an","%as","%s"];Ks=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Jn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},zs=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var Ha={};j(Ha,{NORMALIZATION_ALLOWLIST:()=>Qm,NORMALIZE_ANSI:()=>Xs,NORMALIZE_BLANK_LINES:()=>eo,NORMALIZE_CR_PROGRESS:()=>Qs,NORMALIZE_JSON_TOON:()=>Xm,NORMALIZE_TRAILING_WHITESPACE:()=>Zs,crushJsonArrayItems:()=>Tn,formatCodexNormalizeDecision:()=>nf,formatNormalizeDecision:()=>rf,hookDecisionFromClaudePostExecJson:()=>Zm,hookDecisionFromCodexPostExecJson:()=>ef,normalizeOutput:()=>to,renderGenericJsonLane:()=>Fa,runClaudePostExecHook:()=>VR,runCodexPostExecHook:()=>KR,transcodeJsonToToon:()=>Ym});import{readFileSync as Ys}from"node:fs";function Ym(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 Ba(o,a)?i.trimEnd():e}async function Fa(e,t={}){let r=QR(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=zm(t.minTokens,JR),i=zm(t.maxItems,qR);if(!(s>i&&nS(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Tn)(n,i)}catch(g){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:sS(g)}}}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 f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[m,f,p].filter(Boolean).join(`
69
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Tn(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=ZR(e),s=new Set;n&&e.forEach((a,c)=>{ja(a)!==n&&s.add(c)});let o=eS(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 to(e){let t=e;for(let r of Qm)t=r.apply(t);return t}async function Zm(e,t){return await tf(e,t)}async function ef(e,t){return await tf(e,t)}async function tf(e,t){let r=XR(e),n=oS(r,["cwd"])||t.cwd;if(!await(t.isEnabled??YR)(n))return{kind:"passthrough",reason:"disabled"};let o=iS(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??to)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function rf(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function nf(e){return{stdout:"",status:0}}async function VR(e){let t=e?Ys(e,"utf8"):Ys(0,"utf8"),r=await Zm(t,{cwd:process.cwd()}),n=rf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function KR(e){let t=e?Ys(e,"utf8"):Ys(0,"utf8"),r=await ef(t,{cwd:process.cwd()}),n=nf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function zR(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&&qm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&qm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function qm(e){return e>=32&&e<=63}function YR(e){return ve(e,process.env).enabled}function XR(e){try{let t=JSON.parse(e);return vr(t)?t:{}}catch{return{}}}function QR(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return vr(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 ZR(e){let t=new Map;for(let s of e){let o=ja(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 ja(e){return Array.isArray(e)?"array":vr(e)?Object.keys(e).sort().map(t=>`${t}:${Vm(e[t])}`).join("|"):Vm(e)}function eS(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&ja(s)!==t))for(let[i,a]of sf(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 tS(s))r.add(o);for(let o of rS(s))r.add(o)}return r}function tS(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=Km(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Km(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 rS(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 sf(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:vr(e)?Object.entries(e).flatMap(([r,n])=>sf(n,t?`${t}.${r}`:r)):[]}function Vm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Km(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 nS(e){return Math.ceil(e.length/4)}function zm(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function sS(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 oS(e,t){let r=e;for(let n of t){if(!vr(r))return"";r=r[n]}return typeof r=="string"?r:""}function iS(e,t){let r=e[t];return vr(r)?r:null}function vr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ba(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)=>Ba(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)&&Ba(r[i],n[i]))}var Xs,Qs,Zs,eo,Xm,JR,qR,Qm,Pn=y(()=>{"use strict";D();Ce();Xs={id:"ansi",apply:zR},Qs={id:"cr-progress",apply:e=>e.split(`
70
70
  `).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(`
71
- `)},Vs={id:"trailing-whitespace",apply:e=>e.split(`
71
+ `)},Zs={id:"trailing-whitespace",apply:e=>e.split(`
72
72
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
73
- `)},Ks={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
73
+ `)},eo={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
74
74
 
75
- `)};Jm={id:"json-to-toon",apply:e=>Um(e)},Mk=200,Bk=15;qm=[Js,qs,Vs,Ks,Jm]});var Sn={};j(Sn,{parseExecCommandLine:()=>sp,renderExecContract:()=>np,runExecWrapper:()=>nS});import{isUtf8 as Zk}from"node:buffer";import{spawn as eS}from"node:child_process";async function nS(e,t){let r=sp(e),n=await sS(r);return await np(r,n,t)}async function np(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=be(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=oS(n),i=o.kind==="text"?Buffer.from(o.text):n,a=xS(r.heavyByteThreshold,tS);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"?aS(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):cS(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 sp(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 sS(e){let t=eS(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 oS(e){return Zk(e)?{kind:"text",text:iS(e.toString("utf8"))}:{kind:"bytes"}}function iS(e){let t=e;for(let r of[Js,qs,Vs,Ks])t=r.apply(t);return t}function aS(e,t,r,n,s,o=bS,i=wn){let c=Math.max(1,Math.floor((n==="terse"?rp:rS)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=yS(e,c,l,o),d=uS(e),p=lS(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),h=op(s,d,t,ES(u),r,p.summary),f=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:dp(m.error)}:p.degradation;return{text:lp(h),degradation:f}}function cS(e,t,r,n){let s=Math.max(1,Math.floor(rp/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:lp(op(n,"bytes",t,0,r,o))}}function op(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Te(s)}}}function uS(e){let t=e.trim();return t?ap(t)?"json":cp(e)?"jsonl":wS(e)?"unified-diff":up(e)?"tabular":_S(e)?"log-like":RS(e)?"prose":"untyped":"untyped"}function lS(e,t,r,n,s,o,i=wn){switch(e){case"json":return dS(t,i);case"jsonl":return{summary:mS(t)};case"unified-diff":return{summary:pS(t)};case"tabular":return{summary:fS(t)};case"log-like":return{summary:gS(t,o)};case"prose":return{summary:hS(t)};case"bytes":return{summary:{}};case"untyped":return{summary:ip(r,n,s,o)}}}function dS(e,t){let r=ap(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(ht),item_keys:Ba(r)}}}catch(n){return{summary:ep(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:dp(n)}}}return{summary:ep(r)}}if(kn(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,ht(o)]))}}}return{summary:{root_type:typeof r,value:ht(r)}}}function ep(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ht),item_keys:Ba(e)}}function mS(e){let t=cp(e)??[],r=kS(t,"level");return{records:t.length,keys:Ba(t),levels:r,first:ht(t[0]),last:ht(t.at(-1))}}function pS(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 fS(e){let t=up(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:ip(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function gS(e,t){let r=Rn(e);return{entries:r.length,levels:SS(r),first:Bt(r[0]??""),last:Bt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Bt(n.text)}))}}function hS(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:Bt(t[0]??""),closing:Bt(t.at(-1)??"")}}function ip(e,t,r,n){let s=tp(e.subarray(0,t)),o=tp(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Bt(i.text)}))}}function yS(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function bS(e,t){return Am(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function ap(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return kn(r)||Array.isArray(r)?r:null}catch{return null}}function cp(e){let t=Rn(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 wS(e){let t=Rn(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 up(e){let t=Rn(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 _S(e){let t=Rn(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 RS(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 Rn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Ba(e){let t=new Map;for(let r of e)if(kn(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 kS(e,t){let r=new Map;for(let n of e){if(!kn(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 SS(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 ht(e){return typeof e=="string"?Bt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(ht):kn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,ht(r)])):String(e)}function Bt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Zm?t:`${t.slice(0,Zm-1)}\u2026`}function lp(e){let t=C(e).trimEnd(),r=N(t);if(!Ma(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
76
- `}function Ma(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)=>Ma(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)&&Ma(r[i],n[i]))}function kn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function dp(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 tp(e){return e.toString("utf8").replace(/�$/g,"")}function ES(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 xS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var tS,rS,rp,Zm,En=y(()=>{"use strict";D();Im();Mt();_n();De();tS=8*1024,rS=2*1024,rp=1024,Zm=240});var wp=y(()=>{"use strict";mi()});var Ft={};j(Ft,{ResidentRspElisionStore:()=>Cn,ensureResidentServer:()=>Vn,kickResidentServer:()=>Kn,pingResident:()=>Ot,readResidentRegistry:()=>Kr,removeResidentRegistry:()=>Yn,residentRegistryStatus:()=>Vr,resolveResidentPaths:()=>lt,sweepResidentRegistry:()=>Zu,warmResidentServer:()=>Qu,writeResidentRegistry:()=>zn});import{randomUUID as LS}from"node:crypto";function _p(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cn,nt=y(()=>{"use strict";wp();Xn();Cn=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?_p(r)&&r.status==="expired"?r:!_p(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}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 Vn(this.paths,this.config);let r=await tr(this.paths,{...t,id:LS()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var oo={};j(oo,{RSP_WRAPPER_CAPABILITIES:()=>Pn,formatCodexHookDecision:()=>xp,formatHookDecision:()=>Ep,hookDecisionFromClaudePreExecJson:()=>BS,hookDecisionFromCodexPreExecJson:()=>FS,rewriteCommand:()=>kp,rewriteTableFromCapabilities:()=>Rp,runClaudePreExecHook:()=>jS,runCodexPreExecHook:()=>HS});import{readFileSync as to}from"node:fs";import{existsSync as DS}from"node:fs";import{fileURLToPath as NS}from"node:url";function Rp(e){let t=new Map;for(let r of e)t.set(oE(r.command),["rsp",...r.wrapper]);return t}function kp(e){let t=YS(e);if(t)return t;let r=KS(e);if(!r)return Zs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&$p(n[0]))return Zs(e);let s=MS(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Zs(e);let o=[...Pn].sort((c,u)=>u.command.length-c.command.length).find(c=>zS(n,c.command));if(!o)return Zs(e);let i=["rsp",...o.wrapper,...n.slice(o.command.length)],a=Ap(r.redirectSuffix);return{kind:"rewrite",command:[...i.map(On),...a].join(" "),capabilityId:o.id}}function MS(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Ap(e.redirectSuffix);return r==="cat"&&t.length===2&&Qs(t[1])?{kind:"rewrite",command:["rsp","cat",On(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Qs(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",On(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Qs(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],On(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Qs(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),On(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Qs(e){return!!e&&!e.startsWith("-")}async function BS(e,t){return await Sp(e,t)}async function FS(e,t){return await Sp(e,t)}async function Sp(e,t){return(await Ha(e,t,"pre-exec")).decision}async function Ha(e,t,r){let n=Mp(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:Tn({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,o=Oe(s,["cwd"])||Oe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??GS)(o)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:o,event:Tn({hook:r,command:ja(s),decision:d,reason:"disabled"})}}let a=ja(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:o,event:Tn({hook:r,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=xe(o,process.env).proxyEnabled?QS(a):(t.rewrite??kp)(a),m=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:o,event:Tn({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:m})}}return await US(o,t.wakeResident??WS),{decision:l,telemetryRoot:o,event:Tn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function Ep(e){return e.kind==="rewrite"?vp(e.command):{stdout:"",status:0}}function xp(e){return e.kind==="rewrite"?vp(e.command):{stdout:"",status:0}}function vp(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
- `,status:0}}async function jS(e){let t="";try{t=e?to(e,"utf8"):to(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"claude-pre-exec");ro(r.telemetryRoot,r.event);let n=r.decision;Tp("claude-pre-exec",n);let s=Ep(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return ro(process.cwd(),Cp("claude-pre-exec",t,r)),Op("claude-pre-exec",r),0}}async function HS(e){let t="";try{t=e?to(e,"utf8"):to(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"codex-pre-exec");ro(r.telemetryRoot,r.event);let n=r.decision;Tp("codex-pre-exec",n);let s=xp(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return ro(process.cwd(),Cp("codex-pre-exec",t,r)),Op("codex-pre-exec",r),0}}function ro(e,t){et(e,t).catch(()=>{})}function Tn(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:Np(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Cp(e,t,r){let n=Mp(t),s=n.ok?ja(n.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Np(s),decision:"failed-open",reason:"hook-exception",error:Ga(r)}}function GS(e){return xe(e,process.env).enabled}async function WS(e){let t=xe(e,process.env);if(!t.enabled||!VS(t))return;let r=lt(e);await Kn(r,qS(t))}async function US(e,t){try{await Promise.resolve(t(e))}catch(r){JS(r)}}function Tp(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
75
+ `)};Xm={id:"json-to-toon",apply:e=>Ym(e)},JR=200,qR=15;Qm=[Xs,Qs,Zs,eo,Xm]});var In={};j(In,{parseExecCommandLine:()=>df,renderExecContract:()=>lf,runExecWrapper:()=>dS});import{isUtf8 as aS}from"node:buffer";import{spawn as cS}from"node:child_process";async function dS(e,t){let r=df(e),n=await mS(r);return await lf(r,n,t)}async function lf(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=we(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=fS(n),i=o.kind==="text"?Buffer.from(o.text):n,a=LS(r.heavyByteThreshold,uS);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"?gS(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):hS(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 df(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 mS(e){let t=cS(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 fS(e){return aS(e)?{kind:"text",text:pS(e.toString("utf8"))}:{kind:"bytes"}}function pS(e){let t=e;for(let r of[Xs,Qs,Zs,eo])t=r.apply(t);return t}function gS(e,t,r,n,s,o=vS,i=Tn){let c=Math.max(1,Math.floor((n==="terse"?uf:lS)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=xS(e,c,l,o),d=yS(e),f=bS(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),p=mf(s,d,t,IS(u),r,f.summary),g=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:bf(m.error)}:f.degradation;return{text:yf(p),degradation:g}}function hS(e,t,r,n){let s=Math.max(1,Math.floor(uf/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:yf(mf(n,"bytes",t,0,r,o))}}function mf(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Pe(s)}}}function yS(e){let t=e.trim();return t?pf(t)?"json":gf(e)?"jsonl":CS(e)?"unified-diff":hf(e)?"tabular":TS(e)?"log-like":PS(e)?"prose":"untyped":"untyped"}function bS(e,t,r,n,s,o,i=Tn){switch(e){case"json":return wS(t,i);case"jsonl":return{summary:_S(t)};case"unified-diff":return{summary:kS(t)};case"tabular":return{summary:RS(t)};case"log-like":return{summary:SS(t,o)};case"prose":return{summary:ES(t)};case"bytes":return{summary:{}};case"untyped":return{summary:ff(r,n,s,o)}}}function wS(e,t){let r=pf(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:Wa(r)}}}catch(n){return{summary:af(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:bf(n)}}}return{summary:af(r)}}if(An(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 af(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(yt),item_keys:Wa(e)}}function _S(e){let t=gf(e)??[],r=OS(t,"level");return{records:t.length,keys:Wa(t),levels:r,first:yt(t[0]),last:yt(t.at(-1))}}function kS(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 RS(e){let t=hf(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:ff(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function SS(e,t){let r=On(e);return{entries:r.length,levels:AS(r),first:Ht(r[0]??""),last:Ht(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Ht(n.text)}))}}function ES(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:Ht(t[0]??""),closing:Ht(t.at(-1)??"")}}function ff(e,t,r,n){let s=cf(e.subarray(0,t)),o=cf(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Ht(i.text)}))}}function xS(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function vS(e,t){return Mm(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function pf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return An(r)||Array.isArray(r)?r:null}catch{return null}}function gf(e){let t=On(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 CS(e){let t=On(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 hf(e){let t=On(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 TS(e){let t=On(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 PS(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 On(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Wa(e){let t=new Map;for(let r of e)if(An(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 OS(e,t){let r=new Map;for(let n of e){if(!An(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 AS(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"?Ht(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(yt):An(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,yt(r)])):String(e)}function Ht(e){let t=e.replace(/\s+/g," ").trim();return t.length<=of?t:`${t.slice(0,of-1)}\u2026`}function yf(e){let t=C(e).trimEnd(),r=N(t);if(!Ga(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
76
+ `}function Ga(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)=>Ga(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)&&Ga(r[i],n[i]))}function An(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bf(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 cf(e){return e.toString("utf8").replace(/�$/g,"")}function IS(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 LS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var uS,lS,uf,of,Ln=y(()=>{"use strict";D();Bm();jt();Pn();Ne();uS=8*1024,lS=2*1024,uf=1024,of=240});var vf=y(()=>{"use strict";hi()});var Gt={};j(Gt,{ResidentRspElisionStore:()=>$n,ensureResidentServer:()=>es,kickResidentServer:()=>ts,pingResident:()=>At,readResidentRegistry:()=>Zr,removeResidentRegistry:()=>ns,residentRegistryStatus:()=>Qr,resolveResidentPaths:()=>dt,sweepResidentRegistry:()=>il,warmResidentServer:()=>ol,writeResidentRegistry:()=>rs});import{randomUUID as HS}from"node:crypto";function Cf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $n,st=y(()=>{"use strict";vf();ss();$n=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?Cf(r)&&r.status==="expired"?r:!Cf(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}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 sr(this.paths,{...t,id:HS()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var uo={};j(uo,{RSP_WRAPPER_CAPABILITIES:()=>Mn,_testOnlyResetBinaryState:()=>qS,formatCodexHookDecision:()=>If,formatHookDecision:()=>Af,hookDecisionFromClaudePreExecJson:()=>QS,hookDecisionFromCodexPreExecJson:()=>ZS,rewriteCommand:()=>Pf,rewriteTableFromCapabilities:()=>Tf,runClaudePreExecHook:()=>eE,runCodexPreExecHook:()=>tE});import{accessSync as GS,constants as WS,existsSync as US,readFileSync as ao}from"node:fs";import{fileURLToPath as JS}from"node:url";function qS(){io=void 0,Ja=!1}function VS(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return GS(`${t}/rsp`,WS.X_OK),!0}catch{}return!1}function KS(e){return io===void 0&&(io=e()),io}function zS(){Ja||(Ja=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Tf(e){let t=new Map;for(let r of e)t.set(wE(r.command),["rsp",...r.wrapper]);return t}function Pf(e,t=vn()){let r=lE(e);if(r)return r;let n=cE(e);if(!n)return oo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&ar(s[0]))return oo(e,t);let o=XS(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return oo(e,t);let i=[...Mn].sort((u,l)=>l.command.length-u.command.length).find(u=>uE(s,u.command));if(!i)return oo(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=Mf(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(bt),...c].join(" "),capabilityId:i.id}}function XS(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=Mf(e.redirectSuffix),o=t.map(bt);return n==="cat"&&r.length===2&&so(r[1])?{kind:"rewrite",command:[...o,"cat",bt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&so(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])&&so(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])&&so(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),bt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function so(e){return!!e&&!e.startsWith("-")}async function QS(e,t){return await Of(e,t)}async function ZS(e,t){return await Of(e,t)}async function Of(e,t){return(await Va(e,t,"pre-exec")).decision}async function Va(e,t,r){let n=Hf(e);if(!n.ok){let p={kind:"passthrough",reason:n.reason};return{decision:p,telemetryRoot:t.cwd,event:Cr({hook:r,command:"",decision:p,reason:n.reason})}}let s=n.payload,o=Oe(s,["cwd"])||Oe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??rE)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:Cr({hook:r,command:qa(s),decision:p,reason:"disabled"})}}let a=qa(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:Cr({hook:r,command:a,decision:p,reason:"missing-command"})}}if(!KS(t.resolveBinary??VS)){zS();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:Cr({hook:r,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=ve(o,process.env),m=t.rspInvocationPrefix??vn(),d=l.proxyEnabled?dE(a,m):(t.rewrite??(p=>Pf(p,m)))(a),f=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:Cr({hook:r,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:f})}}return await sE(o,t.wakeResident??nE),{decision:d,telemetryRoot:o,event:Cr({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Af(e){return e.kind==="rewrite"?Lf(e.command):{stdout:"",status:0}}function If(e){return e.kind==="rewrite"?Lf(e.command):{stdout:"",status:0}}function Lf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
+ `,status:0}}async function eE(e){let t="";try{t=e?ao(e,"utf8"):ao(0,"utf8");let r=await Va(t,{cwd:process.cwd()},"claude-pre-exec");co(r.telemetryRoot,r.event);let n=r.decision;Nf("claude-pre-exec",n);let s=Af(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return co(process.cwd(),Df("claude-pre-exec",t,r)),$f("claude-pre-exec",r),0}}async function tE(e){let t="";try{t=e?ao(e,"utf8"):ao(0,"utf8");let r=await Va(t,{cwd:process.cwd()},"codex-pre-exec");co(r.telemetryRoot,r.event);let n=r.decision;Nf("codex-pre-exec",n);let s=If(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return co(process.cwd(),Df("codex-pre-exec",t,r)),$f("codex-pre-exec",r),0}}function co(e,t){tt(e,t).catch(()=>{})}function Cr(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:le(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Df(e,t,r){let n=Hf(t),s=n.ok?qa(n.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:le(s),decision:"failed-open",reason:"hook-exception",error:Ka(r)}}function rE(e){return ve(e,process.env).enabled}async function nE(e){let t=ve(e,process.env);if(!t.enabled||!aE(t))return;let r=dt(e);await ts(r,iE(t))}async function sE(e,t){try{await Promise.resolve(t(e))}catch(r){oE(r)}}function Nf(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
78
78
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
79
- `)}}function Op(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Ga(t)}
80
- `)}function JS(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Ga(e)}
81
- `)}function Ga(e){return e instanceof Error?e.name||"Error":typeof e}function qS(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 VS(e){if(!e.storeUri.startsWith("file://"))return!0;try{return DS(NS(e.storeUri))}catch{return!1}}function ja(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 KS(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Pp(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&$p(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 Pp(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 zS(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function YS(e){let t=Pp(e.trim()).map(r=>r.text);return eo(t)?{kind:"passthrough",reason:$S}:null}function eo(e){return e[0]==="gh"&&e.some(XS)}function XS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ap(e){return e.map(t=>t.text)}function On(e){return/[^\w@%+=:,./-]/.test(e)?Wa(e):e}function QS(e){let t=ZS(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Wa(e.trim())}`,capabilityId:"proxy:universal"}}function ZS(e){let t=e.trim();if(!t)return"missing-command";if(Lp(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=so(no(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Ip.has(r))return"interactive"}function Zs(e){let t=e.trim();return eE(t)?{kind:"rewrite",command:`rsp exec -- ${Wa(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function eE(e){return!(!e||!tE(e)||!rE(e)||Lp(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||nE(e,"rsp")||Dp(e,Ip)||sE(e))}function tE(e){return/&&|[;|]/.test(e)}function Lp(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 rE(e){return no(e).some(t=>{let r=so(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 Dp(e,t){return no(e).some(r=>{let n=so(r)[0];return n?t.has(n):!1})}function nE(e,t){return Dp(e,new Set([t]))}function sE(e){return no(e).some(t=>{let r=so(t);return r[0]==="grep"&&r.includes("-q")})}function no(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function so(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Wa(e){return`'${e.replace(/'/g,"'\\''")}'`}function Np(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:eo(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:eo(t)&&t[1]?`gh ${t[1]} json-jq`:eo(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 $p(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function oE(e){return e.join("\0")}function Mp(e){try{let t=JSON.parse(e);return Bp(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(!Bp(r))return"";r=r[n]}return typeof r=="string"?r:""}function Bp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pn,ND,$S,Ip,An=y(()=>{"use strict";ve();nt();Ce();Pn=[{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"]}],ND=Rp(Pn),$S="lossless-gh-json-jq";Ip=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Jp={};j(Jp,{fastTelemetryRoot:()=>Ja,isFastGitStatus:()=>io,runFastGitStatus:()=>ao});import{spawnSync as Wp}from"node:child_process";import{existsSync as Up,readdirSync as pE}from"node:fs";function io(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ao(){if(fE(process.cwd()))return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};if(Wp("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Wp("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?Ua():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function Ja(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(nt(),Ft));return t(e).rootDir}catch{return e}}function Ua(){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"})}
82
- `)}function fE(e){try{return!Up(`${e}/.git`)||Up(`${e}/.git/index`)?!1:pE(e).every(t=>t===".git")}catch{return!1}}var qa=y(()=>{"use strict";Ne()});async function xr(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 Kp(e,t,r,n={}){PE(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=AE(["id","number",...r]).map(d=>IE(OE[d],6)).join(`
83
- `),u=o.map(({alias:d,number:p})=>[` ${d}: ${e}(number: ${p}) {`,c," }"].join(`
84
- `)),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(`
85
- `);return{kind:e,query:m,aliases:o,labelAliases:i}}function zp(e,t){let r=Er(t),n=Er(r.data),s=Er(n.repository),o=Array.isArray(r.errors)?r.errors.map(Er):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Qp(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:Zp(u?.message)||"not found"}})}function Yp(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: ${bt(o.nodeId)}, labelIds: ${Vp(t)}, clientMutationId: ${bt(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: ${bt(o.nodeId)}, labelIds: ${Vp(r)}, clientMutationId: ${bt(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
86
- `)}}function Xp(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${bt(e.nodeId)}, subIssueId: ${bt(s.nodeId)}, clientMutationId: ${bt(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
87
- `)}}function Va(e,t){let r=Er(t),n=Array.isArray(r.errors)?r.errors.map(Er):[],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,Zp(i.message)||"mutation failed")}return s}function PE(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 AE(e){return[...new Set(e)]}function IE(e,t){let r=" ".repeat(t);return e.split(`
79
+ `)}}function $f(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Ka(t)}
80
+ `)}function oE(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Ka(e)}
81
+ `)}function Ka(e){return e instanceof Error?e.name||"Error":typeof e}function iE(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 aE(e){if(!e.storeUri.startsWith("file://"))return!0;try{return US(JS(e.storeUri))}catch{return!1}}function qa(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 cE(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=za(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&ar(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 za(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 uE(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function lE(e){let t=za(e.trim()).map(r=>r.text);return It(t)?{kind:"passthrough",reason:YS}:null}function Mf(e){return e.map(t=>t.text)}function bt(e){return/[^\w@%+=:,./-]/.test(e)?Ya(e):e}function dE(e,t){let r=fE(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(bt).join(" ")} proxy -- ${Ya(e.trim())}`,capabilityId:"proxy:universal"}}function mE(e){if(!process.argv[1])return!1;let t=za(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function fE(e){let t=e.trim();if(!t)return"missing-command";if(Ff(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=tn(en(t)[0]??"")[0];if(r==="rsp"||mE(t))return"opt-out";if(r&&Bf.has(r))return"interactive"}function oo(e,t){let r=e.trim();return pE(r)?{kind:"rewrite",command:`${t.map(bt).join(" ")} exec -- ${Ya(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function pE(e){return!(!e||!gE(e)||!hE(e)||Ff(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||yE(e,"rsp")||jf(e,Bf)||bE(e))}function gE(e){return/&&|[;|]/.test(e)}function Ff(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 hE(e){return en(e).some(t=>{let r=tn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function jf(e,t){return en(e).some(r=>{let n=tn(r)[0];return n?t.has(n):!1})}function yE(e,t){return jf(e,new Set([t]))}function bE(e){return en(e).some(t=>{let r=tn(t);return r[0]==="grep"&&r.includes("-q")})}function Ya(e){return`'${e.replace(/'/g,"'\\''")}'`}function wE(e){return e.join("\0")}function Hf(e){try{let t=JSON.parse(e);return Gf(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(!Gf(r))return"";r=r[n]}return typeof r=="string"?r:""}function Gf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var io,Ja,Mn,dN,YS,Bf,Bn=y(()=>{"use strict";rn();Ce();st();La();Te();Ja=!1;Mn=[{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"]}],dN=Tf(Mn),YS="lossless-gh-json-jq";Bf=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var zf={};j(zf,{fastTelemetryRoot:()=>Qa,isFastGitStatus:()=>lo,runFastGitStatus:()=>mo});import{spawnSync as Vf}from"node:child_process";import{existsSync as Kf,readdirSync as CE}from"node:fs";function lo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function mo(){if(TE(process.cwd()))return{stdout:Xa(),stderr:Buffer.alloc(0),status:0,signal:null};if(Vf("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Xa(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Vf("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?Xa():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function Qa(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(st(),Gt));return t(e).rootDir}catch{return e}}function Xa(){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"})}
82
+ `)}function TE(e){try{return!Kf(`${e}/.git`)||Kf(`${e}/.git/index`)?!1:CE(e).every(t=>t===".git")}catch{return!1}}var Za=y(()=>{"use strict";$e()});async function Or(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 Qf(e,t,r,n={}){UE(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=JE(["id","number",...r]).map(d=>qE(WE[d],6)).join(`
83
+ `),u=o.map(({alias:d,number:f})=>[` ${d}: ${e}(number: ${f}) {`,c," }"].join(`
84
+ `)),l=i.map(({alias:d,name:f})=>` ${d}: label(name: ${JSON.stringify(f)}) { id name }`),m=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
85
+ `);return{kind:e,query:m,aliases:o,labelAliases:i}}function Zf(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(rp(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:np(u?.message)||"not found"}})}function ep(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: ${Xf(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: ${Xf(r)}, clientMutationId: ${_t(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
86
+ `)}}function tp(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(`
87
+ `)}}function ec(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,np(i.message)||"mutation failed")}return s}function UE(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 JE(e){return[...new Set(e)]}function qE(e,t){let r=" ".repeat(t);return e.split(`
88
88
  `).map(n=>`${r}${n}`).join(`
89
- `)}function bt(e){return JSON.stringify(e)}function Vp(e){return`[${e.map(bt).join(", ")}]`}function Er(e){return Qp(e)?e:{}}function Qp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zp(e){return typeof e=="string"?e:""}var OE,ef=y(()=>{OE={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(`
90
- `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as DE,spawnSync as NE}from"node:child_process";function Ya(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function nf(e,t={}){let r=zE(e),n=r.repo??t.repo??process.env.GH_REPO??XE();if(!n||!n.includes("/"))return Za(e,"repository is required; pass --repo owner/repo");let s=t.exec??QE,o=Math.max(1,Math.floor(t.restConcurrency??rf));return r.verb==="issues"||r.verb==="prs"?await BE(r,n,s,o,e):r.verb==="edit-labels"?await jE(r,n,s,o,e):await GE(r,n,s,o,e)}async function BE(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=sf(e),a=[],c=[];for(let l of Qa(e.numbers,100)){let m=Kp(o,l,i.query),d=await Xa(r,t,m.query);if(tc(d))return await FE(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(p=>({number:p,value:{error:pe(d)||`failed to read ${p}`},failed:!0})));continue}a.push(...zp(m,wt(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:UE(e.verb,p.value??{},i.output),failed:!!p.error})))}let u=a.filter(l=>l.failed).length;return uo({command:lo(s),transport:"graphql",order:e.numbers,[e.verb]:In(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
91
- `))}async function FE(e,t,r,n,s){let o=sf(e),i=e.verb==="issues"?"issues":"pulls",a=await xr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:pe(l)||"REST fallback failed"}};let m=je(wt(l.stdout));if(e.verb==="prs"&&o.output.some(of)){let d=G(je(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:pe(p)||"REST check-runs fallback failed"}};let h=await r(["api",`repos/${t}/commits/${d}/status`]);if(h.code!==0)return{number:u,value:{error:pe(h)||"REST commit-status fallback failed"}};m={...m,restCheckRollup:qE(je(wt(p.stdout)),je(wt(h.stdout)))}}return{number:u,value:JE(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return uo({command:lo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:In(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function jE(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Za(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([af(e.numbers,t,r,n),xr(o,n,async d=>{let p=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(je(wt(p.stdout)).node_id),error:p.code===0?"":pe(p)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Cr(s,e.numbers,ec(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 Qa(m,100)){let p=Yp(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),h=await Xa(r,t,p.query);if(tc(h))return await HE(e,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:pe(h)||"label mutation failed"});continue}let f=Va(p.aliases,wt(h.stdout));for(let g of d){let w=p.aliases.filter(E=>E.number===g.number).map(E=>f.get(E.alias)).find(Boolean);l.set(g.number,w?{error:w}:{ok:!0})}}return Cr(s,e.numbers,cf(e.numbers,l),"graphql")}async function HE(e,t,r,n,s){let o=await xr(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:pe(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:pe(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Cr(s,e.numbers,In(o),"rest-fallback",n)}async function GE(e,t,r,n,s){if(e.numbers.length<2)return Za(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await af(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Cr(s,i,ec(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 Qa(m,100)){let p=Xp({number:o,nodeId:u},d),h=await Xa(r,t,p.query);if(tc(h))return await WE(o,i,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:pe(h)||"sub-issue mutation failed"});continue}let f=Va(p.aliases,wt(h.stdout));for(let g of p.aliases){let b=f.get(g.alias);l.set(g.number,b?{error:b}:{ok:!0})}}return Cr(s,i,cf(i,l),"graphql")}async function WE(e,t,r,n,s,o){let i=await xr(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:pe(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:pe(l)||"REST link failed"}}});return Cr(o,t,In(i),"rest-fallback",s)}function Cr(e,t,r,n,s){let o=Object.values(r).filter(i=>Tr(i)&&"error"in i).length;return uo({command:lo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??rf}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function sf(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return tf(r,$E),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return tf(t,ME),{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 UE(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=Ka(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=KE(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=uf(t[s]));return"number"in n||(n.number=rc(t.number)),n}function JE(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Tr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(of(s))n[s]=je(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]=uf(t[s]);return"number"in n||(n.number=rc(t.number)),n}function qE(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Tr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Tr):[],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()||VE(s.map(o=>o.state)),contexts:s}}function VE(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 of(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function KE(e){let t=Ka(e).at(-1),r=je(je(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:Ka(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function Xa(e,t,r){let[n,s]=YE(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function af(e,t,r,n){return await xr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=je(wt(o.stdout)),a=G(i.node_id),c=rc(i.id);return o.code!==0||!a?{number:s,error:pe(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Qa(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function zE(e){if(!Ya(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(...vr(e[++a]??""));else if(c.startsWith("--json="))n.push(...vr(c.slice(7)));else if(c==="--add")s.push(...vr(e[++a]??""));else if(c.startsWith("--add="))s.push(...vr(c.slice(6)));else if(c==="--remove")o.push(...vr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...vr(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 uo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
92
- `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Za(e,t){return uo({command:lo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function ec(e,t){return In(e.map(r=>({number:r,value:t(r)})))}function In(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function cf(e,t){return ec(e,r=>t.get(r)??{error:"mutation skipped"})}function tc(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
89
+ `)}function _t(e){return JSON.stringify(e)}function Xf(e){return`[${e.map(_t).join(", ")}]`}function Pr(e){return rp(e)?e:{}}function rp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function np(e){return typeof e=="string"?e:""}var WE,sp=y(()=>{WE={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(`
90
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as KE,spawnSync as zE}from"node:child_process";function nc(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function ap(e,t={}){let r=ux(e),n=r.repo??t.repo??process.env.GH_REPO??dx();if(!n||!n.includes("/"))return ic(e,"repository is required; pass --repo owner/repo");let s=t.exec??mx,o=Math.max(1,Math.floor(t.restConcurrency??ip));return r.verb==="issues"||r.verb==="prs"?await QE(r,n,s,o,e):r.verb==="edit-labels"?await ex(r,n,s,o,e):await rx(r,n,s,o,e)}async function QE(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=cp(e),a=[],c=[];for(let l of oc(e.numbers,100)){let m=Qf(o,l,i.query),d=await sc(r,t,m.query);if(cc(d))return await ZE(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:pe(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...Zf(m,kt(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:sx(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return po({command:go(s),transport:"graphql",order:e.numbers,[e.verb]:Fn(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
91
+ `))}async function ZE(e,t,r,n,s){let o=cp(e),i=e.verb==="issues"?"issues":"pulls",a=await Or(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:pe(l)||"REST fallback failed"}};let m=He(kt(l.stdout));if(e.verb==="prs"&&o.output.some(up)){let d=G(He(m.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:pe(f)||"REST check-runs fallback failed"}};let p=await r(["api",`repos/${t}/commits/${d}/status`]);if(p.code!==0)return{number:u,value:{error:pe(p)||"REST commit-status fallback failed"}};m={...m,restCheckRollup:ix(He(kt(f.stdout)),He(kt(p.stdout)))}}return{number:u,value:ox(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return po({command:go(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:Fn(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function ex(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return ic(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([lp(e.numbers,t,r,n),Or(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(He(kt(f.stdout)).node_id),error:f.code===0?"":pe(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Ir(s,e.numbers,ac(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 oc(m,100)){let f=ep(d,e.add.map(h=>c.get(h)),e.remove.map(h=>c.get(h))),p=await sc(r,t,f.query);if(cc(p))return await tx(e,t,r,n,s);if(p.code!==0){for(let h of d)l.set(h.number,{error:pe(p)||"label mutation failed"});continue}let g=ec(f.aliases,kt(p.stdout));for(let h of d){let w=f.aliases.filter(E=>E.number===h.number).map(E=>g.get(E.alias)).find(Boolean);l.set(h.number,w?{error:w}:{ok:!0})}}return Ir(s,e.numbers,dp(e.numbers,l),"graphql")}async function tx(e,t,r,n,s){let o=await Or(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:pe(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:pe(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Ir(s,e.numbers,Fn(o),"rest-fallback",n)}async function rx(e,t,r,n,s){if(e.numbers.length<2)return ic(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await lp(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Ir(s,i,ac(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 oc(m,100)){let f=tp({number:o,nodeId:u},d),p=await sc(r,t,f.query);if(cc(p))return await nx(o,i,t,r,n,s);if(p.code!==0){for(let h of d)l.set(h.number,{error:pe(p)||"sub-issue mutation failed"});continue}let g=ec(f.aliases,kt(p.stdout));for(let h of f.aliases){let b=g.get(h.alias);l.set(h.number,b?{error:b}:{ok:!0})}}return Ir(s,i,dp(i,l),"graphql")}async function nx(e,t,r,n,s,o){let i=await Or(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:pe(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:pe(l)||"REST link failed"}}});return Ir(o,t,Fn(i),"rest-fallback",s)}function Ir(e,t,r,n,s){let o=Object.values(r).filter(i=>Lr(i)&&"error"in i).length;return po({command:go(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??ip}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function cp(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return op(r,YE),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return op(t,XE),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function op(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function sx(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=tc(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=cx(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=mp(t[s]));return"number"in n||(n.number=uc(t.number)),n}function ox(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Lr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(up(s))n[s]=He(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]=mp(t[s]);return"number"in n||(n.number=uc(t.number)),n}function ix(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Lr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Lr):[],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()||ax(s.map(o=>o.state)),contexts:s}}function ax(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 up(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function cx(e){let t=tc(e).at(-1),r=He(He(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:tc(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function sc(e,t,r){let[n,s]=lx(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function lp(e,t,r,n){return await Or(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=He(kt(o.stdout)),a=G(i.node_id),c=uc(i.id);return o.code!==0||!a?{number:s,error:pe(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function oc(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function ux(e){if(!nc(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(...Ar(e[++a]??""));else if(c.startsWith("--json="))n.push(...Ar(c.slice(7)));else if(c==="--add")s.push(...Ar(e[++a]??""));else if(c.startsWith("--add="))s.push(...Ar(c.slice(6)));else if(c==="--remove")o.push(...Ar(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Ar(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 po(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
92
+ `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function ic(e,t){return po({command:go(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function ac(e,t){return Fn(e.map(r=>({number:r,value:t(r)})))}function Fn(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function dp(e,t){return ac(e,r=>t.get(r)??{error:"mutation skipped"})}function cc(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
93
93
  ${e.stdout}`)}function pe(e){return(e.stderr||e.stdout).trim().split(`
94
- `)[0]?.slice(0,240)??""}function wt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Ka(e){let t=je(e).nodes;return Array.isArray(t)?t.filter(Tr):[]}function uf(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function rc(e){let t=Number(e);return Number.isFinite(t)?t:0}function vr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function YE(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function lo(e){return`rsp ${e.join(" ")}`}function XE(){let e=NE("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 QE(e){let t=DE("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 je(e){return Tr(e)?e:{}}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var rf,$E,ME,lf=y(()=>{"use strict";D();ef();rf=4,$E=new Set(["number","title","state","labels","body"]),ME=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var lc={};j(lc,{renderGhContract:()=>hf,runGhWrapper:()=>sx});import{spawn as ZE}from"node:child_process";async function sx(e,t){if(Ya(e))return await nf(e);let r=yf(e),n=await ix(r);return hf(e,n,t)}async function hf(e,t,r){if((t.status??0)!==0||t.signal){let p=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let n=yf(e),s=Ln(t.stdout),o=fx(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=kx(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=Sx(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 ${Te(m)}
94
+ `)[0]?.slice(0,240)??""}function kt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function tc(e){let t=He(e).nodes;return Array.isArray(t)?t.filter(Lr):[]}function mp(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function uc(e){let t=Number(e);return Number.isFinite(t)?t:0}function Ar(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function lx(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function go(e){return`rsp ${e.join(" ")}`}function dx(){let e=zE("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 mx(e){let t=KE("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 He(e){return Lr(e)?e:{}}function Lr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var ip,YE,XE,fp=y(()=>{"use strict";D();sp();ip=4,YE=new Set(["number","title","state","labels","body"]),XE=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var yc={};j(yc,{renderGhContract:()=>wp,runGhWrapper:()=>bx});import{spawn as fx}from"node:child_process";async function bx(e,t){if(nc(e))return await ap(e);let r=_p(e),n=await _x(r);return wp(e,n,t)}async function wp(e,t,r){if((t.status??0)!==0||t.signal){let f=we(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=_p(e),s=jn(t.stdout),o=Tx(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=$x(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=f}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=Mx(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 ${Pe(m)}
95
95
  `;return{stdout:Buffer.from(`${C(u.payload)}
96
- ${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 yf(e){let t=Tt(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 h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=mf(l[++p]??""):h.startsWith("--fields=")?u=mf(h.slice(9)):i.push(h)}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 ox(d),d}function df(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?tx[t]:ex[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function mf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function ox(e){if(e.fields.size===0)return;if(e.action!=="list")throw new mo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=nx[t];for(let n of e.fields)if(!r.includes(n))throw new mo(e,`unknown field: ${n}`,r)}async function ix(e){if(e.action==="combined")return await ax(e);let t=cx(e);if(!t)return await px(df(e));let r=await oe({...t,command:["gh",...df(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await ux(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function ax(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=wf(Ln(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Ln(s.stdout)).map(dx)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function cx(e){let t=_f(e.passthrough),r=mx(e.passthrough,"--limit")??30,n=He(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:He(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 ux(e,t){let r=Ln(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(bf);case"pr:view":return wf(r);case"issue:list":return ce(r).filter(n=>!Ht(n.pull_request)).map(pf);case"issue:view":return pf(r);case"run:list":return{items:ce(M(r).workflow_runs).map(ff),total:ie(M(r),"total_count")};case"run:view":{let n=ff(r),s=_f(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(Ln(o.stdout)).jobs).map(lx):[]}}default:return r}}function bf(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:cc(t.user),labels:ce(t.labels).map(r=>({name:S(r,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(M(t.base),"ref"),headRefName:S(M(t.head),"ref")}}function wf(e){return bf(e)}function pf(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:ce(t.labels).map(r=>({name:S(r,"name")})),author:cc(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function ff(e){let t=M(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function lx(e){let t=M(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function dx(e){let t=M(e);return{author:cc(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function cc(e){let t=M(e);return{login:S(t,"login")}}function _f(e){return e.find(t=>!t.startsWith("-"))}function He(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function mx(e,t){let r=He(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function px(e){let t=ZE("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 fx(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=nc(r,"prs"),o=s.rows.map(c=>Rf(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Or({...n,prs:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${gf(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Or({...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 gx(e,t,M(r));case"issue:list":{let s=nc(r,"issues"),o=s.rows.map(c=>Sf(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Or({...n,issues:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${gf(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Or({...n,issue:_x(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=nc(r,"runs"),o=s.rows.map(c=>Ef(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Or({...n,runs:i,aggregate:a,summary:`${ic(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 Or({...n,run:Rx(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 gx(e,t,r){let n=kf(M(r.view),{...e,action:"view",wide:!0}),s=X(ce(r.checks).map(hx),e.query),o=M(r.comments).comments,i=X(ce(o).map(yx).slice(-3),e.query);return Ve({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 hx(e){return{name:S(e,"name"),state:Dn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function yx(e){return{author:vf(e.author),body:po(e,"body",ac,!1),created:S(e,"createdAt")}}function nc(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 sc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function oc(e,t,r,n,s){return Ve({...e,empty:!0,scope:bx(t),[r]:[],aggregate:n,summary:`0 ${wx(t)}`},s)}function bx(e){let t=He(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=He(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=He(e.passthrough,"--branch")??He(e.passthrough,"-b"),s=He(e.passthrough,"--workflow")??He(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function wx(e){let t=He(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Rf(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),draft:!!e.isDraft};return uc(r,e,t,["author","labels","url","updated"]),r}function kf(e,t){let r=Rf(e,t);return r.body=po(e,"body",ac,t.full),t.wide&&(r.base=S(e,"baseRefName"),r.head=S(e,"headRefName")),r}function Sf(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),labels:xf(e.labels)};return uc(r,e,t,["author","url","updated"]),r}function _x(e,t){let r=Sf(e,t);return r.body=po(e,"body",ac,t.full),r}function Ef(e,t){let r={id:ie(e,"databaseId"),name:S(e,"name"),status:Dn(e),conclusion:S(e,"conclusion")};return uc(r,e,t,["event","branch","workflow","created"]),r}function Rx(e,t){let r=Ef(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Dn(s),conclusion:S(s,"conclusion"),log:po(s,"log",rx,t.full)}));return r.jobs=n,r}function po(e,t,r,n){let s=S(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 kx(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Ht(r)){if(Ht(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 Sx(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 gf(e,t){return e.every(r=>r.state===t)?t:"returned"}function ic(e,t,r){return r?`${e}/${t}`:String(e)}function Or(e,t,r){return t.query?Ve(e,r):e}function Dn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function uc(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=vf(t.author):s==="labels"?e.labels=xf(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function xf(e){return Array.isArray(e)?e.map(t=>Ht(t)?S(t,"name"):String(t)).filter(Boolean):[]}function vf(e){return Ht(e)?S(e,"login"):""}function Ln(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Ht):[]}function M(e){return Ht(e)?e:{}}function S(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 Ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ex,tx,ac,rx,nx,mo,dc=y(()=>{"use strict";D();Ts();lf();Mt();Fr();De();ex={"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"]},tx={"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"]},ac=160,rx=160,nx={"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"]};mo=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 fc={};j(fc,{renderTestContract:()=>Cf,runTestWrapper:()=>Tx});import{spawn as Ex}from"node:child_process";async function Tx(e,t){let r=Tt(e),n=await Lx(r.argv);return await Cf(e,n,t)}async function Cf(e,t,r){let n=Tt(e),o=Tf(n.argv)==="vitest"?Dx(t.stdout):Nx(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let h=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Bx(o.durationSeconds)}`,c=X(o.failures,n.query);if(r.level==="terse")return await Ox(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let h of c){let f=await $x(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:f.text}),l??=f.handle,m+=f.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?Ve(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(p)),stderr:Buffer.from(t.stderr),status:pc(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 Ox(e,t,r,n,s,o,i){let a=Px(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?Ve(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((E,v)=>E.excerpt!==r.failures[v].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:pc(t.status),signal:t.signal,payload:u};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(E=>({suite:E.suite,name:E.name,excerpt:E.excerpt})));let h=C(p),f=Buffer.byteLength(h),g=await o.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:f}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${f}) \u2014 ${Te(g)}`;return{stdout:Buffer.from(`${l}
97
- ${w}`),stderr:Buffer.from(t.stderr),status:pc(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:f,rowsElided:m,rawOutput:Buffer.from(h)}}function pc(e){return e===0||e===null?0:1}function Px(e){let t=[],r=vx;for(let n of e.slice(0,Cx)){let s=Ax(n.excerpt,Math.min(xx,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Ax(e,t){if(t<=0)return"";let r=e.split(`
96
+ ${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 _p(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 f=0;f<l.length;f+=1){let p=l[f]??"";p==="--full"?a=!0:p==="--wide"?c=!0:p==="--fields"?u=gp(l[++f]??""):p.startsWith("--fields=")?u=gp(p.slice(9)):i.push(p)}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 wx(d),d}function pp(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?gx[t]:px[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function gp(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function wx(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ho(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=yx[t];for(let n of e.fields)if(!r.includes(n))throw new ho(e,`unknown field: ${n}`,r)}async function _x(e){if(e.action==="combined")return await kx(e);let t=Rx(e);if(!t)return await Cx(pp(e));let r=await oe({...t,command:["gh",...pp(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await Sx(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function kx(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=Rp(jn(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(jn(s.stdout)).map(xx)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function Rx(e){let t=Sp(e.passthrough),r=vx(e.passthrough,"--limit")??30,n=Ge(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:Ge(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 Sx(e,t){let r=jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(kp);case"pr:view":return Rp(r);case"issue:list":return ce(r).filter(n=>!Ut(n.pull_request)).map(hp);case"issue:view":return hp(r);case"run:list":return{items:ce(M(r).workflow_runs).map(yp),total:ie(M(r),"total_count")};case"run:view":{let n=yp(r),s=Sp(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(jn(o.stdout)).jobs).map(Ex):[]}}default:return r}}function kp(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:gc(t.user),labels:ce(t.labels).map(r=>({name:S(r,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(M(t.base),"ref"),headRefName:S(M(t.head),"ref")}}function Rp(e){return kp(e)}function hp(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:ce(t.labels).map(r=>({name:S(r,"name")})),author:gc(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function yp(e){let t=M(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function Ex(e){let t=M(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function xx(e){let t=M(e);return{author:gc(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function gc(e){let t=M(e);return{login:S(t,"login")}}function Sp(e){return e.find(t=>!t.startsWith("-"))}function Ge(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function vx(e,t){let r=Ge(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function Cx(e){let t=fx("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 Tx(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=lc(r,"prs"),o=s.rows.map(c=>Ep(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Dr({...n,prs:i,aggregate:a,summary:`${fc(i.length,o.length,e.query)} ${bp(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Dr({...n,pr:xp(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Px(e,t,M(r));case"issue:list":{let s=lc(r,"issues"),o=s.rows.map(c=>vp(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Dr({...n,issues:i,aggregate:a,summary:`${fc(i.length,o.length,e.query)} ${bp(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Dr({...n,issue:Dx(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=lc(r,"runs"),o=s.rows.map(c=>Cp(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Dr({...n,runs:i,aggregate:a,summary:`${fc(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 Dr({...n,run:Nx(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 Px(e,t,r){let n=xp(M(r.view),{...e,action:"view",wide:!0}),s=Q(ce(r.checks).map(Ox),e.query),o=M(r.comments).comments,i=Q(ce(o).map(Ax).slice(-3),e.query);return Ke({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 Ox(e){return{name:S(e,"name"),state:Hn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function Ax(e){return{author:Pp(e.author),body:yo(e,"body",pc,!1),created:S(e,"createdAt")}}function lc(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 dc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function mc(e,t,r,n,s){return Ke({...e,empty:!0,scope:Ix(t),[r]:[],aggregate:n,summary:`0 ${Lx(t)}`},s)}function Ix(e){let t=Ge(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ge(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ge(e.passthrough,"--branch")??Ge(e.passthrough,"-b"),s=Ge(e.passthrough,"--workflow")??Ge(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function Lx(e){let t=Ge(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Ep(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Hn(e),draft:!!e.isDraft};return hc(r,e,t,["author","labels","url","updated"]),r}function xp(e,t){let r=Ep(e,t);return r.body=yo(e,"body",pc,t.full),t.wide&&(r.base=S(e,"baseRefName"),r.head=S(e,"headRefName")),r}function vp(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Hn(e),labels:Tp(e.labels)};return hc(r,e,t,["author","url","updated"]),r}function Dx(e,t){let r=vp(e,t);return r.body=yo(e,"body",pc,t.full),r}function Cp(e,t){let r={id:ie(e,"databaseId"),name:S(e,"name"),status:Hn(e),conclusion:S(e,"conclusion")};return hc(r,e,t,["event","branch","workflow","created"]),r}function Nx(e,t){let r=Cp(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Hn(s),conclusion:S(s,"conclusion"),log:yo(s,"log",hx,t.full)}));return r.jobs=n,r}function yo(e,t,r,n){let s=S(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 $x(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Ut(r)){if(Ut(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 Mx(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 bp(e,t){return e.every(r=>r.state===t)?t:"returned"}function fc(e,t,r){return r?`${e}/${t}`:String(e)}function Dr(e,t,r){return t.query?Ke(e,r):e}function Hn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function hc(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=Pp(t.author):s==="labels"?e.labels=Tp(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function Tp(e){return Array.isArray(e)?e.map(t=>Ut(t)?S(t,"name"):String(t)).filter(Boolean):[]}function Pp(e){return Ut(e)?S(e,"login"):""}function jn(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Ut):[]}function M(e){return Ut(e)?e:{}}function S(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 Ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var px,gx,pc,hx,yx,ho,bc=y(()=>{"use strict";D();Ns();fp();jt();Ur();Ne();px={"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"]},gx={"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"]},pc=160,hx=160,yx={"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"]};ho=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 kc={};j(kc,{renderTestContract:()=>Op,runTestWrapper:()=>Gx});import{spawn as Bx}from"node:child_process";async function Gx(e,t){let r=Ot(e),n=await Vx(r.argv);return await Op(e,n,t)}async function Op(e,t,r){let n=Ot(e),o=Ap(n.argv)==="vitest"?Kx(t.stdout):zx(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let p=we(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Qx(o.durationSeconds)}`,c=Q(o.failures,n.query);if(r.level==="terse")return await Wx(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let p of c){let g=await Yx(p.excerpt,n.argv.join(" "),r.store);u.push({suite:p.suite,name:p.name,excerpt:g.text}),l??=g.handle,m+=g.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?Ke(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:_c(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:m>0?m:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function Wx(e,t,r,n,s,o,i){let a=Ux(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?Ke(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((E,v)=>E.excerpt!==r.failures[v].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:_c(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(E=>({suite:E.suite,name:E.name,excerpt:E.excerpt})));let p=C(f),g=Buffer.byteLength(p),h=await o.store?.mint(Buffer.from(p),{command:e.join(" "),loss:{level:"terse",bytes_elided:g}});if(!h)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${g}) \u2014 ${Pe(h)}`;return{stdout:Buffer.from(`${l}
97
+ ${w}`),stderr:Buffer.from(t.stderr),status:_c(t.status),signal:t.signal,payload:u,mintedHandle:h,bytesElided:g,rowsElided:m,rawOutput:Buffer.from(p)}}function _c(e){return e===0||e===null?0:1}function Ux(e){let t=[],r=jx;for(let n of e.slice(0,Hx)){let s=Jx(n.excerpt,Math.min(Fx,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Jx(e,t){if(t<=0)return"";let r=e.split(`
98
98
  `),n=r.length<=2?e:`${r[0]}
99
99
  \u2026
100
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Tf(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 Ix(e){if(Tf(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 Lx(e){let t=Ix(e),r=Ex(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 Dx(e){let t=Of(e);if(!_t(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=Rt(t.numTotalTests),o=Rt(t.numFailedTests),i=Fx(Rt(t.startTime),Rt(t.endTime));for(let a of r){if(!_t(a))continue;let c=Ge(a.name)||Ge(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)_t(l)&&l.status==="failed"&&n.push({suite:c,name:Ge(l.fullName)||Ge(l.title)||Ge(l.name),excerpt:Mx(l.failureMessages)||Ge(l.failureMessage)})}return s||=r.reduce((a,c)=>!_t(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>_t(c)?a+Rt(c.perfStats&&_t(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function Nx(e){let t=e.split(`
101
- `).filter(Boolean).map(c=>Of(c)).filter(_t);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+=Rt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Rt(c.failed),i+=Rt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ge(c.name).split("::").slice(0,-1).join("::"),name:Ge(c.name),excerpt:Ge(c.stdout)});continue}if(c.reason==="compiler-message"&&_t(c.message)){let u=Ge(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(`
102
- `)}),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 $x(e,t,r){let n=Buffer.from(e);if(n.length<=mc)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,mc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
103
- \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Te(s)}`,handle:s,bytesElided:n.length}}function Of(e){try{return JSON.parse(e)}catch{return null}}function Mx(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
104
- `):""}function Bx(e){return`${Number(e.toFixed(1))}s`}function Fx(e,t){return e>0&&t>e?(t-e)/1e3:0}function Rt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ge(e){return typeof e=="string"?e:""}function _t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mc,xx,vx,Cx,gc=y(()=>{"use strict";D();Mt();Fr();De();mc=320,xx=160,vx=mc,Cx=3});var bc={};j(bc,{parseCatCommand:()=>yc,renderCatContract:()=>Vx,runCatWrapper:()=>qx});import{isUtf8 as jx}from"node:buffer";import{readFile as Hx}from"node:fs/promises";import{extname as Gx}from"node:path";async function qx(e,t){let r=yc(e),n;try{n=await Hx(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=be(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
105
- `),status:1,signal:null}}return Nf(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Df(e,r,n,t)}async function Vx(e,t,r){if((t.status??0)!==0||t.signal){let i=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=yc(e),s=Buffer.from(t.stdout,"utf8");return Nf(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Df(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function yc(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=Lf(t[++i],hc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Lf(u,hc);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 Df(e,t,r,n){let s=r.toString("utf8"),o=Yx(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>If(n.heavyByteThreshold,Pf)||o.truncated;if(!Af(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Af(t.file)?Kx(e,t.file,r,s,n.level,o):zx(e,t.file,r,s,o),c=`${C(a)}
106
- `;if(!i&&Buffer.byteLength(c)<=If(n.heavyByteThreshold,Pf))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 ${Te(u)}
107
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function Kx(e,t,r,n,s,o){let i=fo(n),a=s==="terse"?Ux:Wx,c=fo(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:Xx(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function zx(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:fo(n).length,content:fo(s.text),truncated:s.truncated}}function Yx(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
108
- `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??hc,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
100
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Ap(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 qx(e){if(Ap(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 Vx(e){let t=qx(e),r=Bx(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 Kx(e){let t=Ip(e);if(!Rt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=St(t.numTotalTests),o=St(t.numFailedTests),i=Zx(St(t.startTime),St(t.endTime));for(let a of r){if(!Rt(a))continue;let c=We(a.name)||We(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Rt(l)&&l.status==="failed"&&n.push({suite:c,name:We(l.fullName)||We(l.title)||We(l.name),excerpt:Xx(l.failureMessages)||We(l.failureMessage)})}return s||=r.reduce((a,c)=>!Rt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>Rt(c)?a+St(c.perfStats&&Rt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function zx(e){let t=e.split(`
101
+ `).filter(Boolean).map(c=>Ip(c)).filter(Rt);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:We(c.name).split("::").slice(0,-1).join("::"),name:We(c.name),excerpt:We(c.stdout)});continue}if(c.reason==="compiler-message"&&Rt(c.message)){let u=We(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(`
102
+ `)}),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 Yx(e,t,r){let n=Buffer.from(e);if(n.length<=wc)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,wc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
103
+ \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Pe(s)}`,handle:s,bytesElided:n.length}}function Ip(e){try{return JSON.parse(e)}catch{return null}}function Xx(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
104
+ `):""}function Qx(e){return`${Number(e.toFixed(1))}s`}function Zx(e,t){return e>0&&t>e?(t-e)/1e3:0}function St(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function We(e){return typeof e=="string"?e:""}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wc,Fx,jx,Hx,Rc=y(()=>{"use strict";D();jt();Ur();Ne();wc=320,Fx=160,jx=wc,Hx=3});var xc={};j(xc,{parseCatCommand:()=>Ec,renderCatContract:()=>av,runCatWrapper:()=>iv});import{isUtf8 as ev}from"node:buffer";import{readFile as tv}from"node:fs/promises";import{extname as rv}from"node:path";async function iv(e,t){let r=Ec(e),n;try{n=await tv(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=we(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
105
+ `),status:1,signal:null}}return Bp(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Mp(e,r,n,t)}async function av(e,t,r){if((t.status??0)!==0||t.signal){let i=we(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Ec(e),s=Buffer.from(t.stdout,"utf8");return Bp(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Mp(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ec(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=$p(t[++i],Sc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=$p(u,Sc);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 Mp(e,t,r,n){let s=r.toString("utf8"),o=lv(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>Np(n.heavyByteThreshold,Lp)||o.truncated;if(!Dp(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Dp(t.file)?cv(e,t.file,r,s,n.level,o):uv(e,t.file,r,s,o),c=`${C(a)}
106
+ `;if(!i&&Buffer.byteLength(c)<=Np(n.heavyByteThreshold,Lp))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 ${Pe(u)}
107
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function cv(e,t,r,n,s,o){let i=bo(n),a=s==="terse"?sv:nv,c=bo(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:dv(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function uv(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:bo(n).length,content:bo(s.text),truncated:s.truncated}}function lv(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
108
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Sc,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
109
109
  `)}${n&&i.length>0?`
110
- `:""}`,truncated:i.length<s.length}}function Xx(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&&!Qx(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function fo(e){let t=e.split(`
111
- `);return t.at(-1)===""?t.slice(0,-1):t}function Nf(e){return e.includes(0)||!jx(e)}function Af(e){return Jx.has(Gx(e).toLowerCase())}function Qx(e){return["for","if","switch","while"].includes(e)}function If(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Lf(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Pf,hc,Wx,Ux,Jx,wc=y(()=>{"use strict";D();Mt();De();Pf=8*1024,hc=10,Wx=8,Ux=2,Jx=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Wf={};j(Wf,{REPO_STORE_PATH:()=>kc,mergeRspBlock:()=>jf,provisionRspRepoStore:()=>cv});import{constants as Zx}from"node:fs";import{access as ev,copyFile as tv,mkdir as Mf,readFile as rv,rename as nv,writeFile as Bf}from"node:fs/promises";import{dirname as sv,join as Nn,resolve as ov}from"node:path";async function cv(e,t={}){let r=ov(e),n=Nn(r,".red"),s=Nn(n,"config.yaml"),o=Nn(r,kc);await Mf(n,{recursive:!0}),await Mf(sv(o),{recursive:!0});let i="";try{i=await rv(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=jf(i,{enabled:!0,ttlDays:t.ttlDays??ke,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,heavyGitByteThreshold:t.heavyGitByteThreshold??Ye}),c=a!==i;c&&await Bf(s,a,"utf8");let u=!await Rc(o),l=!1,m=!1;if(u){let p=Nn(r,iv),h=Nn(r,av);if(await Rc(p))await nv(p,o),m=!0;else if(await Rc(h))await tv(h,o),l=!0;else{let{RspElisionStore:f}=await Promise.resolve().then(()=>(Qe(),or)),g=process.env.REDDB_BIN;try{await(await f.open({uri:`file://${o}`,ttlDays:t.ttlDays??ke,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=uv(a,kc);return d!==a&&await Bf(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function jf(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${go(t.ttlDays,ke)}`,` ephemeralTtlHours: ${go(t.ephemeralTtlHours,Se)}`,` byteBudget: ${go(t.byteBudget,Ee)}`,` heavyGitByteThreshold: ${go(t.heavyGitByteThreshold,Ye)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
112
- `),s=Hf(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
110
+ `:""}`,truncated:i.length<s.length}}function dv(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&&!mv(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function bo(e){let t=e.split(`
111
+ `);return t.at(-1)===""?t.slice(0,-1):t}function Bp(e){return e.includes(0)||!ev(e)}function Dp(e){return ov.has(rv(e).toLowerCase())}function mv(e){return["for","if","switch","while"].includes(e)}function Np(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $p(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Lp,Sc,nv,sv,ov,vc=y(()=>{"use strict";D();jt();Ne();Lp=8*1024,Sc=10,nv=8,sv=2,ov=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var qp={};j(qp,{REPO_STORE_PATH:()=>Pc,mergeRspBlock:()=>Wp,provisionRspRepoStore:()=>Rv});import{constants as fv}from"node:fs";import{access as pv,copyFile as gv,mkdir as jp,readFile as hv,rename as yv,writeFile as Hp}from"node:fs/promises";import{dirname as bv,join as Gn,resolve as wv}from"node:path";async function Rv(e,t={}){let r=wv(e),n=Gn(r,".red"),s=Gn(n,"config.yaml"),o=Gn(r,Pc);await jp(n,{recursive:!0}),await jp(bv(o),{recursive:!0});let i="";try{i=await hv(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=Wp(i,{enabled:!0,ttlDays:t.ttlDays??Se,ephemeralTtlHours:t.ephemeralTtlHours??Ee,byteBudget:t.byteBudget??xe,heavyGitByteThreshold:t.heavyGitByteThreshold??Xe}),c=a!==i;c&&await Hp(s,a,"utf8");let u=!await Tc(o),l=!1,m=!1;if(u){let f=Gn(r,_v),p=Gn(r,kv);if(await Tc(f))await yv(f,o),m=!0;else if(await Tc(p))await gv(p,o),l=!0;else{let{RspElisionStore:g}=await Promise.resolve().then(()=>(Ze(),ur)),h=process.env.REDDB_BIN;try{await(await g.open({uri:`file://${o}`,ttlDays:t.ttlDays??Se,ephemeralTtlHours:t.ephemeralTtlHours??Ee,byteBudget:t.byteBudget??xe,allowResidentOpen:!0})).close()}finally{h===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=h}}}let d=Sv(a,Pc);return d!==a&&await Hp(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function Wp(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${wo(t.ttlDays,Se)}`,` ephemeralTtlHours: ${wo(t.ephemeralTtlHours,Ee)}`,` byteBudget: ${wo(t.byteBudget,xe)}`,` heavyGitByteThreshold: ${wo(t.heavyGitByteThreshold,Xe)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
112
+ `),s=Up(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
113
113
  `)}
114
- `}let o=Sc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
114
+ `}let o=Oc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
115
115
  `)}
116
- `}function Hf(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(xc(n)&&Ec(n)===0&&Gf(n)===t)return r}return-1}function Sc(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(xc(e[s])&&Ec(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ec(e){return(e.match(/^ */)?.[0]??"").length}function xc(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Gf(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function go(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function uv(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
117
- `),n=Hf(r,"plugins");if(n===-1)return e;let s=Sc(r,n,0),o=Ff(r,"memory",n+1,s,2);if(o===-1)return e;let i=Sc(r,o,2),a=[...r],c=Ff(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
116
+ `}function Up(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Ic(n)&&Ac(n)===0&&Jp(n)===t)return r}return-1}function Oc(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Ic(e[s])&&Ac(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ac(e){return(e.match(/^ */)?.[0]??"").length}function Ic(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Jp(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function wo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Sv(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
117
+ `),n=Up(r,"plugins");if(n===-1)return e;let s=Oc(r,n,0),o=Gp(r,"memory",n+1,s,2);if(o===-1)return e;let i=Oc(r,o,2),a=[...r],c=Gp(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
118
118
  `)}
119
- `}function Ff(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(xc(i)&&Ec(i)===s&&Gf(i)===t)return o}return-1}async function Rc(e){try{return await ev(e,Zx.F_OK),!0}catch{return!1}}var kc,iv,av,Uf=y(()=>{"use strict";_e();ve();kc=hi,iv=pu,av=".red/memory/graph.rdb"});var zf={};j(zf,{runRspMcpServer:()=>dv});import{createInterface as lv}from"node:readline";async function dv(){let e=xe(process.cwd(),process.env),t=lv({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 mv(n,e);Vf({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Vf({jsonrpc:"2.0",id:typeof Kf(r)?.id>"u"?null:Kf(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function mv(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:qf(t)}]};if(!t.enabled)return{content:[{type:"text",text:qf(t)}],isError:!0};let n=_v(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:Gt({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:Gt({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:Gt({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:Gt(pv(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await fv(r.arguments,n)}]}}return{}}function Gt(e){return`${H(e)}
120
- `}function pv(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function fv(e,t){let r=gv(e?.payload),n=hv(e?.level),s=await Da(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return bv(s.output);let o=zs(r);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return Gt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(r),text:o});let i=Buffer.from(r),a=await t.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return yv(o,i.length,a,n)}function gv(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function hv(e){return e==="terse"?"terse":"brief"}function yv(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Jf(o.subarray(0,i)),c=Jf(o.subarray(Math.max(0,o.length-i)));return Gt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:wv(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function bv(e){return e.endsWith(`
119
+ `}function Gp(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Ic(i)&&Ac(i)===s&&Jp(i)===t)return o}return-1}async function Tc(e){try{return await pv(e,fv.F_OK),!0}catch{return!1}}var Pc,_v,kv,Vp=y(()=>{"use strict";ke();Ce();Pc=_i,_v=_u,kv=".red/memory/graph.rdb"});var Zp={};j(Zp,{runRspMcpServer:()=>xv});import{createInterface as Ev}from"node:readline";async function xv(){let e=ve(process.cwd(),process.env),t=Ev({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 vv(n,e);Yp({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Yp({jsonrpc:"2.0",id:typeof Xp(r)?.id>"u"?null:Xp(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function vv(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:zp(t)}]};if(!t.enabled)return{content:[{type:"text",text:zp(t)}],isError:!0};let n=Dv(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:Jt({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:Jt({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:Jt({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:Jt(Cv(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await Tv(r.arguments,n)}]}}return{}}function Jt(e){return`${H(e)}
120
+ `}function Cv(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function Tv(e,t){let r=Ov(e?.payload);try{return await Pv(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return Qp(r)}}async function Pv(e,t,r){let n=Av(t?.level),s=await Fa(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return Qp(s.output);let o=to(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return Jt({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 Iv(o,i.length,a,n)}function Ov(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function Av(e){return e==="terse"?"terse":"brief"}function Iv(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Kp(o.subarray(0,i)),c=Kp(o.subarray(Math.max(0,o.length-i)));return Jt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:Lv(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function Qp(e){return e.endsWith(`
121
121
  `)?e:`${e}
122
- `}function Jf(e){return e.toString("utf8").replace(/�$/g,"")}function wv(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 _v(e){return new Cn(lt(process.cwd()),{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 qf(e){return Gt({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 Vf(e){process.stdout.write(`${JSON.stringify(e)}
123
- `)}function Kf(e){try{return JSON.parse(e)}catch{return null}}var Yf=y(()=>{"use strict";Ne();ve();_n();nt()});var Qf={};j(Qf,{renderShellInit:()=>Rv});function Rv(e,t=Pn){if(e==="fish")return kv(t);if(e==="bash"||e==="zsh")return Sv(e,t);throw new Error(`unsupported shell: ${e}`)}function kv(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(yo))].map(r=>` abbr --add --position command -- ${r} '${Cv(`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(`
124
- `)}function Sv(e,t){let r=xv(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ho("git",r.get("git")??[]),...ho("gh",r.get("gh")??[]),...ho("vitest",r.get("vitest")??[]),...ho("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(`
125
- `)}function ho(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(yo),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(yo)),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=>Xf(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of Ev(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${vv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Xf(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Ev(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 xv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!yo(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function yo(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Xf(e){return e.replace(/[\\|)&;]/g,"\\$&")}function vv(e){return e.replace(/'/g,"'\\''")}function Cv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Zf=y(()=>{"use strict";An()});function vc(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"&&Tv(t.chosenOption)&&Ov(t.outcome)&&Pv(t.cost)}function Tv(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Ov(e){return e==="success"||e==="failure"||e==="escalated"}function Pv(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 eg=y(()=>{});import{createHash as Av}from"node:crypto";function mg(e,t){return new Tc(e,t)}function tg(e){let t=Number(e.red_entity_id??e.rid),r=Oc(e.properties??e.PROPERTIES),n=pg(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 rg(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=fg(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:Oc(e.properties??e.PROPERTIES)}}function Dv(e){let t=Number(e.red_entity_id??e.rid),r=Oc(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!vc(r)?null:{rid:t,event:r}}function Oc(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bo(e)?e:{}}function pg(e){let t=e==="contact"?"person":e;if(Iv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function fg(e){if(Lv.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Nv(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function ng(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ut(e){return bo(e)?e:{}}function sg(e,t){return Ut(e)[t]}function og(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function ig(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function ag(e){let t=Ut(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 bo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cc(e){return e!=null}function $v(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Mv(e){return Av("sha256").update(JSON.stringify(e)).digest("hex")}function Bv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function cg(e){return`artifact-hash:${e}`}function ug(e,t,r){return`connection:${e}:${t}:${r}`}function lg(){return"model-tier-bandit:v1"}function Fv(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function dg(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+dg(r,a)*3+dg(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 jv(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=hg({...gg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Wt(s)}function hg(e){return{...e,lexical:Wt(e.lexical),tags:Wt(e.tags),kind:Wt(e.kind),connections:Wt(e.connections),vector:Wt(e.vector),total:Wt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Wt(e){return Math.round(e*1e3)/1e3}function Hv(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 Gv(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 Wv(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var We,Iv,Lv,Tc,yg=y(()=>{"use strict";eg();We={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Iv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Lv=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Tc=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(Ut(r));if(t==="getArtifact")return await this.getArtifact(sg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ut(r);return await this.search(og(n,"query"),ig(n,"limit")??10,ag(n.options))}if(t==="think"){let n=Ut(r);return await this.think(og(n,"query"),ig(n,"limit")??8,ag(n.options))}if(t==="link")return await this.link(Ut(r));if(t==="backlinks")return await this.backlinks(sg(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ut(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 ${We.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${We.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${We.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:Wv(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=pg(ae(t.kind)||"note"),o=$v(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Mv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(cg(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Bv(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:bo(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${We.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=tg(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(cg(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 ${We.artifacts}`)).rows.map(tg).filter(Cc)}async search(t,r,n={}){let s=Fv(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),m=hg({...l,connections:jv(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:Hv(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 Gv(t,s)}async link(t){let r=await this.getArtifact(ng(t.from)),n=await this.getArtifact(ng(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=fg(ae(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:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:bo(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${We.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=rg(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ug(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 ${We.connections}`)).rows.map(rg).filter(Cc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=Nv(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(!vc(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${We.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 ${We.outcomeEvents}`)).rows.map(Dv).filter(Cc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(lg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(lg(),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(ug(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(We.kv)}}});var Pg={};j(Pg,{runResidentServer:()=>Xv});import{randomUUID as Pr}from"node:crypto";import{execFileSync as Uv,spawn as Jv}from"node:child_process";import{existsSync as qv}from"node:fs";import{mkdir as Eg,rename as Vv,rm as bg,writeFile as xg}from"node:fs/promises";import{createServer as Kv}from"node:net";import{dirname as Lc,join as wo}from"node:path";import{fileURLToPath as zv,pathToFileURL as Yv}from"node:url";async function Xv(e){await Eg(Lc(e.socketPath),{recursive:!0});let t=l0();u0();let r=e.telemetryDrainTimeoutMs??vg,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??es,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=Kv(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),y0(v,async O=>{h();let F=await b0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),fe={id:O.id,ok:!0,value:F,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};Og(v,fe),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=c0(c),d.close();for(let v of l)v.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(v=>{let O=()=>{_o(),d.close();for(let F of l)F.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,O),{signal:v,handler:O}});await new Promise((v,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),v()})}),(async()=>{let v=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 mt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),fe=Number(process.hrtime.bigint()-v)/1e6,Pe=new Ic(F,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Qn,byteBudget:e.telemetryByteBudget??e.byteBudget??Zn});if(o){await F.close();return}if(await Pc(Pe,r),o){await F.close();return}n={kind:"ready",store:F,telemetry:Pe,storeOpenCount:1,storeElapsedMs:fe},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Pc(te.telemetry,r)},m),s.unref(),h()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},h()}),e.pidPath&&await xg(e.pidPath,`${process.pid}
126
- `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??wo(Y(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await zn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:b})}catch{}await new Promise(v=>d.once("close",v)),a&&clearTimeout(a),s&&clearInterval(s),await bg(e.socketPath,{force:!0});let E=n;E.kind==="ready"&&(await Pc(E.telemetry,r,u),await E.store.close()),c&&clearTimeout(c);for(let{signal:v,handler:O}of g)process.off(v,O);t?.kill("SIGTERM"),_o(),e.pidPath&&await bg(e.pidPath,{force:!0}),await Yn(w)}async function n0(e,t,r=new Date){let n=await hs(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=wo(Y(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 Eg(Lc(a),{recursive:!0}),await xg(c,`${H(u)}
127
- `,{encoding:"utf8",mode:384}),await Vv(c,a)}async function Pc(e,t=vg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Tg(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
128
- `)}}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 ${Cg(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} ${Cg(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 Cg(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(()=>{_o(),process.exit(0)},e0)}function u0(){wg||(wg=!0,process.on("exit",()=>_o()))}function l0(){if(process.platform==="win32")return;let t=Jv(process.execPath,["-e",`
122
+ `}function Kp(e){return e.toString("utf8").replace(/�$/g,"")}function Lv(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 Dv(e){return new $n(dt(process.cwd()),{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 zp(e){return Jt({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 Yp(e){process.stdout.write(`${JSON.stringify(e)}
123
+ `)}function Xp(e){try{return JSON.parse(e)}catch{return null}}var eg=y(()=>{"use strict";$e();Ce();Pn();st()});var rg={};j(rg,{renderShellInit:()=>Nv});function Nv(e,t=Mn){if(e==="fish")return $v(t);if(e==="bash"||e==="zsh")return Mv(e,t);throw new Error(`unsupported shell: ${e}`)}function $v(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(ko))].map(r=>` abbr --add --position command -- ${r} '${Hv(`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(`
124
+ `)}function Mv(e,t){let r=Fv(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,..._o("git",r.get("git")??[]),..._o("gh",r.get("gh")??[]),..._o("vitest",r.get("vitest")??[]),..._o("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(`
125
+ `)}function _o(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(ko),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ko)),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=>tg(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of Bv(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${jv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${tg(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Bv(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 Fv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ko(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ko(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function tg(e){return e.replace(/[\\|)&;]/g,"\\$&")}function jv(e){return e.replace(/'/g,"'\\''")}function Hv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var ng=y(()=>{"use strict";Bn()});function Lc(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"&&Gv(t.chosenOption)&&Wv(t.outcome)&&Uv(t.cost)}function Gv(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Wv(e){return e==="success"||e==="failure"||e==="escalated"}function Uv(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 sg=y(()=>{});import{createHash as Jv}from"node:crypto";function hg(e,t){return new Nc(e,t)}function og(e){let t=Number(e.red_entity_id??e.rid),r=$c(e.properties??e.PROPERTIES),n=yg(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 ig(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=bg(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:$c(e.properties??e.PROPERTIES)}}function Kv(e){let t=Number(e.red_entity_id??e.rid),r=$c(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Lc(r)?null:{rid:t,event:r}}function $c(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Ro(e)?e:{}}function yg(e){let t=e==="contact"?"person":e;if(qv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function bg(e){if(Vv.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zv(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function ag(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Vt(e){return Ro(e)?e:{}}function cg(e,t){return Vt(e)[t]}function ug(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=Vt(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 Ro(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Dc(e){return e!=null}function Yv(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Xv(e){return Jv("sha256").update(JSON.stringify(e)).digest("hex")}function Qv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function mg(e){return`artifact-hash:${e}`}function fg(e,t,r){return`connection:${e}:${t}:${r}`}function pg(){return"model-tier-bandit:v1"}function Zv(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function gg(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function wg(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+gg(r,a)*3+gg(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 e0(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=_g({...wg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return qt(s)}function _g(e){return{...e,lexical:qt(e.lexical),tags:qt(e.tags),kind:qt(e.kind),connections:qt(e.connections),vector:qt(e.vector),total:qt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function qt(e){return Math.round(e*1e3)/1e3}function t0(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 r0(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 n0(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ue,qv,Vv,Nc,kg=y(()=>{"use strict";sg();Ue={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},qv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Vv=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Nc=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(Vt(r));if(t==="getArtifact")return await this.getArtifact(cg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Vt(r);return await this.search(ug(n,"query"),lg(n,"limit")??10,dg(n.options))}if(t==="think"){let n=Vt(r);return await this.think(ug(n,"query"),lg(n,"limit")??8,dg(n.options))}if(t==="link")return await this.link(Vt(r));if(t==="backlinks")return await this.backlinks(cg(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Vt(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 ${Ue.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ue.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ue.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:n0(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=yg(ae(t.kind)||"note"),o=Yv(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Xv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(mg(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${Qv(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:Ro(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ue.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=og(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(mg(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Ue.artifacts}`)).rows.map(og).filter(Dc)}async search(t,r,n={}){let s=Zv(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=wg(u,s),m=_g({...l,connections:e0(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:t0(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 r0(t,s)}async link(t){let r=await this.getArtifact(ag(t.from)),n=await this.getArtifact(ag(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=bg(ae(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:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:Ro(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ue.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=ig(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(fg(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 ${Ue.connections}`)).rows.map(ig).filter(Dc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=zv(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(!Lc(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ue.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 ${Ue.outcomeEvents}`)).rows.map(Kv).filter(Dc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(pg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(pg(),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(fg(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ue.kv)}}});var Dg={};j(Dg,{runResidentServer:()=>d0});import{randomUUID as Nr}from"node:crypto";import{execFileSync as s0,spawn as o0}from"node:child_process";import{existsSync as i0}from"node:fs";import{mkdir as Tg,rename as a0,rm as Rg,writeFile as Pg}from"node:fs/promises";import{createServer as c0}from"node:net";import{dirname as jc,join as So}from"node:path";import{fileURLToPath as u0,pathToFileURL as l0}from"node:url";async function d0(e){await Tg(jc(e.socketPath),{recursive:!0});let t=E0();S0();let r=e.telemetryDrainTimeoutMs??Og,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??as,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=c0(v=>{l.add(v),v.once("close",()=>l.delete(v)),p(),A0(v,async O=>{p();let F=await I0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ge={id:O.id,ok:!0,value:F,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};Lg(v,ge),O.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=R0(c),d.close();for(let v of l)v.destroy()}function p(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let h=["SIGINT","SIGTERM"].map(v=>{let O=()=>{Eo(),d.close();for(let F of l)F.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,O),{signal:v,handler:O}});await new Promise((v,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),v()})}),(async()=>{let v=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 ft.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ge=Number(process.hrtime.bigint()-v)/1e6,Ae=new Fc(F,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??os,byteBudget:e.telemetryByteBudget??e.byteBudget??is});if(o){await F.close();return}if(await Mc(Ae,r),o){await F.close();return}n={kind:"ready",store:F,telemetry:Ae,storeOpenCount:1,storeElapsedMs:ge},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Mc(te.telemetry,r)},m),s.unref(),p()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},p()}),e.pidPath&&await Pg(e.pidPath,`${process.pid}
126
+ `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??So(X(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await rs(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:b})}catch{}await new Promise(v=>d.once("close",v)),a&&clearTimeout(a),s&&clearInterval(s),await Rg(e.socketPath,{force:!0});let E=n;E.kind==="ready"&&(await Mc(E.telemetry,r,u),await E.store.close()),c&&clearTimeout(c);for(let{signal:v,handler:O}of h)process.off(v,O);t?.kill("SIGTERM"),Eo(),e.pidPath&&await Rg(e.pidPath,{force:!0}),await ns(w)}async function y0(e,t,r=new Date){let n=await Ss(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=So(X(t),g0),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 Tg(jc(a),{recursive:!0}),await Pg(c,`${H(u)}
127
+ `,{encoding:"utf8",mode:384}),await a0(c,a)}async function Mc(e,t=Og,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Ig(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
128
+ `)}}async function b0(e){let t=[];for(let r of h0){let n=await w0(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await _0(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ag(r)}`))}return t}async function w0(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 _0(e,t,r){let n=k0(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Ag(t)}`)}function k0(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 Ag(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function R0(e){return e&&clearTimeout(e),setTimeout(()=>{Eo(),process.exit(0)},p0)}function S0(){Sg||(Sg=!0,process.on("exit",()=>Eo()))}function E0(){if(process.platform==="win32")return;let t=o0(process.execPath,["-e",`
129
129
  const { execFileSync } = require("node:child_process");
130
130
  const parentPid = Number(process.argv[1]);
131
131
  const known = new Set();
@@ -166,24 +166,24 @@ const timer = setInterval(() => {
166
166
  clearInterval(timer);
167
167
  process.exit(0);
168
168
  }, 500);
169
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function _o(){for(let e of d0())try{process.kill(e,"SIGTERM")}catch{}}function d0(){if(process.platform==="win32")return[];let e="";try{e=Uv("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 m0(e){if(e.collection!==de)return e;let t=await _g(e.raw_text,kg(e.raw_bytes)),r=await _g(e.emitted_text,kg(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 _g(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=Qv)try{return await Tg((async()=>({tokens:(await p0())("cl100k_base").encode(e).length,estimated:!1}))(),Zv,"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 p0(){return Rg??=import(Yv(f0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Rg}function f0(){let e=Lc(zv(import.meta.url)),r=[wo(e,"..","node_modules","js-tiktoken","dist","index.js"),wo(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>qv(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function kg(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function z(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ac(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Tg(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 Sg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Sg(t)&&(t.collection===se||t.collection===q||t.collection===de||t.collection===Me)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Sg(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(`
170
- `);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??Pr(),ok:!1,error:a instanceof Error?a.message:String(a)};Og(e,u)}finally{e.end()}})()})}function Og(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
171
- `)}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==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Ui(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 hs(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 Ji(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 mg(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 Qv,Zv,vg,e0,t0,r0,Ic,wg,Rg,Ag=y(()=>{"use strict";_e();Xn();Ne();Qe();yg();Ce();ve();Qv=256*1024,Zv=500,vg=2e3,e0=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),t0="rsp-status-summary.json",r0=[se,q,de,Me,rn],Ic=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 Wi(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:z(c.command)||"unknown",source_id:z(c.id),source_collection:z(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:Pr(),a={...await m0(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:${z(r.id)||Pr()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ac(z(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===Me?await this.writeEvent(t,{collection:se,id:`mirror:${z(r.id)||Pr()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ac(z(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:z(r.reason)||"unknown",wrapper_family:z(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:z(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Me,id:Pr(),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:${Pr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Ac(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(rn).get("index:v1"),n=typeof r=="string"?g0(r):r;return h0(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(rn).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})}};wg=!1});De();function we(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function W(e,t){let r=we(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function su(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function ou(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 Fo(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 Fo=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Bn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Yt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function iu(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 Fn(e,t){let r=we(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 au(e){return e.includes("--full")}Ne();import{existsSync as R0}from"node:fs";import{fileURLToPath as k0}from"node:url";function yu(e){let t={app:e,version:Sh(Xt("__RED_BUILD_VERSION__",()=>"2.87.2")??"0.0.0-dev"),gitSha:Xt("__RED_BUILD_GIT_SHA__",()=>"1cef3403d941742a4d5f2816c91b2ceb45c0b63c")??"unknown",buildTime:Xt("__RED_BUILD_TIME__",()=>"2026-07-23T16:34:37-03:00")??"unknown",bundleAsset:Xt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Xt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Xt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Sh(e){return e.startsWith("v")?e.slice(1):e}function Xt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}De();Ne();Fr();import{existsSync as GR}from"node:fs";import{fileURLToPath as WR}from"node:url";ci();Ne();di();import{existsSync as pw}from"node:fs";import{fileURLToPath as fw}from"node:url";async function mr(e,t){let r={stats:gw(e.telemetryByteBudget),telemetry:Ki(t)};if(!e.storeUri.startsWith("file://"))return r;let n=fw(e.storeUri);if(!pw(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Qe(),or)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Ki(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Qe(),or));await s();let{readAccountingLaneStats:o,readTelemetryStats:i}=await Promise.resolve().then(()=>(Ce(),on)),a=await er(e.storeUri);try{return{stats:await o(a,e.telemetryByteBudget),telemetry:await i(a,t)}}finally{await a.close()}}function zi(e,t=Ki(30),r=!1){return`${H(Yi(e,t,r))}
172
- `}function Yi(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??ys(),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:hw(t.savings),dollars_saved_estimate_usd_display:yw(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:Vi(t.health.degradation_rate),show_hit_rate_display:Vi(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:Vi(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)},latency:{...t.latency,wrapper_ms_p50_display:qi(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:qi(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:qi(t.latency.store_elapsed_ms_avg)}}}function Kl(e){return`${H(e)}
173
- `}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:[]}}}function gw(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:ys()}}function ys(){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(`
174
- `)}function hw(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 yw(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?qr(e.dollars_saved_estimate_usd):`${qr(e.dollars_saved_low_usd)}-${qr(e.dollars_saved_high_usd)} (estimate_midpoint: ${qr(e.dollars_saved_estimate_usd)})`}function qi(e){return e==null?"none":String(e)}function Vi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Sm(e){let{stats:t,telemetry:r}=await mr(e,30),[n,s]=await Promise.all([UR(e),Promise.resolve().then(()=>(Ca(),va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function Em(e){let t=Yi(e.stats,e.telemetry,!1),r=Wo({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??ys()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},JR(e));return`${H(r)}
175
- `}async function UR(e){if(!e.storeUri.startsWith("file://"))return[];let t=WR(e.storeUri);if(!GR(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(Qe(),or)),n=await r.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await n.recoveryHandles(5)}finally{await n.close()}}function JR(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"]}Ne();De();import{existsSync as iE}from"node:fs";import{fileURLToPath as aE}from"node:url";Ce();import{spawn as Ys}from"node:child_process";async function fp(e,t,r){let n=process.hrtime.bigint(),s=await vS(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return CS(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function vS(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(()=>(Hs(),js)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(En(),Sn)).then(i=>i.parseExecCommandLine(e));r=Ys(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Ys(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)}
176
- `;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 gp(e){return e>0&&Math.random()<e}async function vn(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
177
- `);let s=await bp(t);if(n){let o=TS(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ce(),on));pp(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Fa(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})),pp(i(n,{collection:c,ts:new Date().toISOString(),command:Fa(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function hp(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Xs()}, passing through
178
- `),await bp(e)}function Xs(){return"rsp is not enabled in this directory; run /red-setup"}function yp(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Fe(e){return Fa(e.positional)}function Fa(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 xn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function CS(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:Fe(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};ft(e,{collection:"rsp_accounting_events_v1",...i}),ft(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function TS(e,t,r){let n=t[0]??"unknown",s=OS(r)||e;return{reason:mp(r)==="ENOENT"||mp(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:AS(r)??1,stderrHead:PS(s,240)}}function OS(e){return e instanceof Error?xn(e.message):xn(String(e??""))}function PS(e,t){let r=xn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function mp(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function AS(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 pp(e){e.catch(()=>{})}async function bp(e){if(e[0]==="exec"||e[0]==="proxy")return await IS(e);let t=e[0];if(!t)return 2;let r=Ys(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)}
179
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function IS(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Hs(),js));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(En(),Sn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
180
- `),2}let r=Ys(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
181
- `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function jp(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")),Fp("disabled",n,r);n.push(await cE(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Sr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(nt(),Ft));if(n.push(uE(await o(t))),n.push(lE(e)),Gp(e)){let{telemetry:i}=await mr(e,r);n.push(dE(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Fp(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Hp(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
182
- `}async function cE(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(()=>(An(),oo)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Sr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Sr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?xn(t.message):"unknown error"}`,"rsp setup")}}function uE(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):Sr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function lE(e){return e.storeUri.startsWith("file://")?Gp(e)?Z("store_provisioning","rsp store exists for this directory"):Sr("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function dE(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 Sr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,mE(s,t))}function mE(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 Gp(e){if(!e.storeUri.startsWith("file://"))return!0;try{return iE(aE(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function Sr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Bo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Fp(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)}}qa();function qp(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${gE(t).join(`
169
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Eo(){for(let e of x0())try{process.kill(e,"SIGTERM")}catch{}}function x0(){if(process.platform==="win32")return[];let e="";try{e=s0("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 v0(e){if(e.collection!==me)return e;let t=await Eg(e.raw_text,vg(e.raw_bytes)),r=await Eg(e.emitted_text,vg(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 Eg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=m0)try{return await Ig((async()=>({tokens:(await C0())("cl100k_base").encode(e).length,estimated:!1}))(),f0,"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 C0(){return xg??=import(l0(T0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await xg}function T0(){let e=jc(u0(import.meta.url)),r=[So(e,"..","node_modules","js-tiktoken","dist","index.js"),So(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>i0(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function vg(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 Bc(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Ig(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 P0(e){try{return JSON.parse(e)}catch{return e}}function O0(e){return Cg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Cg(t)&&(t.collection===se||t.collection===q||t.collection===me||t.collection===Be)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Cg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function A0(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
170
+ `);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??Nr(),ok:!1,error:a instanceof Error?a.message:String(a)};Lg(e,u)}finally{e.end()}})()})}function Lg(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
171
+ `)}catch{}}async function I0(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==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Ki(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 Ss(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 zi(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return D0(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await L0(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function L0(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await hg(s,t).request(r,n)}function D0(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var m0,f0,Og,p0,g0,h0,Fc,Sg,xg,Ng=y(()=>{"use strict";ke();ss();$e();Ze();kg();Te();Ce();m0=256*1024,f0=500,Og=2e3,p0=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),g0="rsp-status-summary.json",h0=[se,q,me,Be,dn],Fc=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 b0(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 Vi(this.opts.rootDir,async a=>{let c=mr(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 y0(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:Nr(),a={...await v0(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===me?await this.writeEvent(t,{collection:se,id:`mirror:${Y(r.id)||Nr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:Bc(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===Be?await this.writeEvent(t,{collection:se,id:`mirror:${Y(r.id)||Nr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:Bc(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:Be,id:Nr(),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:${Nr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Bc(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(dn).get("index:v1"),n=typeof r=="string"?P0(r):r;return O0(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(dn).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})}};Sg=!1});Ne();function _e(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function W(e,t){let r=_e(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function du(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function mu(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 Wo(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 Wo=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Jn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Zt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function fu(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 qn(e,t){let r=_e(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 pu(e){return e.includes("--full")}$e();import{existsSync as N0}from"node:fs";import{fileURLToPath as $0}from"node:url";function Eu(e){let t={app:e,version:Ch(er("__RED_BUILD_VERSION__",()=>"2.87.4")??"0.0.0-dev"),gitSha:er("__RED_BUILD_GIT_SHA__",()=>"9a73cb26ef25ced48258fcb83d46dd933c57aeef")??"unknown",buildTime:er("__RED_BUILD_TIME__",()=>"2026-07-28T11:18:33-03:00")??"unknown",bundleAsset:er("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=er("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=er("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Ch(e){return e.startsWith("v")?e.slice(1):e}function er(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Ne();$e();Ur();import{existsSync as Vk}from"node:fs";import{fileURLToPath as Kk}from"node:url";mi();$e();gi();import{existsSync as bw}from"node:fs";import{fileURLToPath as ww}from"node:url";async function hr(e,t){let r={stats:_w(e.telemetryByteBudget),telemetry:Qi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=ww(e.storeUri);if(!bw(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Ze(),ur)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Qi(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Ze(),ur));await s();let{readAccountingLaneStats:o,readTelemetryStats:i}=await Promise.resolve().then(()=>(Te(),pn)),a=await nr(e.storeUri);try{return{stats:await o(a,e.telemetryByteBudget),telemetry:await i(a,t)}}finally{await a.close()}}function Zi(e,t=Qi(30),r=!1){return`${H(ea(e,t,r))}
172
+ `}function ea(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??Es(),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:kw(t.savings),dollars_saved_estimate_usd_display:Rw(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:Xi(t.health.degradation_rate),show_hit_rate_display:Xi(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:Xi(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:Yi(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Yi(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Yi(t.latency.store_elapsed_ms_avg)}}}function td(e){return`${H(e)}
173
+ `}function Qi(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function _w(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes: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 ta(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
174
+ `)}function kw(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 Rw(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Xr(e.dollars_saved_estimate_usd):`${Xr(e.dollars_saved_low_usd)}-${Xr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Xr(e.dollars_saved_estimate_usd)})`}function Yi(e){return e==null?"none":String(e)}function Xi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Om(e){let{stats:t,telemetry:r}=await hr(e,30),[n,s]=await Promise.all([zk(e),Promise.resolve().then(()=>(Ia(),Aa)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function Am(e){let t=ea(e.stats,e.telemetry,!1),r=Vo({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,health:t.health,decisions:t.decisions,latency:t.latency},Yk(e));return`${H(r)}
175
+ `}async function zk(e){if(!e.storeUri.startsWith("file://"))return[];let t=Kk(e.storeUri);if(!Vk(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(Ze(),ur)),n=await r.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await n.recoveryHandles(5)}finally{await n.close()}}function Yk(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 _E}from"node:fs";import{fileURLToPath as kE}from"node:url";Te();import{spawn as ro}from"node:child_process";async function kf(e,t,r){let n=process.hrtime.bigint(),s=await DS(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return NS(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function DS(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(()=>(Vs(),qs)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Ln(),In)).then(i=>i.parseExecCommandLine(e));r=ro(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=ro(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)}
176
+ `;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 Rf(e){return e>0&&Math.random()<e}async function Nn(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
177
+ `);let s=await xf(t);if(n){let o=$S(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Te(),pn));_f(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Ua(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})),_f(i(n,{collection:c,ts:new Date().toISOString(),command:Ua(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Sf(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${no()}, passing through
178
+ `),await xf(e)}function no(){return"rsp is not enabled in this directory; run /red-setup"}function Ef(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function je(e){return Ua(e.positional)}function Ua(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 Dn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function NS(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};gt(e,{collection:"rsp_accounting_events_v1",...i}),gt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function $S(e,t,r){let n=t[0]??"unknown",s=MS(r)||e;return{reason:wf(r)==="ENOENT"||wf(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:FS(r)??1,stderrHead:BS(s,240)}}function MS(e){return e instanceof Error?Dn(e.message):Dn(String(e??""))}function BS(e,t){let r=Dn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function wf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function FS(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 _f(e){e.catch(()=>{})}async function xf(e){if(e[0]==="exec"||e[0]==="proxy")return await jS(e);let t=e[0];if(!t)return 2;let r=ro(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)}
179
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function jS(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Vs(),qs));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(Ln(),In));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
180
+ `),2}let r=ro(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
181
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Uf(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")),Wf("disabled",n,r);n.push(await RE(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Tr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(st(),Gt));if(n.push(SE(await o(t))),n.push(EE(e)),qf(e)){let{telemetry:i}=await hr(e,r);n.push(xE(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Wf(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Jf(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
182
+ `}async function RE(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(()=>(Bn(),uo)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Tr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Tr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Dn(t.message):"unknown error"}`,"rsp setup")}}function SE(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):Tr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function EE(e){return e.storeUri.startsWith("file://")?qf(e)?Z("store_provisioning","rsp store exists for this directory"):Tr("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function xE(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 Tr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,vE(s,t))}function vE(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 qf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return _E(kE(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function Tr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Go({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Wf(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)}}Za();function Yf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${PE(t).join(`
183
183
  `)}
184
- `}function gE(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}`)]}_e();Ce();import{spawn as hE}from"node:child_process";import{createHash as yE}from"node:crypto";import{existsSync as bE,readFileSync as wE,statSync as _E}from"node:fs";import{tmpdir as RE}from"node:os";import{dirname as kE,join as yt}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?(jt(CE(s,e,t,i,n.lastResponseMetrics())),o&&SE(s,o)):TE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function jt(e){e.catch(()=>{})}async function co(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ce(),on));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 SE(e,t){try{let r=Ze(e),n=_E(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!vE(r,Date.now()-s))return;let o=EE(e),i=xE(o),a=yt(i,"rsp.sock"),c=yt(i,"rsp.pid"),u=yt(Y(o),"rsp-resident.pid.json"),l=yt(o,".red","tmp","rsp","wake.lock");hE(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 EE(e){let t=e;for(;;){if(bE(yt(t,".git")))return t;let r=kE(t);if(r===t)return e;t=r}}function xE(e){let t=yE("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=yt(r,"red-skills",t);if(yt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return yt(RE(),`red-skills-${n}`,t)}function vE(e,t){try{let r=wE(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 CE(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(()=>(Ce(),on));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:Fe(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:Fe(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:Fe(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:Fe(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function TE(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);ft(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Fe(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}),ft(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Fe(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 kt=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}},_c=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function $f(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new _c,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(qa(),Jp));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Mt(),Ia)),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(()=>(gc(),fc)),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(()=>(wc(),bc)),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(()=>(En(),Sn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return Yt(i)?(process.stdout.write(i.render()),2):await vn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await vn("wrapper failed",e.positional,n,r)}async function Ig(e=process.argv.slice(2)){let t=yu("rsp");if(su(e))return process.stdout.write(qp(e)),0;let r=ou(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(An(),oo));return await f()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:f}=await Promise.resolve().then(()=>(An(),oo));return await f()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:f}=await Promise.resolve().then(()=>(_n(),$a));return await f()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:f}=await Promise.resolve().then(()=>(_n(),$a));return await f()}if(r.command==="setup"){let{provisionRspRepoStore:f}=await Promise.resolve().then(()=>(Uf(),Wf)),g=await f(process.cwd());return process.stdout.write(Xi(g)),0}if(r.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(Yf(),zf));return await f(),0}if(r.command==="wait"){let{runWait:f}=await Promise.resolve().then(()=>(Ca(),va));return await f(r.positional)}if(r.command==="shell-init"){let f=r.positional[1];if(f!=="fish"&&f!=="bash"&&f!=="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:g}=await Promise.resolve().then(()=>(Zf(),Qf));return process.stdout.write(g(f)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(ve(),ll)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:f}=await Promise.resolve().then(()=>(nt(),Ft)),g=f(process.cwd()),b=await jp(s,g,Fn(r.positional,1));return process.stdout.write(Hp(b)),b.exitCode}let o=yp(r.command);if(!s.enabled)return o?await hp(r.positional):(process.stdout.write(`${Xs()}
185
- `),0);if(r.command==="git"&&io(r.positional)){let f=process.hrtime.bigint();return await ee(r,await ao(),f,void 0,await Ja(process.cwd()))}let{resolveResidentPaths:i,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(nt(),Ft)),u=i(process.cwd());if(o&&gp(s.measurementHoldoutShare))return await fp(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Ag(),Pg)),g=i(process.cwd()),b=we(r.positional,"--socket")??g.socketPath,w=n(process.cwd(),process.env,r.storeUri??we(r.positional,"--store-uri"));return w.enabled?(await f({socketPath:b,pidPath:we(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,residentVersion:we(r.positional,"--resident-version")??t.version,registryPath:we(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Xs()}
186
- `),0)}if(r.command==="warm-resident"){let f=i(process.cwd()),g=we(r.positional,"--socket")??f.socketPath,b=we(r.positional,"--wake-lock")??f.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??we(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>(nt(),Ft));return await E({...f,socketPath:g,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:f}=await Promise.resolve().then(()=>(Hs(),js));return await f(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:f,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(nt(),Ft)),b=r.command==="sweep"?await g(u):await f(u);return process.stdout.write(`${H(b)}
187
- `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:f}=await Promise.resolve().then(()=>(Ts(),Ad)),g=iu(r.positional);if(!g)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 f({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
188
- `),b.status}if(!r.command){let f=await Sm(s);return process.stdout.write(Em(f)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!R0(k0(s.storeUri)))return o?await $f(r,s,u.rootDir):(process.stdout.write($({command:Fe(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(f=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:f})),m=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:f}=await Promise.resolve().then(()=>(Qe(),or));return await f.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:f,telemetry:g}=await mr(s,Fn(r.positional,30));return process.stdout.write(zi(f,g,au(r.positional))),0}if(r.command==="gains"){let f=await p();if(h=()=>f.close(),!S0(f))return process.stdout.write(`error: rsp gains requires the shared RedDB store
189
- `),1;let g=await f.telemetryGains(Fn(r.positional,28));return process.stdout.write(Kl(g)),0}if(r.command==="git"){if(jt(m()),io(r.positional)){let E=process.hrtime.bigint();return await ee(r,await ao(),E,void 0,u.rootDir)}let{runGitWrapper:f}=await Promise.resolve().then(()=>(Mt(),Ia)),g=new kt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await f(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="gh"){jt(m());let{runGhWrapper:f}=await Promise.resolve().then(()=>(dc(),lc)),g=new kt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await f(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){jt(m());let{runTestWrapper:f}=await Promise.resolve().then(()=>(gc(),fc)),g=new kt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await f(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="cat"){jt(m());let{runCatWrapper:f}=await Promise.resolve().then(()=>(wc(),bc)),g=new kt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await f(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="exec"){jt(m());let{runExecWrapper:f}=await Promise.resolve().then(()=>(En(),Sn)),g=new kt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await f(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="show"&&r.handle){let f=await p();h=()=>f.close();let g=await f.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await co(u.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(w),await co(u.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 co(u.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(f){if(Yt(f))return process.stdout.write(f.render()),2;if(o)return await vn("wrapper failed",r.positional,f,u.rootDir);throw f}finally{await h?.()}}function S0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}De();import.meta.url===`file://${process.argv[1]}`&&Ig().then(e=>process.exit(e),e=>{Yt(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{Ig as main,Xi as renderSetupResult,zi as renderStats};
184
+ `}function PE(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();Te();import{spawn as OE}from"node:child_process";import{createHash as AE}from"node:crypto";import{existsSync as IE,readFileSync as LE,statSync as DE}from"node:fs";import{tmpdir as NE}from"node:os";import{dirname as $E,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?(Wt(HE(s,e,t,i,n.lastResponseMetrics())),o&&ME(s,o)):GE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Wt(e){e.catch(()=>{})}async function fo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Te(),pn));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 ME(e,t){try{let r=et(e),n=DE(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!jE(r,Date.now()-s))return;let o=BE(e),i=FE(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");OE(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 BE(e){let t=e;for(;;){if(IE(wt(t,".git")))return t;let r=$E(t);if(r===t)return e;t=r}}function FE(e){let t=AE("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(NE(),`red-skills-${n}`,t)}function jE(e,t){try{let r=LE(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 HE(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(()=>(Te(),pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,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:je(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:je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function GE(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,wrapper_ms:n}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes: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}},Cc=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Fp(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Cc,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(Za(),zf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(jt(),Ma)),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(()=>(bc(),yc)),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(()=>(Rc(),kc)),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(()=>(vc(),xc)),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(()=>(Ln(),In)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return Zt(i)?(process.stdout.write(i.render()),2):await Nn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Nn("wrapper failed",e.positional,n,r)}async function $g(e=process.argv.slice(2)){let t=Eu("rsp");if(du(e))return process.stdout.write(Yf(e)),0;let r=mu(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Bn(),uo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Bn(),uo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Pn(),Ha));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Pn(),Ha));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Vp(),qp)),h=await g(process.cwd());return process.stdout.write(ta(h)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(eg(),Zp));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Ia(),Aa));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:h}=await Promise.resolve().then(()=>(ng(),rg));return process.stdout.write(h(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Ce(),yl)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(st(),Gt)),h=g(process.cwd()),b=await Uf(s,h,qn(r.positional,1));return process.stdout.write(Jf(b)),b.exitCode}let o=Ef(r.command);if(!s.enabled)return o?await Sf(r.positional):(process.stdout.write(`${no()}
185
+ `),0);if(r.command==="git"&&lo(r.positional)){let g=process.hrtime.bigint();return await ee(r,await mo(),g,void 0,await Qa(process.cwd()))}let{resolveResidentPaths:i,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(st(),Gt)),u=i(process.cwd());if(o&&Rf(s.measurementHoldoutShare))return await kf(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Ng(),Dg)),h=i(process.cwd()),b=_e(r.positional,"--socket")??h.socketPath,w=n(process.cwd(),process.env,r.storeUri??_e(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:_e(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:h.rootDir,storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,residentVersion:_e(r.positional,"--resident-version")??t.version,registryPath:_e(r.positional,"--registry")??h.registryPath}),0):(process.stdout.write(`${no()}
186
+ `),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),h=_e(r.positional,"--socket")??g.socketPath,b=_e(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??_e(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>(st(),Gt));return await E({...g,socketPath:h,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(Vs(),qs));return await g(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:h}=await Promise.resolve().then(()=>(st(),Gt)),b=r.command==="sweep"?await h(u):await g(u);return process.stdout.write(`${H(b)}
187
+ `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(Ns(),Bd)),h=fu(r.positional);if(!h)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:h.path,params:h.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
188
+ `),b.status}if(!r.command){let g=await Om(s);return process.stdout.write(Am(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!N0($0(s.storeUri)))return o?await Fp(r,s,u.rootDir):(process.stdout.write($({command:je(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(g=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:g})),m=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:g}=await Promise.resolve().then(()=>(Ze(),ur));return await g.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},f=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),p;try{if(r.command==="stats"){let{stats:g,telemetry:h}=await hr(s,qn(r.positional,30));return process.stdout.write(Zi(g,h,pu(r.positional))),0}if(r.command==="gains"){let g=await f();if(p=()=>g.close(),!M0(g))return process.stdout.write(`error: rsp gains requires the shared RedDB store
189
+ `),1;let h=await g.telemetryGains(qn(r.positional,28));return process.stdout.write(td(h)),0}if(r.command==="git"){if(Wt(m()),lo(r.positional)){let E=process.hrtime.bigint();return await ee(r,await mo(),E,void 0,u.rootDir)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(jt(),Ma)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="gh"){Wt(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(bc(),yc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h});return await ee(r,w,b,h,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Wt(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Rc(),kc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h});return await ee(r,w,b,h,u.rootDir)}if(r.command==="cat"){Wt(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(vc(),xc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="exec"){Wt(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(Ln(),In)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="show"&&r.handle){let g=await f();p=()=>g.close();let h=await g.get(r.handle);if(h&&"original"in h&&h.original)return process.stdout.write(h.original),await fo(u.rootDir,r.handle,!0,h.original.length),0;if(h?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${h.expired_at}`,help:h.command});return process.stdout.write(w),await fo(u.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 fo(u.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(Zt(g))return process.stdout.write(g.render()),2;if(o)return await Nn("wrapper failed",r.positional,g,u.rootDir);throw g}finally{await p?.()}}function M0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}Ne();import.meta.url===`file://${process.argv[1]}`&&$g().then(e=>process.exit(e),e=>{Zt(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{$g as main,ta as renderSetupResult,Zi as renderStats};