@reddb-io/red-skills 2.85.1 → 2.86.1

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,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Pg=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)Pg(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Ar(e,t)}function I(e,t){return new vt(e,t)}function Vt(e){return e instanceof vt?e:e instanceof Ar?new vt(e.line,e.reason):new vt(0,String(e&&e.message?e.message:e))}var Ar,vt,Lr=y(()=>{Ar=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 Ie(e){return k(e,"invalid quoted string")}function Ae(e,t){if(e==="")return"";if(e.startsWith('"'))return Nc(e,t);if(e.includes('"'))throw Ie(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Og(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 k(t,"expected non-empty field name");return[r,!1]}function Nc(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 Tt(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 Og(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ig(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ag(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 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 Ag(e);if(typeof e=="string")return Dg(e,t);throw k(0,"not a primitive")}function Lg(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ye(e){return Lg(e)?e:$c(e)}function Dg(e,t){return Ng(e,t)?$c(e):e}function Ng(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ig(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,So=y(()=>{Lr();L=","});function $g(e={}){return{indent:Math.max(1,e.indent??Oo),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Mg(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 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=$g(t),n=Mg(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=Lo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Co(l,s.number);u=void 0}if(u!==void 0)return Fg(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Ae(s.content.trim(),s.number);let i={index:0},a=Io(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(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 k(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=Bg(e,t,r,n);jc(s,i,a,c,n,o.number)}return s}function Bg(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 h;try{h=Ug(a)}catch(g){if(n.strict)throw Co(g,s.number);t.index+=1;let b=Eo(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 m=jg(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Lo(a,i)}catch(g){if(n.strict)throw Co(g,s.number);t.index+=1;let b=Eo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(h.key===""&&!h.keyQuoted)throw k(s.number,"expected non-empty field name");let m=Ao(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:m}}let[p,d]=Je(a,s.number);if(p===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let f=Eo(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function Eo(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ae(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Io(e,t,r+1,o):{}}function jg(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]=Je(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Tt(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw k(i.number,"keyed map row length mismatch");let p={};e.fields.forEach((d,f)=>{Nr(p,d,Ae(l[f],i.number),s,i.number)}),jc(o,c,u,p,s,i.number),r.index+=1}return o}function Fg(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=Ao(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 Ao(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 Hg(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Tt(a,e.delimiter,i).map(u=>Ae(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Gg(e,r,n,s+1,o)}function Hg(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw vo(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(!Mc(c.content,e.delimiter,c.number))break;let u=Tt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Nr(l,p,Ae(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw vo(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Mc(a.content,e.delimiter,a.number))throw k(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 Gg(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 vo(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(Wg(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 Wg(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=Lo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Ao(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,Ae(o,s.number)}function vo(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function Lo(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]=Je(r.slice(0,n),0)}catch{throw k(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw k(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw k(0,"invalid array header");let l=Number.parseInt(u,10),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw k(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=Bc(d.slice(1,-1),p)}catch(h){throw k(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Ug(e){let t=ne(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Je(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=Bc(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 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 k(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[p]=Je(e.slice(l,n),0);if(p==="")throw k(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw k(0,"invalid array header");n+=1}else r.push([...a,p]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw k(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw k(0,"invalid array header")}if(u===0)throw k(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw k(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Jg(r[a],r[c])||To(r[a],r[c])||To(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 Jg(e,t){return e.length===t.length&&To(e,t)}function To(e,t){return t.every((r,n)=>e[n]===r)}function Co(e,t){return k(t,e.reason??String(e.message))}function jc(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(qg)){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 k(s,"duplicate key");Kt(e,o,r);return}if(i&&!zt(e[o])){if(n.strict)throw k(s,"path expansion conflict");Kt(e,o,{})}else i||Kt(e,o,{});Nr(e[o],t.slice(1),r,n,s)}function qg(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function zt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Do(n,void 0,e,0,!1,r):zt(e)?Fc(n,e,0,r):n.push(Le(e,L)),n.join("")}function $r(e,t){e.push(" ".repeat(t*Oo))}function Fc(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)){Do(e,t,r,n,!1,s);return}if(zt(r)){let o=s.keyedMapCollapse?Kg(r,s):void 0;if(o!==void 0){e.push(ye(t),"{",o.fields.map(No).join(L),`}:
3
+ var Ag=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)Ag(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:Ig(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 Ig(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Lg(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Dg(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 Dg(e);if(typeof e=="string")return $g(e,t);throw R(0,"not a primitive")}function Ng(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ye(e){return Ng(e)?e:$c(e)}function $g(e,t){return Mg(e,t)?$c(e):e}function Mg(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Lg(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,So=y(()=>{Lr();L=","});function Bg(e={}){return{indent:Math.max(1,e.indent??Po),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Fg(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=Bg(t),n=Fg(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=Lo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw To(l,s.number);u=void 0}if(u!==void 0)return Gg(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Ie(s.content.trim(),s.number);let i={index:0},a=Ao(n,i,0,r),c=n[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Ao(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}=jg(e,t,r,n);Fc(s,i,a,c,n,o.number)}return s}function jg(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=qg(a)}catch(g){if(n.strict)throw To(g,s.number);t.index+=1;let b=Eo(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=Hg(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:f}}if(u!==-1){let h;try{h=Lo(a,i)}catch(g){if(n.strict)throw To(g,s.number);t.index+=1;let b=Eo(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=Io(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=Eo(e,t,r,c,s.number,n);return{key:m,quoted:d,value:p}}function Eo(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?Ao(e,t,r+1,o):{}}function Hg(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 Gg(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=Io(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 Io(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 Wg(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 Ug(e,r,n,s+1,o)}function Wg(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw vo(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 vo(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 Ug(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 vo(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(Jg(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 Jg(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=Lo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Io(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 Ao(i,{index:0},r+1,n)}return t.index+=1,Ie(o,s.number)}function vo(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function Lo(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 qg(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(Vg(r[a],r[c])||Co(r[a],r[c])||Co(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 Vg(e,t){return e.length===t.length&&Co(e,t)}function Co(e,t){return t.every((r,n)=>e[n]===r)}function To(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(Kg)){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 Kg(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)?Do(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*Po))}function jc(e,t,r,n){for(let[s,o]of Object.entries(t))$r(e,r),Oo(e,s,o,r,n)}function Oo(e,t,r,n,s){if(Array.isArray(r)){Do(e,t,r,n,!1,s);return}if(zt(r)){let o=s.keyedMapCollapse?Yg(r,s):void 0;if(o!==void 0){e.push(ye(t),"{",o.fields.map(No).join(L),`}:
7
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
8
  `);return}e.push(ye(t),`:
9
- `),Fc(e,r,n+1,s);return}e.push(ye(t),": ",Le(r,L),`
9
+ `),jc(e,r,n+1,s);return}e.push(ye(t),": ",Le(r,L),`
10
10
  `)}function Do(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(ye(t),`: []
11
11
  `):s?e.push(`[0]:
12
12
  `):e.push(`[]
@@ -14,118 +14,118 @@ var Pg=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{fo
14
14
  `);return}let i=s?void 0:Hc(r,o);if(i!==void 0){xo(e,t,r.length,i.fields),e.push(`
15
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
16
  `);return}xo(e,t,r.length,void 0),e.push(`
17
- `);for(let a of r)$r(e,n+1),Vg(e,a,n+1,o)}function Vg(e,t,r,n){if(Array.isArray(t)){e.push("- "),Do(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 xo(e,t,r,n){t!==void 0&&e.push(ye(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(No).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 Kg(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 No(e){return e.children===void 0?ye(e.key):`${ye(e.key)}{${e.children.map(No).join(L)}}`}var Oo,Mr=y(()=>{Lr();So();Oo=2});var Jc=y(()=>{Mr()});function Yg(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw I(t,"invalid trailer count");return Number.parseInt(r,10)}function ru(e,t){if(!tu.test(e))throw I(t,"invalid tag")}function Xg(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 I(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Qg(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw I(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 I(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 I(t,"invalid tag");if(u=c.slice(1,d),ru(u,t),i!=="")throw I(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw I(t,"invalid header");let l=c.slice(1,-2),p;try{p=Tt(l,a,t).map(d=>Je(d,t)[0])}catch(d){throw Vt(d)}if(p.length===0||p.some(d=>d===""))throw I(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Zg(e,t,r){if(e===null||e.delimiter===void 0)throw I(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw I(r,"continuation header mismatch")}function qc(e,t,r,n){let s;try{s=Tt(e,t,n)}catch(o){throw Vt(o)}if(s.length!==r)throw I(n,"row arity mismatch");for(let o of s)try{Ae(o,n)}catch(i){throw Vt(i)}return s}function eh(e,t,r){let n={};return e.forEach((s,o)=>{try{Kt(n,s,Ae(t[o],r))}catch(i){throw Vt(i)}}),n}function th(e,t,r){if(e.startsWith("- "))throw I(t,"reserved line prefix");let n=Yg(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw I(t,"trailer without header");if(r.rowCount!==n)throw I(t,"trailer count mismatch");return{kind:"trailer"}}let s=Qg(e,t);if(s!==null)return s.continuation?(Zg(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Xg(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw I(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 I(t,"row before header");return{kind:"row",cells:qc(e,r.delimiter,r.fields.length,t)}}function rh(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,h){let m=o.at(-1);if(m!==void 0&&m.lane===f.lane&&m.delimiter===f.delimiter&&m.fieldText===f.fieldText){m.rows.push(h);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.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 p(f,h,m){let g=n.get(f);if(g===void 0){if(n.size>=eu)throw I(m,"too many tagged lanes");g={segments:[],current:null},n.set(f,g),r.push(f)}else g.current!==null&&g.segments.push(g.current);g.current={lane:f,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((f,h)=>{let m=h+1;if(f==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},b=th(f,m,g);if(b.kind==="trailer"){l(),i=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,p(b.header.tag,b.header,m);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 I(m,"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 h=n.get(f);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?o:d}function ot(e){return rh(e).flatMap(t=>t.rows.map(r=>eh(t.fields,r,0)))}function nh(e){if(!Zc.includes(e))throw I(0,"invalid header delimiter")}function Vc(e,t,r=!1){return`[${`${r?"~":""}${e===L?"":e}`}]{${t}}:
17
+ `);for(let a of r)$r(e,n+1),zg(e,a,n+1,o)}function zg(e,t,r,n){if(Array.isArray(t)){e.push("- "),Do(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("- "),Oo(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))$r(e,r+1),Oo(e,o,i,r+1,n);return}e.push("- ",Le(t,L),`
19
+ `)}function xo(e,t,r,n){t!==void 0&&e.push(ye(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(No).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 Yg(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 No(e){return e.children===void 0?ye(e.key):`${ye(e.key)}{${e.children.map(No).join(L)}}`}var Po,Mr=y(()=>{Lr();So();Po=2});var Jc=y(()=>{Mr()});function Qg(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 Zg(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 eh(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 th(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 rh(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 nh(e,t,r){if(e.startsWith("- "))throw A(t,"reserved line prefix");let n=Qg(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=eh(e,t);if(s!==null)return s.continuation?(th(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Zg(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 sh(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=nh(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 sh(e).flatMap(t=>t.rows.map(r=>rh(t.fields,r,0)))}function oh(e){if(!Zc.includes(e))throw A(0,"invalid header delimiter")}function Vc(e,t,r=!1){return`[${`${r?"~":""}${e===L?"":e}`}]{${t}}:
20
20
  `}function Kc(e,t){return`[]<${e}>{${t}}:
21
- `}function $o(e,t){return t.map(ye).join(e)}function sh(e){if(!Array.isArray(e)||e.length===0)throw I(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 I(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 I(0,"TOONL continuation cadence must be positive")}function oh(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 I(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw I(0,"TOONL output requires object rows");if(t.some(r=>!Dr(e[r])))throw I(0,"TOONL rows must be flat objects");return t}function ih(e){return JSON.stringify([...e].sort())}function Qc(e,t){let r=ih(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}={}){nh(e),Yc(r),Yc(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
22
- `,h=()=>oh(d,c,u)?(c=0,u=0,Vc(e,o,!0)):"",m=g=>{ru(g,0);let b=l.get(g);if(b===void 0){if(l.size>=eu)throw I(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(g,b)}return b};return{push(g){if(p)throw I(0,"TOONL encoder is closed");let b=Qc(Xc(g),i),w="";(s===null||s.length!==b.length||s.some((P,j)=>P!==b[j]))&&(w+=f(),s=b,o=$o(e,s),a=0,c=0,u=0,w+=Vc(e,o));let E=s.map(P=>Le(g[P],e));w+=h();let v=`${E.join(e)}
23
- `;return w+=v,a+=1,c+=1,u+=v.length,w},declareLane(g,b){if(p)throw I(0,"TOONL encoder is closed");let w=sh(b),E=$o(L,w),v=m(g);return zc(v.fields,w)?"":(v.fields=w,Kc(g,E))},pushTagged(g,b){if(p)throw I(0,"TOONL encoder is closed");let w=m(g),E=Qc(Xc(b),w.fieldsByShape),v=$o(L,E),P=E.map(me=>Le(b[me],L)),j="";return zc(w.fields,E)||(w.fields=E,j+=Kc(g,v)),`${j}${g}:${P.join(L)}
24
- `},end(){return p?"":(p=!0,f())}}}var Zc,eu,tu,T0,C0,nu=y(()=>{Lr();Mr();So();Zc=[L,"|"," "],eu=8,tu=/^[A-Za-z0-9_-]+$/,T0=new TextEncoder,C0=new TextDecoder});var D=y(()=>{Lr();Mr();Mr();Jc();nu()});function ch(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${T(Mo(e))}
25
- `)}function Mo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??ch(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=uh(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 uh(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
- `).trim()}var De=y(()=>{"use strict";D()});import{isAbsolute as lh,join as qe,resolve as jo}from"node:path";function fh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function uu(e){return qe(fh(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 mh(e){return qe(lu(e),"red-skills.rdb")}function gh(e){return qe(du(e),"red-skills.rdb")}function mu(e,t){let r=mh(e);if(t(r))return r;let n=gh(e);if(t(n))throw hh();return r}function hh(){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??Fo;for(let n of t){let s=e.env[n];if(s)return lh(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,dh,ph,Fo,pu,fu,_e=y(()=>{cu=".red",dh="MEMORY_ROOT",ph="RED_BRAIN_ROOT",Fo=[dh,ph];pu=".red/state/red-skills.rdb";fu=".red/tmp/red-skills.rdb"});function H(e){return T(e,{keyedMapCollapse:!0})}var yh,bh,iT,Ne=y(()=>{D();_e();yh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],bh=[{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"}],iT=[...yh,...bh]});function Ct(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 _h(e,t){if(!t)return!0;let r=Ho(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function X(e,t){return t?e.filter(r=>_h(r,t)):[...e]}function Ve(e,t){return Go(e,t,{includeLegacyHelp:!0})}function Go(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Ho(e){return Array.isArray(e)?e.map(Ho).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ho).join(" "):String(e??"")}var jr=y(()=>{"use strict"});async function bu(e,t){return kh?Eh(e,t):Rh?vh(e,t):Sh(e,t)}async function Sh(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 Eh(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:xh(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*xh(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 vh(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:Th(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Th(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var kh,Rh,wu=y(()=>{kh=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Rh=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Ch}from"node:fs";import{join as Ph}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=Ph(r,"bin",t);if(Ch(o))return o;throw new Error(`reddb: binary "${t}" not found.
21
+ `}function $o(e,t){return t.map(ye).join(e)}function ih(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 ah(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 ch(e){return JSON.stringify([...e].sort())}function Qc(e,t){let r=ch(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}={}){oh(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=()=>ah(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=$o(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=ih(b),E=$o(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=$o(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,I0,L0,nu=y(()=>{Lr();Mr();So();Zc=[L,"|"," "],eu=8,tu=/^[A-Za-z0-9_-]+$/,I0=new TextEncoder,L0=new TextDecoder});var D=y(()=>{Lr();Mr();Mr();Jc();nu()});function lh(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Mo(e))}
25
+ `)}function Mo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??lh(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=dh(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 dh(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var De=y(()=>{"use strict";D()});import{isAbsolute as mh,join as qe,resolve as Fo}from"node:path";function gh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function uu(e){return qe(gh(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 hh(e){return qe(lu(e),"red-skills.rdb")}function yh(e){return qe(du(e),"red-skills.rdb")}function fu(e,t){let r=hh(e);if(t(r))return r;let n=yh(e);if(t(n))throw bh();return r}function bh(){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??jo;for(let n of t){let s=e.env[n];if(s)return mh(s)?s:Fo(e.startDir,s)}let r=Fo(e.startDir);for(;;){if(e.exists(qe(r,cu)))return r;let n=qe(r,".."),s=Fo(n);if(s===r)break;r=s}return e.startDir}var cu,ph,fh,jo,mu,pu,_e=y(()=>{cu=".red",ph="MEMORY_ROOT",fh="RED_BRAIN_ROOT",jo=[ph,fh];mu=".red/state/red-skills.rdb";pu=".red/tmp/red-skills.rdb"});function H(e){return C(e,{keyedMapCollapse:!0})}var wh,_h,dC,Ne=y(()=>{D();_e();wh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],_h=[{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"}],dC=[...wh,..._h]});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 kh(e,t){if(!t)return!0;let r=Ho(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function X(e,t){return t?e.filter(r=>kh(r,t)):[...e]}function Ve(e,t){return Go(e,t,{includeLegacyHelp:!0})}function Go(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Ho(e){return Array.isArray(e)?e.map(Ho).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ho).join(" "):String(e??"")}var Fr=y(()=>{"use strict"});async function bu(e,t){return Sh?vh(e,t):Eh?Th(e,t):xh(e,t)}async function xh(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 vh(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:Ch(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Ch(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 Th(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:Oh(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}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()}}var Sh,Eh,wu=y(()=>{Sh=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Eh=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Ph}from"node:fs";import{join as Ah}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=Ah(r,"bin",t);if(Ph(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 ku=y(()=>{});import{fileURLToPath as Oh}from"node:url";import{dirname as Ih,resolve as Ah,join as hT}from"node:path";function Nh(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ru(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:_u({name:Nh(),packageRoot:Dh,envVar:"REDDB_BIN"})}var Lh,Dh,Su=y(()=>{ku();Lh=Ih(Oh(import.meta.url)),Dh=Ah(Lh,"..")});var $h,Mh,x,Fn,at=y(()=>{$h=new TextEncoder,Mh=new TextDecoder("utf-8"),x=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},Fn=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($h.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(Mh.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 Uo(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:/"?Bh(e):jh(e)}function Bh(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=Fh(s),a=r.port?Number(r.port):Wo(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 jh(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):Wo(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):Wo(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 Fh(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 Wo(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 Jo=y(()=>{at()});function Gh(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 Wh(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 Hh,Fr,qo=y(()=>{at();Hh=new Set(["embedded"]),Fr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Hh.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:Wh(n.value)}async put(t,r,n,s={}){this._guard("put");let o=Gh(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 Vo(e,t){return`${Ko(e)}.${Uh(t)}`}function Ko(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 Uh(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Jh(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,zo=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 ${Vo(s,t)} = ${Jh(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 ${Vo(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 ${Vo(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 ${Ko(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 ${Ko(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 Ru=y(()=>{});import{fileURLToPath as Ih}from"node:url";import{dirname as Lh,resolve as Dh,join as RC}from"node:path";function Mh(){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:Mh(),packageRoot:$h,envVar:"REDDB_BIN"})}var Nh,$h,Su=y(()=>{Ru();Nh=Lh(Ih(import.meta.url)),$h=Dh(Nh,"..")});var Bh,Fh,x,jn,at=y(()=>{Bh=new TextEncoder,Fh=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(Bh.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(Fh.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 Uo(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:/"?jh(e):Hh(e)}function jh(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=Gh(s),a=r.port?Number(r.port):Wo(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 Hh(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):Wo(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):Wo(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 Gh(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 Wo(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 Jo=y(()=>{at()});function Uh(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 Jh(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 Wh,jr,qo=y(()=>{at();Wh=new Set(["embedded"]),jr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Wh.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:Jh(n.value)}async put(t,r,n,s={}){this._guard("put");let o=Uh(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 Vo(e,t){return`${Ko(e)}.${qh(t)}`}function Ko(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 Vh(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,zo=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 ${Vo(s,t)} = ${Vh(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 ${Vo(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 ${Vo(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 ${Ko(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 ${Ko(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(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function qh(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?Xo(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 Xo(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 Vh(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Kh(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 ${Vh(e.priority)}`),e.key!=null&&(t+=` KEY ${Qo(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Qo(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"?Qo(e):JSON.stringify(e)}function Qo(e){return`'${String(e).replace(/'/g,"''")}'`}function Yo(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Hr,Zo=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=Kh(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)}${Xo(r)}`});return Yo(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ke(t)}${Xo(r)}`});return Yo(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=qh(t,r,n),o=await this.client.call("query",{sql:s});return Yo(o)}}});function vu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function Yh(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(Tu).join(".")}function Tu(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 Xh(e){return Cu(JSON.stringify(e))}function Qh(e){return JSON.stringify(e)}function Zh(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Xh(e):Cu(e)}function Cu(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,ei=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 (${Qh(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=Yh(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])=>`${Tu(c)} = ${Zh(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 ey(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ct(r)}.${ct(n)})`}return ry(e)}function ty(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 ry(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 Wr,ti=y(()=>{Wr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ty(n,"config");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:`PUT CONFIG ${ct(s)} ${ct(t)} = ${ey(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 ny(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 sy(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 Ur,ri=y(()=>{Ur=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){ny(n,"vault");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:`VAULT PUT ${Zt(s)}.${Zt(t)} = ${sy(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 Au(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(oy)}async function Lu(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${ay(t)}`)).rows??[]).some(n=>n.name===String(t))}function oy(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Iu(e){return String(e).split(".").map(iy).join(".")}function iy(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 ay(e){return`'${String(e).replace(/'/g,"''")}'`}var Jr,ni=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(Iu).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Iu(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=Uo(e);if(yy(r),r.kind==="embedded"){let n=hy(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=gy(r),o=t.binary??Ru(),i=await bu(o,s),a=new Fn(i);return await a.call("version",{}),new oi(a,{transport:"embedded"})}}function Nu(e){return ly(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:py(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&my(e)?{$uuid:e}:e}function ly(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 dy(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Nu):e.map(Nu)}function py(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 fy(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 my(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 fy(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 gy(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function hy(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 yy(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",cy)}function ii(){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 by(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 wy(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 cy,uy,$u,Du,Wn,si,oi,ai=y(()=>{wu();Su();at();Jo();qo();zo();Zo();ei();ti();ri();ni();qo();zo();Zo();ei();ti();ri();ni();Jo();cy="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",uy="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 ii()}},si=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ii();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}}},oi=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=uy,this.cache=new Fr(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=dy(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 by(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 wy(n,r.length)}tx(){return new si(this)}async transaction(t){if(this.inTransaction)throw ii();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 Au(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 ui(e,t,r=Bu){let n=Math.max(0,Math.floor(e)),s=r in ju?r:Bu,o=ju[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:ci(n,o),dollars_saved_low_usd:i==null?null:ci(i,o),dollars_saved_high_usd:a==null?null:ci(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:_y}}function ci(e,t){return ky(Math.max(0,e)/1e6*t)}function qr(e){return`$${e.toFixed(6)}`}function ky(e){return Math.round(e*1e6)/1e6}var Bu,ju,_y,li=y(()=>{"use strict";Bu="gpt-5",ju={"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},_y="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Ry,readFileSync as nC}from"node:fs";import{dirname as Sy,join as Ey}from"node:path";function Fu(e,t){let r=e;for(let n=0;n<16;n++){let s=Ey(r,t);if(Ry(s))return s;let o=Sy(r);if(o===r)break;r=o}return null}function xy(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(p=>p.key).join(".")===t)return xy(u)}}var Hu=y(()=>{});import{createConnection as vy}from"node:net";async function tr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=vy(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
- `)}),o.on("data",l=>{a+=l.toString("utf8");let p=a.indexOf(`
37
- `);if(p<0)return;let d=a.slice(0,p);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 di=y(()=>{});import{createHash as Ty,randomUUID as qu}from"node:crypto";import{spawn as Vu}from"node:child_process";import{constants as pi}from"node:fs";import{readFileSync as Cy}from"node:fs";import{mkdir as Jn,open as Py,readFile as Ku,rename as Oy,rm as $e,stat as Iy,writeFile as Ay}from"node:fs/promises";import{tmpdir as Ly}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=Jy(e)??qn(e),r=Uy(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 My(e.socketPath);let n=By(e,t);await Gu(e.socketPath,n);return}finally{await r.close(),await $e(e.lockPath,{force:!0})}await Gu(e.socketPath)}async function Pt(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 Pt(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=Hy(await Ku(e,"utf8"));return Yy(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 Ay(n,`${T(r)}
38
- `,{encoding:"utf8",mode:384}),await Oy(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 Pt(t.socket_path,100);return r&&await Wy(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()+$y(),n;for(;Date.now()<r;){if(await Pt(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 $y(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Ny}async function My(e){await $e(e,{force:!0})}async function el(e){await Jn(ut(e),{recursive:!0,mode:448});try{return await Py(e,pi.O_CREAT|pi.O_EXCL|pi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function By(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=Fy(`${i}${c}`,jy)})),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:
34
+ `).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Kh(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?Xo(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 Xo(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 zh(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Yh(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 ${zh(e.priority)}`),e.key!=null&&(t+=` KEY ${Qo(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Qo(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Xh(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Qo(e):JSON.stringify(e)}function Qo(e){return`'${String(e).replace(/'/g,"''")}'`}function Yo(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Hr,Zo=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=Yh(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ke(t)} ${Xh(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ke(t)}${Xo(r)}`});return Yo(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ke(t)}${Xo(r)}`});return Yo(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=Kh(t,r,n),o=await this.client.call("query",{sql:s});return Yo(o)}}});function vu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function Qh(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 Zh(e){return Tu(JSON.stringify(e))}function ey(e){return JSON.stringify(e)}function ty(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Zh(e):Tu(e)}function Tu(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,ei=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 (${ey(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=Qh(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)} = ${ty(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 ry(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ct(r)}.${ct(n)})`}return sy(e)}function ny(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 sy(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,ti=y(()=>{Wr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ny(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)} = ${ry(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 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 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 iy(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,ri=y(()=>{Ur=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){oy(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)} = ${iy(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(ay)}async function Lu(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${uy(t)}`)).rows??[]).some(n=>n.name===String(t))}function ay(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(cy).join(".")}function cy(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 uy(e){return`'${String(e).replace(/'/g,"''")}'`}var Jr,ni=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=Uo(e);if(wy(r),r.kind==="embedded"){let n=by(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=yy(r),o=t.binary??ku(),i=await bu(o,s),a=new jn(i);return await a.call("version",{}),new oi(a,{transport:"embedded"})}}function Nu(e){return my(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:fy(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&hy(e)?{$uuid:e}:e}function my(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 py(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Nu):e.map(Nu)}function fy(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 gy(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 hy(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 gy(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 yy(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function by(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 wy(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",ly)}function ii(){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 _y(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 Ry(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 ly,dy,$u,Du,Wn,si,oi,ai=y(()=>{wu();Su();at();Jo();qo();zo();Zo();ei();ti();ri();ni();qo();zo();Zo();ei();ti();ri();ni();Jo();ly="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",dy="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 ii()}},si=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ii();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}}},oi=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=dy,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=py(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 _y(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 Ry(n,r.length)}tx(){return new si(this)}async transaction(t){if(this.inTransaction)throw ii();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 ui(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:ci(n,o),dollars_saved_low_usd:i==null?null:ci(i,o),dollars_saved_high_usd:a==null?null:ci(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:ky}}function ci(e,t){return Sy(Math.max(0,e)/1e6*t)}function qr(e){return`$${e.toFixed(6)}`}function Sy(e){return Math.round(e*1e6)/1e6}var Bu,Fu,ky,li=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},ky="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Ey,readFileSync as cT}from"node:fs";import{dirname as xy,join as vy}from"node:path";function ju(e,t){let r=e;for(let n=0;n<16;n++){let s=vy(r,t);if(Ey(s))return s;let o=xy(r);if(o===r)break;r=o}return null}function Cy(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 Cy(u)}}var Hu=y(()=>{});import{createConnection as Ty}from"node:net";async function tr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=Ty(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
+ `)}),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 di=y(()=>{});import{createHash as Oy,randomUUID as qu}from"node:crypto";import{spawn as Vu}from"node:child_process";import{constants as mi}from"node:fs";import{readFileSync as Py}from"node:fs";import{mkdir as Jn,open as Ay,readFile as Ku,rename as Iy,rm as $e,stat as Ly,writeFile as Dy}from"node:fs/promises";import{tmpdir as Ny}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=Vy(e)??qn(e),r=qy(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 Fy(e.socketPath);let n=jy(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:Xy(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=Wy(await Ku(e,"utf8"));return Qy(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 Dy(n,`${C(r)}
38
+ `,{encoding:"utf8",mode:384}),await Iy(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 Jy(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()+By(),n;for(;Date.now()<r;){if(await Ot(e))return;if(t){let s=t.spawnError();if(s)throw new Error(pi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(pi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?pi("resident rsp server did not start",t):"resident rsp server did not start")}function By(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:My}async function Fy(e){await $e(e,{force:!0})}async function el(e){await Jn(ut(e),{recursive:!0,mode:448});try{return await Ay(e,mi.O_CREAT|mi.O_EXCL|mi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function jy(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=Gy(`${i}${c}`,Hy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function pi(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 Fy(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Hy(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 Pt(r.socket_path,100))return;if(nl(t.clientVersion,r.resident_version)&&(await Gy(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 Gy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!rr(e))return;await new Promise(n=>setTimeout(n,50))}}async function Wy(e){if(!e.startsWith("file://"))return!1;try{return await Iy(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 Uy(e){let t=Ty("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<Dy)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Ly(),`red-skills-${n}`,t)}function Jy(e){let t=qn(e);for(let r=0;r<32;r++){try{let s=mi(ue(t,".git"));if(s!=null)return qy(t,s)??t;if(mi(ue(t,".git","HEAD"))!=null||mi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function qy(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 mi(e){try{return Cy(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 Vy(e,t.clientVersion),await Xy(e),!1):!0:!1}async function Vy(e,t){try{await tr({socketPath:e,timeoutMs:200},{id:qu(),op:"handover",clientVersion:t})}catch{}}function nl(e,t){return!e||!t?!1:Ky(e,t)>0}function Ky(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 Yy(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 Xy(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Pt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Dy,Yu,Ny,jy,Xn=y(()=>{D();_e();di();Dy=108,Yu=1,Ny=5e3;jy=8*1024});var ll={};F(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:()=>gi,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:()=>Re,MIN_RSP_IDLE_MS:()=>cl,resolveRspConfig:()=>xe});import{existsSync as Qy,readFileSync as Zy}from"node:fs";import{join as eb,resolve as ol}from"node:path";function xe(e,t,r){let n=Fu(ol(e),eb(".red","config.yaml")),s=n?Zy(n,"utf8"):"",o=Un(s,"rsp.enabled")==="true",i=Un(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ze(ke(s,"rsp.ttlDays"),Re),u=ze(nr(t.RSP_EPHEMERAL_TTL_HOURS)??ke(s,"rsp.ephemeralTtlHours"),Se),l=ze(ke(s,"rsp.byteBudget"),Ee),p=ze(ke(s,"rsp.telemetryTtlDays"),Qn),d=ze(ke(s,"rsp.telemetryByteBudget")??ke(s,"rsp.byteBudget"),Zn),f=ze(nr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ke(s,"rsp.telemetryDrainIntervalMs"),il),h=ze(nr(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ke(s,"rsp.telemetryDrainTimeoutMs"),al),m=tb(nr(t.RSP_IDLE_MS)??ke(s,"rsp.idleMs"),es,cl),g=ze(nr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ke(s,"rsp.heavyGitByteThreshold"),Ye),b=rb(nr(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??ke(s,"rsp.measurement.holdoutShare"),ul),w=lt(e).rootDir,E=r??t.RSP_STORE_URI??`file://${mu(ol(w),Qy)}`;return{enabled:o,proxyEnabled:a,storeUri:E,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:b}}function ke(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 tb(e,t,r){let n=ze(e,t);return Math.max(n,r)}function rb(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,gi,Re,Se,Ee,Qn,Zn,il,al,es,cl,ul,ve=y(()=>{"use strict";Hu();_e();Xn();Ye=8*1024,gi=pu,Re=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 bi}from"node:crypto";import{existsSync as nb}from"node:fs";import{mkdir as sb,readFile as ob,readdir as dl,rename as ib,writeFile as ab}from"node:fs/promises";import{homedir as cb}from"node:os";import{basename as ub,dirname as lb,join as zr}from"node:path";import{fileURLToPath as db}from"node:url";import{gunzipSync as pb,gzipSync as fb}from"node:zlib";function wi(e,t){return`el:${bi("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 It(e){return`expired:${e.slice(3)}`}function ss(){return"index:v1"}function mb(e){return`blob:${e}`}function pl(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 fl(e){return us(e.storage_class)?e.storage_class:Xe(e.command)}function _i(e){let t=yb(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=fl(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:gb(o),storage_class:fl(s),recover:`rsp show ${s.handle}`}})}function gb(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 Ri(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 At(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 Si(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:hb(r),original_bytes:e.length}:null}function hb(e){let t=hi(e,["rev-parse","HEAD"])||"unborn",r=hi(e,["write-tree"])||"no-index",n=hi(e,["status","--porcelain=v1","-z"])||"";return bi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function hi(e,t){let r=Xr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Ei(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||Ot(n)!==Ot(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Ot(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 Ot(e){return bi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function xi(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 vi(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=fb(e);return{key:mb(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function ml(e){try{let t=pb(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?Ot(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 yb(){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 kl(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=wb(e.derivation_recipe),n=_b(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"&&bb(e.loss)&&(e.storage_class===void 0||us(e.storage_class))}function Ci(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 bb(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 wb(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 _b(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 Rl(e){try{let n=(await ob(e,"utf8")).trim();if(n==="")return rs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(kb(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 ub(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(cb(),".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(nb(s)){process.env.REDDB_BIN=s;return}}}async function sr(e,t){await sb(lb(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await ab(r,`${T(yi(t))}
42
- `,"utf8"),await ib(r,e)}function yi(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>yi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=yi(n));return t}return String(e)}function rs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function kb(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)&&Ci(e.index)}function xl(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return db(e)}var Oi=y(()=>{"use strict";D();ts()});import{createHash as Rb}from"node:crypto";import{existsSync as vl}from"node:fs";import{mkdir as Sb,readFile as Eb,rename as Ii,rm as tn,stat as Ai}from"node:fs/promises";import{basename as xb,dirname as vb}from"node:path";var pt,Tl=y(()=>{"use strict";ai();ts();Oi();pt=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,Re),ephemeralTtlHours:is(t.ephemeralTtlHours,Se),byteBudget:is(t.byteBudget,Ee),now:t.now??(()=>new Date)});return El(n)?(await ls(),await Sb(vb(n),{recursive:!0}),s.db=await er(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Rl(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=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Ot(n),h=p==="ephemeral"?Ti(n,f,o):null,m=xi(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:m,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[It(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:m,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,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:vi(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:At(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:_i(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=At(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=At(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[It(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[It(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)?ml(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 Ai(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=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Ot(n),h=p==="ephemeral"?Ti(n,f,o):null,m=xi(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:m,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(It(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:m,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:h?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(i,m),i}async getRedDb(t){if(!Zr(t))return null;let r=await this.kvGet(It(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:vi(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:At(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:_i(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 Eb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=xb(s),c=Rb("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},p=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(p.rows[0]?.red_entity_id??p.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>kl(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 Ci(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=At(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=At(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 Ai(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 ${pl(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Ai(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(It(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={};F(or,{DEFAULT_RSP_BYTE_BUDGET:()=>Ee,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Se,DEFAULT_RSP_TTL_DAYS:()=>Re,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>pt,ensureReddbBinaryFromWarmCache:()=>ls,storageClassForCommand:()=>Xe});var Qe=y(()=>{"use strict";ts();Oi();Tl()});var Li,Di,Ni,se,q,de,Me,rn,ds=y(()=>{"use strict";Li="rsp-telemetry.spool.toonl",Di="rsp-telemetry.spool.jsonl",Ni="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 pe(e){return ft(e)??0}function ft(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var $i=y(()=>{"use strict"});import{randomUUID as Bi,createHash as Tb}from"node:crypto";import{appendFileSync as Al,existsSync as Cb,mkdirSync as Ll}from"node:fs";import{mkdir as Dl,readdir as Pb,readFile as Nl,rename as Ob,rm as $l,writeFile as ji}from"node:fs/promises";import{basename as Mi,dirname as nn,join as ar,resolve as Cl}from"node:path";function fs(e){if(!e)return null;let t=Cl(e);for(;;){if(Cb(ar(t,".red")))return t;let r=Cl(ar(t,".."));if(r===t)break;t=r}return null}function Ze(e){return ar(Y(e),Li)}function ms(e){return ar(Y(e),Di)}function Hi(e){return ar(Y(e),Ni)}async function et(e,t){mt(e,t)}function mt(e,t){try{let r=fs(e);if(!r)return;let n=Ze(r);Ll(nn(n),{recursive:!0}),Al(n,$b({spool_id:Bi(),event:Ab(t)}),{encoding:"utf8",mode:384})}catch{}}function Ab(e){return Pl(Pl(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Pl(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Ib)return e;let o={...e};return delete o[t],pe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Lb(e){let t=fs(e);if(!t)return[];let r=Ze(t);await Dl(nn(r),{recursive:!0}).catch(()=>{});let n=await jl(t),s=[...await Fl(t),...await Bb(n)];return await Promise.all(n.map(o=>$l(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Gi(e,t){let r=fs(e);if(!r)return;let n=Ze(r);await Dl(nn(n),{recursive:!0}).catch(()=>{}),await Mb(r);for(let s of await Db(r))await Ol(r,s,t);for(let s of await Fl(r))await Ml(r,s,t,!0);for(let s of await jl(r))await Ol(r,s,t)}async function Db(e){let t=[Ze(e),ms(e)],r=nn(t[0]);return(await Pb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Mi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Mi(c)}.`));if(!o)return!1;let i=`${Mi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Nb(a))}).sort().map(s=>ar(r,s))}function Nb(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Ol(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&&Il(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Il(e,{correction_id:Bi(),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 $b(e){return it().push(Hb(e))}function Il(e,t){try{let r=fs(e);if(!r)return;let n=Hi(r);Ll(nn(n),{recursive:!0});let s=it();Al(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 jl(e){let t=[Ze(e),ms(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Ob(n,s),await ji(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function Mb(e){await Promise.all([ji(Ze(e),"",{flag:"a"}),ji(ms(e),"",{flag:"a"})]).catch(()=>{})}async function Bb(e){let t=[];for(let r of e)t.push(...Hl(await Bl(r)));return t}async function Fl(e){let t=await Nl(Hi(e),"utf8").catch(()=>""),r=new Map;for(let n of jb(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:ps(JSON.stringify(o)),event:i}:{spool_id:ps(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:ps(s),raw_line:s});continue}try{for(let o of ot(`${r}
40
+ `)}function Gy(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Wy(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 Uy(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 Uy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!rr(e))return;await new Promise(n=>setTimeout(n,50))}}async function Jy(e){if(!e.startsWith("file://"))return!1;try{return await Ly(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 qy(e){let t=Oy("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<$y)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Ny(),`red-skills-${n}`,t)}function Vy(e){let t=qn(e);for(let r=0;r<32;r++){try{let s=fi(ue(t,".git"));if(s!=null)return Ky(t,s)??t;if(fi(ue(t,".git","HEAD"))!=null||fi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function Ky(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 fi(e){try{return Py(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 zy(e,t.clientVersion),await Zy(e),!1):!0:!1}async function zy(e,t){try{await tr({socketPath:e,timeoutMs:200},{id:qu(),op:"handover",clientVersion:t})}catch{}}function nl(e,t){return!e||!t?!1:Yy(e,t)>0}function Yy(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 Xy(e){return typeof e=="string"&&e.length>0?e:void 0}function Qy(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 Zy(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Ot(e,50))return;await new Promise(r=>setTimeout(r,50))}}var $y,Yu,My,Hy,Xn=y(()=>{D();_e();di();$y=108,Yu=1,My=5e3;Hy=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:()=>gi,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 eb,readFileSync as tb}from"node:fs";import{join as rb,resolve as ol}from"node:path";function xe(e,t,r){let n=ju(ol(e),rb(".red","config.yaml")),s=n?tb(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=nb(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=sb(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),eb)}`;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 nb(e,t,r){let n=ze(e,t);return Math.max(n,r)}function sb(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,gi,ke,Se,Ee,Qn,Zn,il,al,es,cl,ul,ve=y(()=>{"use strict";Hu();_e();Xn();Ye=8*1024,gi=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 bi}from"node:crypto";import{existsSync as ob}from"node:fs";import{mkdir as ib,readFile as ab,readdir as dl,rename as cb,writeFile as ub}from"node:fs/promises";import{homedir as lb}from"node:os";import{basename as db,dirname as mb,join as zr}from"node:path";import{fileURLToPath as pb}from"node:url";import{gunzipSync as fb,gzipSync as gb}from"node:zlib";function wi(e,t){return`el:${bi("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 hb(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 _i(e){let t=wb(),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 Ri(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:yb(o),storage_class:pl(s),recover:`rsp show ${s.handle}`}})}function yb(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 ki(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 Si(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:bb(r),original_bytes:e.length}:null}function bb(e){let t=hi(e,["rev-parse","HEAD"])||"unborn",r=hi(e,["write-tree"])||"no-index",n=hi(e,["status","--porcelain=v1","-z"])||"";return bi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function hi(e,t){let r=Xr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Ei(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 bi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function xi(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 vi(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 Ci(e,t,r){let n=gb(e);return{key:hb(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=fb(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 wb(){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=Rb(e.derivation_recipe),n=kb(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||Oi(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"&&_b(e.loss)&&(e.storage_class===void 0||us(e.storage_class))}function Ti(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)&&Oi(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 _b(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 Rb(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 kb(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"&&Oi(e.content_hash)}function Oi(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 ab(e,"utf8")).trim();if(n==="")return rs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(Sb(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 db(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(lb(),".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(ob(s)){process.env.REDDB_BIN=s;return}}}async function sr(e,t){await ib(mb(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await ub(r,`${C(yi(t))}
42
+ `,"utf8"),await cb(r,e)}function yi(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>yi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=yi(n));return t}return String(e)}function rs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Sb(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)&&Ti(e.index)}function xl(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return pb(e)}var Pi=y(()=>{"use strict";D();ts()});import{createHash as Eb}from"node:crypto";import{existsSync as vl}from"node:fs";import{mkdir as xb,readFile as vb,rename as Ai,rm as tn,stat as Ii}from"node:fs/promises";import{basename as Cb,dirname as Tb}from"node:path";var mt,Cl=y(()=>{"use strict";ai();ts();Pi();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 xb(Tb(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=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ki(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Pt(n),h=m==="ephemeral"?Ci(n,p,o):null,f=xi(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:vi(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:_i(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Ri(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 Ii(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=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ki(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Pt(n),h=m==="ephemeral"?Ci(n,p,o):null,f=xi(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:vi(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:_i(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Ri(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 vb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Cb(s),c=Eb("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 Ti(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 Ii(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 Ii(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 Ai(this.path,i),await Ai(o,this.path),await tn(i,{force:!0})}catch(u){throw!vl(this.path)&&vl(i)&&await Ai(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();Pi();Cl()});var Li,Di,Ni,se,q,de,Me,rn,ds=y(()=>{"use strict";Li="rsp-telemetry.spool.toonl",Di="rsp-telemetry.spool.jsonl",Ni="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 $i=y(()=>{"use strict"});import{randomUUID as Bi,createHash as Ob}from"node:crypto";import{appendFileSync as Il,existsSync as Pb,mkdirSync as Ll}from"node:fs";import{mkdir as Dl,readdir as Ab,readFile as Nl,rename as Ib,rm as $l,writeFile as Fi}from"node:fs/promises";import{basename as Mi,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(Pb(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),Li)}function fs(e){return ar(Y(e),Di)}function Hi(e){return ar(Y(e),Ni)}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,Bb({spool_id:Bi(),event:Db(t)}),{encoding:"utf8",mode:384})}catch{}}function Db(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<=Lb)return e;let o={...e};return delete o[t],me(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Nb(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 jb(n)];return await Promise.all(n.map(o=>$l(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Gi(e,t){let r=ps(e);if(!r)return;let n=Ze(r);await Dl(nn(n),{recursive:!0}).catch(()=>{}),await Fb(r);for(let s of await $b(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 $b(e){let t=[Ze(e),fs(e)],r=nn(t[0]);return(await Ab(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Mi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Mi(c)}.`));if(!o)return!1;let i=`${Mi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Mb(a))}).sort().map(s=>ar(r,s))}function Mb(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:Bi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Al(e,{correction_id:Bi(),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 Bb(e){return it().push(Wb(e))}function Al(e,t){try{let r=ps(e);if(!r)return;let n=Hi(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 Ib(n,s),await Fi(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function Fb(e){await Promise.all([Fi(Ze(e),"",{flag:"a"}),Fi(fs(e),"",{flag:"a"})]).catch(()=>{})}async function jb(e){let t=[];for(let r of e)t.push(...Hl(await Bl(r)));return t}async function jl(e){let t=await Nl(Hi(e),"utf8").catch(()=>""),r=new Map;for(let n of Hb(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}
45
45
  ${s}
46
- `))Fi(o)&&Gb(o)&&t.push({spool_id:o.spool_id,event:Gl(o)})}catch{s.startsWith("{")&&t.push({spool_id:ps(s),raw_line:s})}}}return t}function jb(e){return Fb(e).map(Wb).filter(t=>t!==null)}function Fb(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Fi(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)&&Ub(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 Hb(e){return Gb(e).map(Jb).filter(t=>t!==null)}function Gb(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 ot(`${r}
47
47
  ${s}
48
- `))Fi(o)&&t.push(o)}catch{}}}return t}function ps(e){return`legacy:${Tb("sha256").update(e).digest("hex").slice(0,24)}`}function Hb(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 Gb(e){return typeof e.spool_id=="string"&&Gl(e)!==null}function Wb(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 Fi(e){return ir(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Ib,Wl=y(()=>{"use strict";_e();D();ds();$i();Ib=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(R=>lr(R)>=s),a=o.filter(R=>O(R.event_type)!=="show"&&O(R.degradation_reason)===""),c=o.filter(R=>O(R.event_type)==="show"),u=o.filter(R=>O(R.degradation_reason)!==""),l=0,p=0,d=0,f=0,h=!1,m=new Map,g=new Map,b=[],w=0,E=0,v=0;for(let R of a){R.elided===!0&&l++;let A=pe(R.raw_bytes),Ue=pe(R.emitted_bytes),St=Math.max(0,A-Ue),Jt=dr(R,"raw"),_=dr(R,"emitted"),C=Math.max(0,Jt.tokens-_.tokens);h||=(R.estimated===!0||Jt.estimated||_.estimated)&&C>0,p+=A,d+=Ue,f+=C;let Et=Lt(R).slice(0,10);Et&&m.set(Et,(m.get(Et)??0)+C);let xt=O(R.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+=C,g.set(xt,ge);let he=ft(R.wrapper_ms);he!=null&&b.push(he),w+=pe(R.store_open_count);let qt=ft(R.store_elapsed_ms);qt!=null&&(E+=qt,v++)}let P=new Map,j=new Map,me=[],Oe=null;for(let R of u){let A=O(R.degradation_reason)||O(R.reason)||"unknown",Ue=O(R.wrapper_family)||gs(O(R.command));P.set(A,(P.get(A)??0)+1),j.set(Ue,(j.get(Ue)??0)+1);let St=Lt(R);me.push({timestamp:St,family:Ue,command:O(R.command)||"unknown",reason:A,exit_code:ft(R.wrapper_exit_code),stderr_head:O(R.stderr_head)||null}),(!Oe||St>Oe.timestamp)&&(Oe={timestamp:St,reason:A,command:O(R.command)||"unknown"})}let te=a.length+u.length,st=c.filter(R=>R.hit===!0).length,re=ui(f,h),Ir=Ub(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated: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:[...m.entries()].sort(([R],[A])=>R.localeCompare(A)).map(([R,A])=>({date:R,tokens_saved:A})),top_commands:[...g.values()].sort((R,A)=>A.bytes_saved-R.bytes_saved||A.tokens_saved-R.tokens_saved||R.command.localeCompare(A.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:[...P.entries()].sort((R,A)=>A[1]-R[1]||R[0].localeCompare(A[0])).map(([R,A])=>({reason:R,count:A})),by_family:[...j.entries()].sort((R,A)=>A[1]-R[1]||R[0].localeCompare(A[0])).map(([R,A])=>({family:R,count:A})),recent_failures:me.sort((R,A)=>A.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:Oe},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:Ir}}function Ub(e){let t=0,r=0,n=0,s=0,o=new Map;for(let i of e){let a=O(i.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,i.quota_free===!0&&(s+=Math.max(1,pe(i.saved_units))),a!=="contributed"){let c=O(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 Wi(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:Zb(s)}}async function Ui(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(_=>O(_.event_type)!=="show"&&O(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&O(_.degradation_reason)===""),u=a.filter(_=>O(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>O(_.event_type)==="show"),p=a.filter(_=>O(_.degradation_reason)!==""),d=[...c,...p].map(lr).filter(_=>Number.isFinite(_)&&_>0),f=d.length===0?null:Math.min(...d),h=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/cw()))),m=[],g=new Map,b=new Map,w=new Map,E=new Map,v=new Map,P=new Map,j=0,me=!1,Oe=0,te=null,st=0,re=0;for(let _ of c){let C=Lt(_),Et=C.slice(0,10),xt=C.slice(0,16),ge=gs(O(_.command)),he=Math.max(0,dr(_,"raw").tokens-dr(_,"emitted").tokens);j+=he,me||=_.estimated===!0&&he>0;let qt=Math.max(0,pe(_.raw_bytes)-pe(_.emitted_bytes)),_o=ft(_.wrapper_ms);if(_o!=null){m.push(_o);let Dc=g.get(ge)??[];Dc.push(_o),g.set(ge,Dc)}Et&&b.set(Et,(b.get(Et)??0)+1),xt&&w.set(xt,(w.get(xt)??0)+1);let ko=nw(C);ko&&E.set(ko,(E.get(ko)??0)+1);let Ro=iw(C);Ro&&v.set(Ro,(v.get(Ro)??0)+he);let $n=P.get(ge)??{command_family:ge,invocations:0,tokens_saved:0,bytes_saved:0};$n.invocations++,$n.tokens_saved+=he,$n.bytes_saved+=qt,P.set(ge,$n),_.elided===!0&&Oe++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(st++,pe(_.store_open_count)>0&&re++),he>0&&(!te||he>te.tokens_saved||he===te.tokens_saved&&qt>te.bytes_saved)&&(te={timestamp:C,command_family:ge,tokens_saved:he,bytes_saved:qt})}let Ir=p.map(_=>({timestamp:Lt(_),command_family:gs(O(_.command)),reason:O(_.degradation_reason)||O(_.reason)||"unknown"})).sort((_,C)=>_.timestamp.localeCompare(C.timestamp)),R=new Map;for(let _ of Ir)R.set(_.reason,(R.get(_.reason)??0)+1);let A=Kb(Ir),Ue=Vb(l),St=Yb([...P.values()],Ue,A),Jt=[...w.entries()].sort((_,C)=>C[1]-_[1]||_[0].localeCompare(C[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&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:Jl(m),by_command_family:[...g.entries()].sort((_,C)=>C[1].length-_[1].length||_[0].localeCompare(C[0])).map(([_,C])=>({command_family:_,count:C.length,...Jl(C)}))},throughput:{requests_per_day:[...b.entries()].sort(([_],[C])=>_.localeCompare(C)).map(([_,C])=>({date:_,requests:C})),active_minute_avg:w.size===0?null:Q([...w.values()].reduce((_,C)=>_+C,0)/w.size),peak_minute:Jt?{minute:Jt[0],requests:Jt[1]}:null,hour_weekday_heatmap:sw(E)},savings:{tokens:ui(j,me),measured_control_holdout:Jb(c,u),weekly_tokens_saved:aw(v),elision_rate:c.length===0?0:Q(Oe/c.length),top_commands_by_tokens_saved:[...P.values()].sort((_,C)=>C.tokens_saved-_.tokens_saved||C.bytes_saved-_.bytes_saved||_.command_family.localeCompare(C.command_family)).slice(0,10),top_commands_by_invocation_count:[...P.values()].sort((_,C)=>C.invocations-_.invocations||C.tokens_saved-_.tokens_saved||_.command_family.localeCompare(C.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:Ir,degradations_by_reason:[...R.entries()].sort((_,C)=>C[1]-_[1]||_[0].localeCompare(C[0])).map(([_,C])=>({reason:_,count:C})),cold_boots:st===0?null:re,warm_hits:st===0?null:Math.max(0,st-re)},mining:{recovery_usage_by_family:Ue,degradation_clusters:A,threshold_tuning_suggestions:St}}}async function ql(e,t){let r=(await sn(e,se)).filter(i=>lr(i)>=t),n=r.some(i=>O(i.event_type)!=="show"||O(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:O(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:O(i.reason)||"unknown"}));return[...r,...s,...o]}function dr(e,t){let r=ft(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=pe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function Jb(e,t){let r=Qb(t.map(a=>ft(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(Xb(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:qb(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 qb(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 Vb(e){let t=new Map;for(let r of e){let n=gs(O(r.recovered_command)||O(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 Kb(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 Yb(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 Xb(e){return e.reduce((t,r)=>t+r,0)/e.length}function Qb(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Zb(e){let t=tw();for(let r of e){if(O(r.event_type)==="show"||O(r.degradation_reason)!==""||r.elided!==!0)continue;let n=ew(r.storage_class)??Xe(O(r.command));t[n].records+=1;let s=pe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function ew(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function tw(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}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=>rw(n.value)).filter(n=>ir(n))}function rw(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 O(e.created_at)||O(e.ts)||""}function O(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 nw(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ow(t.getUTCDay())}:${t.getUTCHours()}`:null}function sw(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 ow(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function iw(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 aw(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 cw(){return 24*60*60*1e3}var Vl=y(()=>{"use strict";Qe();li();ds();$i()});var on={};F(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:()=>Di,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_FILE:()=>Li,appendTelemetryEvent:()=>et,appendTelemetryEventSync:()=>mt,drainTelemetrySpool:()=>Gi,parseTelemetryEvent:()=>cr,readAccountingLaneStats:()=>Wi,readTelemetryGainsReport:()=>Ui,readTelemetryStats:()=>hs,takeTelemetrySpool:()=>Lb,telemetryLegacySpoolPath:()=>ms,telemetrySpoolCorrectionsPath:()=>Hi,telemetrySpoolPath:()=>Ze});var Te=y(()=>{"use strict";ds();Wl();Vl()});function Zi(e){return e==="success"?0:e==="failure"?1:2}function ea(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function tt(e,t,r){return{status:e,exitCode:Zi(e),summary:t,...r?{details:r}:{}}}function V(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function fr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var zl,Yl,Xl,Xi,Ql,Zl,ed,td,Qi,Dt=y(()=>{"use strict";zl="rsp.wait.result",Yl="rsp.wait.registry",Xl="rsp.wait.list",Xi={cmd:18e5,pr:27e5,run:27e5,release:72e5},Ql=16*1024,Zl=1e4,ed=2e3,td=6e4,Qi={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 mw,readFile as gw}from"node:fs/promises";async function mr(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 hw(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 hw(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 yw(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 mw("/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 gw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function yw(e){await new Promise(t=>setTimeout(t,e))}var rt=y(()=>{"use strict"});import{constants as bw}from"node:os";async function od(e){let t=e[1],r={timeoutMs:Xi.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=Xi[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=kw(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=_w(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 ww(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function ww(e){if(!(e.signal in bw.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 _w(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function kw(e){return e.startsWith("SIG")?e:`SIG${e}`}var id=y(()=>{"use strict";Dt();rt()});import{existsSync as ta,readFileSync as Rw,statSync as Sw}from"node:fs";import{basename as ad,dirname as _s,isAbsolute as Ew,join as cd,resolve as ln}from"node:path";function ks(e,t=process.env){let r=ln(e);if(Fo.map(i=>t[i]).find(Boolean))return hu({startDir:r,env:t,exists:ta});let s=vw(r),o=xw(r,s);return o||(s??r)}function xw(e,t){let r=e;for(;;){if(ta(cd(r,".red")))return r;if(t&&r===t)return null;let n=ln(r,"..");if(n===r)return null;r=n}}function vw(e){let t=e;for(;;){let r=cd(t,".git");if(ta(r))return Pw(r)?t:Tw(r)??t;let n=ln(t,"..");if(n===t)return null;t=n}}function Tw(e){let t=Cw(e);if(!t)return null;let r=_s(t),n=_s(r);return ad(r)!=="worktrees"||ad(n)!==".git"?null:_s(n)}function Cw(e){let t;try{t=Rw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Ew(n)?ln(n):ln(_s(e),n)}function Pw(e){try{return Sw(e).isDirectory()}catch{return!1}}var ra=y(()=>{_e()});import{join as Ow}from"node:path";function Aw(e,t=process.env){return ks(e,t)}function hr(e,t=process.env){return gu(Aw(e,t))}function ud(e,t=process.env){return Ow(hr(e,t),Iw)}var Iw,na=y(()=>{"use strict";_e();ra();Iw="spool"});import{randomUUID as Lw}from"node:crypto";import{existsSync as Dw}from"node:fs";import{mkdir as Nw,readdir as $w,readFile as Mw,rename as Bw,rm as sa,writeFile as jw}from"node:fs/promises";import{dirname as Fw,join as dd}from"node:path";function pd(e,t,r=process.env){return dd(hr(e,r),`${t}${Hw}`)}async function yr(e,t){await oa(e,`${H(t)}
49
- `)}async function Rs(e,t,r){t.status=r,await yr(e,t)}async function Ss(e,t=process.env){let r=hr(e,t);if(!Dw(r))return[];let n=await $w(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Gw.some(a=>i.endsWith(a)))){let i=dd(r,o),a=await Ww(i);if(!a){await sa(i,{force:!0});continue}if(!await Uw(a)){await sa(i,{force:!0});continue}s.push(a)}return s}async function Ww(e){let t;try{t=await Mw(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Jw(r);return n&&Object.keys(n).length>0?n:null}async function Uw(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 Jw(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 oa(e,t){await Nw(Fw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Lw()}`;try{await jw(r,t,"utf8"),await Bw(r,e)}finally{await sa(r,{force:!0})}}function ia(e){return{schema:Yl,version:1,...e}}function ld(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Hw,Gw,pn=y(()=>{"use strict";D();Ne();Dt();na();rt();Hw=".toon",Gw=[".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 aa(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 qw}from"node:child_process";import{resolve as Vw}from"node:path";async function fd(e,t,r){let n=[];if(e.signalPid){let s=await Kw(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 Kw(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:md(r),pid:t,signal:e.signal}}}async function zw(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await Yw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Vw(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 Yw(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=qw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,mr(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:md(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function md(e){return e instanceof Error?e.message:String(e)}var gd=y(()=>{"use strict";xs();rt()});import{resolve as Xw}from"node:path";async function hd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=Qw(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=fn(t,r,o,{status:"pending"},i);await mn(n.resultFile,a,n.format);let c=await fd(n,a,s),u=fn(t,r,o,c,i);return await mn(n.resultFile,u,n.format),{result:u,exitCode:yd(o,c)}}function yd(e,t){return t.status!=="success"||e.status==="running"?2:Zi(e.status)}function Qw(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 fn(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 mn(e,t,r){e&&await oa(Xw(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 ms(e){return`legacy:${Ob("sha256").update(e).digest("hex").slice(0,24)}`}function Wb(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 Ub(e){return typeof e.spool_id=="string"&&Gl(e)!==null}function Jb(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 ir(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Lb,Wl=y(()=>{"use strict";_e();D();ds();$i();Lb=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=ui(p,h),Ar=qb(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 qb(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 Wi(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:tw(s)}}async function Ui(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)/lw()))),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)),_o=pt(_.wrapper_ms);if(_o!=null){f.push(_o);let Dc=g.get(ge)??[];Dc.push(_o),g.set(ge,Dc)}Et&&b.set(Et,(b.get(Et)??0)+1),xt&&w.set(xt,(w.get(xt)??0)+1);let Ro=ow(T);Ro&&E.set(Ro,(E.get(Ro)??0)+1);let ko=cw(T);ko&&v.set(ko,(v.get(ko)??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=Yb(Ar),Ue=zb(l),St=Qb([...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:iw(E)},savings:{tokens:ui(F,fe),measured_control_holdout:Vb(c,u),weekly_tokens_saved:uw(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 Vb(e,t){let r=ew(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(Zb(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:Kb(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 Kb(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 zb(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 Yb(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:Xb(r)}))}function Xb(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 Qb(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 Zb(e){return e.reduce((t,r)=>t+r,0)/e.length}function ew(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function tw(e){let t=nw();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=rw(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 rw(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function nw(){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=>sw(n.value)).filter(n=>ir(n))}function sw(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 ow(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${aw(t.getUTCDay())}:${t.getUTCHours()}`:null}function iw(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 aw(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function cw(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 uw(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 lw(){return 24*60*60*1e3}var Vl=y(()=>{"use strict";Qe();li();ds();$i()});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:()=>Di,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_FILE:()=>Li,appendTelemetryEvent:()=>et,appendTelemetryEventSync:()=>ft,drainTelemetrySpool:()=>Gi,parseTelemetryEvent:()=>cr,readAccountingLaneStats:()=>Wi,readTelemetryGainsReport:()=>Ui,readTelemetryStats:()=>hs,takeTelemetrySpool:()=>Nb,telemetryLegacySpoolPath:()=>fs,telemetrySpoolCorrectionsPath:()=>Hi,telemetrySpoolPath:()=>Ze});var Ce=y(()=>{"use strict";ds();Wl();Vl()});function Zi(e){return e==="success"?0:e==="failure"?1:2}function ea(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function tt(e,t,r){return{status:e,exitCode:Zi(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,Xi,Ql,Zl,ed,td,Qi,Dt=y(()=>{"use strict";zl="rsp.wait.result",Yl="rsp.wait.registry",Xl="rsp.wait.list",Xi={cmd:18e5,pr:27e5,run:27e5,release:72e5},Ql=16*1024,Zl=1e4,ed=2e3,td=6e4,Qi={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 hw,readFile as yw}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 bw(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 bw(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 ww(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 hw("/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 yw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function ww(e){await new Promise(t=>setTimeout(t,e))}var rt=y(()=>{"use strict"});import{constants as _w}from"node:os";async function od(e){let t=e[1],r={timeoutMs:Xi.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=Xi[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=Sw(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=kw(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 Rw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Rw(e){if(!(e.signal in _w.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 kw(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Sw(e){return e.startsWith("SIG")?e:`SIG${e}`}var id=y(()=>{"use strict";Dt();rt()});import{existsSync as ta,readFileSync as Ew,statSync as xw}from"node:fs";import{basename as ad,dirname as _s,isAbsolute as vw,join as cd,resolve as ln}from"node:path";function Rs(e,t=process.env){let r=ln(e);if(jo.map(i=>t[i]).find(Boolean))return hu({startDir:r,env:t,exists:ta});let s=Tw(r),o=Cw(r,s);return o||(s??r)}function Cw(e,t){let r=e;for(;;){if(ta(cd(r,".red")))return r;if(t&&r===t)return null;let n=ln(r,"..");if(n===r)return null;r=n}}function Tw(e){let t=e;for(;;){let r=cd(t,".git");if(ta(r))return Aw(r)?t:Ow(r)??t;let n=ln(t,"..");if(n===t)return null;t=n}}function Ow(e){let t=Pw(e);if(!t)return null;let r=_s(t),n=_s(r);return ad(r)!=="worktrees"||ad(n)!==".git"?null:_s(n)}function Pw(e){let t;try{t=Ew(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return vw(n)?ln(n):ln(_s(e),n)}function Aw(e){try{return xw(e).isDirectory()}catch{return!1}}var ra=y(()=>{_e()});import{join as Iw}from"node:path";function Dw(e,t=process.env){return Rs(e,t)}function hr(e,t=process.env){return gu(Dw(e,t))}function ud(e,t=process.env){return Iw(hr(e,t),Lw)}var Lw,na=y(()=>{"use strict";_e();ra();Lw="spool"});import{randomUUID as Nw}from"node:crypto";import{existsSync as $w}from"node:fs";import{mkdir as Mw,readdir as Bw,readFile as Fw,rename as jw,rm as sa,writeFile as Hw}from"node:fs/promises";import{dirname as Gw,join as dd}from"node:path";function md(e,t,r=process.env){return dd(hr(e,r),`${t}${Ww}`)}async function yr(e,t){await oa(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(!$w(r))return[];let n=await Bw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Uw.some(a=>i.endsWith(a)))){let i=dd(r,o),a=await Jw(i);if(!a){await sa(i,{force:!0});continue}if(!await qw(a)){await sa(i,{force:!0});continue}s.push(a)}return s}async function Jw(e){let t;try{t=await Fw(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Vw(r);return n&&Object.keys(n).length>0?n:null}async function qw(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 Vw(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 oa(e,t){await Mw(Gw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Nw()}`;try{await Hw(r,t,"utf8"),await jw(r,e)}finally{await sa(r,{force:!0})}}function ia(e){return{schema:Yl,version:1,...e}}function ld(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ww,Uw,mn=y(()=>{"use strict";D();Ne();Dt();na();rt();Ww=".toon",Uw=[".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 aa(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 Kw}from"node:child_process";import{resolve as zw}from"node:path";async function pd(e,t,r){let n=[];if(e.signalPid){let s=await Yw(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Xw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function Yw(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 Xw(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await Qw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?zw(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function Qw(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=Kw(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 Zw}from"node:path";async function hd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=e_(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:Zi(e.status)}function e_(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 oa(Zw(e),_r(t,r))}function _r(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
50
50
  `:`${H(e)}
51
- `}var bd=y(()=>{"use strict";Ne();Dt();pn();gd()});import{createWriteStream as Zw,mkdirSync as e_}from"node:fs";import{readFile as t_,rm as r_}from"node:fs/promises";import{dirname as n_}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 s_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!o_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function o_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var vs,kd=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,...s_(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 t_(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{e_(n_(this.spoolPath),{recursive:!0}),t=Zw(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await r_(this.spoolPath,{force:!0}).catch(()=>{})}}});function Rd(e,t=process.env){return{async mint(r,n){let s=xe(e,t),o=await pt.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 i_}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??Rd(n),c=_d(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async b=>{l||(l=!0,i.removeEventListener("abort",m),await Rs(s,o,b.verdict.status).catch(()=>{}),u(b))},f=i_(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 h=async(b,w)=>{if(l||p)return;p=!0,clearTimeout(g);let E=await mr(f,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})},m=()=>void h("indeterminate","command interrupted");i.addEventListener("abort",m,{once:!0});let g=setTimeout(()=>{h("timeout",`command timed out after ${vd(r.timeoutMs)}`)},r.timeoutMs);f.once("error",b=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:b.message}})}),f.once("close",(b,w)=>{if(clearTimeout(g),l||p)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&&m()})}async function Ts(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:a_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(m){l=V(m instanceof Error?m.message:String(m))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=ca(l),await yr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Rs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),h=e.makeWakeSignal?.();await c_(f,i,h)}return await Rs(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:ca(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 ca(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function a_(e,t,r){return V("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:ca(e)}:{}})}async function c_(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 Td=y(()=>{"use strict";kd();Sd();Dt();rt();pn()});var Id={};F(Id,{readGhConditionalJson:()=>oe});import{spawn as u_}from"node:child_process";import{createHash as l_,randomUUID as d_}from"node:crypto";import{mkdir as p_,readFile as f_,rename as m_,writeFile as g_}from"node:fs/promises";import{dirname as h_,join as Cd}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=w_(e.path,e.params),s=__(n),o=await S_(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[p,d]of Pd(e.params))a.push("-f",`${p}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await k_(a,t,e.env,e.signal),u=R_(c.stdout);if(u.statusCode===304&&!!i)return await ua(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:i.body,stderr:c.stderr,etag:i.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let p=u.headers.get("etag");return p&&(o.entries[s]={key:s,request:n,etag:p,body:u.body,updated_at:new Date().toISOString()},await E_(r,o)),await ua(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:p??void 0,quotaFree:!1}}return await ua(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Pd(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function w_(e,t){return JSON.stringify({method:"GET",path:e,params:Pd(t)})}function __(e){return l_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function k_(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=p=>{o||(o=!0,n?.removeEventListener("abort",c),s(p))},a=u_("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=[],l=[];a.stdout.on("data",p=>u.push(Buffer.from(p))),a.stderr.on("data",p=>l.push(Buffer.from(p))),a.once("error",p=>i({status:1,stdout:"",stderr:p.message})),a.once("close",p=>{i({status:p??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function R_(e){let t=e.replace(/\r\n/g,`
51
+ `}var bd=y(()=>{"use strict";Ne();Dt();mn();gd()});import{createWriteStream as t_,mkdirSync as r_}from"node:fs";import{readFile as n_,rm as s_}from"node:fs/promises";import{dirname as o_}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 i_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!a_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function a_(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,...i_(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 n_(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{r_(o_(this.spoolPath),{recursive:!0}),t=t_(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 s_(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 c_}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=c_(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:u_(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=ca(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 l_(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:ca(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 ca(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function u_(e,t,r){return V("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:ca(e)}:{}})}async function l_(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 d_}from"node:child_process";import{createHash as m_,randomUUID as p_}from"node:crypto";import{mkdir as f_,readFile as g_,rename as h_,writeFile as y_}from"node:fs/promises";import{dirname as b_,join as Td}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=R_(e.path,e.params),s=k_(n),o=await x_(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 S_(a,t,e.env,e.signal),u=E_(c.stdout);if(u.statusCode===304&&!!i)return await ua(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 v_(r,o)),await ua(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 ua(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 R_(e,t){return JSON.stringify({method:"GET",path:e,params:Od(t)})}function k_(e){return m_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function S_(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=d_("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 E_(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 S_(e){for(let t of[Od(e),x_(e)])try{let r=v_(await f_(t,"utf8"));if(T_(r))return r}catch{}return{version:1,entries:{}}}async function E_(e,t){let r=Od(e);await p_(h_(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await g_(n,`${T(t)}
56
- `,{encoding:"utf8",mode:384}),await m_(n,r)}function Od(e){return Cd(Y(e),y_)}function x_(e){return Cd(Y(e),b_)}function v_(e){try{return JSON.parse(e)}catch{return N(e)}}async function ua(e,t,r){await et(e,{collection:q,id:d_(),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 T_(e){return la(e)&&e.version===1&&la(e.entries)&&Object.values(e.entries).every(C_)}function C_(e){return la(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function la(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var y_,b_,Cs=y(()=>{"use strict";_e();D();Te();y_="gh-etag-cache.toon",b_="gh-etag-cache.json"});import{spawn as P_}from"node:child_process";async function gn(e,t){return await O_(t,async r=>{let n=await A_(e,t.cwd,r);return n||await I_(e,t.cwd,r)})}async function O_(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 I_(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=P_("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&ws(l).then(p=>bs(p,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function A_(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await L_(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 L_(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:D_(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 D_(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 Ad=y(()=>{"use strict";Cs();xs();rt()});function Dd(e,t,r){let n=Date.now();return()=>N_(e,t,r,n)}async function N_(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=aa(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map($_),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="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 fr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||p<r.emptyChecksGraceMs?fr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):tt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?fr(`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=aa(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?fr(`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||M_(e,a))&&c>=t});return o?tt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):fr("no matching release is published yet")}function $_(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 M_(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Bd=y(()=>{"use strict";Dt();Ad();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 da=y(()=>{"use strict"});var jd=y(()=>{"use strict";D()});var Fd=y(()=>{"use strict"});function B_(e){return Object.keys(e)}function kr(e){return{...e,fields:B_(e.fields)}}var Hd,Gd,Wd,j_,F_,H_,Ud,pa=y(()=>{"use strict";Hd="red.castle.lane.v1",Gd="red.castle.state.v1",Wd="red.castle.history.v1",j_="red.castle.validation.v2",F_="red.castle.envelope.v1",H_="red.castle.hitl-card.v1",Ud=[kr({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}}),kr({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}}),kr({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}}),kr({schemaId:j_,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}}),kr({schemaId:F_,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}}),kr({schemaId:H_,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 GO,fa=y(()=>{"use strict";D();pa();GO=new Map(Ud.map(e=>[e.schemaId,new Set(e.fields)]))});var Jd=y(()=>{"use strict";Fd();fa()});var qd=y(()=>{"use strict"});var Ps=y(()=>{"use strict"});var ma=y(()=>{"use strict";Ps()});var Os=y(()=>{"use strict"});import{appendFile as G_,mkdir as W_,readFile as U_}from"node:fs/promises";import{dirname as J_,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 V_(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function K_(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function z_(e){return q_(e.castleStateRoot,"singleton-events.toonl")}function ha(e,t={}){let r=t.fs??{appendFile:G_,mkdir:W_,readFile:U_},n=t.clock??(()=>new Date().toISOString()),s=z_(e);return{path:s,async append(o){let i=Vd({at:o.at??n(),...o});return await r.mkdir(J_(s),{recursive:!0}),await r.appendFile(s,it().push(V_(i)),"utf8"),i},async read(o={}){K_(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();Os();ya()});var Kd=y(()=>{"use strict";Ps();ma();Is()});var zd=y(()=>{"use strict"});var CI,Yd=y(()=>{"use strict";D();CI=24*60*60*1e3});var OI,II,Xd=y(()=>{"use strict";OI=15*6e4,II=30*6e4});var Qd=y(()=>{"use strict"});var X_,Q_,DI,NI,Zd=y(()=>{"use strict";X_=["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"],Q_={pre_worktree:["cargo","gradle"]},DI=Object.values(Q_).flat(),NI=new Set(X_)});var ep=y(()=>{"use strict"});var tp=y(()=>{"use strict";Is()});var rp=y(()=>{"use strict"});var np=y(()=>{"use strict";D()});var sp=y(()=>{"use strict";D()});var op=y(()=>{"use strict";D()});var ba=y(()=>{"use strict"});var wa=y(()=>{"use strict"});import{resolve as J}from"node:path";function ip(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 ap=y(()=>{"use strict"});var cp=y(()=>{"use strict";Os()});var up=y(()=>{"use strict"});var lp=y(()=>{"use strict";ba();wa()});import{mkdir as Z_,readFile as ek,rename as tk,rm as rk,writeFile as nk}from"node:fs/promises";import{dirname as sk,join as ok}from"node:path";function ak(e){if(!ik.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function ck(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function uk(e){return e.code==="ENOENT"}function lk(e){return e.code==="EEXIST"}function dk(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 As(e,t){return ak(t),ok(e.castleStateRoot,"singletons",t,"lease.toon")}function dp(e,t={}){let r=t.fs??{mkdir:Z_,readFile:ek,rename:tk,rm:rk,writeFile:nk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??ck;async function o(a){try{return dk(N(await r.readFile(a,"utf8")))}catch(c){if(uk(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,T(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(As(e,a))},async acquire(a,c){let u=As(e,a);await r.mkdir(sk(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,T(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(h){if(!lk(h))throw h}let f=await o(u);if(f){if(_a(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=As(e,a),l=await o(u);if(!l||!_a(l,c))throw new Ls(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=As(e,a),l=await o(u);if(!l)return!1;if(!_a(l,c))throw new Ls(a);return await r.rm(u,{force:!0}),!0}}}var Ls,ik,pp=y(()=>{"use strict";D();Ls=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ik=/^[a-z0-9][a-z0-9._-]{0,63}$/});var ka=y(()=>{"use strict"});var fp=y(()=>{"use strict"});import{execFile as gk}from"node:child_process";import{promisify as hk}from"node:util";var hA,mp=y(()=>{"use strict";ka();hA=hk(gk)});var gp=y(()=>{"use strict";jd();Jd();qd();Ps();Kd();zd();Yd();fa();Xd();Qd();Zd();ep();ma();tp();rp();np();Is();sp();op();pa();ba();wa();ap();cp();up();lp();Os();ya();pp();ka();fp();mp()});import{EventEmitter as yk}from"node:events";import{spawn as bk}from"node:child_process";function Ns(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 $s(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var yn,Ra,wk,_k,kk,Rk,Ds,Sa=y(()=>{yn="github-webhook",Ra="github.webhook.delivery";wk="pull_request,pull_request_review,check_run,check_suite,workflow_run",_k=3,kk=1e3,Rk=/no extension matched|unknown command|command not found/i,Ds=class extends yk{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,kk).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ns(c,n):$s(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=bk(r,["webhook","forward",`--events=${wk}`],{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");Rk.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>=_k)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Ms,hp=y(()=>{"use strict";Sa();Sa();rt();Ms=class extends Ds{constructor(t){super(t,mr)}}});import{EventEmitter as Sk}from"node:events";import{join as Ek}from"node:path";function xa(e){let t=ks(e.cwd),r=ip(Ek(t,".red"));return new Ea({...e,leases:e.leases??dp(r),lane:e.lane??ha(r),makeForwarder:e.makeForwarder??((n,s)=>new Ms({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>gr(n.pid,n.start_time))})}var Ea,yp=y(()=>{"use strict";gp();hp();rt();ra();Ea=class extends Sk{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"?Ns(a,n):$s(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===Ra&&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={};F(va,{listWaits:()=>Ss,renderWaitHelp:()=>hn,runWait:()=>Tk});import{randomUUID as bp}from"node:crypto";import{mkdir as xk,rm as vk}from"node:fs/promises";async function Tk(e,t=process.cwd()){let r;try{r=await od(e)}catch(n){return await Ak(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 ea(r.kind)?await Ck({...r,kind:r.kind},t):(process.stdout.write(hn()),2)}async function Ck(e,t){let r=e.kind,n=ia({id:bp(),kind:r,target:Ik(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:Qi[r],status:"running",attempts:0}),s=pd(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 xk(hr(t),{recursive:!0}),await yr(s,n);let l=await Pk(e,t,s,n,o.signal);i&&(l={...l,verdict:V(`wait interrupted by ${i}`,l.verdict.details)});let p=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(p.result,e.options.format)),p.exitCode}catch(l){let p=V(l instanceof Error?l.message:String(l)),d=fn(r,n,p,{status:"success"},new Date().toISOString());return await mn(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 vk(s,{force:!0}).catch(()=>{})}}async function Pk(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 Ts({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 Ok(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 Ts({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 Ts({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 Ok(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 Ik(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}async function Ak(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=ea(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=ia({id:bp(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Qi[o],status:"indeterminate",attempts:0}),c=fn(o,a,V(t instanceof Error?t.message:String(t)),{status:"success"},i);return await mn(s,c,r).catch(()=>{}),process.stdout.write(_r(c,r)),2}var Ta=y(()=>{"use strict";id();bd();Td();Dt();na();Bd();rt();pn();da();yp();pn();da()});var js={};F(js,{parseProxyCommandLine:()=>Ep,rewriteProxyCommandLine:()=>Sp,runProxy:()=>Bk});import{spawn as Mk}from"node:child_process";async function Bk(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=Ep(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Sp(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await jk(t.telemetryRoot,r,c),await kp(r);throw c}for(let c of s)await Fk(t.telemetryRoot,c);let i=await kp(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 Sp(e,t="lossless"){let r=qk(e),n=[];return{commandLine:r.map((o,i)=>{if(o.kind==="operator"||Jk(r,i)==="|")return o.text;let a=Hk(o.text,t);return a?(n.push(a.match),a.text):o.text}).join(""),matches:n}}function Ep(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 jk(e,t,r){await et(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Pa(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Fk(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 kp(e){let t=Mk(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 Hk(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let o=Kk(s);if(!o)return null;let i=Uk(o);if(i>=o.length)return null;let a=o.slice(i),c=a.map(f=>f.value);if(Bs(c))return{text:e,match:{command:a.map(f=>f.raw).join(" "),commandFamily:Pa(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Gk(a);if(!u)return null;let l=o.slice(0,i).map(f=>f.raw),p=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...p,...u.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(f=>f.raw).join(" "),commandFamily:Pa(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Gk(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}:Wk(t,r)}function Wk(e,t){return e[0]==="cat"&&e.length===2&&Ca(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ca(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])&&Ca(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ca(e){return!!e&&!e.startsWith("-")}function Uk(e){let t=0;for(;t<e.length&&Rp(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Rp(e[t].value);)t+=1;return t}function Jk(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function qk(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=Vk(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 Vk(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 Kk(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 Pa(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Bs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Bs(t)&&t[1]?`gh ${t[1]} json-jq`:Bs(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 Bs(e){return e[0]==="gh"&&e.some(zk)}function zk(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Rp(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Fs=y(()=>{"use strict";Te()});function Tp(e,t={}){let r=Yk(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=Oa(o),u=Oa(i),l=Oa(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>rR(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:Ia(d.length,c)+Ia(d.tokens.length,u)+Ia(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+eR(d.tokens,n,r.length)+tR(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 Yk(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(xp(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(xp(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function xp(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Xk(n),tokens:Qk(n),numbers:Zk(n),length:n.length}}function Xk(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 Qk(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Zk(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function eR(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 tR(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Oa(e){let t=vp(e),r=vp(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Ia(e,t){return Math.abs(e-t.median)/t.mad}function vp(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 rR(e,t,r,n){return e<n&&r<t}var Cp=y(()=>{"use strict"});var Aa={};F(Aa,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,GIT_LOG_MACHINE_FIELDS:()=>Op,StructuredUsageError:()=>Hs,cleanStatusPayload:()=>Dp,recoveryInstruction:()=>Ce,renderGitContract:()=>Ip,runGitWrapper:()=>sR});import{spawn as nR}from"node:child_process";async function sR(e,t){let r=Ap(e),n=Lp(r.argv),s=await cR(n,r.argv.slice(1));return Ip(e,s,t)}async function Ip(e,t,r){let n=Ap(e);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 s=Lp(n.argv),o;try{o=uR(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof Gs)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=T(o);if(oR(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=TR(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 ${Ce(u)}
61
- `;return{stdout:Buffer.from(`${T(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 Ce(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ap(e){let t=Ct(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 Hs(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function oR(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!iR(e)||n.level!=="lossless")return!0;let s=vR(n.heavyGitByteThreshold,Ye);return Buffer.byteLength(t)<=s}function iR(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Lp(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 aR(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${Op.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 cR(e,t){let r=nR("git",aR(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 uR(e,t,r,n){switch(e){case"status":return lR(t,r,n);case"log":return bR(t,r,n);case"diff":return wR(t,r,n);case"commit":return gt(_R(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return gt(kR(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return RR(t,r,n);case"branch":return SR(t,r,n);case"show":return ER(t,r,n)}}function lR(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of dR(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=mR(u),o=!0;continue}let l=pR(u);if(l){o=!0,s.push(l);continue}let p=fR(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return Dp(e.join(" "),n);throw new Gs("git-status-unparseable")}let a=X(s,r),c=Np(a,"state");return gt({command:e.join(" "),branch:n,rows:a,summary:yR(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function dR(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 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 fR(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?bn(gR(e.slice(3),t),t):null}function bn(e,t){let r=Pp(t[0]??"."),n=Pp(t[1]??".");return{path:hR(e),index:r,worktree:n,state:xR(`${r}${n}`)}}function Pp(e){return e===" "?".":e}function mR(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function gR(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function hR(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function yR(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 Dp(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 bR(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 wR(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 _R(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),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function kR(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,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function RR(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),p=o.commit.slice(0,12);l&&l.commit===p&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:p,path:o.path}),o=null}let i=X(s,r),a=Np(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 SR(e,t,r){let n=t.split(`
66
- `).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=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 ER(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,p,d=""]=o.split(""),f=[];for(let 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(P=>P==="+").length,deleted:[...v].filter(P=>P==="-").length,binary:v.startsWith("Bin")})}let h=X(f,r),m=0,g=0,b=0;for(let w of h)m+=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:p??"",body_lines:d.trim()?d.trim().split(`
68
- `).length:0,files:h,summary:`${r?`${h.length}/${f.length}`:h.length} files, ${m} 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 xR(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Np(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function vR(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function TR(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 Op,Hs,Gs,Mt=y(()=>{"use strict";D();ve();jr();De();ve();Op=["%h","%an","%as","%s"];Hs=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`)}},Gs=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var $a={};F($a,{NORMALIZATION_ALLOWLIST:()=>Gp,NORMALIZE_ANSI:()=>Us,NORMALIZE_BLANK_LINES:()=>Vs,NORMALIZE_CR_PROGRESS:()=>Js,NORMALIZE_JSON_TOON:()=>Hp,NORMALIZE_TRAILING_WHITESPACE:()=>qs,crushJsonArrayItems:()=>wn,formatCodexNormalizeDecision:()=>Vp,formatNormalizeDecision:()=>qp,hookDecisionFromClaudePostExecJson:()=>Wp,hookDecisionFromCodexPostExecJson:()=>Up,normalizeOutput:()=>Ks,renderGenericJsonLane:()=>Da,runClaudePostExecHook:()=>OR,runCodexPostExecHook:()=>IR,transcodeJsonToToon:()=>Fp});import{readFileSync as Ws}from"node:fs";function Fp(e,t){let r=t?.encode??T,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=NR(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:T(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=jp(t.minTokens,CR),i=jp(t.maxItems,PR);if(!(s>i&&FR(e)>=o))return{output:T(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??wn)(n,i)}catch(m){return{output:T(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:HR(m)}}}let u=c.items,l={items:u},p=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=T(l).trimEnd();return{output:[p,f,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=$R(e),s=new Set;n&&e.forEach((a,c)=>{Na(a)!==n&&s.add(c)});let o=MR(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 Ks(e){let t=e;for(let r of Gp)t=r.apply(t);return t}async function Wp(e,t){return await Jp(e,t)}async function Up(e,t){return await Jp(e,t)}async function Jp(e,t){let r=DR(e),n=GR(r,["cwd"])||t.cwd;if(!await(t.isEnabled??LR)(n))return{kind:"passthrough",reason:"disabled"};let o=WR(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??Ks)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function qp(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Vp(e){return{stdout:"",status:0}}async function OR(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await Wp(t,{cwd:process.cwd()}),n=qp(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function IR(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await Up(t,{cwd:process.cwd()}),n=Vp(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function AR(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&&$p(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&$p(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function $p(e){return e>=32&&e<=63}function LR(e){return xe(e,process.env).enabled}function DR(e){try{let t=JSON.parse(e);return Rr(t)?t:{}}catch{return{}}}function NR(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Rr(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 $R(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":Rr(e)?Object.keys(e).sort().map(t=>`${t}:${Mp(e[t])}`).join("|"):Mp(e)}function MR(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Na(s)!==t))for(let[i,a]of Kp(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 BR(s))r.add(o);for(let o of jR(s))r.add(o)}return r}function BR(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=Bp(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Bp(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 jR(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 Kp(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Rr(e)?Object.entries(e).flatMap(([r,n])=>Kp(n,t?`${t}.${r}`:r)):[]}function Mp(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Bp(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 FR(e){return Math.ceil(e.length/4)}function jp(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function HR(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 GR(e,t){let r=e;for(let n of t){if(!Rr(r))return"";r=r[n]}return typeof r=="string"?r:""}function WR(e,t){let r=e[t];return Rr(r)?r:null}function Rr(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 Us,Js,qs,Vs,Hp,CR,PR,Gp,_n=y(()=>{"use strict";D();ve();Us={id:"ansi",apply:AR},Js={id:"cr-progress",apply:e=>e.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 x_(e){for(let t of[Pd(e),C_(e)])try{let r=T_(await g_(t,"utf8"));if(O_(r))return r}catch{}return{version:1,entries:{}}}async function v_(e,t){let r=Pd(e);await f_(b_(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await y_(n,`${C(t)}
56
+ `,{encoding:"utf8",mode:384}),await h_(n,r)}function Pd(e){return Td(Y(e),w_)}function C_(e){return Td(Y(e),__)}function T_(e){try{return JSON.parse(e)}catch{return N(e)}}async function ua(e,t,r){await et(e,{collection:q,id:p_(),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 O_(e){return la(e)&&e.version===1&&la(e.entries)&&Object.values(e.entries).every(P_)}function P_(e){return la(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function la(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var w_,__,Ts=y(()=>{"use strict";_e();D();Ce();w_="gh-etag-cache.toon",__="gh-etag-cache.json"});import{spawn as A_}from"node:child_process";async function gn(e,t){return await I_(t,async r=>{let n=await D_(e,t.cwd,r);return n||await L_(e,t.cwd,r)})}async function I_(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 L_(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=A_("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 D_(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await N_(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 N_(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:$_(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 $_(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()=>M_(e,t,r,n)}async function M_(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=aa(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(B_),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=aa(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||F_(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 B_(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 F_(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 da=y(()=>{"use strict"});var Fd=y(()=>{"use strict";D()});var jd=y(()=>{"use strict"});function j_(e){return Object.keys(e)}function Rr(e){return{...e,fields:j_(e.fields)}}var Hd,Gd,Wd,H_,G_,W_,Ud,ma=y(()=>{"use strict";Hd="red.castle.lane.v1",Gd="red.castle.state.v1",Wd="red.castle.history.v1",H_="red.castle.validation.v2",G_="red.castle.envelope.v1",W_="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:H_,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:G_,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:W_,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 VP,pa=y(()=>{"use strict";D();ma();VP=new Map(Ud.map(e=>[e.schemaId,new Set(e.fields)]))});var Jd=y(()=>{"use strict";jd();pa()});var qd=y(()=>{"use strict"});var Os=y(()=>{"use strict"});var fa=y(()=>{"use strict";Os()});var Ps=y(()=>{"use strict"});import{appendFile as U_,mkdir as J_,readFile as q_}from"node:fs/promises";import{dirname as V_,join as K_}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 Y_(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function X_(e){return K_(e.castleStateRoot,"singleton-events.toonl")}function ha(e,t={}){let r=t.fs??{appendFile:U_,mkdir:J_,readFile:q_},n=t.clock??(()=>new Date().toISOString()),s=X_(e);return{path:s,async append(o){let i=Vd({at:o.at??n(),...o});return await r.mkdir(V_(s),{recursive:!0}),await r.appendFile(s,it().push(z_(i)),"utf8"),i},async read(o={}){Y_(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 As=y(()=>{"use strict";D();Ps();ya()});var Kd=y(()=>{"use strict";Os();fa();As()});var zd=y(()=>{"use strict"});var LA,Yd=y(()=>{"use strict";D();LA=24*60*60*1e3});var NA,$A,Xd=y(()=>{"use strict";NA=15*6e4,$A=30*6e4});var Qd=y(()=>{"use strict"});var Z_,eR,FA,jA,Zd=y(()=>{"use strict";Z_=["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"],eR={pre_worktree:["cargo","gradle"]},FA=Object.values(eR).flat(),jA=new Set(Z_)});var em=y(()=>{"use strict"});var tm=y(()=>{"use strict";As()});var rm=y(()=>{"use strict"});var nm=y(()=>{"use strict";D()});var sm=y(()=>{"use strict";D()});var om=y(()=>{"use strict";D()});var ba=y(()=>{"use strict"});var wa=y(()=>{"use strict"});import{resolve as J}from"node:path";function im(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 am=y(()=>{"use strict"});var cm=y(()=>{"use strict";Ps()});var um=y(()=>{"use strict"});var lm=y(()=>{"use strict";ba();wa()});import{mkdir as tR,readFile as rR,rename as nR,rm as sR,writeFile as oR}from"node:fs/promises";import{dirname as iR,join as aR}from"node:path";function uR(e){if(!cR.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function lR(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function dR(e){return e.code==="ENOENT"}function mR(e){return e.code==="EEXIST"}function pR(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 Is(e,t){return uR(t),aR(e.castleStateRoot,"singletons",t,"lease.toon")}function dm(e,t={}){let r=t.fs??{mkdir:tR,readFile:rR,rename:nR,rm:sR,writeFile:oR},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??lR;async function o(a){try{return pR(N(await r.readFile(a,"utf8")))}catch(c){if(dR(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(Is(e,a))},async acquire(a,c){let u=Is(e,a);await r.mkdir(iR(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(!mR(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=Is(e,a),l=await o(u);if(!l||!_a(l,c))throw new Ls(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=Is(e,a),l=await o(u);if(!l)return!1;if(!_a(l,c))throw new Ls(a);return await r.rm(u,{force:!0}),!0}}}var Ls,cR,mm=y(()=>{"use strict";D();Ls=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},cR=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Ra=y(()=>{"use strict"});var pm=y(()=>{"use strict"});var fR,gR,hR,wI,fm=y(()=>{"use strict";fR={refreshCadenceS:270,tolerance:3},gR=270,hR=2700,wI={...fR,claimGraceS:gR,recentCommitProtectionS:hR}});var gm=y(()=>{"use strict"});import{execFile as _R}from"node:child_process";import{promisify as RR}from"node:util";var EI,hm=y(()=>{"use strict";Ra();EI=RR(_R)});var ym=y(()=>{"use strict";Fd();Jd();qd();Os();Kd();zd();Yd();pa();Xd();Qd();Zd();em();fa();tm();rm();nm();As();sm();om();ma();ba();wa();am();cm();um();lm();Ps();ya();mm();Ra();pm();fm();gm();hm()});import{EventEmitter as kR}from"node:events";import{spawn as SR}from"node:child_process";function Ns(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 $s(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var yn,ka,ER,xR,vR,CR,Ds,Sa=y(()=>{yn="github-webhook",ka="github.webhook.delivery";ER="pull_request,pull_request_review,check_run,check_suite,workflow_run",xR=3,vR=1e3,CR=/no extension matched|unknown command|command not found/i,Ds=class extends kR{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,vR).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ns(c,n):$s(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=SR(r,["webhook","forward",`--events=${ER}`],{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");CR.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>=xR)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Ms,bm=y(()=>{"use strict";Sa();Sa();rt();Ms=class extends Ds{constructor(t){super(t,fr)}}});import{EventEmitter as TR}from"node:events";import{join as OR}from"node:path";function xa(e){let t=Rs(e.cwd),r=im(OR(t,".red"));return new Ea({...e,leases:e.leases??dm(r),lane:e.lane??ha(r),makeForwarder:e.makeForwarder??((n,s)=>new Ms({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>gr(n.pid,n.start_time))})}var Ea,wm=y(()=>{"use strict";ym();bm();rt();ra();Ea=class extends TR{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"?Ns(a,n):$s(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:()=>IR});import{randomUUID as _m}from"node:crypto";import{mkdir as PR,rm as AR}from"node:fs/promises";async function IR(e,t=process.cwd()){let r;try{r=await od(e)}catch(n){return await MR(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 ea(r.kind)?await LR({...r,kind:r.kind},t):(process.stdout.write(hn()),2)}async function LR(e,t){let r=e.kind,n=ia({id:_m(),kind:r,target:$R(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:Qi[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 PR(hr(t),{recursive:!0}),await yr(s,n);let l=await DR(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 AR(s,{force:!0}).catch(()=>{})}}async function DR(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 NR(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 NR(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 $R(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 MR(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=ea(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=ia({id:_m(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Qi[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();na();Bd();rt();mn();da();wm();mn();da()});var Fs={};j(Fs,{parseProxyCommandLine:()=>vm,rewriteProxyCommandLine:()=>xm,runProxy:()=>WR});import{spawn as GR}from"node:child_process";async function WR(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=vm(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=xm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await UR(t.telemetryRoot,r,c),await Sm(r);throw c}for(let c of s)await JR(t.telemetryRoot,c);let i=await Sm(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 xm(e,t="lossless"){let r=XR(e),n=[];return{commandLine:r.map((o,i)=>{if(o.kind==="operator"||YR(r,i)==="|")return o.text;let a=qR(o.text,t);return a?(n.push(a.match),a.text):o.text}).join(""),matches:n}}function vm(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 UR(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 JR(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 Sm(e){let t=GR(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 qR(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let o=ZR(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(Bs(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=VR(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 VR(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}:KR(t,r)}function KR(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&&Em(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Em(e[t].value);)t+=1;return t}function YR(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function XR(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=QR(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 QR(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 ZR(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]}`:Bs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Bs(t)&&t[1]?`gh ${t[1]} json-jq`:Bs(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 Bs(e){return e[0]==="gh"&&e.some(ek)}function ek(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Em(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var js=y(()=>{"use strict";Ce()});function Om(e,t={}){let r=tk(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=>ak(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)+ok(d.tokens,n,r.length)+ik(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 tk(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(Cm(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(Cm(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Cm(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:rk(n),tokens:nk(n),numbers:sk(n),length:n.length}}function rk(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 nk(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function sk(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function ok(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 ik(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Pa(e){let t=Tm(e),r=Tm(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 Tm(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 ak(e,t,r,n){return e<n&&r<t}var Pm=y(()=>{"use strict"});var Ia={};j(Ia,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,GIT_LOG_MACHINE_FIELDS:()=>Im,StructuredUsageError:()=>Hs,cleanStatusPayload:()=>$m,recoveryInstruction:()=>Te,renderGitContract:()=>Lm,runGitWrapper:()=>uk});import{spawn as ck}from"node:child_process";async function uk(e,t){let r=Dm(e),n=Nm(r.argv),s=await pk(n,r.argv.slice(1));return Lm(e,s,t)}async function Lm(e,t,r){let n=Dm(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=Nm(n.argv),o;try{o=fk(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof Gs)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(lk(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=Ik(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)}
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 Dm(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 Hs(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function lk(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!dk(e)||n.level!=="lossless")return!0;let s=Ak(n.heavyGitByteThreshold,Ye);return Buffer.byteLength(t)<=s}function dk(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Nm(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 mk(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${Im.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 pk(e,t){let r=ck("git",mk(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 fk(e,t,r,n){switch(e){case"status":return gk(t,r,n);case"log":return Sk(t,r,n);case"diff":return Ek(t,r,n);case"commit":return gt(xk(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return gt(vk(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Ck(t,r,n);case"branch":return Tk(t,r,n);case"show":return Ok(t,r,n)}}function gk(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of hk(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=wk(u),o=!0;continue}let l=yk(u);if(l){o=!0,s.push(l);continue}let m=bk(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return $m(e.join(" "),n);throw new Gs("git-status-unparseable")}let a=X(s,r),c=Mm(a,"state");return gt({command:e.join(" "),branch:n,rows:a,summary:kk(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function hk(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function yk(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 bk(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?bn(_k(e.slice(3),t),t):null}function bn(e,t){let r=Am(t[0]??"."),n=Am(t[1]??".");return{path:Rk(e),index:r,worktree:n,state:Pk(`${r}${n}`)}}function Am(e){return e===" "?".":e}function wk(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function _k(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function Rk(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function kk(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 $m(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 Sk(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 Ek(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 xk(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 vk(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 Ck(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=Mm(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 Tk(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 Ok(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 Pk(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Mm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Ak(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ik(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 Im,Hs,Gs,Mt=y(()=>{"use strict";D();ve();Fr();De();ve();Im=["%h","%an","%as","%s"];Hs=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`)}},Gs=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:()=>Um,NORMALIZE_ANSI:()=>Us,NORMALIZE_BLANK_LINES:()=>Vs,NORMALIZE_CR_PROGRESS:()=>Js,NORMALIZE_JSON_TOON:()=>Wm,NORMALIZE_TRAILING_WHITESPACE:()=>qs,crushJsonArrayItems:()=>wn,formatCodexNormalizeDecision:()=>zm,formatNormalizeDecision:()=>Km,hookDecisionFromClaudePostExecJson:()=>Jm,hookDecisionFromCodexPostExecJson:()=>qm,normalizeOutput:()=>Ks,renderGenericJsonLane:()=>Da,runClaudePostExecHook:()=>Nk,runCodexPostExecHook:()=>$k,transcodeJsonToToon:()=>Gm});import{readFileSync as Ws}from"node:fs";function Gm(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=jk(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=Hm(t.minTokens,Lk),i=Hm(t.maxItems,Dk);if(!(s>i&&Jk(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:qk(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=Hk(e),s=new Set;n&&e.forEach((a,c)=>{Na(a)!==n&&s.add(c)});let o=Gk(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 Ks(e){let t=e;for(let r of Um)t=r.apply(t);return t}async function Jm(e,t){return await Vm(e,t)}async function qm(e,t){return await Vm(e,t)}async function Vm(e,t){let r=Fk(e),n=Vk(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Bk)(n))return{kind:"passthrough",reason:"disabled"};let o=Kk(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??Ks)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Km(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function zm(e){return{stdout:"",status:0}}async function Nk(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await Jm(t,{cwd:process.cwd()}),n=Km(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function $k(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await qm(t,{cwd:process.cwd()}),n=zm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Mk(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&&Bm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Bm(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Bm(e){return e>=32&&e<=63}function Bk(e){return xe(e,process.env).enabled}function Fk(e){try{let t=JSON.parse(e);return kr(t)?t:{}}catch{return{}}}function jk(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 Hk(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}:${Fm(e[t])}`).join("|"):Fm(e)}function Gk(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Na(s)!==t))for(let[i,a]of Ym(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 Wk(s))r.add(o);for(let o of Uk(s))r.add(o)}return r}function Wk(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=jm(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=jm(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 Uk(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 Ym(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])=>Ym(n,t?`${t}.${r}`:r)):[]}function Fm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function jm(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 Jk(e){return Math.ceil(e.length/4)}function Hm(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function qk(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 Vk(e,t){let r=e;for(let n of t){if(!kr(r))return"";r=r[n]}return typeof r=="string"?r:""}function Kk(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 Us,Js,qs,Vs,Wm,Lk,Dk,Um,_n=y(()=>{"use strict";D();ve();Us={id:"ansi",apply:Mk},Js={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
71
  `)},qs={id:"trailing-whitespace",apply:e=>e.split(`
72
72
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
73
73
  `)},Vs={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
74
74
 
75
- `)};Hp={id:"json-to-toon",apply:e=>Fp(e)},CR=200,PR=15;Gp=[Us,Js,qs,Vs,Hp]});var Sn={};F(Sn,{parseExecCommandLine:()=>ef,renderExecContract:()=>Zp,runExecWrapper:()=>KR});import{isUtf8 as UR}from"node:buffer";import{spawn as JR}from"node:child_process";async function KR(e,t){let r=ef(e),n=await zR(r);return await Zp(r,n,t)}async function Zp(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=YR(n),i=o.kind==="text"?Buffer.from(o.text):n,a=hS(r.heavyByteThreshold,qR);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let p=o.kind==="text"?QR(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):ZR(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function ef(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 zR(e){let t=JR(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 YR(e){return UR(e)?{kind:"text",text:XR(e.toString("utf8"))}:{kind:"bytes"}}function XR(e){let t=e;for(let r of[Us,Js,qs,Vs])t=r.apply(t);return t}function QR(e,t,r,n,s,o=uS,i=wn){let c=Math.max(1,Math.floor((n==="terse"?Qp:VR)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=cS(e,c,l,o),d=eS(e),f=tS(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),h=tf(s,d,t,gS(u),r,f.summary),m=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:cf(p.error)}:f.degradation;return{text:af(h),degradation:m}}function ZR(e,t,r,n){let s=Math.max(1,Math.floor(Qp/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:af(tf(n,"bytes",t,0,r,o))}}function tf(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Ce(s)}}}function eS(e){let t=e.trim();return t?nf(t)?"json":sf(e)?"jsonl":lS(e)?"unified-diff":of(e)?"tabular":dS(e)?"log-like":pS(e)?"prose":"untyped":"untyped"}function tS(e,t,r,n,s,o,i=wn){switch(e){case"json":return rS(t,i);case"jsonl":return{summary:nS(t)};case"unified-diff":return{summary:sS(t)};case"tabular":return{summary:oS(t)};case"log-like":return{summary:iS(t,o)};case"prose":return{summary:aS(t)};case"bytes":return{summary:{}};case"untyped":return{summary:rf(r,n,s,o)}}}function rS(e,t){let r=nf(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:Yp(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:cf(n)}}}return{summary:Yp(r)}}if(Rn(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 Yp(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ht),item_keys:Ba(e)}}function nS(e){let t=sf(e)??[],r=fS(t,"level");return{records:t.length,keys:Ba(t),levels:r,first:ht(t[0]),last:ht(t.at(-1))}}function sS(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 oS(e){let t=of(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:rf(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function iS(e,t){let r=kn(e);return{entries:r.length,levels:mS(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 aS(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 rf(e,t,r,n){let s=Xp(e.subarray(0,t)),o=Xp(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 cS(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function uS(e,t){return Tp(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function nf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Rn(r)||Array.isArray(r)?r:null}catch{return null}}function sf(e){let t=kn(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 lS(e){let t=kn(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 of(e){let t=kn(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 dS(e){let t=kn(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 kn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Ba(e){let t=new Map;for(let r of e)if(Rn(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 fS(e,t){let r=new Map;for(let n of e){if(!Rn(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 mS(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):Rn(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<=zp?t:`${t.slice(0,zp-1)}\u2026`}function af(e){let t=T(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 Rn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function cf(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 Xp(e){return e.toString("utf8").replace(/�$/g,"")}function gS(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 hS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var qR,VR,Qp,zp,En=y(()=>{"use strict";D();Cp();Mt();_n();De();qR=8*1024,VR=2*1024,Qp=1024,zp=240});var hf=y(()=>{"use strict";di()});var jt={};F(jt,{ResidentRspElisionStore:()=>Tn,ensureResidentServer:()=>Vn,kickResidentServer:()=>Kn,pingResident:()=>Pt,readResidentRegistry:()=>Kr,removeResidentRegistry:()=>Yn,residentRegistryStatus:()=>Vr,resolveResidentPaths:()=>lt,sweepResidentRegistry:()=>Zu,warmResidentServer:()=>Qu,writeResidentRegistry:()=>zn});import{randomUUID as ES}from"node:crypto";function yf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tn,nt=y(()=>{"use strict";hf();Xn();Tn=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?yf(r)&&r.status==="expired"?r:!yf(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:ES()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var so={};F(so,{RSP_WRAPPER_CAPABILITIES:()=>On,formatCodexHookDecision:()=>Rf,formatHookDecision:()=>kf,hookDecisionFromClaudePreExecJson:()=>PS,hookDecisionFromCodexPreExecJson:()=>OS,rewriteCommand:()=>wf,rewriteTableFromCapabilities:()=>bf,runClaudePreExecHook:()=>IS,runCodexPreExecHook:()=>AS});import{readFileSync as eo}from"node:fs";import{existsSync as xS}from"node:fs";import{fileURLToPath as vS}from"node:url";function bf(e){let t=new Map;for(let r of e)t.set(YS(r.command),["rsp",...r.wrapper]);return t}function wf(e){let t=HS(e);if(t)return t;let r=jS(e);if(!r)return Qs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&Lf(n[0]))return Qs(e);let s=CS(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Qs(e);let o=[...On].sort((c,u)=>u.command.length-c.command.length).find(c=>FS(n,c.command));if(!o)return Qs(e);let i=["rsp",...o.wrapper,...n.slice(o.command.length)],a=Cf(r.redirectSuffix);return{kind:"rewrite",command:[...i.map(Pn),...a].join(" "),capabilityId:o.id}}function CS(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Cf(e.redirectSuffix);return r==="cat"&&t.length===2&&Xs(t[1])?{kind:"rewrite",command:["rsp","cat",Pn(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Xs(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",Pn(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Xs(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],Pn(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Xs(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),Pn(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Xs(e){return!!e&&!e.startsWith("-")}async function PS(e,t){return await _f(e,t)}async function OS(e,t){return await _f(e,t)}async function _f(e,t){return(await Ha(e,t,"pre-exec")).decision}async function Ha(e,t,r){let n=Df(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,o=Pe(s,["cwd"])||Pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??LS)(o)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:o,event:Cn({hook:r,command:Fa(s),decision:d,reason:"disabled"})}}let a=Fa(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:o,event:Cn({hook:r,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=xe(o,process.env).proxyEnabled?WS(a):(t.rewrite??wf)(a),p=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:Cn({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:p})}}return await NS(o,t.wakeResident??DS),{decision:l,telemetryRoot:o,event:Cn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:p})}}function kf(e){return e.kind==="rewrite"?Sf(e.command):{stdout:"",status:0}}function Rf(e){return e.kind==="rewrite"?Sf(e.command):{stdout:"",status:0}}function Sf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
- `,status:0}}async function IS(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"claude-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;xf("claude-pre-exec",n);let s=kf(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),Ef("claude-pre-exec",t,r)),vf("claude-pre-exec",r),0}}async function AS(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"codex-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;xf("codex-pre-exec",n);let s=Rf(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),Ef("codex-pre-exec",t,r)),vf("codex-pre-exec",r),0}}function to(e,t){et(e,t).catch(()=>{})}function Cn(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:Af(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Ef(e,t,r){let n=Df(t),s=n.ok?Fa(n.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Af(s),decision:"failed-open",reason:"hook-exception",error:Ga(r)}}function LS(e){return xe(e,process.env).enabled}async function DS(e){let t=xe(e,process.env);if(!t.enabled||!BS(t))return;let r=lt(e);await Kn(r,MS(t))}async function NS(e,t){try{await Promise.resolve(t(e))}catch(r){$S(r)}}function xf(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
75
+ `)};Wm={id:"json-to-toon",apply:e=>Gm(e)},Lk=200,Dk=15;Um=[Us,Js,qs,Vs,Wm]});var Sn={};j(Sn,{parseExecCommandLine:()=>rp,renderExecContract:()=>tp,runExecWrapper:()=>Zk});import{isUtf8 as zk}from"node:buffer";import{spawn as Yk}from"node:child_process";async function Zk(e,t){let r=rp(e),n=await eS(r);return await tp(r,n,t)}async function tp(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=tS(n),i=o.kind==="text"?Buffer.from(o.text):n,a=RS(r.heavyByteThreshold,Xk);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"?nS(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):sS(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 rp(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 eS(e){let t=Yk(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 tS(e){return zk(e)?{kind:"text",text:rS(e.toString("utf8"))}:{kind:"bytes"}}function rS(e){let t=e;for(let r of[Us,Js,qs,Vs])t=r.apply(t);return t}function nS(e,t,r,n,s,o=fS,i=wn){let c=Math.max(1,Math.floor((n==="terse"?ep:Qk)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=pS(e,c,l,o),d=oS(e),p=iS(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),h=np(s,d,t,_S(u),r,p.summary),f=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:up(m.error)}:p.degradation;return{text:cp(h),degradation:f}}function sS(e,t,r,n){let s=Math.max(1,Math.floor(ep/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:cp(np(n,"bytes",t,0,r,o))}}function np(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Te(s)}}}function oS(e){let t=e.trim();return t?op(t)?"json":ip(e)?"jsonl":gS(e)?"unified-diff":ap(e)?"tabular":hS(e)?"log-like":yS(e)?"prose":"untyped":"untyped"}function iS(e,t,r,n,s,o,i=wn){switch(e){case"json":return aS(t,i);case"jsonl":return{summary:cS(t)};case"unified-diff":return{summary:uS(t)};case"tabular":return{summary:lS(t)};case"log-like":return{summary:dS(t,o)};case"prose":return{summary:mS(t)};case"bytes":return{summary:{}};case"untyped":return{summary:sp(r,n,s,o)}}}function aS(e,t){let r=op(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:Qm(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:up(n)}}}return{summary:Qm(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 Qm(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ht),item_keys:Ba(e)}}function cS(e){let t=ip(e)??[],r=bS(t,"level");return{records:t.length,keys:Ba(t),levels:r,first:ht(t[0]),last:ht(t.at(-1))}}function uS(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 lS(e){let t=ap(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:sp(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function dS(e,t){let r=Rn(e);return{entries:r.length,levels:wS(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 mS(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 sp(e,t,r,n){let s=Zm(e.subarray(0,t)),o=Zm(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 pS(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function fS(e,t){return Om(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function op(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 ip(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 gS(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 ap(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 hS(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 yS(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 bS(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 wS(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<=Xm?t:`${t.slice(0,Xm-1)}\u2026`}function cp(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 up(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 Zm(e){return e.toString("utf8").replace(/�$/g,"")}function _S(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 RS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Xk,Qk,ep,Xm,En=y(()=>{"use strict";D();Pm();Mt();_n();De();Xk=8*1024,Qk=2*1024,ep=1024,Xm=240});var yp=y(()=>{"use strict";di()});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 OS}from"node:crypto";function bp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cn,nt=y(()=>{"use strict";yp();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?bp(r)&&r.status==="expired"?r:!bp(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:OS()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var so={};j(so,{RSP_WRAPPER_CAPABILITIES:()=>Pn,formatCodexHookDecision:()=>Sp,formatHookDecision:()=>kp,hookDecisionFromClaudePreExecJson:()=>DS,hookDecisionFromCodexPreExecJson:()=>NS,rewriteCommand:()=>_p,rewriteTableFromCapabilities:()=>wp,runClaudePreExecHook:()=>$S,runCodexPreExecHook:()=>MS});import{readFileSync as eo}from"node:fs";import{existsSync as PS}from"node:fs";import{fileURLToPath as AS}from"node:url";function wp(e){let t=new Map;for(let r of e)t.set(tE(r.command),["rsp",...r.wrapper]);return t}function _p(e){let t=qS(e);if(t)return t;let r=US(e);if(!r)return Qs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&Dp(n[0]))return Qs(e);let s=LS(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Qs(e);let o=[...Pn].sort((c,u)=>u.command.length-c.command.length).find(c=>JS(n,c.command));if(!o)return Qs(e);let i=["rsp",...o.wrapper,...n.slice(o.command.length)],a=Op(r.redirectSuffix);return{kind:"rewrite",command:[...i.map(On),...a].join(" "),capabilityId:o.id}}function LS(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Op(e.redirectSuffix);return r==="cat"&&t.length===2&&Xs(t[1])?{kind:"rewrite",command:["rsp","cat",On(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Xs(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])&&Xs(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])&&Xs(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),On(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Xs(e){return!!e&&!e.startsWith("-")}async function DS(e,t){return await Rp(e,t)}async function NS(e,t){return await Rp(e,t)}async function Rp(e,t){return(await Ha(e,t,"pre-exec")).decision}async function Ha(e,t,r){let n=Np(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??BS)(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?KS(a):(t.rewrite??_p)(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 jS(o,t.wakeResident??FS),{decision:l,telemetryRoot:o,event:Tn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function kp(e){return e.kind==="rewrite"?Ep(e.command):{stdout:"",status:0}}function Sp(e){return e.kind==="rewrite"?Ep(e.command):{stdout:"",status:0}}function Ep(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
+ `,status:0}}async function $S(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"claude-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;vp("claude-pre-exec",n);let s=kp(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),xp("claude-pre-exec",t,r)),Cp("claude-pre-exec",r),0}}async function MS(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"codex-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;vp("codex-pre-exec",n);let s=Sp(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),xp("codex-pre-exec",t,r)),Cp("codex-pre-exec",r),0}}function to(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:Lp(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function xp(e,t,r){let n=Np(t),s=n.ok?ja(n.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Lp(s),decision:"failed-open",reason:"hook-exception",error:Ga(r)}}function BS(e){return xe(e,process.env).enabled}async function FS(e){let t=xe(e,process.env);if(!t.enabled||!WS(t))return;let r=lt(e);await Kn(r,GS(t))}async function jS(e,t){try{await Promise.resolve(t(e))}catch(r){HS(r)}}function vp(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 vf(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Ga(t)}
80
- `)}function $S(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 MS(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 BS(e){if(!e.storeUri.startsWith("file://"))return!0;try{return xS(vS(e.storeUri))}catch{return!1}}function Fa(e){return Pe(e,["tool_input","command"])||Pe(e,["tool_input","cmd"])||Pe(e,["tool_input","args","command"])||Pe(e,["input","command"])||Pe(e,["input","cmd"])||Pe(e,["arguments","command"])||Pe(e,["arguments","cmd"])||Pe(e,["command"])||Pe(e,["cmd"])}function jS(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Tf(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Lf(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 Tf(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 FS(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function HS(e){let t=Tf(e.trim()).map(r=>r.text);return Zs(t)?{kind:"passthrough",reason:TS}:null}function Zs(e){return e[0]==="gh"&&e.some(GS)}function GS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Cf(e){return e.map(t=>t.text)}function Pn(e){return/[^\w@%+=:,./-]/.test(e)?Wa(e):e}function WS(e){let t=US(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Wa(e.trim())}`,capabilityId:"proxy:universal"}}function US(e){let t=e.trim();if(!t)return"missing-command";if(Of(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=no(ro(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Pf.has(r))return"interactive"}function Qs(e){let t=e.trim();return JS(t)?{kind:"rewrite",command:`rsp exec -- ${Wa(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function JS(e){return!(!e||!qS(e)||!VS(e)||Of(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||KS(e,"rsp")||If(e,Pf)||zS(e))}function qS(e){return/&&|[;|]/.test(e)}function Of(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 VS(e){return ro(e).some(t=>{let r=no(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 If(e,t){return ro(e).some(r=>{let n=no(r)[0];return n?t.has(n):!1})}function KS(e,t){return If(e,new Set([t]))}function zS(e){return ro(e).some(t=>{let r=no(t);return r[0]==="grep"&&r.includes("-q")})}function ro(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function no(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Wa(e){return`'${e.replace(/'/g,"'\\''")}'`}function Af(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zs(t)&&t[1]?`gh ${t[1]} json-jq`:Zs(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 Lf(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function YS(e){return e.join("\0")}function Df(e){try{let t=JSON.parse(e);return Nf(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Pe(e,t){let r=e;for(let n of t){if(!Nf(r))return"";r=r[n]}return typeof r=="string"?r:""}function Nf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var On,mD,TS,Pf,In=y(()=>{"use strict";ve();nt();Te();On=[{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"]}],mD=bf(On),TS="lossless-gh-json-jq";Pf=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Gf={};F(Gf,{fastTelemetryRoot:()=>Ja,isFastGitStatus:()=>oo,runFastGitStatus:()=>io});import{spawnSync as Ff}from"node:child_process";import{existsSync as Hf,readdirSync as sE}from"node:fs";function oo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function io(){if(oE(process.cwd()))return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};if(Ff("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Ff("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(),jt));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 oE(e){try{return!Hf(`${e}/.git`)||Hf(`${e}/.git/index`)?!1:sE(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 Jf(e,t,r,n={}){kE(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=RE(["id","number",...r]).map(d=>SE(_E[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 }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
85
- `);return{kind:e,query:p,aliases:o,labelAliases:i}}function qf(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(zf(c))return{number:a,value:c};let u=o.find(l=>{let p=l.path;return Array.isArray(p)&&p.includes(i)});return{number:a,error:Yf(u?.message)||"not found"}})}function Vf(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: ${Uf(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: ${Uf(r)}, clientMutationId: ${bt(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
86
- `)}}function Kf(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,Yf(i.message)||"mutation failed")}return s}function kE(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 RE(e){return[...new Set(e)]}function SE(e,t){let r=" ".repeat(t);return e.split(`
79
+ `)}}function Cp(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Ga(t)}
80
+ `)}function HS(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 GS(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 WS(e){if(!e.storeUri.startsWith("file://"))return!0;try{return PS(AS(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 US(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Tp(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Dp(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 Tp(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 JS(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function qS(e){let t=Tp(e.trim()).map(r=>r.text);return Zs(t)?{kind:"passthrough",reason:IS}:null}function Zs(e){return e[0]==="gh"&&e.some(VS)}function VS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Op(e){return e.map(t=>t.text)}function On(e){return/[^\w@%+=:,./-]/.test(e)?Wa(e):e}function KS(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(Ap(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=no(ro(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Pp.has(r))return"interactive"}function Qs(e){let t=e.trim();return YS(t)?{kind:"rewrite",command:`rsp exec -- ${Wa(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function YS(e){return!(!e||!XS(e)||!QS(e)||Ap(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||ZS(e,"rsp")||Ip(e,Pp)||eE(e))}function XS(e){return/&&|[;|]/.test(e)}function Ap(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 QS(e){return ro(e).some(t=>{let r=no(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 Ip(e,t){return ro(e).some(r=>{let n=no(r)[0];return n?t.has(n):!1})}function ZS(e,t){return Ip(e,new Set([t]))}function eE(e){return ro(e).some(t=>{let r=no(t);return r[0]==="grep"&&r.includes("-q")})}function ro(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function no(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Wa(e){return`'${e.replace(/'/g,"'\\''")}'`}function Lp(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zs(t)&&t[1]?`gh ${t[1]} json-jq`:Zs(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 Dp(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function tE(e){return e.join("\0")}function Np(e){try{let t=JSON.parse(e);return $p(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(!$p(r))return"";r=r[n]}return typeof r=="string"?r:""}function $p(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pn,TD,IS,Pp,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"]}],TD=wp(Pn),IS="lossless-gh-json-jq";Pp=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Wp={};j(Wp,{fastTelemetryRoot:()=>Ja,isFastGitStatus:()=>oo,runFastGitStatus:()=>io});import{spawnSync as Hp}from"node:child_process";import{existsSync as Gp,readdirSync as uE}from"node:fs";function oo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function io(){if(lE(process.cwd()))return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};if(Hp("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Hp("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 lE(e){try{return!Gp(`${e}/.git`)||Gp(`${e}/.git/index`)?!1:uE(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 qp(e,t,r,n={}){vE(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=CE(["id","number",...r]).map(d=>TE(xE[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 Vp(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(Yp(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:Xp(u?.message)||"not found"}})}function Kp(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: ${Jp(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: ${Jp(r)}, clientMutationId: ${bt(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
86
+ `)}}function zp(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,Xp(i.message)||"mutation failed")}return s}function vE(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 CE(e){return[...new Set(e)]}function TE(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 Uf(e){return`[${e.map(bt).join(", ")}]`}function Er(e){return zf(e)?e:{}}function zf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yf(e){return typeof e=="string"?e:""}var _E,Xf=y(()=>{_E={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 xE,spawnSync as vE}from"node:child_process";function Ya(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function em(e,t={}){let r=FE(e),n=r.repo??t.repo??process.env.GH_REPO??GE();if(!n||!n.includes("/"))return Za(e,"repository is required; pass --repo owner/repo");let s=t.exec??WE,o=Math.max(1,Math.floor(t.restConcurrency??Zf));return r.verb==="issues"||r.verb==="prs"?await PE(r,n,s,o,e):r.verb==="edit-labels"?await IE(r,n,s,o,e):await LE(r,n,s,o,e)}async function PE(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=tm(e),a=[],c=[];for(let l of Qa(e.numbers,100)){let p=Jf(o,l,i.query),d=await Xa(r,t,p.query);if(tc(d))return await OE(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:fe(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...qf(p,wt(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:NE(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return co({command:uo(s),transport:"graphql",order:e.numbers,[e.verb]:An(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
91
- `))}async function OE(e,t,r,n,s){let o=tm(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:fe(l)||"REST fallback failed"}};let p=Fe(wt(l.stdout));if(e.verb==="prs"&&o.output.some(rm)){let d=G(Fe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:fe(f)||"REST check-runs fallback failed"}};let h=await r(["api",`repos/${t}/commits/${d}/status`]);if(h.code!==0)return{number:u,value:{error:fe(h)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:ME(Fe(wt(f.stdout)),Fe(wt(h.stdout)))}}return{number:u,value:$E(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return co({command:uo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:An(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function IE(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([nm(e.numbers,t,r,n),xr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(Fe(wt(f.stdout)).node_id),error:f.code===0?"":fe(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Tr(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}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Qa(p,100)){let f=Vf(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),h=await Xa(r,t,f.query);if(tc(h))return await AE(e,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"label mutation failed"});continue}let m=Va(f.aliases,wt(h.stdout));for(let g of d){let w=f.aliases.filter(E=>E.number===g.number).map(E=>m.get(E.alias)).find(Boolean);l.set(g.number,w?{error:w}:{ok:!0})}}return Tr(s,e.numbers,sm(e.numbers,l),"graphql")}async function AE(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:fe(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:fe(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Tr(s,e.numbers,An(o),"rest-fallback",n)}async function LE(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 nm(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Tr(s,i,ec(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of Qa(p,100)){let f=Kf({number:o,nodeId:u},d),h=await Xa(r,t,f.query);if(tc(h))return await DE(o,i,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"sub-issue mutation failed"});continue}let m=Va(f.aliases,wt(h.stdout));for(let g of f.aliases){let b=m.get(g.alias);l.set(g.number,b?{error:b}:{ok:!0})}}return Tr(s,i,sm(i,l),"graphql")}async function DE(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:fe(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:fe(l)||"REST link failed"}}});return Tr(o,t,An(i),"rest-fallback",s)}function Tr(e,t,r,n,s){let o=Object.values(r).filter(i=>Cr(i)&&"error"in i).length;return co({command:uo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Zf}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function tm(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Qf(r,TE),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Qf(t,CE),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Qf(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function NE(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]=jE(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=om(t[s]));return"number"in n||(n.number=rc(t.number)),n}function $E(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Cr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(rm(s))n[s]=Fe(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]=om(t[s]);return"number"in n||(n.number=rc(t.number)),n}function ME(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Cr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Cr):[],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()||BE(s.map(o=>o.state)),contexts:s}}function BE(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 rm(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function jE(e){let t=Ka(e).at(-1),r=Fe(Fe(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]=HE(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function nm(e,t,r,n){return await xr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Fe(wt(o.stdout)),a=G(i.node_id),c=rc(i.id);return o.code!==0||!a?{number:s,error:fe(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 FE(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 co(e,t=0,r=""){return{stdout:Buffer.from(`${T(e)}
92
- `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Za(e,t){return co({command:uo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function ec(e,t){return An(e.map(r=>({number:r,value:t(r)})))}function An(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function sm(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}
93
- ${e.stdout}`)}function fe(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=Fe(e).nodes;return Array.isArray(t)?t.filter(Cr):[]}function om(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 HE(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function uo(e){return`rsp ${e.join(" ")}`}function GE(){let e=vE("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 WE(e){let t=xE("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 Fe(e){return Cr(e)?e:{}}function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Zf,TE,CE,im=y(()=>{"use strict";D();Xf();Zf=4,TE=new Set(["number","title","state","labels","body"]),CE=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var lc={};F(lc,{renderGhContract:()=>pm,runGhWrapper:()=>zE});import{spawn as UE}from"node:child_process";async function zE(e,t){if(Ya(e))return await em(e);let r=fm(e),n=await XE(r);return pm(e,n,t)}async function pm(e,t,r){if((t.status??0)!==0||t.signal){let f=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=fm(e),s=Ln(t.stdout),o=ox(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=fx(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=T(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),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Ce(p)}
95
- `;return{stdout:Buffer.from(`${T(u.payload)}
96
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function fm(e){let t=Ct(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 h=l[f]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=cm(l[++f]??""):h.startsWith("--fields=")?u=cm(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 YE(d),d}function am(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?qE[t]:JE[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function cm(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function YE(e){if(e.fields.size===0)return;if(e.action!=="list")throw new lo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=KE[t];for(let n of e.fields)if(!r.includes(n))throw new lo(e,`unknown field: ${n}`,r)}async function XE(e){if(e.action==="combined")return await QE(e);let t=ZE(e);if(!t)return await sx(am(e));let r=await oe({...t,command:["gh",...am(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await ex(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function QE(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=gm(Ln(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Ln(s.stdout)).map(rx)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function ZE(e){let t=hm(e.passthrough),r=nx(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 ex(e,t){let r=Ln(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(mm);case"pr:view":return gm(r);case"issue:list":return ce(r).filter(n=>!Ht(n.pull_request)).map(um);case"issue:view":return um(r);case"run:list":return{items:ce(M(r).workflow_runs).map(lm),total:ie(M(r),"total_count")};case"run:view":{let n=lm(r),s=hm(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(tx):[]}}default:return r}}function mm(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 gm(e){return mm(e)}function um(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 lm(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 tx(e){let t=M(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function rx(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 hm(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 nx(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 sx(e){let t=UE("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 ox(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=>ym(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>"]):Pr({...n,prs:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${dm(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Pr({...n,pr:bm(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return ix(e,t,M(r));case"issue:list":{let s=nc(r,"issues"),o=s.rows.map(c=>wm(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>"]):Pr({...n,issues:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${dm(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Pr({...n,issue:dx(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=>_m(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>"]):Pr({...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 Pr({...n,run:px(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 ix(e,t,r){let n=bm(M(r.view),{...e,action:"view",wide:!0}),s=X(ce(r.checks).map(ax),e.query),o=M(r.comments).comments,i=X(ce(o).map(cx).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 ax(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 cx(e){return{author:Rm(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:ux(t),[r]:[],aggregate:n,summary:`0 ${lx(t)}`},s)}function ux(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 lx(e){let t=He(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function ym(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 bm(e,t){let r=ym(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 wm(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),labels:km(e.labels)};return uc(r,e,t,["author","url","updated"]),r}function dx(e,t){let r=wm(e,t);return r.body=po(e,"body",ac,t.full),r}function _m(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 px(e,t){let r=_m(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Dn(s),conclusion:S(s,"conclusion"),log:po(s,"log",VE,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 fx(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 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 dm(e,t){return e.every(r=>r.state===t)?t:"returned"}function ic(e,t,r){return r?`${e}/${t}`:String(e)}function Pr(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=Rm(t.author):s==="labels"?e.labels=km(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 km(e){return Array.isArray(e)?e.map(t=>Ht(t)?S(t,"name"):String(t)).filter(Boolean):[]}function Rm(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 JE,qE,ac,VE,KE,lo,dc=y(()=>{"use strict";D();Cs();im();Mt();jr();De();JE={"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"]},qE={"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,VE=160,KE={"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"]};lo=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var mc={};F(mc,{renderTestContract:()=>Sm,runTestWrapper:()=>wx});import{spawn as gx}from"node:child_process";async function wx(e,t){let r=Ct(e),n=await Ex(r.argv);return await Sm(e,n,t)}async function Sm(e,t,r){let n=Ct(e),o=Em(n.argv)==="vitest"?xx(t.stdout):vx(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 ${Px(o.durationSeconds)}`,c=X(o.failures,n.query);if(r.level==="terse")return await _x(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let h of c){let m=await Tx(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,p+=m.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?Ve(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(T(f)),stderr:Buffer.from(t.stderr),status:fc(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function _x(e,t,r,n,s,o,i){let a=kx(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=T(u),p=Math.max(0,r.failures.length-a.length),d=a.some((E,v)=>E.excerpt!==r.failures[v].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:fc(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 h=T(f),m=Buffer.byteLength(h),g=await o.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${m}) \u2014 ${Ce(g)}`;return{stdout:Buffer.from(`${l}
97
- ${w}`),stderr:Buffer.from(t.stderr),status:fc(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:p,rawOutput:Buffer.from(h)}}function fc(e){return e===0||e===null?0:1}function kx(e){let t=[],r=yx;for(let n of e.slice(0,bx)){let s=Rx(n.excerpt,Math.min(hx,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Rx(e,t){if(t<=0)return"";let r=e.split(`
89
+ `)}function bt(e){return JSON.stringify(e)}function Jp(e){return`[${e.map(bt).join(", ")}]`}function Er(e){return Yp(e)?e:{}}function Yp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xp(e){return typeof e=="string"?e:""}var xE,Qp=y(()=>{xE={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 PE,spawnSync as AE}from"node:child_process";function Ya(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function tf(e,t={}){let r=JE(e),n=r.repo??t.repo??process.env.GH_REPO??VE();if(!n||!n.includes("/"))return Za(e,"repository is required; pass --repo owner/repo");let s=t.exec??KE,o=Math.max(1,Math.floor(t.restConcurrency??ef));return r.verb==="issues"||r.verb==="prs"?await DE(r,n,s,o,e):r.verb==="edit-labels"?await $E(r,n,s,o,e):await BE(r,n,s,o,e)}async function DE(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=rf(e),a=[],c=[];for(let l of Qa(e.numbers,100)){let m=qp(o,l,i.query),d=await Xa(r,t,m.query);if(tc(d))return await NE(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(...Vp(m,wt(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:jE(e.verb,p.value??{},i.output),failed:!!p.error})))}let u=a.filter(l=>l.failed).length;return co({command:uo(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 NE(e,t,r,n,s){let o=rf(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(nf)){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:GE(je(wt(p.stdout)),je(wt(h.stdout)))}}return{number:u,value:HE(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return co({command:uo(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 $E(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([sf(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=Kp(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 ME(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,of(e.numbers,l),"graphql")}async function ME(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 BE(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 sf(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=zp({number:o,nodeId:u},d),h=await Xa(r,t,p.query);if(tc(h))return await FE(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,of(i,l),"graphql")}async function FE(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 co({command:uo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??ef}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function rf(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Zp(r,IE),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Zp(t,LE),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Zp(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function jE(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]=UE(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=af(t[s]));return"number"in n||(n.number=rc(t.number)),n}function HE(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(nf(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]=af(t[s]);return"number"in n||(n.number=rc(t.number)),n}function GE(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()||WE(s.map(o=>o.state)),contexts:s}}function WE(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 nf(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function UE(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]=qE(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function sf(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 JE(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 co(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 co({command:uo(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 of(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}
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 af(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 qE(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function uo(e){return`rsp ${e.join(" ")}`}function VE(){let e=AE("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 KE(e){let t=PE("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 ef,IE,LE,cf=y(()=>{"use strict";D();Qp();ef=4,IE=new Set(["number","title","state","labels","body"]),LE=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var lc={};j(lc,{renderGhContract:()=>ff,runGhWrapper:()=>ex});import{spawn as zE}from"node:child_process";async function ex(e,t){if(Ya(e))return await tf(e);let r=gf(e),n=await rx(r);return ff(e,n,t)}async function ff(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=gf(e),s=Ln(t.stdout),o=lx(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=bx(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=wx(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)}
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 gf(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=lf(l[++p]??""):h.startsWith("--fields=")?u=lf(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 tx(d),d}function uf(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?XE[t]:YE[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function lf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function tx(e){if(e.fields.size===0)return;if(e.action!=="list")throw new lo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=ZE[t];for(let n of e.fields)if(!r.includes(n))throw new lo(e,`unknown field: ${n}`,r)}async function rx(e){if(e.action==="combined")return await nx(e);let t=sx(e);if(!t)return await ux(uf(e));let r=await oe({...t,command:["gh",...uf(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await ox(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function nx(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=yf(Ln(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Ln(s.stdout)).map(ax)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function sx(e){let t=bf(e.passthrough),r=cx(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 ox(e,t){let r=Ln(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(hf);case"pr:view":return yf(r);case"issue:list":return ce(r).filter(n=>!Ht(n.pull_request)).map(df);case"issue:view":return df(r);case"run:list":return{items:ce(M(r).workflow_runs).map(mf),total:ie(M(r),"total_count")};case"run:view":{let n=mf(r),s=bf(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(ix):[]}}default:return r}}function hf(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 yf(e){return hf(e)}function df(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 mf(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 ix(e){let t=M(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function ax(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 bf(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 cx(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 ux(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 lx(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=>wf(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)} ${pf(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Or({...n,pr:_f(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return dx(e,t,M(r));case"issue:list":{let s=nc(r,"issues"),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,"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)} ${pf(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Or({...n,issue:hx(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=>kf(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:yx(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 dx(e,t,r){let n=_f(M(r.view),{...e,action:"view",wide:!0}),s=X(ce(r.checks).map(mx),e.query),o=M(r.comments).comments,i=X(ce(o).map(px).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 mx(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 px(e){return{author:Ef(e.author),body:mo(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:fx(t),[r]:[],aggregate:n,summary:`0 ${gx(t)}`},s)}function fx(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 gx(e){let t=He(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function wf(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 _f(e,t){let r=wf(e,t);return r.body=mo(e,"body",ac,t.full),t.wide&&(r.base=S(e,"baseRefName"),r.head=S(e,"headRefName")),r}function Rf(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),labels:Sf(e.labels)};return uc(r,e,t,["author","url","updated"]),r}function hx(e,t){let r=Rf(e,t);return r.body=mo(e,"body",ac,t.full),r}function kf(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 yx(e,t){let r=kf(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Dn(s),conclusion:S(s,"conclusion"),log:mo(s,"log",QE,t.full)}));return r.jobs=n,r}function mo(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 bx(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 wx(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 pf(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=Ef(t.author):s==="labels"?e.labels=Sf(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 Sf(e){return Array.isArray(e)?e.map(t=>Ht(t)?S(t,"name"):String(t)).filter(Boolean):[]}function Ef(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 YE,XE,ac,QE,ZE,lo,dc=y(()=>{"use strict";D();Ts();cf();Mt();Fr();De();YE={"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"]},XE={"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,QE=160,ZE={"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"]};lo=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:()=>xf,runTestWrapper:()=>Ex});import{spawn as _x}from"node:child_process";async function Ex(e,t){let r=Tt(e),n=await Ox(r.argv);return await xf(e,n,t)}async function xf(e,t,r){let n=Tt(e),o=vf(n.argv)==="vitest"?Px(t.stdout):Ax(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 ${Dx(o.durationSeconds)}`,c=X(o.failures,n.query);if(r.level==="terse")return await xx(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let h of c){let f=await Ix(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 xx(e,t,r,n,s,o,i){let a=vx(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 vx(e){let t=[],r=kx;for(let n of e.slice(0,Sx)){let s=Cx(n.excerpt,Math.min(Rx,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Cx(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 Em(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 Sx(e){if(Em(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 Ex(e){let t=Sx(e),r=gx(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 xx(e){let t=xm(e);if(!_t(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=kt(t.numTotalTests),o=kt(t.numFailedTests),i=Ox(kt(t.startTime),kt(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:Cx(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+kt(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 vx(e){let t=e.split(`
101
- `).filter(Boolean).map(c=>xm(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+=kt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=kt(c.failed),i+=kt(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 Tx(e,t,r){let n=Buffer.from(e);if(n.length<=pc)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,pc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
103
- \u2026 elided ${i} bytes (+${n.length}) \u2014 ${Ce(s)}`,handle:s,bytesElided:n.length}}function xm(e){try{return JSON.parse(e)}catch{return null}}function Cx(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
104
- `):""}function Px(e){return`${Number(e.toFixed(1))}s`}function Ox(e,t){return e>0&&t>e?(t-e)/1e3:0}function kt(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 pc,hx,yx,bx,gc=y(()=>{"use strict";D();Mt();jr();De();pc=320,hx=160,yx=pc,bx=3});var bc={};F(bc,{parseCatCommand:()=>yc,renderCatContract:()=>Bx,runCatWrapper:()=>Mx});import{isUtf8 as Ix}from"node:buffer";import{readFile as Ax}from"node:fs/promises";import{extname as Lx}from"node:path";async function Mx(e,t){let r=yc(e),n;try{n=await Ax(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 Im(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Om(e,r,n,t)}async function Bx(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 Im(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Om(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=Pm(t[++i],hc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Pm(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 Om(e,t,r,n){let s=r.toString("utf8"),o=Hx(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>Cm(n.heavyByteThreshold,vm)||o.truncated;if(!Tm(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Tm(t.file)?jx(e,t.file,r,s,n.level,o):Fx(e,t.file,r,s,o),c=`${T(a)}
106
- `;if(!i&&Buffer.byteLength(c)<=Cm(n.heavyByteThreshold,vm))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 ${Ce(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 jx(e,t,r,n,s,o){let i=fo(n),a=s==="terse"?Nx:Dx,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:Gx(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function Fx(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 Hx(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
100
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function vf(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 Tx(e){if(vf(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 Ox(e){let t=Tx(e),r=_x(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 Px(e){let t=Cf(e);if(!_t(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=Rt(t.numTotalTests),o=Rt(t.numFailedTests),i=Nx(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:Lx(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 Ax(e){let t=e.split(`
101
+ `).filter(Boolean).map(c=>Cf(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 Ix(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 Cf(e){try{return JSON.parse(e)}catch{return null}}function Lx(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
104
+ `):""}function Dx(e){return`${Number(e.toFixed(1))}s`}function Nx(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,Rx,kx,Sx,gc=y(()=>{"use strict";D();Mt();Fr();De();mc=320,Rx=160,kx=mc,Sx=3});var bc={};j(bc,{parseCatCommand:()=>yc,renderCatContract:()=>Wx,runCatWrapper:()=>Gx});import{isUtf8 as $x}from"node:buffer";import{readFile as Mx}from"node:fs/promises";import{extname as Bx}from"node:path";async function Gx(e,t){let r=yc(e),n;try{n=await Mx(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 Lf(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await If(e,r,n,t)}async function Wx(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 Lf(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await If(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=Af(t[++i],hc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Af(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 If(e,t,r,n){let s=r.toString("utf8"),o=qx(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>Pf(n.heavyByteThreshold,Tf)||o.truncated;if(!Of(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Of(t.file)?Ux(e,t.file,r,s,n.level,o):Jx(e,t.file,r,s,o),c=`${C(a)}
106
+ `;if(!i&&Buffer.byteLength(c)<=Pf(n.heavyByteThreshold,Tf))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 Ux(e,t,r,n,s,o){let i=po(n),a=s==="terse"?jx:Fx,c=po(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:Vx(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function Jx(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:po(n).length,content:po(s.text),truncated:s.truncated}}function qx(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
108
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(`
109
109
  `)}${n&&i.length>0?`
110
- `:""}`,truncated:i.length<s.length}}function Gx(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&&!Wx(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 Im(e){return e.includes(0)||!Ix(e)}function Tm(e){return $x.has(Lx(e).toLowerCase())}function Wx(e){return["for","if","switch","while"].includes(e)}function Cm(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Pm(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var vm,hc,Dx,Nx,$x,wc=y(()=>{"use strict";D();Mt();De();vm=8*1024,hc=10,Dx=8,Nx=2,$x=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var jm={};F(jm,{REPO_STORE_PATH:()=>Rc,mergeRspBlock:()=>$m,provisionRspRepoStore:()=>Zx});import{constants as Ux}from"node:fs";import{access as Jx,copyFile as qx,mkdir as Lm,readFile as Vx,rename as Kx,writeFile as Dm}from"node:fs/promises";import{dirname as zx,join as Nn,resolve as Yx}from"node:path";async function Zx(e,t={}){let r=Yx(e),n=Nn(r,".red"),s=Nn(n,"config.yaml"),o=Nn(r,Rc);await Lm(n,{recursive:!0}),await Lm(zx(o),{recursive:!0});let i="";try{i=await Vx(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=$m(i,{enabled:!0,ttlDays:t.ttlDays??Re,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,heavyGitByteThreshold:t.heavyGitByteThreshold??Ye}),c=a!==i;c&&await Dm(s,a,"utf8");let u=!await kc(o),l=!1,p=!1;if(u){let f=Nn(r,Xx),h=Nn(r,Qx);if(await kc(f))await Kx(f,o),p=!0;else if(await kc(h))await qx(h,o),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Qe(),or)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${o}`,ttlDays:t.ttlDays??Re,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=ev(a,Rc);return d!==a&&await Dm(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function $m(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${mo(t.ttlDays,Re)}`,` ephemeralTtlHours: ${mo(t.ephemeralTtlHours,Se)}`,` byteBudget: ${mo(t.byteBudget,Ee)}`,` heavyGitByteThreshold: ${mo(t.heavyGitByteThreshold,Ye)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
112
- `),s=Mm(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 Vx(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&&!Kx(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function po(e){let t=e.split(`
111
+ `);return t.at(-1)===""?t.slice(0,-1):t}function Lf(e){return e.includes(0)||!$x(e)}function Of(e){return Hx.has(Bx(e).toLowerCase())}function Kx(e){return["for","if","switch","while"].includes(e)}function Pf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Af(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Tf,hc,Fx,jx,Hx,wc=y(()=>{"use strict";D();Mt();De();Tf=8*1024,hc=10,Fx=8,jx=2,Hx=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Hf={};j(Hf,{REPO_STORE_PATH:()=>kc,mergeRspBlock:()=>Bf,provisionRspRepoStore:()=>sv});import{constants as zx}from"node:fs";import{access as Yx,copyFile as Xx,mkdir as Nf,readFile as Qx,rename as Zx,writeFile as $f}from"node:fs/promises";import{dirname as ev,join as Nn,resolve as tv}from"node:path";async function sv(e,t={}){let r=tv(e),n=Nn(r,".red"),s=Nn(n,"config.yaml"),o=Nn(r,kc);await Nf(n,{recursive:!0}),await Nf(ev(o),{recursive:!0});let i="";try{i=await Qx(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Bf(i,{enabled:!0,ttlDays:t.ttlDays??ke,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,heavyGitByteThreshold:t.heavyGitByteThreshold??Ye}),c=a!==i;c&&await $f(s,a,"utf8");let u=!await Rc(o),l=!1,m=!1;if(u){let p=Nn(r,rv),h=Nn(r,nv);if(await Rc(p))await Zx(p,o),m=!0;else if(await Rc(h))await Xx(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=ov(a,kc);return d!==a&&await $f(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function Bf(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${fo(t.ttlDays,ke)}`,` ephemeralTtlHours: ${fo(t.ephemeralTtlHours,Se)}`,` byteBudget: ${fo(t.byteBudget,Ee)}`,` heavyGitByteThreshold: ${fo(t.heavyGitByteThreshold,Ye)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
112
+ `),s=Ff(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
114
  `}let o=Sc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
115
115
  `)}
116
- `}function Mm(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(xc(n)&&Ec(n)===0&&Bm(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 Bm(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function mo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ev(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
117
- `),n=Mm(r,"plugins");if(n===-1)return e;let s=Sc(r,n,0),o=Nm(r,"memory",n+1,s,2);if(o===-1)return e;let i=Sc(r,o,2),a=[...r],c=Nm(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
116
+ `}function Ff(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(xc(n)&&Ec(n)===0&&jf(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 jf(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function fo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ov(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
117
+ `),n=Ff(r,"plugins");if(n===-1)return e;let s=Sc(r,n,0),o=Mf(r,"memory",n+1,s,2);if(o===-1)return e;let i=Sc(r,o,2),a=[...r],c=Mf(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 Nm(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(xc(i)&&Ec(i)===s&&Bm(i)===t)return o}return-1}async function kc(e){try{return await Jx(e,Ux.F_OK),!0}catch{return!1}}var Rc,Xx,Qx,Fm=y(()=>{"use strict";_e();ve();Rc=gi,Xx=fu,Qx=".red/memory/graph.rdb"});var Jm={};F(Jm,{runRspMcpServer:()=>rv});import{createInterface as tv}from"node:readline";async function rv(){let e=xe(process.cwd(),process.env),t=tv({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 nv(n,e);Wm({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Wm({jsonrpc:"2.0",id:typeof Um(r)?.id>"u"?null:Um(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function nv(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:Gm(t)}]};if(!t.enabled)return{content:[{type:"text",text:Gm(t)}],isError:!0};let n=dv(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(sv(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await ov(r.arguments,n)}]}}return{}}function Gt(e){return`${H(e)}
120
- `}function sv(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function ov(e,t){let r=iv(e?.payload),n=av(e?.level),s=await Da(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return uv(s.output);let o=Ks(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 cv(o,i.length,a,n)}function iv(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function av(e){return e==="terse"?"terse":"brief"}function cv(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Hm(o.subarray(0,i)),c=Hm(o.subarray(Math.max(0,o.length-i)));return Gt({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 uv(e){return e.endsWith(`
119
+ `}function Mf(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(xc(i)&&Ec(i)===s&&jf(i)===t)return o}return-1}async function Rc(e){try{return await Yx(e,zx.F_OK),!0}catch{return!1}}var kc,rv,nv,Gf=y(()=>{"use strict";_e();ve();kc=gi,rv=pu,nv=".red/memory/graph.rdb"});var Vf={};j(Vf,{runRspMcpServer:()=>av});import{createInterface as iv}from"node:readline";async function av(){let e=xe(process.cwd(),process.env),t=iv({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 cv(n,e);Jf({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Jf({jsonrpc:"2.0",id:typeof qf(r)?.id>"u"?null:qf(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function cv(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:Uf(t)}]};if(!t.enabled)return{content:[{type:"text",text:Uf(t)}],isError:!0};let n=hv(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(uv(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await lv(r.arguments,n)}]}}return{}}function Gt(e){return`${H(e)}
120
+ `}function uv(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function lv(e,t){let r=dv(e?.payload),n=mv(e?.level),s=await Da(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return fv(s.output);let o=Ks(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 pv(o,i.length,a,n)}function dv(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function mv(e){return e==="terse"?"terse":"brief"}function pv(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Wf(o.subarray(0,i)),c=Wf(o.subarray(Math.max(0,o.length-i)));return Gt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:gv(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function fv(e){return e.endsWith(`
121
121
  `)?e:`${e}
122
- `}function Hm(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 Tn(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 Gm(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 Wm(e){process.stdout.write(`${JSON.stringify(e)}
123
- `)}function Um(e){try{return JSON.parse(e)}catch{return null}}var qm=y(()=>{"use strict";Ne();ve();_n();nt()});var Km={};F(Km,{renderShellInit:()=>pv});function pv(e,t=On){if(e==="fish")return fv(t);if(e==="bash"||e==="zsh")return mv(e,t);throw new Error(`unsupported shell: ${e}`)}function fv(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(ho))].map(r=>` abbr --add --position command -- ${r} '${bv(`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=hv(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...go("git",r.get("git")??[]),...go("gh",r.get("gh")??[]),...go("vitest",r.get("vitest")??[]),...go("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 go(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(ho),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ho)),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=>Vm(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of gv(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${yv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Vm(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function gv(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 hv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ho(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ho(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Vm(e){return e.replace(/[\\|)&;]/g,"\\$&")}function yv(e){return e.replace(/'/g,"'\\''")}function bv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var zm=y(()=>{"use strict";In()});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"&&wv(t.chosenOption)&&_v(t.outcome)&&kv(t.cost)}function wv(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function _v(e){return e==="success"||e==="failure"||e==="escalated"}function kv(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 Ym=y(()=>{});import{createHash as Rv}from"node:crypto";function cg(e,t){return new Cc(e,t)}function Xm(e){let t=Number(e.red_entity_id??e.rid),r=Pc(e.properties??e.PROPERTIES),n=ug(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 Qm(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=lg(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:Pc(e.properties??e.PROPERTIES)}}function xv(e){let t=Number(e.red_entity_id??e.rid),r=Pc(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!vc(r)?null:{rid:t,event:r}}function Pc(e){return e==null?{}:typeof e=="string"?JSON.parse(e):yo(e)?e:{}}function ug(e){let t=e==="contact"?"person":e;if(Sv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function lg(e){if(Ev.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function vv(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Zm(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ut(e){return yo(e)?e:{}}function eg(e,t){return Ut(e)[t]}function tg(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function rg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function ng(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 yo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Tc(e){return e!=null}function Tv(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Cv(e){return Rv("sha256").update(JSON.stringify(e)).digest("hex")}function Pv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function sg(e){return`artifact-hash:${e}`}function og(e,t,r){return`connection:${e}:${t}:${r}`}function ig(){return"model-tier-bandit:v1"}function Ov(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ag(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function dg(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+ag(r,a)*3+ag(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 Iv(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=pg({...dg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Wt(s)}function pg(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 Av(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 Lv(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 Dv(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var We,Sv,Ev,Cc,fg=y(()=>{"use strict";Ym();We={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Sv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ev=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Cc=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(eg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ut(r);return await this.search(tg(n,"query"),rg(n,"limit")??10,ng(n.options))}if(t==="think"){let n=Ut(r);return await this.think(tg(n,"query"),rg(n,"limit")??8,ng(n.options))}if(t==="link")return await this.link(Ut(r));if(t==="backlinks")return await this.backlinks(eg(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:Dv(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=ug(ae(t.kind)||"note"),o=Tv(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Cv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(sg(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Pv(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:yo(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 f=Xm(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(sg(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 ${We.artifacts}`)).rows.map(Xm).filter(Tc)}async search(t,r,n={}){let s=Ov(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=dg(u,s),p=pg({...l,connections:Iv(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:Av(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 Lv(t,s)}async link(t){let r=await this.getArtifact(Zm(t.from)),n=await this.getArtifact(Zm(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=lg(ae(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:yo(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=Qm(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(og(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(Qm).filter(Tc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=vv(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(xv).filter(Tc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(ig());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ig(),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(og(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(We.kv)}}});var vg={};F(vg,{runResidentServer:()=>Gv});import{randomUUID as Or}from"node:crypto";import{execFileSync as Nv,spawn as $v}from"node:child_process";import{existsSync as Mv}from"node:fs";import{mkdir as _g,rename as Bv,rm as mg,writeFile as kg}from"node:fs/promises";import{createServer as jv}from"node:net";import{dirname as Lc,join as bo}from"node:path";import{fileURLToPath as Fv,pathToFileURL as Hv}from"node:url";async function Gv(e){await _g(Lc(e.socketPath),{recursive:!0});let t=t0();e0();let r=e.telemetryDrainTimeoutMs??Rg,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??es,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=jv(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),c0(v,async P=>{h();let j=await u0(n,P,e.storeUri,e.residentVersion??"0.0.0-dev"),me={id:P.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};xg(v,me),P.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=Zv(c),d.close();for(let v of l)v.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(v=>{let P=()=>{wo(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,P),{signal:v,handler:P}});await new Promise((v,P)=>{d.once("error",P),d.listen(e.socketPath,()=>{d.off("error",P),v()})}),(async()=>{let v=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let P=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(P)&&P>0&&await new Promise(te=>setTimeout(te,P));let j=await pt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),me=Number(process.hrtime.bigint()-v)/1e6,Oe=new Ac(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Qn,byteBudget:e.telemetryByteBudget??e.byteBudget??Zn});if(o){await j.close();return}if(await Oc(Oe,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:Oe,storeOpenCount:1,storeElapsedMs:me},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Oc(te.telemetry,r)},p),s.unref(),h()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},h()}),e.pidPath&&await kg(e.pidPath,`${process.pid}
126
- `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??bo(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 mg(e.socketPath,{force:!0});let E=n;E.kind==="ready"&&(await Oc(E.telemetry,r,u),await E.store.close()),c&&clearTimeout(c);for(let{signal:v,handler:P}of g)process.off(v,P);t?.kill("SIGTERM"),wo(),e.pidPath&&await mg(e.pidPath,{force:!0}),await Yn(w)}async function Kv(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=bo(Y(t),qv),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 _g(Lc(a),{recursive:!0}),await kg(c,`${H(u)}
127
- `,{encoding:"utf8",mode:384}),await Bv(c,a)}async function Oc(e,t=Rg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Eg(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 zv(e){let t=[];for(let r of Vv){let n=await Yv(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await Xv(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Sg(r)}`))}return t}async function Yv(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 Xv(e,t,r){let n=Qv(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Sg(t)}`)}function Qv(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 Sg(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Zv(e){return e&&clearTimeout(e),setTimeout(()=>{wo(),process.exit(0)},Jv)}function e0(){gg||(gg=!0,process.on("exit",()=>wo()))}function t0(){if(process.platform==="win32")return;let t=$v(process.execPath,["-e",`
122
+ `}function Wf(e){return e.toString("utf8").replace(/�$/g,"")}function gv(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 hv(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 Uf(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 Jf(e){process.stdout.write(`${JSON.stringify(e)}
123
+ `)}function qf(e){try{return JSON.parse(e)}catch{return null}}var Kf=y(()=>{"use strict";Ne();ve();_n();nt()});var Yf={};j(Yf,{renderShellInit:()=>yv});function yv(e,t=Pn){if(e==="fish")return bv(t);if(e==="bash"||e==="zsh")return wv(e,t);throw new Error(`unsupported shell: ${e}`)}function bv(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(ho))].map(r=>` abbr --add --position command -- ${r} '${Sv(`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 wv(e,t){let r=Rv(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...go("git",r.get("git")??[]),...go("gh",r.get("gh")??[]),...go("vitest",r.get("vitest")??[]),...go("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 go(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(ho),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ho)),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=>zf(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of _v(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${kv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${zf(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function _v(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 Rv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ho(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ho(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function zf(e){return e.replace(/[\\|)&;]/g,"\\$&")}function kv(e){return e.replace(/'/g,"'\\''")}function Sv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Xf=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"&&Ev(t.chosenOption)&&xv(t.outcome)&&vv(t.cost)}function Ev(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function xv(e){return e==="success"||e==="failure"||e==="escalated"}function vv(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 Qf=y(()=>{});import{createHash as Cv}from"node:crypto";function lg(e,t){return new Tc(e,t)}function Zf(e){let t=Number(e.red_entity_id??e.rid),r=Oc(e.properties??e.PROPERTIES),n=dg(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 eg(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=mg(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 Pv(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):yo(e)?e:{}}function dg(e){let t=e==="contact"?"person":e;if(Tv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function mg(e){if(Ov.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Av(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function tg(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ut(e){return yo(e)?e:{}}function rg(e,t){return Ut(e)[t]}function ng(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function sg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function og(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 yo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cc(e){return e!=null}function Iv(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Lv(e){return Cv("sha256").update(JSON.stringify(e)).digest("hex")}function Dv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ig(e){return`artifact-hash:${e}`}function ag(e,t,r){return`connection:${e}:${t}:${r}`}function cg(){return"model-tier-bandit:v1"}function Nv(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ug(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function pg(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+ug(r,a)*3+ug(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 $v(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=fg({...pg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Wt(s)}function fg(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 Mv(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 Bv(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 Fv(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var We,Tv,Ov,Tc,gg=y(()=>{"use strict";Qf();We={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Tv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ov=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(rg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ut(r);return await this.search(ng(n,"query"),sg(n,"limit")??10,og(n.options))}if(t==="think"){let n=Ut(r);return await this.think(ng(n,"query"),sg(n,"limit")??8,og(n.options))}if(t==="link")return await this.link(Ut(r));if(t==="backlinks")return await this.backlinks(rg(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:Fv(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=dg(ae(t.kind)||"note"),o=Iv(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Lv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(ig(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Dv(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:yo(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=Zf(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ig(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(Zf).filter(Cc)}async search(t,r,n={}){let s=Nv(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=pg(u,s),m=fg({...l,connections:$v(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:Mv(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 Bv(t,s)}async link(t){let r=await this.getArtifact(tg(t.from)),n=await this.getArtifact(tg(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=mg(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:yo(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=eg(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ag(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(eg).filter(Cc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=Av(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(Pv).filter(Cc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(cg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(cg(),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(ag(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(We.kv)}}});var Tg={};j(Tg,{runResidentServer:()=>Vv});import{randomUUID as Pr}from"node:crypto";import{execFileSync as jv,spawn as Hv}from"node:child_process";import{existsSync as Gv}from"node:fs";import{mkdir as kg,rename as Wv,rm as hg,writeFile as Sg}from"node:fs/promises";import{createServer as Uv}from"node:net";import{dirname as Lc,join as bo}from"node:path";import{fileURLToPath as Jv,pathToFileURL as qv}from"node:url";async function Vv(e){await kg(Lc(e.socketPath),{recursive:!0});let t=i0();o0();let r=e.telemetryDrainTimeoutMs??Eg,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=Uv(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),p0(v,async O=>{h();let F=await f0(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};Cg(v,fe),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=s0(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=()=>{wo(),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 Sg(e.pidPath,`${process.pid}
126
+ `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??bo(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 hg(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"),wo(),e.pidPath&&await hg(e.pidPath,{force:!0}),await Yn(w)}async function Zv(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=bo(Y(t),Xv),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 kg(Lc(a),{recursive:!0}),await Sg(c,`${H(u)}
127
+ `,{encoding:"utf8",mode:384}),await Wv(c,a)}async function Pc(e,t=Eg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await vg(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 e0(e){let t=[];for(let r of Qv){let n=await t0(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await r0(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${xg(r)}`))}return t}async function t0(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 r0(e,t,r){let n=n0(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${xg(t)}`)}function n0(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 xg(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function s0(e){return e&&clearTimeout(e),setTimeout(()=>{wo(),process.exit(0)},Yv)}function o0(){yg||(yg=!0,process.on("exit",()=>wo()))}function i0(){if(process.platform==="win32")return;let t=Hv(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 wo(){for(let e of r0())try{process.kill(e,"SIGTERM")}catch{}}function r0(){if(process.platform==="win32")return[];let e="";try{e=Nv("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 n0(e){if(e.collection!==de)return e;let t=await hg(e.raw_text,bg(e.raw_bytes)),r=await hg(e.emitted_text,bg(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 hg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=Wv)try{return await Eg((async()=>({tokens:(await s0())("cl100k_base").encode(e).length,estimated:!1}))(),Uv,"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 s0(){return yg??=import(Hv(o0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await yg}function o0(){let e=Lc(Fv(import.meta.url)),r=[bo(e,"..","node_modules","js-tiktoken","dist","index.js"),bo(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Mv(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function bg(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 Ic(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Eg(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 i0(e){try{return JSON.parse(e)}catch{return e}}function a0(e){return wg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>wg(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 wg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function c0(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??Or(),ok:!1,error:a instanceof Error?a.message:String(a)};xg(e,u)}finally{e.end()}})()})}function xg(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
171
- `)}catch{}}async function u0(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 Wi(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 Ui(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 cg(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 Wv,Uv,Rg,Jv,qv,Vv,Ac,gg,yg,Tg=y(()=>{"use strict";_e();Xn();Ne();Qe();fg();Te();ve();Wv=256*1024,Uv=500,Rg=2e3,Jv=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),qv="rsp-status-summary.json",Vv=[se,q,de,Me,rn],Ac=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 zv(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 Gi(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 Kv(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:Or(),a={...await n0(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)||Or()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ic(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)||Or()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ic(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:Or(),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:${Or()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Ic(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"?i0(r):r;return a0(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})}};gg=!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 Bo(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 Bo=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 jn(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 p0}from"node:fs";import{fileURLToPath as f0}from"node:url";function yu(e){let t={app:e,version:wh(Xt("__RED_BUILD_VERSION__",()=>"2.85.1")??"0.0.0-dev"),gitSha:Xt("__RED_BUILD_GIT_SHA__",()=>"c1c2a48edef4f2e68d804300c334e25252dac70a")??"unknown",buildTime:Xt("__RED_BUILD_TIME__",()=>"2026-07-23T09:37:25-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 wh(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();jr();import{existsSync as Lk}from"node:fs";import{fileURLToPath as Dk}from"node:url";ai();Ne();li();import{existsSync as uw}from"node:fs";import{fileURLToPath as lw}from"node:url";async function pr(e,t){let r={stats:dw(e.telemetryByteBudget),telemetry:Vi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=lw(e.storeUri);if(!uw(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:Vi(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(()=>(Te(),on)),a=await er(e.storeUri);try{return{stats:await o(a,e.telemetryByteBudget),telemetry:await i(a,t)}}finally{await a.close()}}function Ki(e,t=Vi(30),r=!1){return`${H(zi(e,t,r))}
172
- `}function zi(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:pw(t.savings),dollars_saved_estimate_usd_display:fw(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:qi(t.health.degradation_rate),show_hit_rate_display:qi(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:qi(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:Ji(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Ji(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Ji(t.latency.store_elapsed_ms_avg)}}}function Kl(e){return`${H(e)}
173
- `}function Vi(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 dw(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 Yi(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
174
- `)}function pw(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 fw(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 Ji(e){return e==null?"none":String(e)}function qi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function wp(e){let{stats:t,telemetry:r}=await pr(e,30),[n,s]=await Promise.all([Nk(e),Promise.resolve().then(()=>(Ta(),va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function _p(e){let t=zi(e.stats,e.telemetry,!1),r=Go({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},$k(e));return`${H(r)}
175
- `}async function Nk(e){if(!e.storeUri.startsWith("file://"))return[];let t=Dk(e.storeUri);if(!Lk(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 $k(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 XS}from"node:fs";import{fileURLToPath as QS}from"node:url";Te();import{spawn as zs}from"node:child_process";async function df(e,t,r){let n=process.hrtime.bigint(),s=await yS(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return bS(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function yS(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(()=>(Fs(),js)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(En(),Sn)).then(i=>i.parseExecCommandLine(e));r=zs(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=zs(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 pf(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 gf(t);if(n){let o=wS(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Te(),on));lf(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:ja(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})),lf(i(n,{collection:c,ts:new Date().toISOString(),command:ja(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function ff(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ys()}, passing through
178
- `),await gf(e)}function Ys(){return"rsp is not enabled in this directory; run /red-setup"}function mf(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function je(e){return ja(e.positional)}function ja(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 bS(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};mt(e,{collection:"rsp_accounting_events_v1",...i}),mt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function wS(e,t,r){let n=t[0]??"unknown",s=_S(r)||e;return{reason:uf(r)==="ENOENT"||uf(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:RS(r)??1,stderrHead:kS(s,240)}}function _S(e){return e instanceof Error?xn(e.message):xn(String(e??""))}function kS(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 uf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function RS(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 lf(e){e.catch(()=>{})}async function gf(e){if(e[0]==="exec"||e[0]==="proxy")return await SS(e);let t=e[0];if(!t)return 2;let r=zs(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 SS(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Fs(),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)}
169
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function wo(){for(let e of a0())try{process.kill(e,"SIGTERM")}catch{}}function a0(){if(process.platform==="win32")return[];let e="";try{e=jv("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 c0(e){if(e.collection!==de)return e;let t=await bg(e.raw_text,_g(e.raw_bytes)),r=await bg(e.emitted_text,_g(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 bg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=Kv)try{return await vg((async()=>({tokens:(await u0())("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 u0(){return wg??=import(qv(l0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await wg}function l0(){let e=Lc(Jv(import.meta.url)),r=[bo(e,"..","node_modules","js-tiktoken","dist","index.js"),bo(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Gv(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function _g(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 vg(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 d0(e){try{return JSON.parse(e)}catch{return e}}function m0(e){return Rg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Rg(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 Rg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p0(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)};Cg(e,u)}finally{e.end()}})()})}function Cg(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
171
+ `)}catch{}}async function f0(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 Wi(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 Ui(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return h0(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await g0(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function g0(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await lg(s,t).request(r,n)}function h0(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Kv,zv,Eg,Yv,Xv,Qv,Ic,yg,wg,Og=y(()=>{"use strict";_e();Xn();Ne();Qe();gg();Ce();ve();Kv=256*1024,zv=500,Eg=2e3,Yv=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Xv="rsp-status-summary.json",Qv=[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 e0(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 Gi(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 Zv(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 c0(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"?d0(r):r;return m0(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})}};yg=!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 Bo(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 Bo=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 y0}from"node:fs";import{fileURLToPath as b0}from"node:url";function yu(e){let t={app:e,version:Rh(Xt("__RED_BUILD_VERSION__",()=>"2.86.1")??"0.0.0-dev"),gitSha:Xt("__RED_BUILD_GIT_SHA__",()=>"f67b88c20f29ca8a62082a20604aee64813c2200")??"unknown",buildTime:Xt("__RED_BUILD_TIME__",()=>"2026-07-23T11:40:31-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 Rh(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 BR}from"node:fs";import{fileURLToPath as FR}from"node:url";ai();Ne();li();import{existsSync as dw}from"node:fs";import{fileURLToPath as mw}from"node:url";async function mr(e,t){let r={stats:pw(e.telemetryByteBudget),telemetry:Vi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=mw(e.storeUri);if(!dw(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:Vi(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 Ki(e,t=Vi(30),r=!1){return`${H(zi(e,t,r))}
172
+ `}function zi(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:fw(t.savings),dollars_saved_estimate_usd_display:gw(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:qi(t.health.degradation_rate),show_hit_rate_display:qi(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:qi(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:Ji(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Ji(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Ji(t.latency.store_elapsed_ms_avg)}}}function Kl(e){return`${H(e)}
173
+ `}function Vi(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 pw(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 Yi(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
174
+ `)}function fw(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 gw(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 Ji(e){return e==null?"none":String(e)}function qi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Rm(e){let{stats:t,telemetry:r}=await mr(e,30),[n,s]=await Promise.all([jR(e),Promise.resolve().then(()=>(Ca(),va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function km(e){let t=zi(e.stats,e.telemetry,!1),r=Go({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},HR(e));return`${H(r)}
175
+ `}async function jR(e){if(!e.storeUri.startsWith("file://"))return[];let t=FR(e.storeUri);if(!BR(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 HR(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 rE}from"node:fs";import{fileURLToPath as nE}from"node:url";Ce();import{spawn as zs}from"node:child_process";async function mp(e,t,r){let n=process.hrtime.bigint(),s=await kS(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return SS(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function kS(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(()=>(js(),Fs)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(En(),Sn)).then(i=>i.parseExecCommandLine(e));r=zs(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=zs(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 pp(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 hp(t);if(n){let o=ES(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ce(),on));dp(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})),dp(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 fp(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ys()}, passing through
178
+ `),await hp(e)}function Ys(){return"rsp is not enabled in this directory; run /red-setup"}function gp(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 SS(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 ES(e,t,r){let n=t[0]??"unknown",s=xS(r)||e;return{reason:lp(r)==="ENOENT"||lp(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:CS(r)??1,stderrHead:vS(s,240)}}function xS(e){return e instanceof Error?xn(e.message):xn(String(e??""))}function vS(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 lp(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function CS(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 dp(e){e.catch(()=>{})}async function hp(e){if(e[0]==="exec"||e[0]==="proxy")return await TS(e);let t=e[0];if(!t)return 2;let r=zs(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 TS(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(js(),Fs));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
180
  `),2}let r=zs(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 Mf(e,t,r){let n=[],s=!e.enabled;if(n.push(s?Z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(Z("hook_wiring","skipped because rsp is disabled"),Z("proxy_mode","skipped because rsp is disabled"),Z("resident_liveness","skipped because rsp is disabled"),Z("store_provisioning","skipped because rsp is disabled"),Z("recent_degradation_rate","skipped because rsp is disabled")),$f("disabled",n,r);n.push(await ZS(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(),jt));if(n.push(eE(await o(t))),n.push(tE(e)),jf(e)){let{telemetry:i}=await pr(e,r);n.push(rE(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return $f(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Bf(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
182
- `}async function ZS(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(()=>(In(),so)),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 eE(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 tE(e){return e.storeUri.startsWith("file://")?jf(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 rE(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})`,nE(s,t))}function nE(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 jf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return XS(QS(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:Mo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function $f(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 Wf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${iE(t).join(`
181
+ `),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Bp(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")),Mp("disabled",n,r);n.push(await sE(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(oE(await o(t))),n.push(iE(e)),jp(e)){let{telemetry:i}=await mr(e,r);n.push(aE(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Mp(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Fp(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
182
+ `}async function sE(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(),so)),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 oE(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 iE(e){return e.storeUri.startsWith("file://")?jp(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 aE(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})`,cE(s,t))}function cE(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 jp(e){if(!e.storeUri.startsWith("file://"))return!0;try{return rE(nE(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:Mo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Mp(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 Up(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${dE(t).join(`
183
183
  `)}
184
- `}function iE(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();Te();import{spawn as aE}from"node:child_process";import{createHash as cE}from"node:crypto";import{existsSync as uE,readFileSync as lE,statSync as dE}from"node:fs";import{tmpdir as pE}from"node:os";import{dirname as fE,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?(Ft(bE(s,e,t,i,n.lastResponseMetrics())),o&&mE(s,o)):wE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Ft(e){e.catch(()=>{})}async function ao(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Te(),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 mE(e,t){try{let r=Ze(e),n=dE(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!yE(r,Date.now()-s))return;let o=gE(e),i=hE(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");aE(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 gE(e){let t=e;for(;;){if(uE(yt(t,".git")))return t;let r=fE(t);if(r===t)return e;t=r}}function hE(e){let t=cE("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(pE(),`red-skills-${n}`,t)}function yE(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 bE(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(),on));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 wE(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);mt(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}),mt(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 Rt=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 Am(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(),Gf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Mt(),Aa)),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(),mc)),a=await i(e.positional,{level:e.level,store:s});return await ee(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(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 Cg(e=process.argv.slice(2)){let t=yu("rsp");if(su(e))return process.stdout.write(Wf(e)),0;let r=ou(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(In(),so));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(In(),so));return await m()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(_n(),$a));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(_n(),$a));return await m()}if(r.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Fm(),jm)),g=await m(process.cwd());return process.stdout.write(Yi(g)),0}if(r.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(qm(),Jm));return await m(),0}if(r.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ta(),va));return await m(r.positional)}if(r.command==="shell-init"){let m=r.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="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(()=>(zm(),Km));return process.stdout.write(g(m)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(ve(),ll)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(nt(),jt)),g=m(process.cwd()),b=await Mf(s,g,jn(r.positional,1));return process.stdout.write(Bf(b)),b.exitCode}let o=mf(r.command);if(!s.enabled)return o?await ff(r.positional):(process.stdout.write(`${Ys()}
185
- `),0);if(r.command==="git"&&oo(r.positional)){let m=process.hrtime.bigint();return await ee(r,await io(),m,void 0,await Ja(process.cwd()))}let{resolveResidentPaths:i,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(nt(),jt)),u=i(process.cwd());if(o&&pf(s.measurementHoldoutShare))return await df(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Tg(),vg)),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 m({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(`${Ys()}
186
- `),0)}if(r.command==="warm-resident"){let m=i(process.cwd()),g=we(r.positional,"--socket")??m.socketPath,b=we(r.positional,"--wake-lock")??m.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(),jt));return await E({...m,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:m}=await Promise.resolve().then(()=>(Fs(),js));return await m(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(nt(),jt)),b=r.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${H(b)}
187
- `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Cs(),Id)),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 m({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 m=await wp(s);return process.stdout.write(_p(m)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!p0(f0(s.storeUri)))return o?await Am(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=(m=!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:m})),p=()=>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:m}=await Promise.resolve().then(()=>(Qe(),or));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},f=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:m,telemetry:g}=await pr(s,jn(r.positional,30));return process.stdout.write(Ki(m,g,au(r.positional))),0}if(r.command==="gains"){let m=await f();if(h=()=>m.close(),!m0(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
189
- `),1;let g=await m.telemetryGains(jn(r.positional,28));return process.stdout.write(Kl(g)),0}if(r.command==="git"){if(Ft(p()),oo(r.positional)){let E=process.hrtime.bigint();return await ee(r,await io(),E,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(Mt(),Aa)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="gh"){Ft(p());let{runGhWrapper:m}=await Promise.resolve().then(()=>(dc(),lc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Ft(p());let{runTestWrapper:m}=await Promise.resolve().then(()=>(gc(),mc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="cat"){Ft(p());let{runCatWrapper:m}=await Promise.resolve().then(()=>(wc(),bc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="exec"){Ft(p());let{runExecWrapper:m}=await Promise.resolve().then(()=>(En(),Sn)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(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 m=await f();h=()=>m.close();let g=await m.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await ao(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 ao(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 ao(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(m){if(Yt(m))return process.stdout.write(m.render()),2;if(o)return await vn("wrapper failed",r.positional,m,u.rootDir);throw m}finally{await h?.()}}function m0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}De();import.meta.url===`file://${process.argv[1]}`&&Cg().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{Cg as main,Yi as renderSetupResult,Ki as renderStats};
184
+ `}function dE(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 mE}from"node:child_process";import{createHash as pE}from"node:crypto";import{existsSync as fE,readFileSync as gE,statSync as hE}from"node:fs";import{tmpdir as yE}from"node:os";import{dirname as bE,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(SE(s,e,t,i,n.lastResponseMetrics())),o&&wE(s,o)):EE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function jt(e){e.catch(()=>{})}async function ao(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 wE(e,t){try{let r=Ze(e),n=hE(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!kE(r,Date.now()-s))return;let o=_E(e),i=RE(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");mE(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 _E(e){let t=e;for(;;){if(fE(yt(t,".git")))return t;let r=bE(t);if(r===t)return e;t=r}}function RE(e){let t=pE("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(yE(),`red-skills-${n}`,t)}function kE(e,t){try{let r=gE(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 SE(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 EE(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 Df(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(),Wp));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 Pg(e=process.argv.slice(2)){let t=yu("rsp");if(su(e))return process.stdout.write(Up(e)),0;let r=ou(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(An(),so));return await f()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:f}=await Promise.resolve().then(()=>(An(),so));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(()=>(Gf(),Hf)),g=await f(process.cwd());return process.stdout.write(Yi(g)),0}if(r.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(Kf(),Vf));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(()=>(Xf(),Yf));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 Bp(s,g,Fn(r.positional,1));return process.stdout.write(Fp(b)),b.exitCode}let o=gp(r.command);if(!s.enabled)return o?await fp(r.positional):(process.stdout.write(`${Ys()}
185
+ `),0);if(r.command==="git"&&oo(r.positional)){let f=process.hrtime.bigint();return await ee(r,await io(),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&&pp(s.measurementHoldoutShare))return await mp(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Og(),Tg)),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(`${Ys()}
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(()=>(js(),Fs));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 Rm(s);return process.stdout.write(km(f)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!y0(b0(s.storeUri)))return o?await Df(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(Ki(f,g,au(r.positional))),0}if(r.command==="gains"){let f=await p();if(h=()=>f.close(),!w0(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()),oo(r.positional)){let E=process.hrtime.bigint();return await ee(r,await io(),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 ao(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 ao(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 ao(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 w0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}De();import.meta.url===`file://${process.argv[1]}`&&Pg().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{Pg as main,Yi as renderSetupResult,Ki as renderStats};