@reddb-io/red-skills 2.76.0 → 2.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,118 +1,118 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Rf=Object.defineProperty;var _=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)Rf(e,r,{get:t[r],enumerable:!0})};function R(e,t){return new or(e,t)}function D(e,t){return new ft(e,t)}function It(e){return e instanceof ft?e:e instanceof or?new ft(e.line,e.reason):new ft(0,String(e&&e.message?e.message:e))}var or,ft,ar=_(()=>{or=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},ft=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function tn(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 ke(e){return R(e,"invalid quoted string")}function Ee(e,t){if(e==="")return"";if(e.startsWith('"'))return oa(e,t);if(e.includes('"'))throw ke(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Sf(e)?Number(e):e}function Le(e,t){let r=e.trim();if(r.startsWith('"'))return[oa(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function oa(e,t){if(e[0]!=='"')throw ke(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 ke(t)}if(s==="\\"){let i=e[n];switch(n+=1,i){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
5
- `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let o=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw ke(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ke(t);r+=String.fromCharCode(a),n+=4;break}default:throw ke(t)}continue}if(s<" "&&s!==" ")throw ke(t);r+=s}throw ke(t)}function pt(e,t,r){if(e==="")return[];let n=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(n.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw ke(r);return n.push(e.slice(s).trim()),n}function X(e,t,r){let n=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&n)s=!0;else if(o==='"')n=!n;else if(o===t&&!n)return i}if(n||s)throw ke(r);return-1}function Sf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function xf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function kf(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 cr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Te(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return kf(e);if(typeof e=="string")return Tf(e,t);throw R(0,"not a primitive")}function Ef(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function pe(e){return Ef(e)?e:aa(e)}function Tf(e,t){return vf(e,t)?aa(e):e}function vf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||xf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function aa(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 At(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var A,ks=_(()=>{ar();A=","});function Of(e={}){return{indent:Math.max(1,e.indent??Ds),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Pf(e,t){let r=[],n=!1;return tn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(o,"invalid indentation");r.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function J(e,t){let r=Of(t),n=Pf(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let i=n.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ns(s.content,X(s.content,":",s.number))}catch(l){if(r.strict)throw Ps(l,s.number);u=void 0}if(u!==void 0)return If(u,n,r)}if(i&&X(s.content,":",s.number)===-1)return Ee(s.content.trim(),s.number);let o={index:0},a=Is(n,o,0,r),c=n[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Is(e,t,r,n){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<r)break;if(i.depth>r)throw R(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Cf(e,t,r,n);la(s,o,a,c,n,i.number)}return s}function Cf(e,t,r,n){let s=e[t.index],i=s.content,o=X(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=X(a,"[",s.number),l=X(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Lf(a)}catch(g){if(n.strict)throw Ps(g,s.number);t.index+=1;let w=Es(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let p=Df(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:p}}if(u!==-1){let h;try{h=Ns(a,o)}catch(g){if(n.strict)throw Ps(g,s.number);t.index+=1;let w=Es(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw R(s.number,"expected non-empty field name");let p=As(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:p}}let[f,d]=Le(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let m=Es(e,t,r,c,s.number,n);return{key:f,quoted:d,value:m}}function Es(e,t,r,n,s,i){let o=n.trim();if(o==="[]")return[];if(o!=="")return Ee(o,s);let a=e[t.index];return a!==void 0&&a.depth>r?Is(e,t,r+1,i):{}}function Df(e,t,r,n,s){let i={};for(r.index+=1;r.index<t.length;){let o=t[r.index];if(o.depth<n)break;if(o.depth>n)throw R(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw R(o.number,"blank line inside keyed map");let a=X(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[c,u]=Le(o.content.slice(0,a),o.number);if(c===""&&!u)throw R(o.number,"expected non-empty field name");let l=pt(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw R(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,m)=>{ur(f,d,Ee(l[m],o.number),s,o.number)}),la(i,c,u,f,s,o.number),r.index+=1}return i}function If(e,t,r){let n=t[0],s=X(n.content,":",n.number);if(s===-1)throw R(n.number,"expected `key: value`");let i=n.content.slice(s+1),o={index:0},a=As(e,i,t,o,0,r),c=t[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function As(e,t,r,n,s,i){let o=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw R(o,"expected tabular rows");return Af(e,e.fields,r,n,s+1,i)}if(a!==""){let c=pt(a,e.delimiter,o).map(u=>Ee(u,o));if(c.length!==e.len)throw R(o,"array length mismatch");return c}return Nf(e,r,n,s+1,i)}function Af(e,t,r,n,s,i){let o=[];for(;o.length<e.len;){let c=r[n.index];if(c===void 0)throw vs(r,n.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw R(c.number,"blank line inside array");if(!ca(c.content,e.delimiter,c.number))break;let u=pt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{ur(l,f,Ee(u[d],c.number),i,c.number)}),o.push(l),n.index+=1}if(o.length!==e.len)throw vs(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&ca(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function ca(e,t,r){let n=X(e,":",r);if(n===-1)return!0;let s=X(e,t,r);return s===-1?!1:s<n}function Nf(e,t,r,n,s){let i=[];for(;i.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw vs(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");i.push($f(t,r,n,s))}let o=t[r.index];if(o!==void 0&&o.depth>=n)throw R(o.number,"array length mismatch");return i}function $f(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=X(i,":",s.number),a;try{a=Ns(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return As(a,c,e,t,r,n)}}if(X(i,":",s.number)!==-1){let o=[{number:s.number,depth:r+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;o.push(a),t.index+=1}return Is(o,{index:0},r+1,n)}return t.index+=1,Ee(i,s.number)}function vs(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function Ns(e,t){if(t===-1)throw R(0,"array header missing colon");let r=e.slice(0,t),n=X(r,"[",0);if(n===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=Le(r.slice(0,n),0)}catch{throw R(0,"invalid array header")}let o=r.slice(n+1),a=o.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=o.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw R(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw R(0,"invalid array header")}let d=o.slice(a+1),m;if(d==="")m=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{m=ua(d.slice(1,-1),f)}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:i,len:l,delimiter:f,fields:m}}function Lf(e){let t=X(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let r,n;try{[r,n]=Le(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=ua(e.slice(t+1,-1),A)}catch(i){throw R(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:A,fields:s}}function ua(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==='"'){i();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[f]=Le(e.slice(l,n),0);if(f==="")throw R(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,f],!0),e[n]!=="}"||r.length===d)throw R(0,"invalid array header");n+=1}else r.push([...a,f]);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 i(){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 o=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Bf(r[a],r[c])||Os(r[a],r[c])||Os(r[c],r[a]))throw R(0,"duplicate key");for(let a of r){let c=a.join("\0");if(o.has(c))throw R(0,"duplicate key");o.add(c)}return r}function Bf(e,t){return e.length===t.length&&Os(e,t)}function Os(e,t){return t.every((r,n)=>e[n]===r)}function Ps(e,t){return R(t,e.reason??String(e.message))}function la(e,t,r,n,s,i){if(s.expandPaths&&!r&&t.includes(".")){let o=t.split(".");if(o.every(Mf)){ur(e,o,n,s,i);return}}ur(e,[t],n,s,i)}function ur(e,t,r,n,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&n.strict)throw R(s,"duplicate key");At(e,i,r);return}if(o&&!Nt(e[i])){if(n.strict)throw R(s,"path expansion conflict");At(e,i,{})}else o||At(e,i,{});ur(e[i],t.slice(1),r,n,s)}function Mf(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(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)?$s(n,void 0,e,0,!1,r):Nt(e)?da(n,e,0,r):n.push(Te(e,A)),n.join("")}function lr(e,t){e.push(" ".repeat(t*Ds))}function da(e,t,r,n){for(let[s,i]of Object.entries(t))lr(e,r),Cs(e,s,i,r,n)}function Cs(e,t,r,n,s){if(Array.isArray(r)){$s(e,t,r,n,!1,s);return}if(Nt(r)){let i=s.keyedMapCollapse?Uf(r,s):void 0;if(i!==void 0){e.push(pe(t),"{",i.fields.map(Ls).join(A),`}:
7
- `);for(let[o,a]of Object.entries(r))lr(e,n+1),e.push(pe(o),": ",i.paths.map(c=>Te(ga(a,c),A)).join(A),`
8
- `);return}e.push(pe(t),`:
9
- `),da(e,r,n+1,s);return}e.push(pe(t),": ",Te(r,A),`
10
- `)}function $s(e,t,r,n,s,i){if(r.length===0){t!==void 0?e.push(pe(t),`: []
3
+ var Bp=Object.defineProperty;var b=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)Bp(e,r,{get:t[r],enumerable:!0})};function R(e,t){return new hr(e,t)}function D(e,t){return new yt(e,t)}function jt(e){return e instanceof yt?e:e instanceof hr?new yt(e.line,e.reason):new yt(0,String(e&&e.message?e.message:e))}var hr,yt,yr=b(()=>{hr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},yt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function bn(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 Te(e){return R(e,"invalid quoted string")}function Oe(e,t){if(e==="")return"";if(e.startsWith('"'))return ja(e,t);if(e.includes('"'))throw Te(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Mp(e)?Number(e):e}function Je(e,t){let r=e.trim();if(r.startsWith('"'))return[ja(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function ja(e,t){if(e[0]!=='"')throw Te(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 Te(t)}if(s==="\\"){let i=e[n];switch(n+=1,i){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
5
+ `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let o=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw Te(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw Te(t);r+=String.fromCharCode(a),n+=4;break}default:throw Te(t)}continue}if(s<" "&&s!==" ")throw Te(t);r+=s}throw Te(t)}function wt(e,t,r){if(e==="")return[];let n=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(n.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw Te(r);return n.push(e.slice(s).trim()),n}function ee(e,t,r){let n=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&n)s=!0;else if(o==='"')n=!n;else if(o===t&&!n)return i}if(n||s)throw Te(r);return-1}function Mp(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function jp(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Up(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 wr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Pe(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Up(e);if(typeof e=="string")return Fp(e,t);throw R(0,"not a primitive")}function Jp(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function me(e){return Jp(e)?e:Ua(e)}function Fp(e,t){return Gp(e,t)?Ua(e):e}function Gp(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||jp(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Ua(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 Ut(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var A,Ys=b(()=>{yr();A=","});function Wp(e={}){return{indent:Math.max(1,e.indent??ni),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Hp(e,t){let r=[],n=!1;return bn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(o,"invalid indentation");r.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function F(e,t){let r=Wp(t),n=Hp(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let i=n.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=oi(s.content,ee(s.content,":",s.number))}catch(l){if(r.strict)throw ti(l,s.number);u=void 0}if(u!==void 0)return Kp(u,n,r)}if(i&&ee(s.content,":",s.number)===-1)return Oe(s.content.trim(),s.number);let o={index:0},a=si(n,o,0,r),c=n[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function si(e,t,r,n){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<r)break;if(i.depth>r)throw R(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=qp(e,t,r,n);Ga(s,o,a,c,n,i.number)}return s}function qp(e,t,r,n){let s=e[t.index],i=s.content,o=ee(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=ee(a,"[",s.number),l=ee(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Zp(a)}catch(g){if(n.strict)throw ti(g,s.number);t.index+=1;let y=Qs(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let p=Vp(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:p}}if(u!==-1){let h;try{h=oi(a,o)}catch(g){if(n.strict)throw ti(g,s.number);t.index+=1;let y=Qs(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(h.key===""&&!h.keyQuoted)throw R(s.number,"expected non-empty field name");let p=ii(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:p}}let[d,f]=Je(a,s.number);if(d===""&&!f)throw R(s.number,"expected non-empty field name");t.index+=1;let m=Qs(e,t,r,c,s.number,n);return{key:d,quoted:f,value:m}}function Qs(e,t,r,n,s,i){let o=n.trim();if(o==="[]")return[];if(o!=="")return Oe(o,s);let a=e[t.index];return a!==void 0&&a.depth>r?si(e,t,r+1,i):{}}function Vp(e,t,r,n,s){let i={};for(r.index+=1;r.index<t.length;){let o=t[r.index];if(o.depth<n)break;if(o.depth>n)throw R(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw R(o.number,"blank line inside keyed map");let a=ee(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[c,u]=Je(o.content.slice(0,a),o.number);if(c===""&&!u)throw R(o.number,"expected non-empty field name");let l=wt(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw R(o.number,"keyed map row length mismatch");let d={};e.fields.forEach((f,m)=>{br(d,f,Oe(l[m],o.number),s,o.number)}),Ga(i,c,u,d,s,o.number),r.index+=1}return i}function Kp(e,t,r){let n=t[0],s=ee(n.content,":",n.number);if(s===-1)throw R(n.number,"expected `key: value`");let i=n.content.slice(s+1),o={index:0},a=ii(e,i,t,o,0,r),c=t[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function ii(e,t,r,n,s,i){let o=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw R(o,"expected tabular rows");return zp(e,e.fields,r,n,s+1,i)}if(a!==""){let c=wt(a,e.delimiter,o).map(u=>Oe(u,o));if(c.length!==e.len)throw R(o,"array length mismatch");return c}return Yp(e,r,n,s+1,i)}function zp(e,t,r,n,s,i){let o=[];for(;o.length<e.len;){let c=r[n.index];if(c===void 0)throw Xs(r,n.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw R(c.number,"blank line inside array");if(!Ja(c.content,e.delimiter,c.number))break;let u=wt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((d,f)=>{br(l,d,Oe(u[f],c.number),i,c.number)}),o.push(l),n.index+=1}if(o.length!==e.len)throw Xs(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Ja(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function Ja(e,t,r){let n=ee(e,":",r);if(n===-1)return!0;let s=ee(e,t,r);return s===-1?!1:s<n}function Yp(e,t,r,n,s){let i=[];for(;i.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw Xs(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");i.push(Qp(t,r,n,s))}let o=t[r.index];if(o!==void 0&&o.depth>=n)throw R(o.number,"array length mismatch");return i}function Qp(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=ee(i,":",s.number),a;try{a=oi(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return ii(a,c,e,t,r,n)}}if(ee(i,":",s.number)!==-1){let o=[{number:s.number,depth:r+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;o.push(a),t.index+=1}return si(o,{index:0},r+1,n)}return t.index+=1,Oe(i,s.number)}function Xs(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function oi(e,t){if(t===-1)throw R(0,"array header missing colon");let r=e.slice(0,t),n=ee(r,"[",0);if(n===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=Je(r.slice(0,n),0)}catch{throw R(0,"invalid array header")}let o=r.slice(n+1),a=o.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=o.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),d;switch(c.slice(u.length)){case"":d=",";break;case" ":d=" ";break;case"|":d="|";break;default:throw R(0,"invalid array header")}let f=o.slice(a+1),m;if(f==="")m=void 0;else if(f.startsWith("{")&&f.endsWith("}")&&f.length>=2)try{m=Fa(f.slice(1,-1),d)}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:i,len:l,delimiter:d,fields:m}}function Zp(e){let t=ee(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=Fa(e.slice(t+1,-1),A)}catch(i){throw R(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:A,fields:s}}function Fa(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 f=e[n];if(f==='"'){i();continue}if(f===t||f==="{"||f==="}")break;n+=1}let[d]=Je(e.slice(l,n),0);if(d==="")throw R(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let f=r.length;if(s([...a,d],!0),e[n]!=="}"||r.length===f)throw R(0,"invalid array header");n+=1}else r.push([...a,d]);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 i(){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 o=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Xp(r[a],r[c])||ei(r[a],r[c])||ei(r[c],r[a]))throw R(0,"duplicate key");for(let a of r){let c=a.join("\0");if(o.has(c))throw R(0,"duplicate key");o.add(c)}return r}function Xp(e,t){return e.length===t.length&&ei(e,t)}function ei(e,t){return t.every((r,n)=>e[n]===r)}function ti(e,t){return R(t,e.reason??String(e.message))}function Ga(e,t,r,n,s,i){if(s.expandPaths&&!r&&t.includes(".")){let o=t.split(".");if(o.every(em)){br(e,o,n,s,i);return}}br(e,[t],n,s,i)}function br(e,t,r,n,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&n.strict)throw R(s,"duplicate key");Ut(e,i,r);return}if(o&&!Jt(e[i])){if(n.strict)throw R(s,"path expansion conflict");Ut(e,i,{})}else o||Ut(e,i,{});br(e[i],t.slice(1),r,n,s)}function em(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?ai(n,void 0,e,0,!1,r):Jt(e)?Wa(n,e,0,r):n.push(Pe(e,A)),n.join("")}function _r(e,t){e.push(" ".repeat(t*ni))}function Wa(e,t,r,n){for(let[s,i]of Object.entries(t))_r(e,r),ri(e,s,i,r,n)}function ri(e,t,r,n,s){if(Array.isArray(r)){ai(e,t,r,n,!1,s);return}if(Jt(r)){let i=s.keyedMapCollapse?rm(r,s):void 0;if(i!==void 0){e.push(me(t),"{",i.fields.map(ci).join(A),`}:
7
+ `);for(let[o,a]of Object.entries(r))_r(e,n+1),e.push(me(o),": ",i.paths.map(c=>Pe(Ka(a,c),A)).join(A),`
8
+ `);return}e.push(me(t),`:
9
+ `),Wa(e,r,n+1,s);return}e.push(me(t),": ",Pe(r,A),`
10
+ `)}function ai(e,t,r,n,s,i){if(r.length===0){t!==void 0?e.push(me(t),`: []
11
11
  `):s?e.push(`[0]:
12
12
  `):e.push(`[]
13
- `);return}if(r.every(cr)){Ts(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Te(a,A)).join(A)),e.push(`
14
- `);return}let o=s?void 0:fa(r,i);if(o!==void 0){Ts(e,t,r.length,o.fields),e.push(`
15
- `);for(let a of r)lr(e,n+1),e.push(o.paths.map(c=>Te(ga(a,c),A)).join(A)),e.push(`
16
- `);return}Ts(e,t,r.length,void 0),e.push(`
17
- `);for(let a of r)lr(e,n+1),jf(e,a,n+1,i)}function jf(e,t,r,n){if(Array.isArray(t)){e.push("- "),$s(e,void 0,t,r,!0,n);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
- `);return}e.push("- "),Cs(e,s[0][0],s[0][1],r+1,n);for(let[i,o]of s.slice(1))lr(e,r+1),Cs(e,i,o,r+1,n);return}e.push("- ",Te(t,A),`
19
- `)}function Ts(e,t,r,n){t!==void 0&&e.push(pe(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ls).join(A),"}"),e.push(":")}function fa(e,t){let r=pa(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:ma(r)}}function Uf(e,t){let r=Object.values(e);if(!(r.length<2))return fa(r,t)}function pa(e,t){let r=e[0]?.value;if(!Nt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!Nt(s)||Object.keys(s).length!==n.length||n.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of n){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>cr(a)))continue;if(!t.nestedTabularHeaders)return;let o=pa(i,t);if(o===void 0)return;s.children=o}return n}}function ma(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:ma(r.children,n)})}function ga(e,t){let r=e;for(let n of t)r=r[n];return r}function Ls(e){return e.children===void 0?pe(e.key):`${pe(e.key)}{${e.children.map(Ls).join(A)}}`}var Ds,dr=_(()=>{ar();ks();Ds=2});var ha=_(()=>{dr()});function Jf(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw D(t,"invalid trailer count");return Number.parseInt(r,10)}function va(e,t){if(!Ta.test(e))throw D(t,"invalid tag")}function Gf(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ta.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw D(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Hf(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw D(t,"invalid header");let s=r.slice(0,n),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!ka.includes(o)&&o!=="")throw D(t,"invalid header delimiter");let a=o===""?A:o,c=r.slice(n+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw D(t,"invalid tag");if(u=c.slice(1,d),va(u,t),o!=="")throw D(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw D(t,"invalid header");let l=c.slice(1,-2),f;try{f=pt(l,a,t).map(d=>Le(d,t)[0])}catch(d){throw It(d)}if(f.length===0||f.some(d=>d===""))throw D(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function qf(e,t,r){if(e===null||e.delimiter===void 0)throw D(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw D(r,"continuation header mismatch")}function ya(e,t,r,n){let s;try{s=pt(e,t,n)}catch(i){throw It(i)}if(s.length!==r)throw D(n,"row arity mismatch");for(let i of s)try{Ee(i,n)}catch(o){throw It(o)}return s}function Wf(e,t,r){let n={};return e.forEach((s,i)=>{try{At(n,s,Ee(t[i],r))}catch(o){throw It(o)}}),n}function Vf(e,t,r){if(e.startsWith("- "))throw D(t,"reserved line prefix");let n=Jf(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw D(t,"trailer without header");if(r.rowCount!==n)throw D(t,"trailer count mismatch");return{kind:"trailer"}}let s=Hf(e,t);if(s!==null)return s.continuation?(qf(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=Gf(e,t);if(i!==null){let o=r?.taggedLanes?.get(i.tag);if(o===void 0)throw D(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:ya(i.cellsText,o.delimiter,o.fields.length,t)}}if(r===null||r.delimiter===void 0)throw D(t,"row before header");return{kind:"row",cells:ya(e,r.delimiter,r.fields.length,t)}}function zf(e,t={}){let r=[],n=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(m,h){let p=i.at(-1);if(p!==void 0&&p.lane===m.lane&&p.delimiter===m.delimiter&&p.fieldText===m.fieldText){p.rows.push(h);return}i.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function f(m,h,p){let g=n.get(m);if(g===void 0){if(n.size>=Ea)throw D(p,"too many tagged lanes");g={segments:[],current:null},n.set(m,g),r.push(m)}else g.current!==null&&g.segments.push(g.current);g.current={lane:m,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(tn(e).forEach((m,h)=>{let p=h+1;if(m==="")return;let g=o===null?{taggedLanes:n}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:n},w=Vf(m,p,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,p);return}if(w.kind==="header"){l(),a||(r.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=n.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw D(p,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of r){if(m===null){d.push(...s);continue}let h=n.get(m);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function rn(e){return zf(e).flatMap(t=>t.rows.map(r=>Wf(t.fields,r,0)))}function Kf(e){if(!ka.includes(e))throw D(0,"invalid header delimiter")}function wa(e,t,r=!1){return`[${`${r?"~":""}${e===A?"":e}`}]{${t}}:
20
- `}function ba(e,t){return`[]<${e}>{${t}}:
21
- `}function Bs(e,t){return t.map(pe).join(e)}function Yf(e){if(!Array.isArray(e)||e.length===0)throw D(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Le(String(t),0)}catch(n){throw It(n)}if(r==="")throw D(0,"TOONL header requires fields");return r})}function _a(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Ra(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw D(0,"TOONL continuation cadence must be positive")}function Qf(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Sa(e){if(e===null||typeof e!="object"||Array.isArray(e))throw D(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw D(0,"TOONL output requires object rows");if(t.some(r=>!cr(e[r])))throw D(0,"TOONL rows must be flat objects");return t}function Zf(e){return JSON.stringify([...e].sort())}function xa(e,t){let r=Zf(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function nn({delimiter:e=A,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Kf(e),Ra(r),Ra(n);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:r,continuationEveryBytes:n},m=()=>s===null||!t?"":`[=${a}]
22
- `,h=()=>Qf(d,c,u)?(c=0,u=0,wa(e,i,!0)):"",p=g=>{va(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Ea)throw D(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw D(0,"TOONL encoder is closed");let w=xa(Sa(g),o),y="";(s===null||s.length!==w.length||s.some((O,B)=>O!==w[B]))&&(y+=m(),s=w,i=Bs(e,s),a=0,c=0,u=0,y+=wa(e,i));let v=s.map(O=>Te(g[O],e));y+=h();let E=`${v.join(e)}
23
- `;return y+=E,a+=1,c+=1,u+=E.length,y},declareLane(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=Yf(w),v=Bs(A,y),E=p(g);return _a(E.fields,y)?"":(E.fields=y,ba(g,v))},pushTagged(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=p(g),v=xa(Sa(w),y.fieldsByShape),E=Bs(A,v),O=v.map(le=>Te(w[le],A)),B="";return _a(y.fields,v)||(y.fields=v,B+=ba(g,E)),`${B}${g}:${O.join(A)}
24
- `},end(){return f?"":(f=!0,m())}}}var ka,Ea,Ta,xS,kS,Oa=_(()=>{ar();dr();ks();ka=[A,"|"," "],Ea=8,Ta=/^[A-Za-z0-9_-]+$/,xS=new TextEncoder,kS=new TextDecoder});var ee=_(()=>{ar();dr();dr();ha();Oa()});function Xf(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${C(Ms(e))}
25
- `)}function Ms(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Xf(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ep(e.diagnostics,3)),t}function me(e,t,r){let s=([r,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:fr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:fr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:fr(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:fr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:fr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function sn(e,t,r,n){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function fr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function ep(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
- `).trim()}var ve=_(()=>{"use strict";ee()});import{isAbsolute as ex,join as Lt,resolve as tx}from"node:path";function rp(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Aa(e){return Lt(rp(e),tp)}function Na(e){return Lt(Aa(e),"state")}function np(e){return Lt(Aa(e),"tmp")}function q(e){return Lt(Na(e),"rsp")}function sp(e){return Lt(Na(e),"red-skills.rdb")}function ip(e){return Lt(np(e),"red-skills.rdb")}function Ba(e,t){let r=sp(e);if(t(r))return r;let n=ip(e);if(t(n))throw op();return r}function op(){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.")}var tp,$a,La,Be=_(()=>{tp=".red";$a=".red/state/red-skills.rdb";La=".red/tmp/red-skills.rdb"});function j(e){return C(e,{keyedMapCollapse:!0})}var ap,cp,ix,Me=_(()=>{ee();Be();ap=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],cp=[{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"}],ix=[...ap,...cp]});function mt(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 lp(e,t){if(!t)return!0;let r=Us(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function W(e,t){return t?e.filter(r=>lp(r,t)):[...e]}function je(e,t){return Fs(e,t,{includeLegacyHelp:!0})}function Fs(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Us(e){return Array.isArray(e)?e.map(Us).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Us).join(" "):String(e??"")}var pr=_(()=>{"use strict"});async function ja(e,t){return dp?mp(e,t):fp?hp(e,t):pp(e,t)}async function pp(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((i,o)=>{n.stdin.write(s,a=>a?o(a):i())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",i=>s(i??0))})}}}function mp(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:gp(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*gp(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 hp(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(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:yp(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*yp(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var dp,fp,Ua=_(()=>{dp=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",fp=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as wp}from"node:fs";import{join as bp}from"node:path";function Fa(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 i=bp(r,"bin",t);if(wp(i))return i;throw new Error(`reddb: binary "${t}" not found.
13
+ `);return}if(r.every(wr)){Zs(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Pe(a,A)).join(A)),e.push(`
14
+ `);return}let o=s?void 0:Ha(r,i);if(o!==void 0){Zs(e,t,r.length,o.fields),e.push(`
15
+ `);for(let a of r)_r(e,n+1),e.push(o.paths.map(c=>Pe(Ka(a,c),A)).join(A)),e.push(`
16
+ `);return}Zs(e,t,r.length,void 0),e.push(`
17
+ `);for(let a of r)_r(e,n+1),tm(e,a,n+1,i)}function tm(e,t,r,n){if(Array.isArray(t)){e.push("- "),ai(e,void 0,t,r,!0,n);return}if(Jt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
+ `);return}e.push("- "),ri(e,s[0][0],s[0][1],r+1,n);for(let[i,o]of s.slice(1))_r(e,r+1),ri(e,i,o,r+1,n);return}e.push("- ",Pe(t,A),`
19
+ `)}function Zs(e,t,r,n){t!==void 0&&e.push(me(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(ci).join(A),"}"),e.push(":")}function Ha(e,t){let r=qa(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Va(r)}}function rm(e,t){let r=Object.values(e);if(!(r.length<2))return Ha(r,t)}function qa(e,t){let r=e[0]?.value;if(!Jt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!Jt(s)||Object.keys(s).length!==n.length||n.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of n){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>wr(a)))continue;if(!t.nestedTabularHeaders)return;let o=qa(i,t);if(o===void 0)return;s.children=o}return n}}function Va(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Va(r.children,n)})}function Ka(e,t){let r=e;for(let n of t)r=r[n];return r}function ci(e){return e.children===void 0?me(e.key):`${me(e.key)}{${e.children.map(ci).join(A)}}`}var ni,Rr=b(()=>{yr();Ys();ni=2});var za=b(()=>{Rr()});function sm(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw D(t,"invalid trailer count");return Number.parseInt(r,10)}function oc(e,t){if(!ic.test(e))throw D(t,"invalid tag")}function im(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!ic.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw D(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function om(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw D(t,"invalid header");let s=r.slice(0,n),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!nc.includes(o)&&o!=="")throw D(t,"invalid header delimiter");let a=o===""?A:o,c=r.slice(n+1),u=null;if(!i&&c.startsWith("<")){let f=c.indexOf(">");if(f===-1)throw D(t,"invalid tag");if(u=c.slice(1,f),oc(u,t),o!=="")throw D(t,"invalid header delimiter");c=c.slice(f+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw D(t,"invalid header");let l=c.slice(1,-2),d;try{d=wt(l,a,t).map(f=>Je(f,t)[0])}catch(f){throw jt(f)}if(d.length===0||d.some(f=>f===""))throw D(t,"invalid header fields");return{delimiter:a,fields:d,fieldText:l,continuation:i,tag:u}}function am(e,t,r){if(e===null||e.delimiter===void 0)throw D(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw D(r,"continuation header mismatch")}function Ya(e,t,r,n){let s;try{s=wt(e,t,n)}catch(i){throw jt(i)}if(s.length!==r)throw D(n,"row arity mismatch");for(let i of s)try{Oe(i,n)}catch(o){throw jt(o)}return s}function cm(e,t,r){let n={};return e.forEach((s,i)=>{try{Ut(n,s,Oe(t[i],r))}catch(o){throw jt(o)}}),n}function um(e,t,r){if(e.startsWith("- "))throw D(t,"reserved line prefix");let n=sm(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw D(t,"trailer without header");if(r.rowCount!==n)throw D(t,"trailer count mismatch");return{kind:"trailer"}}let s=om(e,t);if(s!==null)return s.continuation?(am(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=im(e,t);if(i!==null){let o=r?.taggedLanes?.get(i.tag);if(o===void 0)throw D(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:Ya(i.cellsText,o.delimiter,o.fields.length,t)}}if(r===null||r.delimiter===void 0)throw D(t,"row before header");return{kind:"row",cells:Ya(e,r.delimiter,r.fields.length,t)}}function lm(e,t={}){let r=[],n=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(m,h){let p=i.at(-1);if(p!==void 0&&p.lane===m.lane&&p.delimiter===m.delimiter&&p.fieldText===m.fieldText){p.rows.push(h);return}i.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function d(m,h,p){let g=n.get(m);if(g===void 0){if(n.size>=sc)throw D(p,"too many tagged lanes");g={segments:[],current:null},n.set(m,g),r.push(m)}else g.current!==null&&g.segments.push(g.current);g.current={lane:m,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(bn(e).forEach((m,h)=>{let p=h+1;if(m==="")return;let g=o===null?{taggedLanes:n}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:n},y=um(m,p,g);if(y.kind==="trailer"){l(),o=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,d(y.header.tag,y.header,p);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),o={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let w=n.get(y.tag).current;w.rows.push(y.cells),u(w,y.cells);return}if(o===null)throw D(p,"row before header");o.rows.push(y.cells),u(o,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let f=[];l();for(let m of r){if(m===null){f.push(...s);continue}let h=n.get(m);f.push(...h.segments),h.current!==null&&f.push(h.current)}return t.preserveInterleaving===!0?i:f}function _n(e){return lm(e).flatMap(t=>t.rows.map(r=>cm(t.fields,r,0)))}function dm(e){if(!nc.includes(e))throw D(0,"invalid header delimiter")}function Qa(e,t,r=!1){return`[${`${r?"~":""}${e===A?"":e}`}]{${t}}:
20
+ `}function Za(e,t){return`[]<${e}>{${t}}:
21
+ `}function ui(e,t){return t.map(me).join(e)}function fm(e){if(!Array.isArray(e)||e.length===0)throw D(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Je(String(t),0)}catch(n){throw jt(n)}if(r==="")throw D(0,"TOONL header requires fields");return r})}function Xa(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function ec(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw D(0,"TOONL continuation cadence must be positive")}function pm(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function tc(e){if(e===null||typeof e!="object"||Array.isArray(e))throw D(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw D(0,"TOONL output requires object rows");if(t.some(r=>!wr(e[r])))throw D(0,"TOONL rows must be flat objects");return t}function mm(e){return JSON.stringify([...e].sort())}function rc(e,t){let r=mm(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Rn({delimiter:e=A,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){dm(e),ec(r),ec(n);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,d=!1,f={continuationEveryRows:r,continuationEveryBytes:n},m=()=>s===null||!t?"":`[=${a}]
22
+ `,h=()=>pm(f,c,u)?(c=0,u=0,Qa(e,i,!0)):"",p=g=>{oc(g,0);let y=l.get(g);if(y===void 0){if(l.size>=sc)throw D(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(d)throw D(0,"TOONL encoder is closed");let y=rc(tc(g),o),w="";(s===null||s.length!==y.length||s.some((O,B)=>O!==y[B]))&&(w+=m(),s=y,i=ui(e,s),a=0,c=0,u=0,w+=Qa(e,i));let v=s.map(O=>Pe(g[O],e));w+=h();let k=`${v.join(e)}
23
+ `;return w+=k,a+=1,c+=1,u+=k.length,w},declareLane(g,y){if(d)throw D(0,"TOONL encoder is closed");let w=fm(y),v=ui(A,w),k=p(g);return Xa(k.fields,w)?"":(k.fields=w,Za(g,v))},pushTagged(g,y){if(d)throw D(0,"TOONL encoder is closed");let w=p(g),v=rc(tc(y),w.fieldsByShape),k=ui(A,v),O=v.map(de=>Pe(y[de],A)),B="";return Xa(w.fields,v)||(w.fields=v,B+=Za(g,k)),`${B}${g}:${O.join(A)}
24
+ `},end(){return d?"":(d=!0,m())}}}var nc,sc,ic,RE,SE,ac=b(()=>{yr();Rr();Ys();nc=[A,"|"," "],sc=8,ic=/^[A-Za-z0-9_-]+$/,RE=new TextEncoder,SE=new TextDecoder});var te=b(()=>{yr();Rr();Rr();za();ac()});function gm(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${C(li(e))}
25
+ `)}function li(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??gm(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=hm(e.diagnostics,3)),t}function ge(e,t,r){let s=([r,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:Sr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:Sr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:Sr(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:Sr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Sr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Sn(e,t,r,n){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Sr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function hm(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var Ce=b(()=>{"use strict";te()});import{isAbsolute as ym,join as Fe,resolve as fi}from"node:path";function _m(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function pc(e){return Fe(_m(e),fc)}function mc(e){return Fe(pc(e),"state")}function gc(e){return Fe(pc(e),"tmp")}function V(e){return Fe(mc(e),"rsp")}function Rm(e){return Fe(mc(e),"red-skills.rdb")}function Sm(e){return Fe(gc(e),"red-skills.rdb")}function wc(e,t){let r=Rm(e);if(t(r))return r;let n=Sm(e);if(t(n))throw xm();return r}function xm(){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 bc(e){return Fe(gc(e),"waits")}function _c(e){let t=e.overrideEnvVars??pi;for(let n of t){let s=e.env[n];if(s)return ym(s)?s:fi(e.startDir,s)}let r=fi(e.startDir);for(;;){if(e.exists(Fe(r,fc)))return r;let n=Fe(r,".."),s=fi(n);if(s===r)break;r=s}return e.startDir}var fc,wm,bm,pi,hc,yc,De=b(()=>{fc=".red",wm="MEMORY_ROOT",bm="RED_BRAIN_ROOT",pi=[wm,bm];hc=".red/state/red-skills.rdb";yc=".red/tmp/red-skills.rdb"});function j(e){return C(e,{keyedMapCollapse:!0})}var Em,km,t0,Ie=b(()=>{te();De();Em=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],km=[{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"}],t0=[...Em,...km]});function bt(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 Tm(e,t){if(!t)return!0;let r=mi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function K(e,t){return t?e.filter(r=>Tm(r,t)):[...e]}function Ge(e,t){return gi(e,t,{includeLegacyHelp:!0})}function gi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function mi(e){return Array.isArray(e)?e.map(mi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(mi).join(" "):String(e??"")}var xr=b(()=>{"use strict"});async function Sc(e,t){return Om?Dm(e,t):Pm?Am(e,t):Cm(e,t)}async function Cm(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((i,o)=>{n.stdin.write(s,a=>a?o(a):i())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",i=>s(i??0))})}}}function Dm(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:Im(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Im(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 Am(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(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:Nm(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Nm(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Om,Pm,xc=b(()=>{Om=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Pm=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as $m}from"node:fs";import{join as Lm}from"node:path";function Ec(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 i=Lm(r,"bin",t);if($m(i))return i;throw new Error(`reddb: binary "${t}" not found.
27
27
  expected at: ${i}
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 Ja=_(()=>{});import{fileURLToPath as _p}from"node:url";import{dirname as Rp,resolve as Sp,join as gx}from"node:path";function Ep(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ga(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Fa({name:Ep(),packageRoot:kp,envVar:"REDDB_BIN"})}var xp,kp,Ha=_(()=>{Ja();xp=Rp(_p(import.meta.url)),kp=Sp(xp,"..")});var Tp,vp,k,an,Ke=_(()=>{Tp=new TextEncoder,vp=new TextDecoder("utf-8"),k=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},an=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 k("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((i,o)=>{this.pending.set(n,{resolve:i,reject:o}),this.child.stdin.write(Tp.encode(s+`
31
- `)).catch(a=>{this.pending.delete(n),o(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 i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#r(vp.decode(o)),s=i+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(i){this.#e(`malformed server response: ${i.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 k(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 k("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function Gs(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:/"?Op(e):Pp(e)}function Op(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),i=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let o=Cp(s),a=r.port?Number(r.port):Js(o),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:o,host:r.hostname,port:a,path:i||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 Pp(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(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.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):Js(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Js(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 k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Cp(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 k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Js(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 Hs=_(()=>{Ke()});function Ip(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return qa(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return qa(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function qa(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 Ap(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 Dp,mr,qs=_(()=>{Ke();Dp=new Set(["embedded"]),mr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Dp.has(this._transport))throw new k("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:Ap(n.value)}async put(t,r,n,s={}){this._guard("put");let i=Ip(n);await this._client.call("cache.put",{namespace:t,key:r,value:i,...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 Ws(e,t){return`${Vs(e)}.${Np(t)}`}function Vs(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Np(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function $p(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 Wa(e){return`'${String(e).replace(/'/g,"''")}'`}var Mt,zs=_(()=>{Ke();Mt=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Wa).join(", ")}]`:"",o=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Ws(s,t)} = ${$p(r)}${o}${i}`})}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 ${Ws(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 ${Ws(n,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>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 k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Vs(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Wa).join(", ")}] FROM ${Vs(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new k("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 i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("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 kc=b(()=>{});import{fileURLToPath as Bm}from"node:url";import{dirname as Mm,resolve as jm,join as d0}from"node:path";function Fm(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function vc(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Ec({name:Fm(),packageRoot:Jm,envVar:"REDDB_BIN"})}var Um,Jm,Tc=b(()=>{kc();Um=Mm(Bm(import.meta.url)),Jm=jm(Um,"..")});var Gm,Wm,E,En,et=b(()=>{Gm=new TextEncoder,Wm=new TextDecoder("utf-8"),E=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},En=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 E("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((i,o)=>{this.pending.set(n,{resolve:i,reject:o}),this.child.stdin.write(Gm.encode(s+`
31
+ `)).catch(a=>{this.pending.delete(n),o(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 i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#r(Wm.decode(o)),s=i+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(i){this.#e(`malformed server response: ${i.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 E(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 E("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function yi(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:/"?Hm(e):qm(e)}function Hm(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 E("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),i=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let o=Vm(s),a=r.port?Number(r.port):hi(o),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:o,host:r.hostname,port:a,path:i||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 qm(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(i){throw new E("UNPARSEABLE_URI",`failed to parse '${e}': ${i.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):hi(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 E("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):hi(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 E("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Vm(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 E("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function hi(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 wi=b(()=>{et()});function zm(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Oc(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Oc(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Oc(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 Ym(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 Km,Er,bi=b(()=>{et();Km=new Set(["embedded"]),Er=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Km.has(this._transport))throw new E("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:Ym(n.value)}async put(t,r,n,s={}){this._guard("put");let i=zm(n);await this._client.call("cache.put",{namespace:t,key:r,value:i,...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 _i(e,t){return`${Ri(e)}.${Qm(t)}`}function Ri(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new E("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Qm(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Zm(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 Pc(e){return`'${String(e).replace(/'/g,"''")}'`}var Wt,Si=b(()=>{et();Wt=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Pc).join(", ")}]`:"",o=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${_i(s,t)} = ${Zm(r)}${o}${i}`})}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 ${_i(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 ${_i(n,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>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 E("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Ri(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Pc).join(", ")}] FROM ${Ri(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new E("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 i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new E("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(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Lp(e,t,r){let{waitMs:n,group:s=null,count:i=null}=r??{};if(!Number.isInteger(n)||n<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=Ue(e),a=Ue(t),c=s!=null?` GROUP ${Ue(s)}`:"",u=i!=null?Ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function Ue(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Ys(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Bp(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Mp(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Bp(e.priority)}`),e.key!=null&&(t+=` KEY ${Qs(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Qs(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function jp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Qs(e):JSON.stringify(e)}function Qs(e){return`'${String(e).replace(/'/g,"''")}'`}function Ks(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var gr,Zs=_(()=>{Ke();gr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ue(t)}`})}push(t,r,n={}){let s=Mp(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ue(t)} ${jp(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ue(t)}${Ys(r)}`});return Ks(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ue(t)}${Ys(r)}`});return Ks(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ue(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ue(t)}`})}async readWait(t,r,n={}){let s=Lp(t,r,n),i=await this.client.call("query",{sql:s});return Ks(i)}}});function Va(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function Up(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(za).join(".")}function za(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Fp(e){return Ka(JSON.stringify(e))}function Jp(e){return JSON.stringify(e)}function Gp(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Fp(e):Ka(e)}function Ka(e){return`'${String(e).replace(/'/g,"''")}'`}var hr,Xs=_(()=>{Ke();hr=class{constructor(t){this.db=t}async insert(t,r){Va(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${Jp(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new k("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 k("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=Up(r.limit),s=r.orderBy??r.order_by??"rid ASC",i=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${cn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Va(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${za(c)} = ${Gp(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${i} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new k("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 ${cn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function Hp(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${Ye(r)}.${Ye(n)})`}return Wp(e)}function qp(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 Ye(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 Wp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ya(e)}function Ya(e){return`'${String(e).replace(/'/g,"''")}'`}var yr,ei=_(()=>{yr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){qp(n,"config");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ya).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Ye(s)} ${Ye(t)} = ${Hp(r,n)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Ye(n)} ${Ye(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Ye(n)} ${Ye(t)}`})}}});function Vp(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 jt(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 zp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qa(e)}function Qa(e){return`'${String(e).replace(/'/g,"''")}'`}var wr,ti=_(()=>{wr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){Vp(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Qa).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${jt(s)}.${jt(t)} = ${zp(r)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${jt(n)}.${jt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${jt(n)}.${jt(t)}`})}}});async function Xa(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Kp)}async function ec(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Qp(t)}`)).rows??[]).some(n=>n.name===String(t))}function Kp(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Za(e){return String(e).split(".").map(Yp).join(".")}function Yp(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Qp(e){return`'${String(e).replace(/'/g,"''")}'`}var br,ri=_(()=>{Ke();br=class e{constructor(t,r,n=null,s=[],i=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=i}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 k("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(Za).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Za(this.collection)}${r}`,i=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function Ut(e,t={}){let r=Gs(e);if(am(r),r.kind==="embedded"){let n=om(r,t.auth);if(n.token||n.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=im(r),i=t.binary??Ga(),o=await ja(i,s),a=new an(o);return await a.call("version",{}),new si(a,{transport:"embedded"})}}function rc(e){return em(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:rm(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&sm(e)?{$uuid:e}:e}function em(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("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 k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function tm(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(rc):e.map(rc)}function rm(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 nm(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 sm(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return nm(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]=un(s);return r}return e}function im(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function om(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 am(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",Zp)}function ii(){return new k(tc,`${tc}: nested transactions are not supported on one connection`)}function sc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function cm(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${nc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function um(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${nc} 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 k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Zp,Xp,nc,tc,ln,ni,si,oi=_(()=>{Ua();Ha();Ke();Hs();qs();zs();Zs();Xs();ei();ti();ri();qs();zs();Zs();Xs();ei();ti();ri();Hs();Zp="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Xp="1.0",nc="1.0.9",tc="NESTED_TX_NOT_SUPPORTED";ln=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()}},ni=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 k("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 k("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 k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new ln(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){sc(r,n)}throw r}}},si=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=Xp,this.cache=new mr(t,this.transport),this.queue=new gr(t),this.queues=this.queue,this.documents=new hr(this);let n=new Mt(t);this.kv=Object.assign((s="kv_default")=>new Mt(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 yr(t,s),this.vault=(s="red.vault")=>new wr(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=tm(r);return n==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:n}).then(un)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return cm(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 um(n,r.length)}tx(){return new ni(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 ln(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){sc(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ec(this,t)}list(){return Xa(this)}from(t){return new br(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 ci(e,t,r=ic){let n=Math.max(0,Math.floor(e)),s=r in oc?r:ic,i=oc[s],o=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:o,tokens_saved_high:a,dollars_saved_estimate_usd:ai(n,i),dollars_saved_low_usd:o==null?null:ai(o,i),dollars_saved_high_usd:a==null?null:ai(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:lm}}function ai(e,t){return dm(Math.max(0,e)/1e6*t)}function _r(e){return`$${e.toFixed(6)}`}function dm(e){return Math.round(e*1e6)/1e6}var ic,oc,lm,ui=_(()=>{"use strict";ic="gpt-5",oc={"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},lm="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as fm,readFileSync as r0}from"node:fs";import{dirname as pm,join as mm}from"node:path";function ac(e,t){let r=e;for(let n=0;n<16;n++){let s=mm(r,t);if(fm(s))return s;let i=pm(r);if(i===r)break;r=i}return null}function gm(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function dn(e,t){let r=[];for(let n of e.split(`
35
- `)){let s=n.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(f=>f.key).join(".")===t)return gm(u)}}var cc=_(()=>{});import{createConnection as hm}from"node:net";async function Ft(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let i=hm(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},r);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
36
- `)}),i.on("data",l=>{a+=l.toString("utf8");let f=a.indexOf(`
37
- `);if(f<0)return;let d=a.slice(0,f);u(()=>{try{n(JSON.parse(d))}catch(m){s(m)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var li=_(()=>{});import{createHash as ym,randomUUID as pc}from"node:crypto";import{spawn as mc}from"node:child_process";import{constants as di}from"node:fs";import{readFileSync as wm}from"node:fs";import{mkdir as fn,open as bm,readFile as gc,rename as _m,rm as Oe,stat as Rm,writeFile as Sm}from"node:fs/promises";import{tmpdir as xm}from"node:os";import{dirname as Qe,join as oe,resolve as pn}from"node:path";import{fileURLToPath as hc}from"node:url";function Ze(e){let t=$m(e)??pn(e),r=Nm(t),n=q(t);return{rootDir:t,socketPath:oe(r,"rsp.sock"),pidPath:oe(r,"rsp.pid"),lockPath:oe(r,"rsp.lock"),wakeLockPath:oe(t,".red","tmp","rsp.wake.lock"),summaryPath:oe(n,"rsp-status-summary.json"),registryPath:oe(n,"rsp-resident.pid.json")}}async function mn(e,t){if(await fn(Qe(e.socketPath),{recursive:!0,mode:448}),await dc(e.socketPath,t))return;await lc(e,t);let r=await Rc(e.lockPath);if(r)try{if(await dc(e.socketPath,t))return;await lc(e,t),await vm(e.socketPath);let n=Om(e,t);await uc(e.socketPath,n);return}finally{await r.close(),await Oe(e.lockPath,{force:!0})}await uc(e.socketPath)}async function gt(e,t=200){try{return await wc(e,t)!=null}catch{return!1}}async function wc(e,t=200){let r=await Ft({socketPath:e,timeoutMs:t},{id:pc(),op:"ping"});return r.ok?Ec(r.value)?{version:jm(r.value.version)}:{}:null}async function gn(e,t){if(await fn(Qe(e.socketPath),{recursive:!0,mode:448}),await gt(e.socketPath,50))return!1;let r=await Rc(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=xc(t);return mc(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 bc(e,t){try{await mn(e,t)}finally{await Oe(e.wakeLockPath,{force:!0})}}async function Sr(e){try{let t=Dm(await gc(e,"utf8"));return Um(t)?t:null}catch{return null}}async function hn(e,t){let r={version:yc,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 fn(Qe(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Sm(n,`${C(r)}
38
- `,{encoding:"utf8",mode:384}),await _m(n,e)}async function yn(e,t=process.pid){try{let r=await Sr(e);if(r&&r.pid!==t)return;await Oe(e,{force:!0})}catch{}}async function Rr(e){let t=await Sr(e.registryPath);if(!t)try{return await gc(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Jt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await gt(t.socket_path,100);return r&&await Am(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 _c(e){let t=await Rr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Oe(e.registryPath,{force:!0}),await Rr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Sc(t.entry.pid),await Oe(e.registryPath,{force:!0}),await Oe(t.entry.socket_path,{force:!0}),await Rr(e)):t}async function uc(e,t){let r=Date.now()+Tm(),n;for(;Date.now()<r;){if(await gt(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 Tm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Em}async function vm(e){await Oe(e,{force:!0})}async function Rc(e){await fn(Qe(e),{recursive:!0,mode:448});try{return await bm(e,di.O_CREAT|di.O_EXCL|di.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Om(e,t){let[r,n]=xc(t),s=process.env.RSP_DEBUG==="1",i,o="",a=mc(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=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Cm(`${o}${c}`,Pm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}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(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Xm(e,t,r){let{waitMs:n,group:s=null,count:i=null}=r??{};if(!Number.isInteger(n)||n<0)throw new E("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=We(e),a=We(t),c=s!=null?` GROUP ${We(s)}`:"",u=i!=null?Ei(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function We(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new E("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Ei(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new E("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function eg(e){if(!Number.isInteger(e))throw new E("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function tg(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new E("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${eg(e.priority)}`),e.key!=null&&(t+=` KEY ${ki(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ki(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function rg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ki(e):JSON.stringify(e)}function ki(e){return`'${String(e).replace(/'/g,"''")}'`}function xi(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var kr,vi=b(()=>{et();kr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${We(t)}`})}push(t,r,n={}){let s=tg(n);return this.client.call("query",{sql:`QUEUE PUSH ${We(t)} ${rg(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${We(t)}${Ei(r)}`});return xi(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${We(t)}${Ei(r)}`});return xi(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${We(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${We(t)}`})}async readWait(t,r,n={}){let s=Xm(t,r,n),i=await this.client.call("query",{sql:s});return xi(i)}}});function Cc(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new E("INVALID_ARGUMENT",`${t} must be an object`)}function ng(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new E("INVALID_ARGUMENT","limit must be a positive integer");return e}function kn(e){return String(e).split(".").map(Dc).join(".")}function Dc(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new E("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function sg(e){return Ic(JSON.stringify(e))}function ig(e){return JSON.stringify(e)}function og(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?sg(e):Ic(e)}function Ic(e){return`'${String(e).replace(/'/g,"''")}'`}var vr,Ti=b(()=>{et();vr=class{constructor(t){this.db=t}async insert(t,r){Cc(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${kn(t)} DOCUMENT VALUES (${ig(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new E("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 E("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=ng(r.limit),s=r.orderBy??r.order_by??"rid ASC",i=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${kn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Cc(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new E("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new E("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Dc(c)} = ${og(u)}`).join(", "),a=(await this.db.query(`UPDATE ${kn(t)} SET ${i} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new E("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${kn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function ag(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${tt(r)}.${tt(n)})`}return ug(e)}function cg(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 tt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function ug(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ac(e)}function Ac(e){return`'${String(e).replace(/'/g,"''")}'`}var Tr,Oi=b(()=>{Tr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){cg(n,"config");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ac).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${tt(s)} ${tt(t)} = ${ag(r,n)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${tt(n)} ${tt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${tt(n)} ${tt(t)}`})}}});function lg(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 Ht(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 dg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Nc(e)}function Nc(e){return`'${String(e).replace(/'/g,"''")}'`}var Or,Pi=b(()=>{Or=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){lg(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Nc).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Ht(s)}.${Ht(t)} = ${dg(r)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Ht(n)}.${Ht(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Ht(n)}.${Ht(t)}`})}}});async function Lc(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fg)}async function Bc(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${mg(t)}`)).rows??[]).some(n=>n.name===String(t))}function fg(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function $c(e){return String(e).split(".").map(pg).join(".")}function pg(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new E("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function mg(e){return`'${String(e).replace(/'/g,"''")}'`}var Pr,Ci=b(()=>{et();Pr=class e{constructor(t,r,n=null,s=[],i=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=i}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 E("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($c).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${$c(this.collection)}${r}`,i=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function qt(e,t={}){let r=yi(e);if(Eg(r),r.kind==="embedded"){let n=xg(r,t.auth);if(n.token||n.username)throw new E("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Sg(r),i=t.binary??vc(),o=await Sc(i,s),a=new En(o);return await a.call("version",{}),new Ii(a,{transport:"embedded"})}}function jc(e){return yg(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:bg(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Rg(e)?{$uuid:e}:e}function yg(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new E("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 E("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new E("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function wg(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(jc):e.map(jc)}function bg(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 _g(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 Rg(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function vn(e){if(Array.isArray(e))return e.map(vn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return _g(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]=vn(s);return r}return e}function Sg(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function xg(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 Eg(e){if(e.kind!=="embedded")throw new E("EMBEDDED_ONLY",gg)}function Ai(){return new E(Mc,`${Mc}: nested transactions are not supported on one connection`)}function Jc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function kg(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new E("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Uc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function vg(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new E("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Uc} 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 E("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var gg,hg,Uc,Mc,Tn,Di,Ii,Ni=b(()=>{xc();Tc();et();wi();bi();Si();vi();Ti();Oi();Pi();Ci();bi();Si();vi();Ti();Oi();Pi();Ci();wi();gg="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",hg="1.0",Uc="1.0.9",Mc="NESTED_TX_NOT_SUPPORTED";Tn=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw Ai()}},Di=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Ai();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new E("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 E("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 E("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Tn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Jc(r,n)}throw r}}},Ii=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=hg,this.cache=new Er(t,this.transport),this.queue=new kr(t),this.queues=this.queue,this.documents=new vr(this);let n=new Wt(t);this.kv=Object.assign((s="kv_default")=>new Wt(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 Tr(t,s),this.vault=(s="red.vault")=>new Or(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new E("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=wg(r);return n==null?this.client.call("query",{sql:t}).then(vn):this.client.call("query",{sql:t,params:n}).then(vn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return kg(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 vg(n,r.length)}tx(){return new Di(this)}async transaction(t){if(this.inTransaction)throw Ai();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new Tn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Jc(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Bc(this,t)}list(){return Lc(this)}from(t){return new Pr(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});function Li(e,t,r=Fc){let n=Math.max(0,Math.floor(e)),s=r in Gc?r:Fc,i=Gc[s],o=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:o,tokens_saved_high:a,dollars_saved_estimate_usd:$i(n,i),dollars_saved_low_usd:o==null?null:$i(o,i),dollars_saved_high_usd:a==null?null:$i(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:Tg}}function $i(e,t){return Og(Math.max(0,e)/1e6*t)}function Cr(e){return`$${e.toFixed(6)}`}function Og(e){return Math.round(e*1e6)/1e6}var Fc,Gc,Tg,Bi=b(()=>{"use strict";Fc="gpt-5",Gc={"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},Tg="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Pg,readFileSync as Z0}from"node:fs";import{dirname as Cg,join as Dg}from"node:path";function Wc(e,t){let r=e;for(let n=0;n<16;n++){let s=Dg(r,t);if(Pg(s))return s;let i=Cg(r);if(i===r)break;r=i}return null}function Ig(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function On(e,t){let r=[];for(let n of e.split(`
35
+ `)){let s=n.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(d=>d.key).join(".")===t)return Ig(u)}}var Hc=b(()=>{});import{createConnection as Ag}from"node:net";async function Vt(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let i=Ag(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},r);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
36
+ `)}),i.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
37
+ `);if(d<0)return;let f=a.slice(0,d);u(()=>{try{n(JSON.parse(f))}catch(m){s(m)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var Mi=b(()=>{});import{createHash as Ng,randomUUID as Yc}from"node:crypto";import{spawn as Qc}from"node:child_process";import{constants as ji}from"node:fs";import{readFileSync as $g}from"node:fs";import{mkdir as Pn,open as Lg,readFile as Zc,rename as Bg,rm as Ae,stat as Mg,writeFile as jg}from"node:fs/promises";import{tmpdir as Ug}from"node:os";import{dirname as rt,join as ae,resolve as Cn}from"node:path";import{fileURLToPath as Xc}from"node:url";function nt(e){let t=Zg(e)??Cn(e),r=Qg(t),n=V(t);return{rootDir:t,socketPath:ae(r,"rsp.sock"),pidPath:ae(r,"rsp.pid"),lockPath:ae(r,"rsp.lock"),wakeLockPath:ae(t,".red","tmp","rsp.wake.lock"),summaryPath:ae(n,"rsp-status-summary.json"),registryPath:ae(n,"rsp-resident.pid.json")}}async function Dn(e,t){if(await Pn(rt(e.socketPath),{recursive:!0,mode:448}),await Kc(e.socketPath,t))return;await Vc(e,t);let r=await su(e.lockPath);if(r)try{if(await Kc(e.socketPath,t))return;await Vc(e,t),await Wg(e.socketPath);let n=Hg(e,t);await qc(e.socketPath,n);return}finally{await r.close(),await Ae(e.lockPath,{force:!0})}await qc(e.socketPath)}async function _t(e,t=200){try{return await tu(e,t)!=null}catch{return!1}}async function tu(e,t=200){let r=await Vt({socketPath:e,timeoutMs:t},{id:Yc(),op:"ping"});return r.ok?cu(r.value)?{version:rh(r.value.version)}:{}:null}async function In(e,t){if(await Pn(rt(e.socketPath),{recursive:!0,mode:448}),await _t(e.socketPath,50))return!1;let r=await su(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=ou(t);return Qc(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 ru(e,t){try{await Dn(e,t)}finally{await Ae(e.wakeLockPath,{force:!0})}}async function Ir(e){try{let t=Kg(await Zc(e,"utf8"));return nh(t)?t:null}catch{return null}}async function An(e,t){let r={version:eu,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 Pn(rt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await jg(n,`${C(r)}
38
+ `,{encoding:"utf8",mode:384}),await Bg(n,e)}async function Nn(e,t=process.pid){try{let r=await Ir(e);if(r&&r.pid!==t)return;await Ae(e,{force:!0})}catch{}}async function Dr(e){let t=await Ir(e.registryPath);if(!t)try{return await Zc(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Kt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await _t(t.socket_path,100);return r&&await Yg(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 nu(e){let t=await Dr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Ae(e.registryPath,{force:!0}),await Dr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await iu(t.entry.pid),await Ae(e.registryPath,{force:!0}),await Ae(t.entry.socket_path,{force:!0}),await Dr(e)):t}async function qc(e,t){let r=Date.now()+Gg(),n;for(;Date.now()<r;){if(await _t(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Ui("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Ui("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?Ui("resident rsp server did not start",t):"resident rsp server did not start")}function Gg(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Fg}async function Wg(e){await Ae(e,{force:!0})}async function su(e){await Pn(rt(e),{recursive:!0,mode:448});try{return await Lg(e,ji.O_CREAT|ji.O_EXCL|ji.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Hg(e,t){let[r,n]=ou(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Qc(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=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Vg(`${o}${c}`,qg)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Ui(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 Cm(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Dm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return J(t)}}async function lc(e,t){try{let r=await Sr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Jt(r.pid)){await Oe(e.registryPath,{force:!0});return}if(await gt(r.socket_path,100))return;if(kc(t.clientVersion,r.resident_version)&&(await Im(r.pid,1500),!Jt(r.pid))){await Oe(e.registryPath,{force:!0});return}await Sc(r.pid),await Oe(e.registryPath,{force:!0})}catch{}}function Jt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Sc(e){if(!Jt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Jt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Im(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Jt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Am(e){if(!e.startsWith("file://"))return!1;try{return await Rm(hc(e)),!1}catch(t){return t.code==="ENOENT"}}function xc(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?pn(process.argv[1]):hc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Nm(e){let t=ym("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=oe(r,"red-skills",t);if(oe(s,"rsp.sock").length<km)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return oe(xm(),`red-skills-${n}`,t)}function $m(e){let t=pn(e);for(let r=0;r<32;r++){try{let s=pi(oe(t,".git"));if(s!=null)return Lm(t,s)??t;if(pi(oe(t,".git","HEAD"))!=null||pi(oe(t,".red","config.yaml"))!=null)return t}catch{}let n=Qe(t);if(n===t)return null;t=n}return null}function Lm(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=pn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Qe(Qe(Qe(n))):null}function pi(e){try{return wm(e,"utf8")}catch{return null}}async function dc(e,t){let r=await wc(e).catch(()=>null);return r?kc(t.clientVersion,r.version)?(await Bm(e,t.clientVersion),await Fm(e),!1):!0:!1}async function Bm(e,t){try{await Ft({socketPath:e,timeoutMs:200},{id:pc(),op:"handover",clientVersion:t})}catch{}}function kc(e,t){return!e||!t?!1:Mm(e,t)>0}function Mm(e,t){let r=fc(e),n=fc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function fc(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 Ec(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jm(e){return typeof e=="string"&&e.length>0?e:void 0}function Um(e){return Ec(e)&&e.version===yc&&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 Fm(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await gt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var km,yc,Em,Pm,wn=_(()=>{ee();Be();li();km=108,yc=1,Em=5e3;Pm=8*1024});var Dc={};M(Dc,{DEFAULT_RSP_BYTE_BUDGET:()=>be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>we,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Je,DEFAULT_RSP_IDLE_MS:()=>Rn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Cc,DEFAULT_RSP_STORE_PATH:()=>mi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>_n,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>vc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Oc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>bn,DEFAULT_RSP_TTL_DAYS:()=>ye,MIN_RSP_IDLE_MS:()=>Pc,resolveRspConfig:()=>Ge});import{existsSync as Jm,readFileSync as Gm}from"node:fs";import{join as Hm,resolve as Tc}from"node:path";function Ge(e,t,r){let n=ac(Tc(e),Hm(".red","config.yaml")),s=n?Gm(n,"utf8"):"",i=dn(s,"rsp.enabled")==="true",o=dn(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Fe(he(s,"rsp.ttlDays"),ye),u=Fe(Gt(t.RSP_EPHEMERAL_TTL_HOURS)??he(s,"rsp.ephemeralTtlHours"),we),l=Fe(he(s,"rsp.byteBudget"),be),f=Fe(he(s,"rsp.telemetryTtlDays"),bn),d=Fe(he(s,"rsp.telemetryByteBudget")??he(s,"rsp.byteBudget"),_n),m=Fe(Gt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??he(s,"rsp.telemetryDrainIntervalMs"),vc),h=Fe(Gt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??he(s,"rsp.telemetryDrainTimeoutMs"),Oc),p=qm(Gt(t.RSP_IDLE_MS)??he(s,"rsp.idleMs"),Rn,Pc),g=Fe(Gt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??he(s,"rsp.heavyGitByteThreshold"),Je),w=Wm(Gt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??he(s,"rsp.measurement.holdoutShare"),Cc),y=Ze(e).rootDir,v=r??t.RSP_STORE_URI??`file://${Ba(Tc(y),Jm)}`;return{enabled:i,proxyEnabled:a,storeUri:v,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:h,idleMs:p,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function he(e,t){let r=dn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Fe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function qm(e,t,r){let n=Fe(e,t);return Math.max(n,r)}function Wm(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Gt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Je,mi,ye,we,be,bn,_n,vc,Oc,Rn,Pc,Cc,Pe=_(()=>{"use strict";cc();Be();wn();Je=8*1024,mi=$a,ye=7,we=6,be=64*1024*1024,bn=90,_n=4*1024*1024,vc=3e4,Oc=2e3,Rn=5*6e4,Pc=5e3,Cc=0});var F,Sn=_(()=>{"use strict";Pe();F="rsp_elisions_v1"});import{spawnSync as Er}from"node:child_process";import{createHash as yi}from"node:crypto";import{existsSync as Vm}from"node:fs";import{mkdir as zm,readFile as Km,readdir as Ic,rename as Ym,writeFile as Qm}from"node:fs/promises";import{homedir as Zm}from"node:os";import{basename as Xm,dirname as eg,join as xr}from"node:path";import{fileURLToPath as tg}from"node:url";import{gunzipSync as rg,gzipSync as ng}from"node:zlib";function wi(e,t){return`el:${yi("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 Xe(e){return`record:${e.slice(3)}`}function yt(e){return`expired:${e.slice(3)}`}function En(){return"index:v1"}function sg(e){return`blob:${e}`}function Ac(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function He(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":Tn(t)?"re-executable":"ephemeral"}return"ephemeral"}function Tr(e){return Cn(e.storage_class)?e.storage_class:He(e.command)}function Nc(e){return Cn(e.storage_class)?e.storage_class:He(e.command)}function bi(e){let t=ag(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Nc(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 _i(e,t,r){let n=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let i=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:i,age_display:ig(i),storage_class:Nc(s),recover:`rsp show ${s.handle}`}})}function ig(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 wt(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=Er("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=Er("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:r,object_ids:[i],working_tree_fingerprint:og(r),original_bytes:e.length}:null}function og(e){let t=gi(e,["rev-parse","HEAD"])||"unborn",r=gi(e,["write-tree"])||"no-index",n=gi(e,["status","--porcelain=v1","-z"])||"";return yi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function gi(e,t){let r=Er("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function xi(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!Tn(r))return null;let n=Mc(process.cwd(),r,e.length);return!n||ht(n)!==ht(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:ht(e)}}function Tn(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 ht(e){return yi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ki(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 Ei(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=ng(e);return{key:sg(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function $c(e){try{let t=rg(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Lc(e){let t=e.object_ids[0];if(!t)return null;let r=Er("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 Bc(e){if(!Tn(e.argv))return null;let t=Mc(e.cwd,e.argv,e.original_bytes);return t?ht(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
- `,"utf8"),t]):null}function Mc(e,t,r){let n=t[0];if(!n)return null;let s=Er(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 ag(){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 vr(e){return/^el:[a-f0-9]{12}$/.test(e)}function kn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function jc(e){if(!kr(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:kr(e.scope)?e.scope:void 0,ranking:kr(e.ranking)?e.ranking:void 0}}}function Uc(e){if(!kr(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 kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Fc(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function i(o){if(n.length>=t)return;let a=await Ic(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=xr(o,c.name);c.isDirectory()?await i(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 i(e),n}function Jc(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=kr(n)?n:{},i=String(e.label??e.LABEL??s.title??`memory-${r}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function vn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Or(e){if(!ae(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=ug(e.derivation_recipe),n=lg(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&kn(s);return e.collection===F&&typeof e.handle=="string"&&vr(e.handle)&&(t||r||n||i)&&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"&&kn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&cg(e.loss)&&(e.storage_class===void 0||Cn(e.storage_class))}function vi(e){return!ae(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!ae(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&vr(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||Cn(t.storage_class))&&(r===void 0||typeof r=="string"&&kn(r))})}function On(e){return ae(e)&&typeof e.key=="string"&&kn(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 Pn(e){return ae(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function cg(e){return ae(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Cn(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function ug(e){return ae(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 lg(e){return ae(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Tn(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 ae(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Gc(e){try{let n=(await Km(e,"utf8")).trim();if(n==="")return xn();let s;try{s=JSON.parse(n)}catch{s=J(n)}if(dg(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=xn();return await Ht(e,s),s}let n=xn();return await Ht(e,n),n}let t=xn();return await Ht(e,t),t}async function Hc(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function qc(e){return Xm(e)==="red-skills.rdb"}async function Dn(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?xr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):xr(Zm(),".cache","red-skills","bundles")),t=xr(e,"reddb"),r;try{r=await Ic(t)}catch{return}r.sort().reverse();for(let n of r){let s=xr(t,n,process.platform==="win32"?"red.exe":"red");if(Vm(s)){process.env.REDDB_BIN=s;return}}}async function Ht(e,t){await zm(eg(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Qm(r,`${C(hi(t))}
42
- `,"utf8"),await Ym(r,e)}function hi(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=>hi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=hi(n));return t}return String(e)}function xn(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function dg(e){return ae(e)&&e.version===1&&ae(e.records)&&Object.values(e.records).every(Or)&&(e.blobs===void 0||ae(e.blobs)&&Object.values(e.blobs).every(On))&&ae(e.tombstones)&&Object.values(e.tombstones).every(Pn)&&vi(e.index)}function Wc(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return tg(e)}var Pi=_(()=>{"use strict";ee();Sn()});import{createHash as fg}from"node:crypto";import{existsSync as Vc}from"node:fs";import{mkdir as pg,readFile as mg,rename as Ci,rm as Pr,stat as Di}from"node:fs/promises";import{basename as gg,dirname as hg}from"node:path";var qt,zc=_(()=>{"use strict";oi();Sn();Pi();qt=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=Wc(t.uri),n=await Hc(r),s=new e(n,{uri:t.uri,ttlDays:vn(t.ttlDays,ye),ephemeralTtlHours:vn(t.ephemeralTtlHours,we),byteBudget:vn(t.byteBudget,be),now:t.now??(()=>new Date)});return qc(n)?(await Dn(),await pg(hg(n),{recursive:!0}),s.db=await Ut(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Gc(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(),i=s.toISOString(),o=wi(n,r),a=Xe(o),c=He(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=ht(n),h=f==="ephemeral"?Ti(n,m,i):null,p=ki(n,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:F,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[yt(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!vr(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[Xe(t)];if(!Or(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:Xe(n.handle),bytes:Ei(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Tr(n),blob_key:n.blob_key},n.expires_at),await this.flush(),i}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:F,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Tr(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:wt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:bi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),_i(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 o of n.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=wt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,r),i=wt(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[yt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[yt(t)];return Pn(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Lc(t.derivation_recipe);if(t.reexecution_recipe)return Bc(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return On(r)?$c(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 Ht(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Di(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")),i={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}},o=Buffer.byteLength(`${JSON.stringify(i)}
43
- `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await Ht(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(F)}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===F);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${F}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${F}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${F}`),await this.db.query(`CREATE KV IF NOT EXISTS ${F}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=wi(n,r),a=Xe(o),c=He(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=ht(n),h=f==="ephemeral"?Ti(n,m,i):null,p=ki(n,u,l,h);h&&!On(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:F,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(yt(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(v=>v.handle!==o);return y.push({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,p),o}async getRedDb(t){if(!vr(t))return null;let r=await this.kvGet(yt(t));if(Pn(r))return r;let n=await this.kvGet(Xe(t));if(!Or(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:Xe(n.handle),bytes:Ei(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Tr(n),blob_key:n.blob_key},n.expires_at),i}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:F,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Tr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:wt(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:bi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return _i(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=jc(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Uc(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 Fc(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let o=(await mg(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=gg(s),c=fg("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),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),i=n.rows.map(o=>Jc(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
44
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(En());return vi(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(En(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=wt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=wt(i)}let a={version:1,records:i};return(r||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Di(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()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await Pr(i,{force:!0}),await Pr(o,{force:!0});let a=await Ut(`file://${i}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${Ac(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await Di(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Pr(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await Ci(this.path,o),await Ci(i,this.path),await Pr(o,{force:!0})}catch(u){throw!Vc(this.path)&&Vc(o)&&await Ci(o,this.path),await Pr(i,{force:!0}),u}finally{this.db=await Ut(`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(i=>i.model!=="kv"))return null;let n=[],s=!1;for(let i of r){let o=String(i.name??"").trim();if(o===F){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:o,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:En(),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 i=await this.kvGet(s);i!=null&&r.push({key:s,value:i})}return{name:F,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(yt(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(Xe(t));if(!Or(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Wt={};M(Wt,{DEFAULT_RSP_BYTE_BUDGET:()=>be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>we,DEFAULT_RSP_TTL_DAYS:()=>ye,RSP_ELISION_COLLECTION:()=>F,RspElisionStore:()=>qt,ensureReddbBinaryFromWarmCache:()=>Dn,storageClassForCommand:()=>He});var et=_(()=>{"use strict";Sn();Pi();zc()});var Ii,Ai,Ni,te,G,ce,Ce,Cr,In=_(()=>{"use strict";Ii="rsp-telemetry.spool.toonl",Ai="rsp-telemetry.spool.jsonl",Ni="rsp-telemetry.spool.corrections.toonl",te="rsp_accounting_events_v1",G="rsp_decisions_v1",ce="rsp_telemetry_invocations_v1",Ce="rsp_telemetry_degradations_v1",Cr="rsp_telemetry_index_v1"});function Vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ue(e){return tt(e)??0}function tt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var $i=_(()=>{"use strict"});import{randomUUID as Bi,createHash as yg}from"node:crypto";import{appendFileSync as Xc,existsSync as wg,mkdirSync as eu}from"node:fs";import{mkdir as tu,readdir as bg,readFile as ru,rename as _g,rm as nu,writeFile as Mi}from"node:fs/promises";import{basename as Li,dirname as Dr,join as zt,resolve as Kc}from"node:path";function Nn(e){if(!e)return null;let t=Kc(e);for(;;){if(wg(zt(t,".red")))return t;let r=Kc(zt(t,".."));if(r===t)break;t=r}return null}function qe(e){return zt(q(e),Ii)}function $n(e){return zt(q(e),Ai)}function Ui(e){return zt(q(e),Ni)}async function We(e,t){rt(e,t)}function rt(e,t){try{let r=Nn(e);if(!r)return;let n=qe(r);eu(Dr(n),{recursive:!0}),Xc(n,Tg({spool_id:Bi(),event:Sg(t)}),{encoding:"utf8",mode:384})}catch{}}function Sg(e){return Yc(Yc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Yc(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Rg)return e;let i={...e};return delete i[t],ue(i[r])===0&&(i[r]=s),i.estimated=!0,i}async function xg(e){let t=Nn(e);if(!t)return[];let r=qe(t);await tu(Dr(r),{recursive:!0}).catch(()=>{});let n=await ou(t),s=[...await au(t),...await Og(n)];return await Promise.all(n.map(i=>nu(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function Fi(e,t){let r=Nn(e);if(!r)return;let n=qe(r);await tu(Dr(n),{recursive:!0}).catch(()=>{}),await vg(r);for(let s of await kg(r))await Qc(r,s,t);for(let s of await au(r))await su(r,s,t,!0);for(let s of await ou(r))await Qc(r,s,t)}async function kg(e){let t=[qe(e),$n(e)],r=Dr(t[0]);return(await bg(r).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${Li(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${Li(c)}.`));if(!i)return!1;let o=`${Li(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Eg(a))}).sort().map(s=>zt(r,s))}function Eg(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Qc(e,t,r){try{let n=await iu(t);for(let s of cu(n))await su(e,s,r,!1)}finally{await nu(t,{force:!0})}}async function su(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Zc(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Zc(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 iu(e){let t="";for(let r=0;r<5;r++){let n=await ru(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Kt(e){try{let t=JSON.parse(e);return!Vt(t)||t.collection!==te&&t.collection!==G&&t.collection!==ce&&t.collection!==Ce?null:t}catch{return null}}function Tg(e){return nn().push(Dg(e))}function Zc(e,t){try{let r=Nn(e);if(!r)return;let n=Ui(r);eu(Dr(n),{recursive:!0});let s=nn();Xc(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 ou(e){let t=[qe(e),$n(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await _g(n,s),await Mi(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return r}async function vg(e){await Promise.all([Mi(qe(e),"",{flag:"a"}),Mi($n(e),"",{flag:"a"})]).catch(()=>{})}async function Og(e){let t=[];for(let r of e)t.push(...cu(await iu(r)));return t}async function au(e){let t=await ru(Ui(e),"utf8").catch(()=>""),r=new Map;for(let n of Pg(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:Kt(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function cu(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let i=JSON.parse(s);if(Vt(i)){let o=Kt(JSON.stringify(i));t.push(o?{spool_id:An(JSON.stringify(i)),event:o}:{spool_id:An(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:An(s),raw_line:s});continue}try{for(let i of rn(`${r}
40
+ `)}function Vg(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Kg(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return F(t)}}async function Vc(e,t){try{let r=await Ir(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Kt(r.pid)){await Ae(e.registryPath,{force:!0});return}if(await _t(r.socket_path,100))return;if(au(t.clientVersion,r.resident_version)&&(await zg(r.pid,1500),!Kt(r.pid))){await Ae(e.registryPath,{force:!0});return}await iu(r.pid),await Ae(e.registryPath,{force:!0})}catch{}}function Kt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function iu(e){if(!Kt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Kt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function zg(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Kt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Yg(e){if(!e.startsWith("file://"))return!1;try{return await Mg(Xc(e)),!1}catch(t){return t.code==="ENOENT"}}function ou(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Cn(process.argv[1]):Xc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Qg(e){let t=Ng("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ae(r,"red-skills",t);if(ae(s,"rsp.sock").length<Jg)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ae(Ug(),`red-skills-${n}`,t)}function Zg(e){let t=Cn(e);for(let r=0;r<32;r++){try{let s=Ji(ae(t,".git"));if(s!=null)return Xg(t,s)??t;if(Ji(ae(t,".git","HEAD"))!=null||Ji(ae(t,".red","config.yaml"))!=null)return t}catch{}let n=rt(t);if(n===t)return null;t=n}return null}function Xg(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Cn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?rt(rt(rt(n))):null}function Ji(e){try{return $g(e,"utf8")}catch{return null}}async function Kc(e,t){let r=await tu(e).catch(()=>null);return r?au(t.clientVersion,r.version)?(await eh(e,t.clientVersion),await sh(e),!1):!0:!1}async function eh(e,t){try{await Vt({socketPath:e,timeoutMs:200},{id:Yc(),op:"handover",clientVersion:t})}catch{}}function au(e,t){return!e||!t?!1:th(e,t)>0}function th(e,t){let r=zc(e),n=zc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function zc(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 cu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rh(e){return typeof e=="string"&&e.length>0?e:void 0}function nh(e){return cu(e)&&e.version===eu&&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 sh(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await _t(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Jg,eu,Fg,qg,$n=b(()=>{te();De();Mi();Jg=108,eu=1,Fg=5e3;qg=8*1024});var mu={};M(mu,{DEFAULT_RSP_BYTE_BUDGET:()=>_e,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>be,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>qe,DEFAULT_RSP_IDLE_MS:()=>Mn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>pu,DEFAULT_RSP_STORE_PATH:()=>Fi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Bn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>lu,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>du,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Ln,DEFAULT_RSP_TTL_DAYS:()=>we,MIN_RSP_IDLE_MS:()=>fu,resolveRspConfig:()=>Re});import{existsSync as ih,readFileSync as oh}from"node:fs";import{join as ah,resolve as uu}from"node:path";function Re(e,t,r){let n=Wc(uu(e),ah(".red","config.yaml")),s=n?oh(n,"utf8"):"",i=On(s,"rsp.enabled")==="true",o=On(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=He(ye(s,"rsp.ttlDays"),we),u=He(zt(t.RSP_EPHEMERAL_TTL_HOURS)??ye(s,"rsp.ephemeralTtlHours"),be),l=He(ye(s,"rsp.byteBudget"),_e),d=He(ye(s,"rsp.telemetryTtlDays"),Ln),f=He(ye(s,"rsp.telemetryByteBudget")??ye(s,"rsp.byteBudget"),Bn),m=He(zt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ye(s,"rsp.telemetryDrainIntervalMs"),lu),h=He(zt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ye(s,"rsp.telemetryDrainTimeoutMs"),du),p=ch(zt(t.RSP_IDLE_MS)??ye(s,"rsp.idleMs"),Mn,fu),g=He(zt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ye(s,"rsp.heavyGitByteThreshold"),qe),y=uh(zt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??ye(s,"rsp.measurement.holdoutShare"),pu),w=nt(e).rootDir,v=r??t.RSP_STORE_URI??`file://${wc(uu(w),ih)}`;return{enabled:i,proxyEnabled:a,storeUri:v,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:d,telemetryByteBudget:f,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:h,idleMs:p,heavyGitByteThreshold:g,measurementHoldoutShare:y}}function ye(e,t){let r=On(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function He(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ch(e,t,r){let n=He(e,t);return Math.max(n,r)}function uh(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function zt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var qe,Fi,we,be,_e,Ln,Bn,lu,du,Mn,fu,pu,Se=b(()=>{"use strict";Hc();De();$n();qe=8*1024,Fi=hc,we=7,be=6,_e=64*1024*1024,Ln=90,Bn=4*1024*1024,lu=3e4,du=2e3,Mn=5*6e4,fu=5e3,pu=0});var J,jn=b(()=>{"use strict";Se();J="rsp_elisions_v1"});import{spawnSync as $r}from"node:child_process";import{createHash as Hi}from"node:crypto";import{existsSync as lh}from"node:fs";import{mkdir as dh,readFile as fh,readdir as gu,rename as ph,writeFile as mh}from"node:fs/promises";import{homedir as gh}from"node:os";import{basename as hh,dirname as yh,join as Ar}from"node:path";import{fileURLToPath as wh}from"node:url";import{gunzipSync as bh,gzipSync as _h}from"node:zlib";function qi(e,t){return`el:${Hi("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 st(e){return`record:${e.slice(3)}`}function St(e){return`expired:${e.slice(3)}`}function Fn(){return"index:v1"}function Rh(e){return`blob:${e}`}function hu(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Ve(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":Gn(t)?"re-executable":"ephemeral"}return"ephemeral"}function Lr(e){return Vn(e.storage_class)?e.storage_class:Ve(e.command)}function yu(e){return Vn(e.storage_class)?e.storage_class:Ve(e.command)}function Vi(e){let t=Eh(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=yu(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,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let i=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:i,age_display:Sh(i),storage_class:yu(s),recover:`rsp show ${s.handle}`}})}function Sh(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 zi(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 xt(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 Yi(e,t){let r=process.cwd(),n=$r("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=$r("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:r,object_ids:[i],working_tree_fingerprint:xh(r),original_bytes:e.length}:null}function xh(e){let t=Gi(e,["rev-parse","HEAD"])||"unborn",r=Gi(e,["write-tree"])||"no-index",n=Gi(e,["status","--porcelain=v1","-z"])||"";return Hi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Gi(e,t){let r=$r("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Qi(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!Gn(r))return null;let n=Ru(process.cwd(),r,e.length);return!n||Rt(n)!==Rt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Rt(e)}}function Gn(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 Rt(e){return Hi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Zi(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 Xi(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 eo(e,t,r){let n=_h(e);return{key:Rh(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function wu(e){try{let t=bh(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function bu(e){let t=e.object_ids[0];if(!t)return null;let r=$r("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 _u(e){if(!Gn(e.argv))return null;let t=Ru(e.cwd,e.argv,e.original_bytes);return t?Rt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function Ru(e,t,r){let n=t[0];if(!n)return null;let s=$r(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 Eh(){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 Br(e){return/^el:[a-f0-9]{12}$/.test(e)}function Jn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function Su(e){if(!Nr(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:Nr(e.scope)?e.scope:void 0,ranking:Nr(e.ranking)?e.ranking:void 0}}}function xu(e){if(!Nr(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 Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Eu(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function i(o){if(n.length>=t)return;let a=await gu(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=Ar(o,c.name);c.isDirectory()?await i(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 i(e),n}function ku(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Nr(n)?n:{},i=String(e.label??e.LABEL??s.title??`memory-${r}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function Wn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Mr(e){if(!ce(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=vh(e.derivation_recipe),n=Th(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&Jn(s);return e.collection===J&&typeof e.handle=="string"&&Br(e.handle)&&(t||r||n||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ro(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Jn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&kh(e.loss)&&(e.storage_class===void 0||Vn(e.storage_class))}function to(e){return!ce(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!ce(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Br(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||Vn(t.storage_class))&&(r===void 0||typeof r=="string"&&Jn(r))})}function Hn(e){return ce(e)&&typeof e.key=="string"&&Jn(e.key)&&ro(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 qn(e){return ce(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function kh(e){return ce(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Vn(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function vh(e){return ce(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 Th(e){return ce(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Gn(e.argv)&&typeof e.original_bytes=="number"&&ro(e.content_hash)}function ro(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function ce(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vu(e){try{let n=(await fh(e,"utf8")).trim();if(n==="")return Un();let s;try{s=JSON.parse(n)}catch{s=F(n)}if(Oh(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=Un();return await Yt(e,s),s}let n=Un();return await Yt(e,n),n}let t=Un();return await Yt(e,t),t}async function Tu(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ou(e){return hh(e)==="red-skills.rdb"}async function Kn(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ar(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ar(gh(),".cache","red-skills","bundles")),t=Ar(e,"reddb"),r;try{r=await gu(t)}catch{return}r.sort().reverse();for(let n of r){let s=Ar(t,n,process.platform==="win32"?"red.exe":"red");if(lh(s)){process.env.REDDB_BIN=s;return}}}async function Yt(e,t){await dh(yh(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await mh(r,`${C(Wi(t))}
42
+ `,"utf8"),await ph(r,e)}function Wi(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=>Wi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Wi(n));return t}return String(e)}function Un(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Oh(e){return ce(e)&&e.version===1&&ce(e.records)&&Object.values(e.records).every(Mr)&&(e.blobs===void 0||ce(e.blobs)&&Object.values(e.blobs).every(Hn))&&ce(e.tombstones)&&Object.values(e.tombstones).every(qn)&&to(e.index)}function Pu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return wh(e)}var no=b(()=>{"use strict";te();jn()});import{createHash as Ph}from"node:crypto";import{existsSync as Cu}from"node:fs";import{mkdir as Ch,readFile as Dh,rename as so,rm as jr,stat as io}from"node:fs/promises";import{basename as Ih,dirname as Ah}from"node:path";var it,Du=b(()=>{"use strict";Ni();jn();no();it=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=Pu(t.uri),n=await Tu(r),s=new e(n,{uri:t.uri,ttlDays:Wn(t.ttlDays,we),ephemeralTtlHours:Wn(t.ephemeralTtlHours,be),byteBudget:Wn(t.byteBudget,_e),now:t.now??(()=>new Date)});return Ou(n)?(await Kn(),await Ch(Ah(n),{recursive:!0}),s.db=await qt(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await vu(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(),i=s.toISOString(),o=qi(n,r),a=st(o),c=Ve(r.command),u=c==="derivable"?Yi(n,r.command):null,l=c==="re-executable"?Qi(n,r.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=zi(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Rt(n),h=d==="ephemeral"?eo(n,m,i):null,p=Zi(n,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:J,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:f,loss:r.loss,storage_class:d,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[St(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:f,storage_class:d,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!Br(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[st(t)];if(!Mr(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:st(n.handle),bytes:Xi(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Lr(n),blob_key:n.blob_key},n.expires_at),await this.flush(),i}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Lr(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:xt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Vi(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 o of n.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=xt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,r),i=xt(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[St(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[St(t)];return qn(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return bu(t.derivation_recipe);if(t.reexecution_recipe)return _u(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Hn(r)?wu(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 Yt(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await io(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")),i={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}},o=Buffer.byteLength(`${JSON.stringify(i)}
43
+ `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await Yt(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(J)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===J);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${J}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${J}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${J}`),await this.db.query(`CREATE KV IF NOT EXISTS ${J}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=qi(n,r),a=st(o),c=Ve(r.command),u=c==="derivable"?Yi(n,r.command):null,l=c==="re-executable"?Qi(n,r.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=zi(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Rt(n),h=d==="ephemeral"?eo(n,m,i):null,p=Zi(n,u,l,h);h&&!Hn(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:J,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:f,loss:r.loss,storage_class:d,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(St(o)),await this.kv().put(a,g);let w=(await this.readRedDbIndex()).records.filter(v=>v.handle!==o);return w.push({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:f,storage_class:d,blob_key:h?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(o,p),o}async getRedDb(t){if(!Br(t))return null;let r=await this.kvGet(St(t));if(qn(r))return r;let n=await this.kvGet(st(t));if(!Mr(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:st(n.handle),bytes:Xi(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Lr(n),blob_key:n.blob_key},n.expires_at),i}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Lr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:xt(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:Vi(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=Su(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=xu(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 Eu(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let o=(await Dh(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Ih(s),c=Ph("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,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}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),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),i=n.rows.map(o=>ku(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
44
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Fn());return to(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Fn(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=xt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=xt(i)}let a={version:1,records:i};return(r||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await io(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()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await jr(i,{force:!0}),await jr(o,{force:!0});let a=await qt(`file://${i}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${hu(u.name)}`);let l=a.kv(u.name);for(let d of u.items)await l.put(d.key,d.value)}}finally{await a.close()}let c=await io(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await jr(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await so(this.path,o),await so(i,this.path),await jr(o,{force:!0})}catch(u){throw!Cu(this.path)&&Cu(o)&&await so(o,this.path),await jr(i,{force:!0}),u}finally{this.db=await qt(`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(i=>i.model!=="kv"))return null;let n=[],s=!1;for(let i of r){let o=String(i.name??"").trim();if(o===J){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:o,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:Fn(),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 i=await this.kvGet(s);i!=null&&r.push({key:s,value:i})}return{name:J,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(St(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(st(t));if(!Mr(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Qt={};M(Qt,{DEFAULT_RSP_BYTE_BUDGET:()=>_e,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>be,DEFAULT_RSP_TTL_DAYS:()=>we,RSP_ELISION_COLLECTION:()=>J,RspElisionStore:()=>it,ensureReddbBinaryFromWarmCache:()=>Kn,storageClassForCommand:()=>Ve});var Ke=b(()=>{"use strict";jn();no();Du()});var oo,ao,co,re,G,ue,Ne,Ur,zn=b(()=>{"use strict";oo="rsp-telemetry.spool.toonl",ao="rsp-telemetry.spool.jsonl",co="rsp-telemetry.spool.corrections.toonl",re="rsp_accounting_events_v1",G="rsp_decisions_v1",ue="rsp_telemetry_invocations_v1",Ne="rsp_telemetry_degradations_v1",Ur="rsp_telemetry_index_v1"});function Zt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function le(e){return ot(e)??0}function ot(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var uo=b(()=>{"use strict"});import{randomUUID as fo,createHash as Nh}from"node:crypto";import{appendFileSync as Lu,existsSync as $h,mkdirSync as Bu}from"node:fs";import{mkdir as Mu,readdir as Lh,readFile as ju,rename as Bh,rm as Uu,writeFile as po}from"node:fs/promises";import{basename as lo,dirname as Jr,join as Xt,resolve as Iu}from"node:path";function Qn(e){if(!e)return null;let t=Iu(e);for(;;){if($h(Xt(t,".red")))return t;let r=Iu(Xt(t,".."));if(r===t)break;t=r}return null}function ze(e){return Xt(V(e),oo)}function Zn(e){return Xt(V(e),ao)}function go(e){return Xt(V(e),co)}async function Ye(e,t){at(e,t)}function at(e,t){try{let r=Qn(e);if(!r)return;let n=ze(r);Bu(Jr(n),{recursive:!0}),Lu(n,Gh({spool_id:fo(),event:jh(t)}),{encoding:"utf8",mode:384})}catch{}}function jh(e){return Au(Au(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Au(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Mh)return e;let i={...e};return delete i[t],le(i[r])===0&&(i[r]=s),i.estimated=!0,i}async function Uh(e){let t=Qn(e);if(!t)return[];let r=ze(t);await Mu(Jr(r),{recursive:!0}).catch(()=>{});let n=await Gu(t),s=[...await Wu(t),...await Hh(n)];return await Promise.all(n.map(i=>Uu(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function ho(e,t){let r=Qn(e);if(!r)return;let n=ze(r);await Mu(Jr(n),{recursive:!0}).catch(()=>{}),await Wh(r);for(let s of await Jh(r))await Nu(r,s,t);for(let s of await Wu(r))await Ju(r,s,t,!0);for(let s of await Gu(r))await Nu(r,s,t)}async function Jh(e){let t=[ze(e),Zn(e)],r=Jr(t[0]);return(await Lh(r).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${lo(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${lo(c)}.`));if(!i)return!1;let o=`${lo(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Fh(a))}).sort().map(s=>Xt(r,s))}function Fh(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Nu(e,t,r){try{let n=await Fu(t);for(let s of Hu(n))await Ju(e,s,r,!1)}finally{await Uu(t,{force:!0})}}async function Ju(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&$u(e,{correction_id:fo(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}$u(e,{correction_id:fo(),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 Fu(e){let t="";for(let r=0;r<5;r++){let n=await ju(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function er(e){try{let t=JSON.parse(e);return!Zt(t)||t.collection!==re&&t.collection!==G&&t.collection!==ue&&t.collection!==Ne?null:t}catch{return null}}function Gh(e){return Rn().push(Kh(e))}function $u(e,t){try{let r=Qn(e);if(!r)return;let n=go(r);Bu(Jr(n),{recursive:!0});let s=Rn();Lu(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 Gu(e){let t=[ze(e),Zn(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Bh(n,s),await po(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return r}async function Wh(e){await Promise.all([po(ze(e),"",{flag:"a"}),po(Zn(e),"",{flag:"a"})]).catch(()=>{})}async function Hh(e){let t=[];for(let r of e)t.push(...Hu(await Fu(r)));return t}async function Wu(e){let t=await ju(go(e),"utf8").catch(()=>""),r=new Map;for(let n of qh(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:er(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function Hu(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let i=JSON.parse(s);if(Zt(i)){let o=er(JSON.stringify(i));t.push(o?{spool_id:Yn(JSON.stringify(i)),event:o}:{spool_id:Yn(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Yn(s),raw_line:s});continue}try{for(let i of _n(`${r}
45
45
  ${s}
46
- `))ji(i)&&Ig(i)&&t.push({spool_id:i.spool_id,event:uu(i)})}catch{s.startsWith("{")&&t.push({spool_id:An(s),raw_line:s})}}}return t}function Pg(e){return Cg(e).map(Ag).filter(t=>t!==null)}function Cg(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let i=JSON.parse(s);ji(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let i of rn(`${r}
46
+ `))mo(i)&&zh(i)&&t.push({spool_id:i.spool_id,event:qu(i)})}catch{s.startsWith("{")&&t.push({spool_id:Yn(s),raw_line:s})}}}return t}function qh(e){return Vh(e).map(Yh).filter(t=>t!==null)}function Vh(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let i=JSON.parse(s);mo(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let i of _n(`${r}
47
47
  ${s}
48
- `))ji(i)&&t.push(i)}catch{}}}return t}function An(e){return`legacy:${yg("sha256").update(e).digest("hex").slice(0,24)}`}function Dg(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 uu(e){let{spool_id:t,...r}=e;return Kt(JSON.stringify(r))}function Ig(e){return typeof e.spool_id=="string"&&uu(e)!==null}function Ag(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 Vt(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Rg,lu=_(()=>{"use strict";Be();ee();In();$i();Rg=64*1024});async function Bn(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await pu(e,s),o=(await Ir(e,G)).filter(S=>Qt(S)>=s),a=i.filter(S=>P(S.event_type)!=="show"&&P(S.degradation_reason)===""),c=i.filter(S=>P(S.event_type)==="show"),u=i.filter(S=>P(S.degradation_reason)!==""),l=0,f=0,d=0,m=0,h=!1,p=new Map,g=new Map,w=[],y=0,v=0,E=0;for(let S of a){S.elided===!0&&l++;let I=ue(S.raw_bytes),$e=ue(S.emitted_bytes),ut=Math.max(0,I-$e),Ct=Zt(S,"raw"),b=Zt(S,"emitted"),T=Math.max(0,Ct.tokens-b.tokens);h||=(S.estimated===!0||Ct.estimated||b.estimated)&&T>0,f+=I,d+=$e,m+=T;let lt=bt(S).slice(0,10);lt&&p.set(lt,(p.get(lt)??0)+T);let dt=P(S.command)||"unknown",de=g.get(dt)??{command:dt,invocations:0,bytes_saved:0,tokens_saved:0};de.invocations++,de.bytes_saved+=ut,de.tokens_saved+=T,g.set(dt,de);let fe=tt(S.wrapper_ms);fe!=null&&w.push(fe),y+=ue(S.store_open_count);let Dt=tt(S.store_elapsed_ms);Dt!=null&&(v+=Dt,E++)}let O=new Map,B=new Map,le=[],xe=null;for(let S of u){let I=P(S.degradation_reason)||P(S.reason)||"unknown",$e=P(S.wrapper_family)||Ln(P(S.command));O.set(I,(O.get(I)??0)+1),B.set($e,(B.get($e)??0)+1);let ut=bt(S);le.push({timestamp:ut,family:$e,command:P(S.command)||"unknown",reason:I,exit_code:tt(S.wrapper_exit_code),stderr_head:P(S.stderr_head)||null}),(!xe||ut>xe.timestamp)&&(xe={timestamp:ut,reason:I,command:P(S.command)||"unknown"})}let Q=a.length+u.length,ze=c.filter(S=>S.hit===!0).length,Z=ci(m,h),ir=Ng(o);return{window_days:n,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:m,tokens_saved_estimated:Z.tokens_saved_estimated,token_estimate_range_pct:Z.token_estimate_range_pct,tokens_saved_low:Z.tokens_saved_low,tokens_saved_high:Z.tokens_saved_high,dollars_saved_estimate_usd:Z.dollars_saved_estimate_usd,dollars_saved_low_usd:Z.dollars_saved_low_usd,dollars_saved_high_usd:Z.dollars_saved_high_usd,pricing_model_family:Z.pricing_model_family,pricing_input_usd_per_million_tokens:Z.pricing_input_usd_per_million_tokens,pricing_note:Z.pricing_note,daily_tokens_saved:[...p.entries()].sort(([S],[I])=>S.localeCompare(I)).map(([S,I])=>({date:S,tokens_saved:I})),top_commands:[...g.values()].sort((S,I)=>I.bytes_saved-S.bytes_saved||I.tokens_saved-S.tokens_saved||S.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:Q===0?0:u.length/Q,show_total:c.length,show_hits:ze,show_misses:Math.max(0,c.length-ze),show_hit_rate:c.length===0?0:V(ze/c.length),by_reason:[...O.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({reason:S,count:I})),by_family:[...B.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({family:S,count:I})),recent_failures:le.sort((S,I)=>I.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:xe},latency:{wrapper_ms_p50:Yt(w,.5),wrapper_ms_p95:Yt(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:V(v),store_elapsed_ms_avg:E===0?null:V(v/E)},decisions:ir}}function Ng(e){let t=0,r=0,n=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,o.quota_free===!0&&(s+=Math.max(1,ue(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.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:V(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Ji(e,t,r=new Date){let s=(await Ir(e,te)).filter(i=>Qt(i)<=r.getTime()||bt(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=bt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Gg(s)}}async function Gi(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),i=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await pu(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(Qt).filter(b=>Number.isFinite(b)&&b>0),m=d.length===0?null:Math.min(...d),h=m==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-m)/Zg()))),p=[],g=new Map,w=new Map,y=new Map,v=new Map,E=new Map,O=new Map,B=0,le=!1,xe=0,Q=null,ze=0,Z=0;for(let b of c){let T=bt(b),lt=T.slice(0,10),dt=T.slice(0,16),de=Ln(P(b.command)),fe=Math.max(0,Zt(b,"raw").tokens-Zt(b,"emitted").tokens);B+=fe,le||=b.estimated===!0&&fe>0;let Dt=Math.max(0,ue(b.raw_bytes)-ue(b.emitted_bytes)),Rs=tt(b.wrapper_ms);if(Rs!=null){p.push(Rs);let ia=g.get(de)??[];ia.push(Rs),g.set(de,ia)}lt&&w.set(lt,(w.get(lt)??0)+1),dt&&y.set(dt,(y.get(dt)??0)+1);let Ss=Vg(T);Ss&&v.set(Ss,(v.get(Ss)??0)+1);let xs=Yg(T);xs&&E.set(xs,(E.get(xs)??0)+fe);let en=O.get(de)??{command_family:de,invocations:0,tokens_saved:0,bytes_saved:0};en.invocations++,en.tokens_saved+=fe,en.bytes_saved+=Dt,O.set(de,en),b.elided===!0&&xe++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(ze++,ue(b.store_open_count)>0&&Z++),fe>0&&(!Q||fe>Q.tokens_saved||fe===Q.tokens_saved&&Dt>Q.bytes_saved)&&(Q={timestamp:T,command_family:de,tokens_saved:fe,bytes_saved:Dt})}let ir=f.map(b=>({timestamp:bt(b),command_family:Ln(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,T)=>b.timestamp.localeCompare(T.timestamp)),S=new Map;for(let b of ir)S.set(b.reason,(S.get(b.reason)??0)+1);let I=Mg(ir),$e=Bg(l),ut=Ug([...O.values()],$e,I),Ct=[...y.entries()].sort((b,T)=>T[1]-b[1]||b[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:h,since:i,until:s,label:`window: ${n}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:fu(p),by_command_family:[...g.entries()].sort((b,T)=>T[1].length-b[1].length||b[0].localeCompare(T[0])).map(([b,T])=>({command_family:b,count:T.length,...fu(T)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[T])=>b.localeCompare(T)).map(([b,T])=>({date:b,requests:T})),active_minute_avg:y.size===0?null:V([...y.values()].reduce((b,T)=>b+T,0)/y.size),peak_minute:Ct?{minute:Ct[0],requests:Ct[1]}:null,hour_weekday_heatmap:zg(v)},savings:{tokens:ci(B,le),measured_control_holdout:$g(c,u),weekly_tokens_saved:Qg(E),elision_rate:c.length===0?0:V(xe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,T)=>T.tokens_saved-b.tokens_saved||T.bytes_saved-b.bytes_saved||b.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,T)=>T.invocations-b.invocations||T.tokens_saved-b.tokens_saved||b.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:Q},health:{degradation_timeline:ir,degradations_by_reason:[...S.entries()].sort((b,T)=>T[1]-b[1]||b[0].localeCompare(T[0])).map(([b,T])=>({reason:b,count:T})),cold_boots:ze===0?null:Z,warm_hits:ze===0?null:Math.max(0,ze-Z)},mining:{recovery_usage_by_family:$e,degradation_clusters:I,threshold_tuning_suggestions:ut}}}async function pu(e,t){let r=(await Ir(e,te)).filter(o=>Qt(o)>=t),n=r.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await Ir(e,ce)).filter(o=>Qt(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await Ir(e,Ce)).filter(o=>Qt(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...r,...s,...i]}function Zt(e,t){let r=tt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ue(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function $g(e,t){let r=Jg(t.map(a=>tt(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(du).filter(a=>a!=null),s=t.map(du).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:V(Fg(i));return{enabled:!0,holdout_share:V(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Lg(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function du(e){let t=Zt(e,"raw").tokens;if(t<=0)return null;let r=Zt(e,"emitted").tokens;return Math.max(0,t-r)/t}function Lg(e,t){if(e.length<=1)return{low:V(Math.max(0,t)),high:V(Math.min(1,t))};let r=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:V(Math.max(0,t-n)),high:V(Math.min(1,t+n))}}function Bg(e){let t=new Map;for(let r of e){let n=Ln(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:V(r.show_hits/r.show_total)}))}function Mg(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:jg(r)}))}function jg(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 Ug(e,t,r){let n=[];for(let s of t.filter(i=>i.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(i=>i.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(i=>i.invocations>0&&i.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 Fg(e){return e.reduce((t,r)=>t+r,0)/e.length}function Jg(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Gg(e){let t=qg();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Hg(r.storage_class)??He(P(r.command));t[n].records+=1;let s=ue(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Hg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function qg(){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 Ir(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=>Wg(n.value)).filter(n=>Vt(n))}function Wg(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Qt(e){let t=Date.parse(bt(e));return Number.isFinite(t)?t:0}function bt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Yt(e,t){if(e.length===0)return null;let r=[...e].sort((s,i)=>s-i),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return V(r[n])}function fu(e){return{wrapper_ms_p50:Yt(e,.5),wrapper_ms_p90:Yt(e,.9),wrapper_ms_p95:Yt(e,.95),wrapper_ms_p99:Yt(e,.99)}}function V(e){return Math.round(e*100)/100}function Ln(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 Vg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Kg(t.getUTCDay())}:${t.getUTCHours()}`:null}function zg(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 Kg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Yg(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 Qg(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:V((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function Zg(){return 24*60*60*1e3}var mu=_(()=>{"use strict";et();ui();In();$i()});var Ar={};M(Ar,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>te,RSP_DECISIONS_COLLECTION:()=>G,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ce,RSP_TELEMETRY_INDEX_COLLECTION:()=>Cr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ce,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ai,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_FILE:()=>Ii,appendTelemetryEvent:()=>We,appendTelemetryEventSync:()=>rt,drainTelemetrySpool:()=>Fi,parseTelemetryEvent:()=>Kt,readAccountingLaneStats:()=>Ji,readTelemetryGainsReport:()=>Gi,readTelemetryStats:()=>Bn,takeTelemetrySpool:()=>xg,telemetryLegacySpoolPath:()=>$n,telemetrySpoolCorrectionsPath:()=>Ui,telemetrySpoolPath:()=>qe});var _e=_(()=>{"use strict";In();lu();mu()});var bu={};M(bu,{readGhConditionalJson:()=>re});import{spawn as sh}from"node:child_process";import{createHash as ih,randomUUID as oh}from"node:crypto";import{mkdir as ah,readFile as ch,rename as uh,writeFile as lh}from"node:fs/promises";import{dirname as dh,join as hu}from"node:path";async function re(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=mh(e.path,e.params),s=gh(n),i=await wh(r),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of yu(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await hh(a,t,e.env),u=yh(c.stdout);if(u.statusCode===304&&!!o)return await Yi(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let f=u.headers.get("etag");return f&&(i.entries[s]={key:s,request:n,etag:f,body:u.body,updated_at:new Date().toISOString()},await bh(r,i)),await Yi(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:f??void 0,quotaFree:!1}}return await Yi(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function yu(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function mh(e,t){return JSON.stringify({method:"GET",path:e,params:yu(t)})}function gh(e){return ih("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function hh(e,t,r){return await new Promise(n=>{let s=sh("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>n({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{n({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function yh(e){let t=e.replace(/\r\n/g,`
48
+ `))mo(i)&&t.push(i)}catch{}}}return t}function Yn(e){return`legacy:${Nh("sha256").update(e).digest("hex").slice(0,24)}`}function Kh(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 qu(e){let{spool_id:t,...r}=e;return er(JSON.stringify(r))}function zh(e){return typeof e.spool_id=="string"&&qu(e)!==null}function Yh(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 mo(e){return Zt(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Mh,Vu=b(()=>{"use strict";De();te();zn();uo();Mh=64*1024});async function es(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await Yu(e,s),o=(await Fr(e,G)).filter(S=>rr(S)>=s),a=i.filter(S=>P(S.event_type)!=="show"&&P(S.degradation_reason)===""),c=i.filter(S=>P(S.event_type)==="show"),u=i.filter(S=>P(S.degradation_reason)!==""),l=0,d=0,f=0,m=0,h=!1,p=new Map,g=new Map,y=[],w=0,v=0,k=0;for(let S of a){S.elided===!0&&l++;let I=le(S.raw_bytes),Ue=le(S.emitted_bytes),mt=Math.max(0,I-Ue),Bt=nr(S,"raw"),_=nr(S,"emitted"),T=Math.max(0,Bt.tokens-_.tokens);h||=(S.estimated===!0||Bt.estimated||_.estimated)&&T>0,d+=I,f+=Ue,m+=T;let gt=Et(S).slice(0,10);gt&&p.set(gt,(p.get(gt)??0)+T);let ht=P(S.command)||"unknown",fe=g.get(ht)??{command:ht,invocations:0,bytes_saved:0,tokens_saved:0};fe.invocations++,fe.bytes_saved+=mt,fe.tokens_saved+=T,g.set(ht,fe);let pe=ot(S.wrapper_ms);pe!=null&&y.push(pe),w+=le(S.store_open_count);let Mt=ot(S.store_elapsed_ms);Mt!=null&&(v+=Mt,k++)}let O=new Map,B=new Map,de=[],ve=null;for(let S of u){let I=P(S.degradation_reason)||P(S.reason)||"unknown",Ue=P(S.wrapper_family)||Xn(P(S.command));O.set(I,(O.get(I)??0)+1),B.set(Ue,(B.get(Ue)??0)+1);let mt=Et(S);de.push({timestamp:mt,family:Ue,command:P(S.command)||"unknown",reason:I,exit_code:ot(S.wrapper_exit_code),stderr_head:P(S.stderr_head)||null}),(!ve||mt>ve.timestamp)&&(ve={timestamp:mt,reason:I,command:P(S.command)||"unknown"})}let Z=a.length+u.length,Xe=c.filter(S=>S.hit===!0).length,X=Li(m,h),gr=Qh(o);return{window_days:n,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:d,emitted_bytes:f,bytes_saved:Math.max(0,d-f),tokens_saved:m,tokens_saved_estimated:X.tokens_saved_estimated,token_estimate_range_pct:X.token_estimate_range_pct,tokens_saved_low:X.tokens_saved_low,tokens_saved_high:X.tokens_saved_high,dollars_saved_estimate_usd:X.dollars_saved_estimate_usd,dollars_saved_low_usd:X.dollars_saved_low_usd,dollars_saved_high_usd:X.dollars_saved_high_usd,pricing_model_family:X.pricing_model_family,pricing_input_usd_per_million_tokens:X.pricing_input_usd_per_million_tokens,pricing_note:X.pricing_note,daily_tokens_saved:[...p.entries()].sort(([S],[I])=>S.localeCompare(I)).map(([S,I])=>({date:S,tokens_saved:I})),top_commands:[...g.values()].sort((S,I)=>I.bytes_saved-S.bytes_saved||I.tokens_saved-S.tokens_saved||S.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:Z===0?0:u.length/Z,show_total:c.length,show_hits:Xe,show_misses:Math.max(0,c.length-Xe),show_hit_rate:c.length===0?0:z(Xe/c.length),by_reason:[...O.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({reason:S,count:I})),by_family:[...B.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({family:S,count:I})),recent_failures:de.sort((S,I)=>I.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:ve},latency:{wrapper_ms_p50:tr(y,.5),wrapper_ms_p95:tr(y,.95),store_open_count_sum:w,store_elapsed_ms_sum:z(v),store_elapsed_ms_avg:k===0?null:z(v/k)},decisions:gr}}function Qh(e){let t=0,r=0,n=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,o.quota_free===!0&&(s+=Math.max(1,le(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.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:z(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function yo(e,t,r=new Date){let s=(await Fr(e,re)).filter(i=>rr(i)<=r.getTime()||Et(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=Et(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:oy(s)}}async function wo(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),i=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await Yu(e,o),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"),d=a.filter(_=>P(_.degradation_reason)!==""),f=[...c,...d].map(rr).filter(_=>Number.isFinite(_)&&_>0),m=f.length===0?null:Math.min(...f),h=m==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-m)/gy()))),p=[],g=new Map,y=new Map,w=new Map,v=new Map,k=new Map,O=new Map,B=0,de=!1,ve=0,Z=null,Xe=0,X=0;for(let _ of c){let T=Et(_),gt=T.slice(0,10),ht=T.slice(0,16),fe=Xn(P(_.command)),pe=Math.max(0,nr(_,"raw").tokens-nr(_,"emitted").tokens);B+=pe,de||=_.estimated===!0&&pe>0;let Mt=Math.max(0,le(_.raw_bytes)-le(_.emitted_bytes)),Vs=ot(_.wrapper_ms);if(Vs!=null){p.push(Vs);let Ma=g.get(fe)??[];Ma.push(Vs),g.set(fe,Ma)}gt&&y.set(gt,(y.get(gt)??0)+1),ht&&w.set(ht,(w.get(ht)??0)+1);let Ks=ly(T);Ks&&v.set(Ks,(v.get(Ks)??0)+1);let zs=py(T);zs&&k.set(zs,(k.get(zs)??0)+pe);let wn=O.get(fe)??{command_family:fe,invocations:0,tokens_saved:0,bytes_saved:0};wn.invocations++,wn.tokens_saved+=pe,wn.bytes_saved+=Mt,O.set(fe,wn),_.elided===!0&&ve++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(Xe++,le(_.store_open_count)>0&&X++),pe>0&&(!Z||pe>Z.tokens_saved||pe===Z.tokens_saved&&Mt>Z.bytes_saved)&&(Z={timestamp:T,command_family:fe,tokens_saved:pe,bytes_saved:Mt})}let gr=d.map(_=>({timestamp:Et(_),command_family:Xn(P(_.command)),reason:P(_.degradation_reason)||P(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),S=new Map;for(let _ of gr)S.set(_.reason,(S.get(_.reason)??0)+1);let I=ty(gr),Ue=ey(l),mt=ny([...O.values()],Ue,I),Bt=[...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:i,until:s,label:`window: ${n}d, data: ${h}d`,empty:c.length===0&&d.length===0,invocations:c.length,degradations:d.length},latency:{global:zu(p),by_command_family:[...g.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...zu(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:w.size===0?null:z([...w.values()].reduce((_,T)=>_+T,0)/w.size),peak_minute:Bt?{minute:Bt[0],requests:Bt[1]}:null,hour_weekday_heatmap:dy(v)},savings:{tokens:Li(B,de),measured_control_holdout:Zh(c,u),weekly_tokens_saved:my(k),elision_rate:c.length===0?0:z(ve/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:Z},health:{degradation_timeline:gr,degradations_by_reason:[...S.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:Xe===0?null:X,warm_hits:Xe===0?null:Math.max(0,Xe-X)},mining:{recovery_usage_by_family:Ue,degradation_clusters:I,threshold_tuning_suggestions:mt}}}async function Yu(e,t){let r=(await Fr(e,re)).filter(o=>rr(o)>=t),n=r.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await Fr(e,ue)).filter(o=>rr(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await Fr(e,Ne)).filter(o=>rr(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...r,...s,...i]}function nr(e,t){let r=ot(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=le(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function Zh(e,t){let r=iy(t.map(a=>ot(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(Ku).filter(a=>a!=null),s=t.map(Ku).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:z(sy(i));return{enabled:!0,holdout_share:z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Xh(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Ku(e){let t=nr(e,"raw").tokens;if(t<=0)return null;let r=nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function Xh(e,t){if(e.length<=1)return{low:z(Math.max(0,t)),high:z(Math.min(1,t))};let r=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:z(Math.max(0,t-n)),high:z(Math.min(1,t+n))}}function ey(e){let t=new Map;for(let r of e){let n=Xn(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:z(r.show_hits/r.show_total)}))}function ty(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:ry(r)}))}function ry(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 ny(e,t,r){let n=[];for(let s of t.filter(i=>i.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(i=>i.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(i=>i.invocations>0&&i.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 sy(e){return e.reduce((t,r)=>t+r,0)/e.length}function iy(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function oy(e){let t=cy();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=ay(r.storage_class)??Ve(P(r.command));t[n].records+=1;let s=le(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function ay(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function cy(){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 Fr(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=>uy(n.value)).filter(n=>Zt(n))}function uy(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function rr(e){let t=Date.parse(Et(e));return Number.isFinite(t)?t:0}function Et(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function tr(e,t){if(e.length===0)return null;let r=[...e].sort((s,i)=>s-i),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return z(r[n])}function zu(e){return{wrapper_ms_p50:tr(e,.5),wrapper_ms_p90:tr(e,.9),wrapper_ms_p95:tr(e,.95),wrapper_ms_p99:tr(e,.99)}}function z(e){return Math.round(e*100)/100}function Xn(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 ly(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${fy(t.getUTCDay())}:${t.getUTCHours()}`:null}function dy(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 fy(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function py(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 my(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function gy(){return 24*60*60*1e3}var Qu=b(()=>{"use strict";Ke();Bi();zn();uo()});var Gr={};M(Gr,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>re,RSP_DECISIONS_COLLECTION:()=>G,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ne,RSP_TELEMETRY_INDEX_COLLECTION:()=>Ur,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ue,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>ao,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>co,RSP_TELEMETRY_SPOOL_FILE:()=>oo,appendTelemetryEvent:()=>Ye,appendTelemetryEventSync:()=>at,drainTelemetrySpool:()=>ho,parseTelemetryEvent:()=>er,readAccountingLaneStats:()=>yo,readTelemetryGainsReport:()=>wo,readTelemetryStats:()=>es,takeTelemetrySpool:()=>Uh,telemetryLegacySpoolPath:()=>Zn,telemetrySpoolCorrectionsPath:()=>go,telemetrySpoolPath:()=>ze});var xe=b(()=>{"use strict";zn();Vu();Qu()});function To(e){return e==="success"?0:e==="failure"?1:2}function Oo(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Qe(e,t,r){return{status:e,exitCode:To(e),summary:t,...r?{details:r}:{}}}function W(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function ir(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Xu,el,tl,ko,rl,nl,sl,il,vo,kt=b(()=>{"use strict";Xu="rsp.wait.result",el="rsp.wait.registry",tl="rsp.wait.list",ko={cmd:18e5,pr:27e5,run:27e5,release:72e5},rl=16*1024,nl=1e4,sl=2e3,il=6e4,vo={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 Ry,readFile as Sy}from"node:fs/promises";async function ss(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await ns(r),s=[r,...n];if(s.every(c=>!vt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ol(e,"SIGTERM"),rs(n,"SIGTERM"),await al(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let i=[...new Set([...s,...await ns(r)])];ol(e,"SIGKILL"),rs(i,"SIGKILL");let o=Math.max(1e3,t);await xy(e,o);let a=await al(i,o);return{cleaned:a,escalation:"kill",survivors:a?[]:i.filter(vt)}}function ol(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 rs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function xy(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 al(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!vt(n)))return!0;await Ey(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!vt(n))}async function ns(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await Ry("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let i=Number(s),o=await cl(i);if(!o)continue;let a=Number(o[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(i),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 Wr(e){return(await cl(e))?.[19]}async function is(e,t){if(!vt(e))return!1;if(!t)return!0;let r=await Wr(e);return r===void 0?process.platform!=="linux":r===t}function vt(e){try{return process.kill(e,0),!0}catch{return!1}}async function cl(e){if(process.platform!=="linux")return null;try{let t=await Sy(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function Ey(e){await new Promise(t=>setTimeout(t,e))}async function ul(e,t){t.aborted||e<=0||await new Promise(r=>{let n=setTimeout(i,e),s=()=>i();function i(){clearTimeout(n),t.removeEventListener("abort",s),r()}t.addEventListener("abort",s,{once:!0})})}var Tt=b(()=>{"use strict"});import{constants as ky}from"node:os";async function ll(e){let t=e[1],r={timeoutMs:ko.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:nl,terminateGraceMs:sl,probeTimeoutMs:il,format:"toon",captureBytes:rl},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=ko[t]);let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?r.timeoutMs=Hr(e[++o]??""):a==="--reason"?r.reason=e[++o]??"":a==="--signal-pid"?r.signalPid=Number(e[++o]):a==="--signal"?r.signal=Oy(e[++o]??""):a==="--notify-cmd"?r.notifyCmd=e[++o]??"":a==="--notify-timeout"?r.notifyTimeoutMs=Hr(e[++o]??""):a==="--terminate-grace"?r.terminateGraceMs=Hr(e[++o]??""):a==="--probe-timeout"?r.probeTimeoutMs=Hr(e[++o]??""):a==="--result-file"?r.resultFile=e[++o]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Ty(e[++o]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++o]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++o]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await vy(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function vy(e){if(!(e.signal in ky.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(!vt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await Wr(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function Hr(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 qr(e,t,r=process.env){let n=r[e];if(!n)return t;try{return Hr(n)}catch{return t}}function Ty(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Oy(e){return e.startsWith("SIG")?e:`SIG${e}`}var dl=b(()=>{"use strict";kt();Tt()});import{existsSync as Po,readFileSync as Py,statSync as Cy}from"node:fs";import{basename as fl,dirname as os,isAbsolute as Dy,join as Co,resolve as Vr}from"node:path";function Ay(e,t=process.env){let r=Vr(e);if(pi.map(o=>t[o]).find(Boolean))return _c({startDir:r,env:t,exists:Po});let s=$y(r),i=Ny(r,s);return i||(s??r)}function Ny(e,t){let r=e;for(;;){if(Po(Co(r,".red")))return r;if(t&&r===t)return null;let n=Vr(r,"..");if(n===r)return null;r=n}}function or(e,t=process.env){return bc(Ay(e,t))}function pl(e,t=process.env){return Co(or(e,t),Iy)}function $y(e){let t=e;for(;;){let r=Co(t,".git");if(Po(r))return My(r)?t:Ly(r)??t;let n=Vr(t,"..");if(n===t)return null;t=n}}function Ly(e){let t=By(e);if(!t)return null;let r=os(t),n=os(r);return fl(r)!=="worktrees"||fl(n)!==".git"?null:os(n)}function By(e){let t;try{t=Py(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Dy(n)?Vr(n):Vr(os(e),n)}function My(e){try{return Cy(e).isDirectory()}catch{return!1}}var Iy,Do=b(()=>{"use strict";De();Iy="spool"});import{randomUUID as jy}from"node:crypto";import{existsSync as Uy}from"node:fs";import{mkdir as Jy,readdir as Fy,readFile as Gy,rename as Wy,rm as Io,writeFile as Hy}from"node:fs/promises";import{dirname as qy,join as gl}from"node:path";function hl(e,t,r=process.env){return gl(or(e,r),`${t}${Vy}`)}async function ar(e,t){await Ao(e,`${j(t)}
49
+ `)}async function as(e,t,r){t.status=r,await ar(e,t)}async function cs(e,t=process.env){let r=or(e,t);if(!Uy(r))return[];let n=await Fy(r).catch(()=>[]),s=[];for(let i of n.filter(o=>Ky.some(a=>o.endsWith(a)))){let o=gl(r,i),a=await zy(o);if(!a){await Io(o,{force:!0});continue}if(!await Yy(a)){await Io(o,{force:!0});continue}s.push(a)}return s}async function zy(e){let t;try{t=await Gy(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Qy(r);return n&&Object.keys(n).length>0?n:null}async function Yy(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 is(t,r)}function Qy(e){try{let t=F(e);if(ml(t))return t}catch{}try{let t=JSON.parse(e);if(ml(t))return t}catch{}return null}async function Ao(e,t){await Jy(qy(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${jy()}`;try{await Hy(r,t,"utf8"),await Wy(r,e)}finally{await Io(r,{force:!0})}}function No(e){return{schema:el,version:1,...e}}function ml(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vy,Ky,zr=b(()=>{"use strict";te();Ie();kt();Do();Tt();Vy=".toon",Ky=[".toon",".json"]});function cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $e(e){return cr(e)?e:{}}function Ot(e){return Array.isArray(e)?e.filter(cr):[]}function H(e,t){let r=e[t];return typeof r=="string"?r:""}function ur(e,t){let r=e[t];return typeof r=="number"?r:0}function $o(e){let t=JSON.parse(e);if(!cr(t))throw new Error("expected JSON object");return t}function us(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var ls=b(()=>{"use strict"});import{spawn as Zy}from"node:child_process";import{resolve as Xy}from"node:path";async function yl(e,t,r){let n=[];if(e.signalPid){let s=await ew(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await tw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function ew(e){let t=e.signalPid;if(!await is(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:wl(r),pid:t,signal:e.signal}}}async function tw(e,t,r){let n=$e(t.wait),s=$e(t.verdict);return await rw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Xy(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 rw(e,t,r,n,s){return await new Promise(i=>{let o=!1,a=!1,c=d=>{o||(o=!0,i(d))},u=Zy(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,ss(u,n).then(d=>c({error:`timed out after ${r}ms`,...d.cleaned?{}:{survivors:d.survivors}}))},r);u.once("error",d=>{clearTimeout(l),c({error:wl(d)})}),u.once("close",(d,f)=>{clearTimeout(l),!a&&c(d===0?null:{error:`exited with ${f??d??"unknown"}`,status:d??null,signal:f??null})})})}function wl(e){return e instanceof Error?e.message:String(e)}var bl=b(()=>{"use strict";ls();Tt()});import{resolve as nw}from"node:path";async function _l(e){let{kind:t,entry:r,options:n,cwd:s}=e,i=sw(e.verdict,e.cleanupProven,e.survivors),o=new Date().toISOString(),a=Yr(t,r,i,{status:"pending"},o);await Qr(n.resultFile,a,n.format);let c=await yl(n,a,s),u=Yr(t,r,i,c,o);return await Qr(n.resultFile,u,n.format),{result:u,exitCode:Rl(i,c)}}function Rl(e,t){return t.status!=="success"||e.status==="running"?2:To(e.status)}function sw(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 Yr(e,t,r,n,s){return{schema:Xu,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:Rl(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function Qr(e,t,r){e&&await Ao(nw(e),lr(t,r))}function lr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
50
+ `:`${j(e)}
51
+ `}var Sl=b(()=>{"use strict";Ie();kt();zr();bl()});import{createWriteStream as iw,mkdirSync as ow}from"node:fs";import{readFile as aw,rm as cw}from"node:fs/promises";import{dirname as uw}from"node:path";import{join as xl}from"node:path";function El(e,t,r){return{stdout:new ds(r,xl(e,`${t}.stdout.bin`)),stderr:new ds(r,xl(e,`${t}.stderr.bin`))}}function lw(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!dw(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function dw(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var ds,kl=b(()=>{"use strict";ds=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,i={bytes:this.total,...lw(n),truncated:s};if(!s)return await this.discardSpool(),i;if(await this.closeSpool(),this.spoolError)return i.recovery_error=this.spoolError,i;try{let o=await aw(this.spoolPath);i.handle=await t.mint(Buffer.concat([n,o]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(o){i.recovery_error=o instanceof Error?o.message:String(o),i.spool_path=this.spoolPath}return i}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{ow(uw(this.spoolPath),{recursive:!0}),t=iw(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 cw(this.spoolPath,{force:!0}).catch(()=>{})}}});function vl(e,t=process.env){return{async mint(r,n){let s=Re(e,t),i=await it.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget});try{return await i.mint(r,n)}finally{await i.close()}}}}var Tl=b(()=>{"use strict";Se();Ke()});import{spawn as fw}from"node:child_process";async function Pl(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:i,signal:o}=e;if(!t.trim())return{verdict:W("missing command line")};let a=e.store??vl(n),c=El(e.spoolDir,i.id,r.captureBytes);return await new Promise(u=>{let l=!1,d=!1,f=async y=>{l||(l=!0,o.removeEventListener("abort",p),await as(s,i,y.verdict.status).catch(()=>{}),u(y))},m=fw(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});m.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),m.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let h=async(y,w)=>{if(l||d)return;d=!0,clearTimeout(g);let v=await ss(m,r.terminateGraceMs),k=await Ol(null,null,c,a,t);await f({verdict:{status:y,exitCode:2,summary:w,details:k},cleanupProven:v.cleaned,survivors:v.survivors})},p=()=>void h("indeterminate","command interrupted");o.addEventListener("abort",p,{once:!0});let g=setTimeout(()=>{h("timeout",`command timed out after ${Cl(r.timeoutMs)}`)},r.timeoutMs);m.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),f({verdict:{status:"failure",exitCode:1,summary:y.message}})}),m.once("close",(y,w)=>{if(clearTimeout(g),l||d)return;let v=y===0;Ol(y,w,c,a,t).then(k=>f({verdict:{status:v?"success":"failure",exitCode:v?0:1,summary:v?"command exited successfully":`command exited with ${w??y??"unknown"}`,details:k}}))}),o.aborted&&p()})}async function fs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:i,signal:o}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(o.aborted)return{verdict:pw(u,c,i.last_poll_at)};let l;try{l=await t()}catch(m){l=W(m instanceof Error?m.message:String(m))}if(u=l,i.attempts=++c,i.last_poll_at=new Date().toISOString(),i.last_observation=Lo(l),await ar(s,i).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await as(s,i,l.status).catch(()=>{}),{verdict:l};let d=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),f=Math.floor(Math.random()*1e3);await ul(Math.min(d+f,Math.max(0,a-Date.now())),o)}return await as(s,i,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Cl(r)}`,details:u?{attempts:c,last_poll_at:i.last_poll_at??null,last_observation:Lo(u)}:{attempts:c}}}}async function Ol(e,t,r,n,s){let[i,o]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:i,stderr:o}}function Lo(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function pw(e,t,r){return W("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Lo(e)}:{}})}function Cl(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Dl=b(()=>{"use strict";kl();Tl();kt();Tt();zr()});var $l={};M($l,{readGhConditionalJson:()=>ne});import{spawn as mw}from"node:child_process";import{createHash as gw,randomUUID as hw}from"node:crypto";import{mkdir as yw,readFile as ww,rename as bw,writeFile as _w}from"node:fs/promises";import{dirname as Rw,join as Il}from"node:path";async function ne(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=Ew(e.path,e.params),s=kw(n),i=await Ow(r),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[d,f]of Al(e.params))a.push("-f",`${d}=${String(f)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await vw(a,t,e.env,e.signal),u=Tw(c.stdout);if(u.statusCode===304&&!!o)return await Bo(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let d=u.headers.get("etag");return d&&(i.entries[s]={key:s,request:n,etag:d,body:u.body,updated_at:new Date().toISOString()},await Pw(r,i)),await Bo(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:d??void 0,quotaFree:!1}}return await Bo(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Al(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function Ew(e,t){return JSON.stringify({method:"GET",path:e,params:Al(t)})}function kw(e){return gw("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function vw(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let i=!1,o=d=>{i||(i=!0,n?.removeEventListener("abort",c),s(d))},a=mw("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=[],l=[];a.stdout.on("data",d=>u.push(Buffer.from(d))),a.stderr.on("data",d=>l.push(Buffer.from(d))),a.once("error",d=>o({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{o({status:d??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function Tw(e){let t=e.replace(/\r\n/g,`
49
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]),i=n.index+n[0].length,o=t.indexOf(`
50
53
 
51
54
  `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
52
- `)){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:o>=0?t.slice(o+2):""}}async function wh(e){for(let t of[wu(e),_h(e)])try{let r=Rh(await ch(t,"utf8"));if(Sh(r))return r}catch{}return{version:1,entries:{}}}async function bh(e,t){let r=wu(e);await ah(dh(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await lh(n,`${C(t)}
53
- `,{encoding:"utf8",mode:384}),await uh(n,r)}function wu(e){return hu(q(e),fh)}function _h(e){return hu(q(e),ph)}function Rh(e){try{return JSON.parse(e)}catch{return J(e)}}async function Yi(e,t,r){await We(e,{collection:G,id:oh(),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 Sh(e){return Qi(e)&&e.version===1&&Qi(e.entries)&&Object.values(e.entries).every(xh)}function xh(e){return Qi(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Qi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fh,ph,jn=_(()=>{"use strict";Be();ee();_e();fh="gh-etag-cache.toon",ph="gh-etag-cache.json"});var oo={};M(oo,{listWaits:()=>ku,renderWaitHelp:()=>ro,runWait:()=>Ch});import{spawn as so}from"node:child_process";import{existsSync as to}from"node:fs";import{mkdir as kh,readdir as Eh,readFile as Th,rm as xu,writeFile as vh}from"node:fs/promises";import{join as Lr,resolve as Zi}from"node:path";import{randomUUID as Oh}from"node:crypto";async function Ch(e,t=process.cwd()){let r=Ih(e);if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(ro()),0;if(r.kind==="ls")return process.stdout.write(`${j({waits:await ku(t)})}
54
- `),0;if(!Dh(r.kind))return process.stdout.write(ro()),2;let n=r.kind,s={id:Oh(),target:Wh(r),reason:r.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Ph[r.kind],status:"running"},i=Lr(await no(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await kh(await no(t),{recursive:!0}),await Eu(i,s),o=await Ah({...r,kind:n},t,i,s),process.stdout.write(`${j(qh(n,s,o))}
55
- `),await Hh(r.options),o.exitCode}finally{await xu(i,{force:!0})}}function Dh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ro(){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.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
56
- `)}function Ih(e){let t=e[1],r={timeoutMs:_u.cmd,reason:"",signal:"SIGUSR1"},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t==="ls")return n;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};r.timeoutMs=_u[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?r.timeoutMs=Tu(e[++o]??""):a==="--reason"?r.reason=e[++o]??"":a==="--signal-pid"?r.signalPid=Number(e[++o]):a==="--signal"?r.signal=Kh(e[++o]??""):a==="--notify-cmd"?r.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?n.branch=e[++o]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++o]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Ah(e,t,r,n){switch(e.kind){case"cmd":return await Nh(e.commandLine??"",e.options.timeoutMs,t,r,n);case"pr":return await Xi($h(e.target??"",t,{emptyChecksGraceMs:Su("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Su("RSP_WAIT_PR_POLL_MS",15e3),r,n);case"run":return await Xi(()=>Bh(e,t),e.options.timeoutMs,15e3,r,n);case"release":return await Xi(()=>jh(e.tagGlob,new Date(n.started_at),t),e.options.timeoutMs,6e4,r,n)}}async function Nh(e,t,r,n,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=so(e,{cwd:r,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),$r(n,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${vu(t)}`})},t);c.once("error",l=>{clearTimeout(u),$r(n,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,f)=>{if(clearTimeout(u),o)return;let d=l===0;$r(n,s,d?"success":"failure"),a({status:d?"success":"failure",exitCode:d?0:1,summary:d?"command exited successfully":`command exited with ${f??l??"unknown"}`,details:{status:l??null,signal:f??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Xi(e,t,r,n,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await $r(n,s,a.status),a;let c=Math.min(r*4,Math.round(r*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Zh(Math.min(c,Math.max(0,i-Date.now())))}return await $r(n,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${vu(t)}`}}function $h(e,t,r){let n=Date.now();return()=>Lh(e,t,r,n)}async function Lh(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Fn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=io(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Vh),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return _t("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return _t("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let f=Date.now()-n;return a==="UNKNOWN"||f<r.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:f}}:_t("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:_t("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Bh(e,t){let r=e.target??(e.latest&&e.branch?await Mh(e.branch,t):"");if(!r)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let n=await Fn(["run","view",r,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh run view failed"};let s=io(n.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${r} is ${i||"pending"}`}:o==="success"?_t("success",`run ${r} succeeded`,Ru(s)):_t("failure",`run ${r} concluded ${o||"unknown"}`,Ru(s))}async function Mh(e,t){let r=await Fn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return Rt(s)&&s.databaseId!=null?String(s.databaseId):""}async function jh(e,t,r){let n=await Fn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh release list failed"};let s=JSON.parse(n.stdout),o=(Array.isArray(s)?s.filter(Rt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Yh(e,c))&&u>=t});return o?_t("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function Fn(e,t){let r=await Uh(e,t);return r||await new Promise(n=>{let s=so("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>n({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{n({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function Uh(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Fh(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await re({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let n=er(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Nr(n,"database_id")||Nr(n,"id"),status:z(n,"status").toUpperCase(),conclusion:z(n,"conclusion").toUpperCase(),workflowName:z(n,"workflow_name")||z(n,"name"),headBranch:z(n,"head_branch"),url:z(n,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=eo(e,"--branch"),n=eo(e,"--limit")??"20",s=await re({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=Un(er(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Nr(o,"database_id")||Nr(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=eo(e,"--limit")??"20",n=await re({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Un(JSON.parse(n.stdout)).map(i=>({tagName:z(i,"tag_name"),publishedAt:z(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:n.stderr}}return null}async function Fh(e,t){let r=await re({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(r.status!==0)return r;let n=er(JSON.parse(r.stdout));if(Array.isArray(n.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let s=z(er(n.head),"sha"),[i,o]=s?await Promise.all([re({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),re({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?Un(er(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Un(er(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,o.stderr].filter(Boolean).join(`
57
- `),stdout:JSON.stringify({number:Nr(n,"number"),state:z(n,"state").toUpperCase(),mergeable:Jh(n),statusCheckRollup:[...a.map(u=>({conclusion:z(u,"state").toUpperCase()})),...c.map(u=>({status:z(u,"status").toUpperCase(),conclusion:z(u,"conclusion").toUpperCase()}))],url:z(n,"html_url")})}}function Jh(e){let t=z(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function ku(e){let t=await no(e);if(!to(t))return[];let r=await Eh(t).catch(()=>[]),n=[];for(let s of r.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Lr(t,s),o=zh(await Th(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Qh(a)){await xu(i,{force:!0});continue}n.push(o)}return n}async function no(e){return Lr(await Gh(e),".red","tmp","waits")}async function Gh(e){let t=Zi(e);for(;;){if(to(Lr(t,".red"))||to(Lr(t,".git")))return t;let r=Zi(t,"..");if(r===t)return Zi(e);t=r}}async function $r(e,t,r){await Eu(e,{...t,status:r}).catch(()=>{})}async function Eu(e,t){await vh(e,`${j(t)}
58
- `,"utf8")}async function Hh(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let r=so(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});r.once("error",()=>t()),r.once("close",()=>t())})}function qh(e,t,r){return{wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:r.exitCode,summary:r.summary,...r.details?{details:r.details}:{}}}}function _t(e,t,r){return{status:e,exitCode:e==="success"?0:1,summary:t,details:r}}function Wh(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??""}`}function Vh(e){let t=Rt(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 Ru(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 io(e){let t=JSON.parse(e);if(!Rt(t))throw new Error("expected JSON object");return t}function zh(e){let t=e.trim();if(!t)return{};try{return io(t)}catch{let r=J(t);if(!Rt(r))throw new Error("expected structured object");return r}}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function er(e){return Rt(e)?e:{}}function Un(e){return Array.isArray(e)?e.filter(Rt):[]}function z(e,t){let r=e[t];return typeof r=="string"?r:""}function Nr(e,t){let r=e[t];return typeof r=="number"?r:0}function eo(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function Tu(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 Su(e,t){let r=process.env[e];if(!r)return t;try{return Tu(r)}catch{return t}}function Kh(e){return e.startsWith("SIG")?e:`SIG${e}`}function vu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Yh(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}function Qh(e){try{return process.kill(e,0),!0}catch{return!1}}async function Zh(e){await new Promise(t=>setTimeout(t,e))}var _u,Ph,ao=_(()=>{"use strict";ee();Me();jn();_u={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Ph={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Gn={};M(Gn,{parseProxyCommandLine:()=>Au,rewriteProxyCommandLine:()=>Iu,runProxy:()=>sy});import{spawn as ny}from"node:child_process";async function sy(e,t){let r="",n="",s=[],i=process.hrtime.bigint();try{if(r=Au(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Iu(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await iy(t.telemetryRoot,r,c),await Cu(r);throw c}for(let c of s)await oy(t.telemetryRoot,c);let o=await Cu(n||r),a=Number(process.hrtime.bigint()-i)/1e6;return await We(t.telemetryRoot,{collection:ce,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Iu(e,t="lossless"){let r=fy(e),n=[];return{commandLine:r.map((i,o)=>{if(i.kind==="operator"||dy(r,o)==="|")return i.text;let a=ay(i.text,t);return a?(n.push(a.match),a.text):i.text}).join(""),matches:n}}function Au(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 iy(e,t,r){await We(e,{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:uo(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function oy(e,t){await We(e,{collection:G,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 Cu(e){let t=ny(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
59
- `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function ay(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=my(s);if(!i)return null;let o=ly(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(m=>m.value);if(Jn(c))return{text:e,match:{command:a.map(m=>m.raw).join(" "),commandFamily:uo(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=cy(a);if(!u)return null;let l=i.slice(0,o).map(m=>m.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(m=>m.raw).join(" "),commandFamily:uo(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function cy(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}:uy(t,r)}function uy(e,t){return e[0]==="cat"&&e.length===2&&co(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&co(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])&&co(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function co(e){return!!e&&!e.startsWith("-")}function ly(e){let t=0;for(;t<e.length&&Du(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Du(e[t].value);)t+=1;return t}function dy(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function fy(e){let t=[],r=0,n,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(n){o===n&&(n=void 0);continue}if(o==="'"||o==='"'){n=o;continue}let a=py(e,i);a&&(i>r&&t.push({kind:"segment",text:e.slice(r,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,r=i+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function py(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 my(e){let t=[],r="",n="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:r,value:n}),r="",n="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){r+=u,n+=u,i=!1,o=!0;continue}if(u==="\\"){r+=u,i=!0,o=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,o=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,o=!0}return s||i?null:(a(),t)}function uo(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Jn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Jn(t)&&t[1]?`gh ${t[1]} json-jq`:Jn(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 Jn(e){return e[0]==="gh"&&e.some(gy)}function gy(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Du(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Hn=_(()=>{"use strict";_e()});function Lu(e,t={}){let r=hy(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))n.set(m,(n.get(m)??0)+1)}let i=r.map(d=>d.length),o=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=lo(i),u=lo(o),l=lo(a),f=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>Sy(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:fo(d.length,c)+fo(d.tokens.length,u)+fo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+_y(d.tokens,n,r.length)+Ry(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function hy(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(Nu(n++,r,i,e.slice(r,i).replace(/\r$/,""))),r=i+1}return(r<e.length||e.length===0)&&t.push(Nu(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Nu(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:yy(n),tokens:wy(n),numbers:by(n),length:n.length}}function yy(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 wy(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function by(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function _y(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(i=>Math.log2(r/Math.max(1,t.get(i)??r))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function Ry(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function lo(e){let t=$u(e),r=$u(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function fo(e,t){return Math.abs(e-t.median)/t.mad}function $u(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 Sy(e,t,r,n){return e<n&&r<t}var Bu=_(()=>{"use strict"});var po={};M(po,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Je,GIT_LOG_MACHINE_FIELDS:()=>ju,StructuredUsageError:()=>qn,cleanStatusPayload:()=>Gu,recoveryInstruction:()=>Re,renderGitContract:()=>Uu,runGitWrapper:()=>ky});import{spawn as xy}from"node:child_process";async function ky(e,t){let r=Fu(e),n=Ju(r.argv),s=await Oy(n,r.argv.slice(1));return Uu(e,s,t)}async function Uu(e,t,r){let n=Fu(e);if((t.status??0)!==0||t.signal){let f=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Ju(n.argv),i;try{i=Py(s,n.argv,t.stdout,n.query)}catch(f){if(f instanceof Wn)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let o=C(i);if(Ey(s,o,n.full,r))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=Vy(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await r.store?.mint(Buffer.from(o),{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 ${Re(u)}
55
+ `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function Ow(e){for(let t of[Nl(e),Cw(e)])try{let r=Dw(await ww(t,"utf8"));if(Iw(r))return r}catch{}return{version:1,entries:{}}}async function Pw(e,t){let r=Nl(e);await yw(Rw(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await _w(n,`${C(t)}
56
+ `,{encoding:"utf8",mode:384}),await bw(n,r)}function Nl(e){return Il(V(e),Sw)}function Cw(e){return Il(V(e),xw)}function Dw(e){try{return JSON.parse(e)}catch{return F(e)}}async function Bo(e,t,r){await Ye(e,{collection:G,id:hw(),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 Iw(e){return Mo(e)&&e.version===1&&Mo(e.entries)&&Object.values(e.entries).every(Aw)}function Aw(e){return Mo(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Mo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Sw,xw,ps=b(()=>{"use strict";De();te();xe();Sw="gh-etag-cache.toon",xw="gh-etag-cache.json"});import{spawn as Nw}from"node:child_process";async function Zr(e,t){return await $w(t,async r=>{let n=await Bw(e,t.cwd,r);return n||await Lw(e,t.cwd,r)})}async function $w(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 i=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:i}finally{clearTimeout(n)}}async function Lw(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,i=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},o=Nw("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=o.pid;l&&ns(l).then(d=>rs(d,"SIGKILL"));try{o.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];o.stdout.on("data",l=>c.push(Buffer.from(l))),o.stderr.on("data",l=>u.push(Buffer.from(l))),o.once("error",l=>i({status:1,stdout:"",stderr:l.message})),o.once("close",l=>{i({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function Bw(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Mw(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ne({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=$e(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:ur(s,"database_id")||ur(s,"id"),status:H(s,"status").toUpperCase(),conclusion:H(s,"conclusion").toUpperCase(),workflowName:H(s,"workflow_name")||H(s,"name"),headBranch:H(s,"head_branch"),url:H(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=us(e,"--branch"),s=us(e,"--limit")??"20",i=await ne({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(i.status!==0)return i;let o=Ot($e(JSON.parse(i.stdout)).workflow_runs).map(a=>({databaseId:ur(a,"database_id")||ur(a,"id")}));return{status:0,stdout:JSON.stringify(o),stderr:i.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=us(e,"--limit")??"20",s=await ne({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=Ot(JSON.parse(s.stdout)).map(o=>({tagName:H(o,"tag_name"),publishedAt:H(o,"published_at"),isDraft:o.draft===!0}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}return null}async function Mw(e,t,r){let n=await ne({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=$e(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let i=H($e(s.head),"sha"),[o,a]=i?await Promise.all([ne({path:`repos/{owner}/{repo}/commits/${i}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ne({path:`repos/{owner}/{repo}/commits/${i}/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=o.status===0?Ot($e(JSON.parse(o.stdout)).statuses):[],u=a.status===0?Ot($e(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,o.stderr,a.stderr].filter(Boolean).join(`
57
+ `),stdout:JSON.stringify({number:ur(s,"number"),state:H(s,"state").toUpperCase(),mergeable:jw(s),statusCheckRollup:[...c.map(l=>({conclusion:H(l,"state").toUpperCase()})),...u.map(l=>({status:H(l,"status").toUpperCase(),conclusion:H(l,"conclusion").toUpperCase()}))],url:H(s,"html_url")})}}function jw(e){let t=H(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Ll=b(()=>{"use strict";ps();ls();Tt()});function Ml(e,t,r){let n=Date.now();return()=>Uw(e,t,r,n)}async function Uw(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return W("missing PR number");let s=await Zr(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return W(s.stderr||"gh pr view failed");let i=$o(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Jw),u=c.filter(d=>d==="failure").length,l=c.filter(d=>d==="pending").length;if(String(i.state)!=="OPEN")return Qe("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return Qe("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return Qe("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return ir(`PR #${e} has ${l} pending checks`);if(o.length===0){let d=Date.now()-n;return a==="UNKNOWN"||d<r.emptyChecksGraceMs?ir(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:d}):Qe("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?ir(`PR #${e} mergeability is still unknown`,{checks:o.length,mergeable:a}):Qe("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function jl(e,t){if(!e)return W("missing run id");let r=await Zr(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return W(r.stderr||"gh run view failed");let n=$o(r.stdout),s=String(n.status??"").toLowerCase(),i=String(n.conclusion??"").toLowerCase();return s!=="completed"?ir(`run ${e} is ${s||"pending"}`):i==="success"?Qe("success",`run ${e} succeeded`,Bl(n)):Qe("failure",`run ${e} concluded ${i||"unknown"}`,Bl(n))}async function Ul(e,t){let r=await Zr(["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 cr(s)&&s.databaseId!=null?String(s.databaseId):""}async function Jl(e,t,r){let n=await Zr(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return W(n.stderr||"gh release list failed");let i=Ot(JSON.parse(n.stdout)).find(o=>{let a=String(o.tagName??""),c=new Date(String(o.publishedAt??""));return o.isDraft!==!0&&(!e||Fw(e,a))&&c>=t});return i?Qe("success",`release ${String(i.tagName)} published`,{tag:String(i.tagName),published_at:String(i.publishedAt??"")}):ir("no matching release is published yet")}function Jw(e){let t=cr(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 Bl(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 Fw(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Fl=b(()=>{"use strict";kt();Ll();ls()});function Xr(){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 jo=b(()=>{"use strict"});var Uo={};M(Uo,{listWaits:()=>cs,renderWaitHelp:()=>Xr,runWait:()=>Hw});import{randomUUID as Gl}from"node:crypto";import{mkdir as Gw,rm as Ww}from"node:fs/promises";async function Hw(e,t=process.cwd()){let r;try{r=await ll(e)}catch(n){return await Yw(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Xr()),0;if(r.kind==="ls"){let n={schema:tl,version:1,waits:await cs(t)};return process.stdout.write(lr(n,r.options.format)),0}return Oo(r.kind)?await qw({...r,kind:r.kind},t):(process.stdout.write(Xr()),2)}async function qw(e,t){let r=e.kind,n=No({id:Gl(),kind:r,target:zw(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Wr(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:vo[r],status:"running",attempts:0}),s=hl(t,n.id),i=new AbortController,o,a=l=>{o=l,i.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await Gw(or(t),{recursive:!0}),await ar(s,n);let l=await Vw(e,t,s,n,i.signal);o&&(l={...l,verdict:W(`wait interrupted by ${o}`,l.verdict.details)});let d=await _l({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(lr(d.result,e.options.format)),d.exitCode}catch(l){let d=W(l instanceof Error?l.message:String(l)),f=Yr(r,n,d,{status:"success"},new Date().toISOString());return await Qr(e.options.resultFile,f,e.options.format).catch(()=>{}),process.stdout.write(lr(f,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Ww(s,{force:!0}).catch(()=>{})}}async function Vw(e,t,r,n,s){let i={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Pl({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:pl(t),registryPath:r,entry:n,signal:s});case"pr":{let o=e.target??"";return/^[1-9][0-9]*$/.test(o)?await fs({probe:Ml(o,i,{emptyChecksGraceMs:qr("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:qr("RSP_WAIT_PR_POLL_MS",15e3),registryPath:r,entry:n,signal:s}):{verdict:W("missing PR number")}}case"run":{let o=await Kw(e,i,r,n);return o.ok?await fs({probe:()=>jl(o.value,i),timeoutMs:e.options.timeoutMs,baseSleepMs:qr("RSP_WAIT_RUN_POLL_MS",15e3),registryPath:r,entry:n,signal:s}):{verdict:W(o.reason)}}case"release":return await fs({probe:()=>Jl(e.tagGlob,new Date(n.started_at),i),timeoutMs:e.options.timeoutMs,baseSleepMs:qr("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Kw(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 Ul(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await ar(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function zw(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 Yw(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,i=Oo(e[1])?e[1]:"cmd",o=new Date().toISOString(),a=No({id:Gl(),kind:i,target:`${i}:`,reason:"",pid:process.pid,started_at:o,deadline_at:o,timeout_ms:0,poll_tier:vo[i],status:"indeterminate",attempts:0}),c=Yr(i,a,W(t instanceof Error?t.message:String(t)),{status:"success"},o);return await Qr(s,c,r).catch(()=>{}),process.stdout.write(lr(c,r)),2}var Jo=b(()=>{"use strict";dl();Sl();Dl();kt();Do();Fl();Tt();zr();jo();zr();jo()});var gs={};M(gs,{parseProxyCommandLine:()=>zl,rewriteProxyCommandLine:()=>Kl,runProxy:()=>rb});import{spawn as tb}from"node:child_process";async function rb(e,t){let r="",n="",s=[],i=process.hrtime.bigint();try{if(r=zl(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Kl(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await nb(t.telemetryRoot,r,c),await ql(r);throw c}for(let c of s)await sb(t.telemetryRoot,c);let o=await ql(n||r),a=Number(process.hrtime.bigint()-i)/1e6;return await Ye(t.telemetryRoot,{collection:ue,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Kl(e,t="lossless"){let r=lb(e),n=[];return{commandLine:r.map((i,o)=>{if(i.kind==="operator"||ub(r,o)==="|")return i.text;let a=ib(i.text,t);return a?(n.push(a.match),a.text):i.text}).join(""),matches:n}}function zl(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 nb(e,t,r){await Ye(e,{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Go(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function sb(e,t){await Ye(e,{collection:G,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 ql(e){let t=tb(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
59
+ `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function ib(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=fb(s);if(!i)return null;let o=cb(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(m=>m.value);if(ms(c))return{text:e,match:{command:a.map(m=>m.raw).join(" "),commandFamily:Go(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=ob(a);if(!u)return null;let l=i.slice(0,o).map(m=>m.raw),d=t==="lossless"?[]:[`--${t}`],f=[...l,"rsp",...d,...u.wrapperWords].join(" ");return{text:`${r}${f}${n}`,match:{command:a.map(m=>m.raw).join(" "),commandFamily:Go(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function ob(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}:ab(t,r)}function ab(e,t){return e[0]==="cat"&&e.length===2&&Fo(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Fo(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])&&Fo(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Fo(e){return!!e&&!e.startsWith("-")}function cb(e){let t=0;for(;t<e.length&&Vl(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Vl(e[t].value);)t+=1;return t}function ub(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function lb(e){let t=[],r=0,n,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(n){o===n&&(n=void 0);continue}if(o==="'"||o==='"'){n=o;continue}let a=db(e,i);a&&(i>r&&t.push({kind:"segment",text:e.slice(r,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,r=i+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function db(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 fb(e){let t=[],r="",n="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:r,value:n}),r="",n="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){r+=u,n+=u,i=!1,o=!0;continue}if(u==="\\"){r+=u,i=!0,o=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,o=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,o=!0}return s||i?null:(a(),t)}function Go(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:ms(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:ms(t)&&t[1]?`gh ${t[1]} json-jq`:ms(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 ms(e){return e[0]==="gh"&&e.some(pb)}function pb(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Vl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var hs=b(()=>{"use strict";xe()});function Zl(e,t={}){let r=mb(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let f of r){s.set(f.signature,(s.get(f.signature)??0)+1);for(let m of new Set(f.tokens))n.set(m,(n.get(m)??0)+1)}let i=r.map(f=>f.length),o=r.map(f=>f.tokens.length),a=r.map(f=>f.numbers.length===0?0:Math.max(...f.numbers.map(Math.abs))),c=Wo(i),u=Wo(o),l=Wo(a),d=t.excludedByteRanges??[];return r.filter(f=>f.text.trim().length>0).filter(f=>!d.some(m=>_b(f.start,f.end,m.start,m.end))).map(f=>({line:f,score:Ho(f.length,c)+Ho(f.tokens.length,u)+Ho(f.numbers.length===0?0:Math.max(...f.numbers.map(Math.abs)),l)+wb(f.tokens,n,r.length)+bb(f.signature,s,r.length)})).filter(f=>f.score>=(t.minScore??7)).sort((f,m)=>m.score-f.score||f.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((f,m)=>f.line.index-m.line.index).map(f=>({lineNumber:f.line.index+1,score:Math.round(f.score*100)/100,text:f.line.text}))}function mb(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(Yl(n++,r,i,e.slice(r,i).replace(/\r$/,""))),r=i+1}return(r<e.length||e.length===0)&&t.push(Yl(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Yl(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:gb(n),tokens:hb(n),numbers:yb(n),length:n.length}}function gb(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 hb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function yb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function wb(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(i=>Math.log2(r/Math.max(1,t.get(i)??r))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function bb(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Wo(e){let t=Ql(e),r=Ql(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Ho(e,t){return Math.abs(e-t.median)/t.mad}function Ql(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 _b(e,t,r,n){return e<n&&r<t}var Xl=b(()=>{"use strict"});var qo={};M(qo,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>qe,GIT_LOG_MACHINE_FIELDS:()=>td,StructuredUsageError:()=>ys,cleanStatusPayload:()=>id,recoveryInstruction:()=>Ee,renderGitContract:()=>rd,runGitWrapper:()=>Sb});import{spawn as Rb}from"node:child_process";async function Sb(e,t){let r=nd(e),n=sd(r.argv),s=await vb(n,r.argv.slice(1));return rd(e,s,t)}async function rd(e,t,r){let n=nd(e);if((t.status??0)!==0||t.signal){let d=ge(e.join(" "),t.stdout,t.stderr);return{stdout:N(d),stderr:Buffer.from(t.stderr),status:d.exitCode??1,signal:t.signal}}let s=sd(n.argv),i;try{i=Tb(s,n.argv,t.stdout,n.query)}catch(d){if(d instanceof ws)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:d.reason,family:"git status",stderrHead:d.message}};throw d}let o=C(i);if(xb(s,o,n.full,r))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=Hb(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await r.store?.mint(Buffer.from(o),{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 ${Ee(u)}
60
60
  `;return{stdout:Buffer.from(`${C(a.payload)}
61
- ${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(o)}}function Re(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Fu(e){let t=mt(e),r=[],n=!1;for(let i of t.argv){if(i==="--full"){n=!0;continue}r.push(i)}let s=r.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new qn(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function Ey(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!Ty(e)||n.level!=="lossless")return!0;let s=Wy(n.heavyGitByteThreshold,Je);return Buffer.byteLength(t)<=s}function Ty(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ju(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 vy(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${ju.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 Oy(e,t){let r=xy("git",vy(e,t),{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Py(e,t,r,n){switch(e){case"status":return Cy(t,r,n);case"log":return My(t,r,n);case"diff":return jy(t,r,n);case"commit":return nt(Uy(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return nt(Fy(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Jy(t,r,n);case"branch":return Gy(t,r,n);case"show":return Hy(t,r,n)}}function Cy(e,t,r){let n="",s=[],i=!1,o=!1;for(let u of Dy(t)){if(!u)continue;if(o=!0,u.startsWith("# branch.head ")){n=u.slice(14),i=!0;continue}if(u.startsWith("# ")){i=!0;continue}if(u.startsWith("## ")){n=Ny(u),i=!0;continue}let l=Iy(u);if(l){i=!0,s.push(l);continue}let f=Ay(u);f&&(i=!0,s.push(f))}if(s.length===0){if(!o||i)return Gu(e.join(" "),n);throw new Wn("git-status-unparseable")}let a=W(s,r),c=Hu(a,"state");return nt({command:e.join(" "),branch:n,rows:a,summary:By(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Dy(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Iy(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Br(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Br(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Br(t.slice(10).join(" "),r)}return e.startsWith("? ")?Br(e.slice(2),"??"):null}function Ay(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Br($y(e.slice(3),t),t):null}function Br(e,t){let r=Mu(t[0]??"."),n=Mu(t[1]??".");return{path:Ly(e),index:r,worktree:n,state:qy(`${r}${n}`)}}function Mu(e){return e===" "?".":e}function Ny(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function $y(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function Ly(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function By(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 Gu(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 My(e,t,r){let n=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=W(n,r);return nt({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 jy(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)}}),i=W(s,r),o=i.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 nt({command:e.join(" "),files:i,summary:`${r?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function Uy(e,t){let r=t.split(`
62
- `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function Fy(e,t){let r=t.split(`
63
- `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.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 ${o} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${o} -> ${n} +${a} commits`}}function Jy(e,t,r){let n=t.split(`
64
- `),s=[],i=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=W(s,r),a=Hu(o,"author");return nt({command:e.join(" "),ranges:o,authors:a,summary:`${r?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Gy(e,t,r){let n=t.split(`
65
- `).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=W(n,r),i=s.find(o=>o.current)?.name??"";return nt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${i?`, current ${i}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Hy(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,i=n>=0&&s>=0?t.slice(n+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=i.split(""),m=[];for(let y of o.split(`
66
- `)){let v=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!v)continue;let E=v[3]??"";m.push({path:(v[1]??"").trim(),changed:Number(v[2]??0),added:[...E].filter(O=>O==="+").length,deleted:[...E].filter(O=>O==="-").length,binary:E.startsWith("Bin")})}let h=W(m,r),p=0,g=0,w=0;for(let y of h)p+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return nt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
67
- `).length:0,files:h,summary:`${r?`${h.length}/${m.length}`:h.length} files, ${p} changed, +${g} -${w}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function nt(e,t,r){return t?je(e,r):e}function qy(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Hu(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Wy(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vy(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 ju,qn,Wn,St=_(()=>{"use strict";ee();Pe();pr();ve();Pe();ju=["%h","%an","%as","%s"];qn=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return sn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Wn=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var yo={};M(yo,{NORMALIZATION_ALLOWLIST:()=>Qu,NORMALIZE_ANSI:()=>zn,NORMALIZE_BLANK_LINES:()=>Qn,NORMALIZE_CR_PROGRESS:()=>Kn,NORMALIZE_JSON_TOON:()=>Yu,NORMALIZE_TRAILING_WHITESPACE:()=>Yn,crushJsonArrayItems:()=>Mr,formatCodexNormalizeDecision:()=>rl,formatNormalizeDecision:()=>tl,hookDecisionFromClaudePostExecJson:()=>Zu,hookDecisionFromCodexPostExecJson:()=>Xu,normalizeOutput:()=>Zn,renderGenericJsonLane:()=>go,runClaudePostExecHook:()=>Yy,runCodexPostExecHook:()=>Qy,transcodeJsonToToon:()=>Ku});import{readFileSync as Vn}from"node:fs";function Ku(e,t){let r=t?.encode??C,n=t?.decode??J,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=r(i)}catch{return e}let a;try{a=n(o)}catch{return e}return mo(i,a)?o.trimEnd():e}async function go(e,t={}){let r=tw(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,i=zu(t.minTokens,zy),o=zu(t.maxItems,Ky);if(!(s>o&&ow(e)>=i))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Mr)(n,o)}catch(p){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:aw(p)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=C(l).trimEnd();return{output:[f,m,h].filter(Boolean).join(`
68
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Mr(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=rw(e),s=new Set;n&&e.forEach((a,c)=>{ho(a)!==n&&s.add(c)});let i=nw(e,n);for(let a of s)r.add(a);for(let a of i)r.add(a);let o=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Zn(e){let t=e;for(let r of Qu)t=r.apply(t);return t}async function Zu(e,t){return await el(e,t)}async function Xu(e,t){return await el(e,t)}async function el(e,t){let r=ew(e),n=cw(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Xy)(n))return{kind:"passthrough",reason:"disabled"};let i=uw(r,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Zn)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function tl(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function rl(e){return{stdout:"",status:0}}async function Yy(e){let t=e?Vn(e,"utf8"):Vn(0,"utf8"),r=await Zu(t,{cwd:process.cwd()}),n=tl(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Qy(e){let t=e?Vn(e,"utf8"):Vn(0,"utf8"),r=await Xu(t,{cwd:process.cwd()}),n=rl(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Zy(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 i=e.charCodeAt(r);if(i===7){r++;break}if(i===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&qu(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&qu(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function qu(e){return e>=32&&e<=63}function Xy(e){return Ge(e,process.env).enabled}function ew(e){try{let t=JSON.parse(e);return tr(t)?t:{}}catch{return{}}}function tw(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return tr(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function rw(e){let t=new Map;for(let s of e){let i=ho(s);t.set(i,(t.get(i)??0)+1)}let[r,n]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function ho(e){return Array.isArray(e)?"array":tr(e)?Object.keys(e).sort().map(t=>`${t}:${Wu(e[t])}`).join("|"):Wu(e)}function nw(e,t){let r=new Set,n=new Map;e.forEach((s,i)=>{if(!(t&&ho(s)!==t))for(let[o,a]of nl(s)){let c=n.get(o)??[];c.push({index:i,value:a}),n.set(o,c)}});for(let s of n.values()){for(let i of sw(s))r.add(i);for(let i of iw(s))r.add(i)}return r}function sw(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=Vu(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),i=Vu(s);if(i===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-n)>o).map(a=>a.index)}function iw(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 nl(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:tr(e)?Object.entries(e).flatMap(([r,n])=>nl(n,t?`${t}.${r}`:r)):[]}function Wu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Vu(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 ow(e){return Math.ceil(e.length/4)}function zu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function aw(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 cw(e,t){let r=e;for(let n of t){if(!tr(r))return"";r=r[n]}return typeof r=="string"?r:""}function uw(e,t){let r=e[t];return tr(r)?r:null}function tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mo(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>mo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&mo(r[o],n[o]))}var zn,Kn,Yn,Qn,Yu,zy,Ky,Qu,jr=_(()=>{"use strict";ee();Pe();zn={id:"ansi",apply:Zy},Kn={id:"cr-progress",apply:e=>e.split(`
61
+ ${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(o)}}function Ee(e){return e.startsWith("el:")?`rsp show ${e}`:e}function nd(e){let t=bt(e),r=[],n=!1;for(let i of t.argv){if(i==="--full"){n=!0;continue}r.push(i)}let s=r.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new ys(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function xb(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!Eb(e)||n.level!=="lossless")return!0;let s=Wb(n.heavyGitByteThreshold,qe);return Buffer.byteLength(t)<=s}function Eb(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function sd(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 kb(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${td.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 vb(e,t){let r=Rb("git",kb(e,t),{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Tb(e,t,r,n){switch(e){case"status":return Ob(t,r,n);case"log":return Lb(t,r,n);case"diff":return Bb(t,r,n);case"commit":return ct(Mb(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ct(jb(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Ub(t,r,n);case"branch":return Jb(t,r,n);case"show":return Fb(t,r,n)}}function Ob(e,t,r){let n="",s=[],i=!1,o=!1;for(let u of Pb(t)){if(!u)continue;if(o=!0,u.startsWith("# branch.head ")){n=u.slice(14),i=!0;continue}if(u.startsWith("# ")){i=!0;continue}if(u.startsWith("## ")){n=Ib(u),i=!0;continue}let l=Cb(u);if(l){i=!0,s.push(l);continue}let d=Db(u);d&&(i=!0,s.push(d))}if(s.length===0){if(!o||i)return id(e.join(" "),n);throw new ws("git-status-unparseable")}let a=K(s,r),c=od(a,"state");return ct({command:e.join(" "),branch:n,rows:a,summary:$b(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Pb(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Cb(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return en(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return en(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return en(t.slice(10).join(" "),r)}return e.startsWith("? ")?en(e.slice(2),"??"):null}function Db(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?en(Ab(e.slice(3),t),t):null}function en(e,t){let r=ed(t[0]??"."),n=ed(t[1]??".");return{path:Nb(e),index:r,worktree:n,state:Gb(`${r}${n}`)}}function ed(e){return e===" "?".":e}function Ib(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function Ab(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function Nb(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function $b(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 id(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 Lb(e,t,r){let n=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=K(n,r);return ct({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 Bb(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)}}),i=K(s,r),o=i.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 ct({command:e.join(" "),files:i,summary:`${r?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function Mb(e,t){let r=t.split(`
62
+ `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function jb(e,t){let r=t.split(`
63
+ `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[f,m]=(l??"").split(":");return{flag:u??"",from:f??"",to:m??"",summary:d}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.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 ${o} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${o} -> ${n} +${a} commits`}}function Ub(e,t,r){let n=t.split(`
64
+ `),s=[],i=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),d=i.commit.slice(0,12);l&&l.commit===d&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:d,path:i.path}),i=null}let o=K(s,r),a=od(o,"author");return ct({command:e.join(" "),ranges:o,authors:a,summary:`${r?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Jb(e,t,r){let n=t.split(`
65
+ `).filter(Boolean).map(o=>{let[a,c,u,l,d,f]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:f??""}}),s=K(n,r),i=s.find(o=>o.current)?.name??"";return ct({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${i?`, current ${i}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Fb(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,i=n>=0&&s>=0?t.slice(n+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,d,f=""]=i.split(""),m=[];for(let w of o.split(`
66
+ `)){let v=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!v)continue;let k=v[3]??"";m.push({path:(v[1]??"").trim(),changed:Number(v[2]??0),added:[...k].filter(O=>O==="+").length,deleted:[...k].filter(O=>O==="-").length,binary:k.startsWith("Bin")})}let h=K(m,r),p=0,g=0,y=0;for(let w of h)p+=typeof w.changed=="number"?w.changed:0,g+=typeof w.added=="number"?w.added:0,y+=typeof w.deleted=="number"?w.deleted:0;return ct({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:f.trim()?f.trim().split(`
67
+ `).length:0,files:h,summary:`${r?`${h.length}/${m.length}`:h.length} files, ${p} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ct(e,t,r){return t?Ge(e,r):e}function Gb(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function od(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Wb(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Hb(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 td,ys,ws,Pt=b(()=>{"use strict";te();Se();xr();Ce();Se();td=["%h","%an","%as","%s"];ys=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Sn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ws=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var Yo={};M(Yo,{NORMALIZATION_ALLOWLIST:()=>pd,NORMALIZE_ANSI:()=>_s,NORMALIZE_BLANK_LINES:()=>xs,NORMALIZE_CR_PROGRESS:()=>Rs,NORMALIZE_JSON_TOON:()=>fd,NORMALIZE_TRAILING_WHITESPACE:()=>Ss,crushJsonArrayItems:()=>tn,formatCodexNormalizeDecision:()=>wd,formatNormalizeDecision:()=>yd,hookDecisionFromClaudePostExecJson:()=>md,hookDecisionFromCodexPostExecJson:()=>gd,normalizeOutput:()=>Es,renderGenericJsonLane:()=>Ko,runClaudePostExecHook:()=>Kb,runCodexPostExecHook:()=>zb,transcodeJsonToToon:()=>dd});import{readFileSync as bs}from"node:fs";function dd(e,t){let r=t?.encode??C,n=t?.decode??F,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=r(i)}catch{return e}let a;try{a=n(o)}catch{return e}return Vo(i,a)?o.trimEnd():e}async function Ko(e,t={}){let r=Xb(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,i=ld(t.minTokens,qb),o=ld(t.maxItems,Vb);if(!(s>o&&s_(e)>=i))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??tn)(n,o)}catch(p){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:i_(p)}}}let u=c.items,l={items:u},d=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,f;t.level&&t.level!=="lossless"&&(f=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=f?`original: rsp show ${f}`:`original: unavailable - re-run: ${t.command??"command"}`,h=C(l).trimEnd();return{output:[d,m,h].filter(Boolean).join(`
68
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:f}}function tn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=e_(e),s=new Set;n&&e.forEach((a,c)=>{zo(a)!==n&&s.add(c)});let i=t_(e,n);for(let a of s)r.add(a);for(let a of i)r.add(a);let o=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Es(e){let t=e;for(let r of pd)t=r.apply(t);return t}async function md(e,t){return await hd(e,t)}async function gd(e,t){return await hd(e,t)}async function hd(e,t){let r=Zb(e),n=o_(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Qb)(n))return{kind:"passthrough",reason:"disabled"};let i=a_(r,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Es)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function yd(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function wd(e){return{stdout:"",status:0}}async function Kb(e){let t=e?bs(e,"utf8"):bs(0,"utf8"),r=await md(t,{cwd:process.cwd()}),n=yd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function zb(e){let t=e?bs(e,"utf8"):bs(0,"utf8"),r=await gd(t,{cwd:process.cwd()}),n=wd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Yb(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 i=e.charCodeAt(r);if(i===7){r++;break}if(i===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&ad(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&ad(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function ad(e){return e>=32&&e<=63}function Qb(e){return Re(e,process.env).enabled}function Zb(e){try{let t=JSON.parse(e);return dr(t)?t:{}}catch{return{}}}function Xb(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return dr(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 e_(e){let t=new Map;for(let s of e){let i=zo(s);t.set(i,(t.get(i)??0)+1)}let[r,n]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function zo(e){return Array.isArray(e)?"array":dr(e)?Object.keys(e).sort().map(t=>`${t}:${cd(e[t])}`).join("|"):cd(e)}function t_(e,t){let r=new Set,n=new Map;e.forEach((s,i)=>{if(!(t&&zo(s)!==t))for(let[o,a]of bd(s)){let c=n.get(o)??[];c.push({index:i,value:a}),n.set(o,c)}});for(let s of n.values()){for(let i of r_(s))r.add(i);for(let i of n_(s))r.add(i)}return r}function r_(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=ud(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),i=ud(s);if(i===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-n)>o).map(a=>a.index)}function n_(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 bd(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:dr(e)?Object.entries(e).flatMap(([r,n])=>bd(n,t?`${t}.${r}`:r)):[]}function cd(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function ud(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 s_(e){return Math.ceil(e.length/4)}function ld(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function i_(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 o_(e,t){let r=e;for(let n of t){if(!dr(r))return"";r=r[n]}return typeof r=="string"?r:""}function a_(e,t){let r=e[t];return dr(r)?r:null}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vo(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>Vo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&Vo(r[o],n[o]))}var _s,Rs,Ss,xs,fd,qb,Vb,pd,rn=b(()=>{"use strict";te();Se();_s={id:"ansi",apply:Yb},Rs={id:"cr-progress",apply:e=>e.split(`
69
69
  `).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(`
70
- `)},Yn={id:"trailing-whitespace",apply:e=>e.split(`
70
+ `)},Ss={id:"trailing-whitespace",apply:e=>e.split(`
71
71
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
72
- `)},Qn={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
72
+ `)},xs={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
73
73
 
74
- `)};Yu={id:"json-to-toon",apply:e=>Ku(e)},zy=200,Ky=15;Qu=[zn,Kn,Yn,Qn,Yu]});var Jr={};M(Jr,{parseExecCommandLine:()=>ul,renderExecContract:()=>cl,runExecWrapper:()=>mw});import{isUtf8 as lw}from"node:buffer";import{spawn as dw}from"node:child_process";async function mw(e,t){let r=ul(e),n=await gw(r);return await cl(r,n,t)}async function cl(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=me(e,t.stdout,t.stderr);return{stdout:N(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 i=hw(n),o=i.kind==="text"?Buffer.from(i.text):n,a=Lw(r.heavyByteThreshold,fw);if(o.length<=a&&r.level!=="terse")return{stdout:o,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 f=i.kind==="text"?ww(i.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):bw(n,n.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:f.degradation}}function ul(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 gw(e){let t=dw(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,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(n).toString("binary"),status:o,signal:a})})})}function hw(e){return lw(e)?{kind:"text",text:yw(e.toString("utf8"))}:{kind:"bytes"}}function yw(e){let t=e;for(let r of[zn,Kn,Yn,Qn])t=r.apply(t);return t}function ww(e,t,r,n,s,i=Pw,o=Mr){let c=Math.max(1,Math.floor((n==="terse"?al:pw)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=Ow(e,c,l,i),d=_w(e),m=Rw(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=ll(s,d,t,$w(u),r,m.summary),p=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:hl(f.error)}:m.degradation;return{text:gl(h),degradation:p}}function bw(e,t,r,n){let s=Math.max(1,Math.floor(al/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:gl(ll(n,"bytes",t,0,r,i))}}function ll(e,t,r,n,s,i){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:i,recovery:{original:Re(s)}}}function _w(e){let t=e.trim();return t?fl(t)?"json":pl(e)?"jsonl":Cw(e)?"unified-diff":ml(e)?"tabular":Dw(e)?"log-like":Iw(e)?"prose":"untyped":"untyped"}function Rw(e,t,r,n,s,i,o=Mr){switch(e){case"json":return Sw(t,o);case"jsonl":return{summary:xw(t)};case"unified-diff":return{summary:kw(t)};case"tabular":return{summary:Ew(t)};case"log-like":return{summary:Tw(t,i)};case"prose":return{summary:vw(t)};case"bytes":return{summary:{}};case"untyped":return{summary:dl(r,n,s,i)}}}function Sw(e,t){let r=fl(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(st),item_keys:bo(r)}}}catch(n){return{summary:il(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:hl(n)}}}return{summary:il(r)}}if(Fr(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,i])=>[s,st(i)]))}}}return{summary:{root_type:typeof r,value:st(r)}}}function il(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(st),item_keys:bo(e)}}function xw(e){let t=pl(e)??[],r=Aw(t,"level");return{records:t.length,keys:bo(t),levels:r,first:st(t[0]),last:st(t.at(-1))}}function kw(e){let t=new Map,r="",n=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);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(o);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,r&&t.get(r).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(n++,r&&t.get(r).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:n,deleted_lines:s}}function Ew(e){let t=ml(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:dl(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Tw(e,t){let r=Ur(e);return{entries:r.length,levels:Nw(r),first:xt(r[0]??""),last:xt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:xt(n.text)}))}}function vw(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:xt(t[0]??""),closing:xt(t.at(-1)??"")}}function dl(e,t,r,n){let s=ol(e.subarray(0,t)),i=ol(e.subarray(r));return{head:s,tail:i,outliers:n.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:xt(o.text)}))}}function Ow(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function Pw(e,t){return Lu(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function fl(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Fr(r)||Array.isArray(r)?r:null}catch{return null}}function pl(e){let t=Ur(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 Cw(e){let t=Ur(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return n&&s&&i}function ml(e){let t=Ur(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(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function Dw(e){let t=Ur(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 Iw(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 Ur(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function bo(e){let t=new Map;for(let r of e)if(Fr(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 Aw(e,t){let r=new Map;for(let n of e){if(!Fr(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();r.set(i,(r.get(i)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function Nw(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 st(e){return typeof e=="string"?xt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(st):Fr(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,st(r)])):String(e)}function xt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=sl?t:`${t.slice(0,sl-1)}\u2026`}function gl(e){let t=C(e).trimEnd(),r=J(t);if(!wo(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
75
- `}function wo(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>wo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&wo(r[o],n[o]))}function Fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hl(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 ol(e){return e.toString("utf8").replace(/�$/g,"")}function $w(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 Lw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var fw,pw,al,sl,Gr=_(()=>{"use strict";ee();Bu();St();jr();ve();fw=8*1024,pw=2*1024,al=1024,sl=240});var kl=_(()=>{"use strict";li()});var kt={};M(kt,{ResidentRspElisionStore:()=>Wr,ensureResidentServer:()=>mn,kickResidentServer:()=>gn,pingResident:()=>gt,readResidentRegistry:()=>Sr,removeResidentRegistry:()=>yn,residentRegistryStatus:()=>Rr,resolveResidentPaths:()=>Ze,sweepResidentRegistry:()=>_c,warmResidentServer:()=>bc,writeResidentRegistry:()=>hn});import{randomUUID as Hw}from"node:crypto";function El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Wr,Ve=_(()=>{"use strict";kl();wn();Wr=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?El(r)&&r.status==="expired"?r:!El(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 mn(this.paths,this.config);let r=await Ft(this.paths,{...t,id:Hw()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var cs={};M(cs,{RSP_WRAPPER_CAPABILITIES:()=>Kr,formatCodexHookDecision:()=>Cl,formatHookDecision:()=>Pl,hookDecisionFromClaudePreExecJson:()=>Kw,hookDecisionFromCodexPreExecJson:()=>Yw,rewriteCommand:()=>vl,rewriteTableFromCapabilities:()=>Tl,runClaudePreExecHook:()=>Qw,runCodexPreExecHook:()=>Zw});import{readFileSync as ss}from"node:fs";import{existsSync as qw}from"node:fs";import{fileURLToPath as Ww}from"node:url";function Tl(e){let t=new Map;for(let r of e)t.set(hb(r.command),["rsp",...r.wrapper]);return t}function vl(e){let t=ab(e);if(t)return t;let r=ib(e);if(!r)return rs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&Fl(n[0]))return rs(e);let s=zw(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return rs(e);let i=[...Kr].sort((c,u)=>u.command.length-c.command.length).find(c=>ob(n,c.command));if(!i)return rs(e);let o=["rsp",...i.wrapper,...n.slice(i.command.length)],a=Ll(r.redirectSuffix);return{kind:"rewrite",command:[...o.map(zr),...a].join(" "),capabilityId:i.id}}function zw(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Ll(e.redirectSuffix);return r==="cat"&&t.length===2&&ts(t[1])?{kind:"rewrite",command:["rsp","cat",zr(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&ts(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",zr(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&ts(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],zr(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&ts(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),zr(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function ts(e){return!!e&&!e.startsWith("-")}async function Kw(e,t){return await Ol(e,t)}async function Yw(e,t){return await Ol(e,t)}async function Ol(e,t){return(await So(e,t,"pre-exec")).decision}async function So(e,t,r){let n=Jl(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:Vr({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,i=Se(s,["cwd"])||Se(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Xw)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:Ro(s),decision:d,reason:"disabled"})}}let a=Ro(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=Ge(i,process.env).proxyEnabled?ub(a):(t.rewrite??vl)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await tb(i,t.wakeResident??eb),{decision:l,telemetryRoot:i,event:Vr({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Pl(e){return e.kind==="rewrite"?Dl(e.command):{stdout:"",status:0}}function Cl(e){return e.kind==="rewrite"?Dl(e.command):{stdout:"",status:0}}function Dl(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
76
- `,status:0}}async function Qw(e){let t="";try{t=e?ss(e,"utf8"):ss(0,"utf8");let r=await So(t,{cwd:process.cwd()},"claude-pre-exec");is(r.telemetryRoot,r.event);let n=r.decision;Al("claude-pre-exec",n);let s=Pl(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return is(process.cwd(),Il("claude-pre-exec",t,r)),Nl("claude-pre-exec",r),0}}async function Zw(e){let t="";try{t=e?ss(e,"utf8"):ss(0,"utf8");let r=await So(t,{cwd:process.cwd()},"codex-pre-exec");is(r.telemetryRoot,r.event);let n=r.decision;Al("codex-pre-exec",n);let s=Cl(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return is(process.cwd(),Il("codex-pre-exec",t,r)),Nl("codex-pre-exec",r),0}}function is(e,t){We(e,t).catch(()=>{})}function Vr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Ul(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Il(e,t,r){let n=Jl(t),s=n.ok?Ro(n.payload):"";return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Ul(s),decision:"failed-open",reason:"hook-exception",error:xo(r)}}function Xw(e){return Ge(e,process.env).enabled}async function eb(e){let t=Ge(e,process.env);if(!t.enabled||!sb(t))return;let r=Ze(e);await gn(r,nb(t))}async function tb(e,t){try{await Promise.resolve(t(e))}catch(r){rb(r)}}function Al(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
74
+ `)};fd={id:"json-to-toon",apply:e=>dd(e)},qb=200,Vb=15;pd=[_s,Rs,Ss,xs,fd]});var on={};M(on,{parseExecCommandLine:()=>kd,renderExecContract:()=>Ed,runExecWrapper:()=>f_});import{isUtf8 as c_}from"node:buffer";import{spawn as u_}from"node:child_process";async function f_(e,t){let r=kd(e),n=await p_(r);return await Ed(r,n,t)}async function Ed(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let f=ge(e,t.stdout,t.stderr);return{stdout:N(f),stderr:s,status:f.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 i=m_(n),o=i.kind==="text"?Buffer.from(i.text):n,a=N_(r.heavyByteThreshold,l_);if(o.length<=a&&r.level!=="terse")return{stdout:o,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 d=i.kind==="text"?h_(i.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):y_(n,n.length,l,e);return{stdout:Buffer.from(d.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:d.degradation}}function kd(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 p_(e){let t=u_(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,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(n).toString("binary"),status:o,signal:a})})})}function m_(e){return c_(e)?{kind:"text",text:g_(e.toString("utf8"))}:{kind:"bytes"}}function g_(e){let t=e;for(let r of[_s,Rs,Ss,xs])t=r.apply(t);return t}function h_(e,t,r,n,s,i=T_,o=tn){let c=Math.max(1,Math.floor((n==="terse"?xd:d_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),d=v_(e,c,l,i),f=w_(e),m=b_(f,e,u,c,l,d.kind==="ok"?d.lines:[],o),h=vd(s,f,t,A_(u),r,m.summary),p=d.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Id(d.error)}:m.degradation;return{text:Dd(h),degradation:p}}function y_(e,t,r,n){let s=Math.max(1,Math.floor(xd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Dd(vd(n,"bytes",t,0,r,i))}}function vd(e,t,r,n,s,i){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:i,recovery:{original:Ee(s)}}}function w_(e){let t=e.trim();return t?Od(t)?"json":Pd(e)?"jsonl":O_(e)?"unified-diff":Cd(e)?"tabular":P_(e)?"log-like":C_(e)?"prose":"untyped":"untyped"}function b_(e,t,r,n,s,i,o=tn){switch(e){case"json":return __(t,o);case"jsonl":return{summary:R_(t)};case"unified-diff":return{summary:S_(t)};case"tabular":return{summary:x_(t)};case"log-like":return{summary:E_(t,i)};case"prose":return{summary:k_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Td(r,n,s,i)}}}function __(e,t){let r=Od(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(ut),item_keys:Zo(r)}}}catch(n){return{summary:Rd(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Id(n)}}}return{summary:Rd(r)}}if(sn(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,i])=>[s,ut(i)]))}}}return{summary:{root_type:typeof r,value:ut(r)}}}function Rd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ut),item_keys:Zo(e)}}function R_(e){let t=Pd(e)??[],r=D_(t,"level");return{records:t.length,keys:Zo(t),levels:r,first:ut(t[0]),last:ut(t.at(-1))}}function S_(e){let t=new Map,r="",n=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);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(o);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,r&&t.get(r).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(n++,r&&t.get(r).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:n,deleted_lines:s}}function x_(e){let t=Cd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Td(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function E_(e,t){let r=nn(e);return{entries:r.length,levels:I_(r),first:Ct(r[0]??""),last:Ct(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Ct(n.text)}))}}function k_(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:Ct(t[0]??""),closing:Ct(t.at(-1)??"")}}function Td(e,t,r,n){let s=Sd(e.subarray(0,t)),i=Sd(e.subarray(r));return{head:s,tail:i,outliers:n.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Ct(o.text)}))}}function v_(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function T_(e,t){return Zl(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Od(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return sn(r)||Array.isArray(r)?r:null}catch{return null}}function Pd(e){let t=nn(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 O_(e){let t=nn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return n&&s&&i}function Cd(e){let t=nn(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(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function P_(e){let t=nn(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 C_(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 nn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Zo(e){let t=new Map;for(let r of e)if(sn(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 D_(e,t){let r=new Map;for(let n of e){if(!sn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();r.set(i,(r.get(i)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function I_(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 ut(e){return typeof e=="string"?Ct(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(ut):sn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,ut(r)])):String(e)}function Ct(e){let t=e.replace(/\s+/g," ").trim();return t.length<=_d?t:`${t.slice(0,_d-1)}\u2026`}function Dd(e){let t=C(e).trimEnd(),r=F(t);if(!Qo(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
75
+ `}function Qo(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>Qo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&Qo(r[o],n[o]))}function sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Id(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 Sd(e){return e.toString("utf8").replace(/�$/g,"")}function A_(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 N_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var l_,d_,xd,_d,an=b(()=>{"use strict";te();Xl();Pt();rn();Ce();l_=8*1024,d_=2*1024,xd=1024,_d=240});var Ud=b(()=>{"use strict";Mi()});var Dt={};M(Dt,{ResidentRspElisionStore:()=>ln,ensureResidentServer:()=>Dn,kickResidentServer:()=>In,pingResident:()=>_t,readResidentRegistry:()=>Ir,removeResidentRegistry:()=>Nn,residentRegistryStatus:()=>Dr,resolveResidentPaths:()=>nt,sweepResidentRegistry:()=>nu,warmResidentServer:()=>ru,writeResidentRegistry:()=>An});import{randomUUID as F_}from"node:crypto";function Jd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ln,Ze=b(()=>{"use strict";Ud();$n();ln=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?Jd(r)&&r.status==="expired"?r:!Jd(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 Dn(this.paths,this.config);let r=await Vt(this.paths,{...t,id:F_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var Ns={};M(Ns,{RSP_WRAPPER_CAPABILITIES:()=>pn,formatCodexHookDecision:()=>qd,formatHookDecision:()=>Hd,hookDecisionFromClaudePreExecJson:()=>V_,hookDecisionFromCodexPreExecJson:()=>K_,rewriteCommand:()=>Gd,rewriteTableFromCapabilities:()=>Fd,runClaudePreExecHook:()=>z_,runCodexPreExecHook:()=>Y_});import{readFileSync as Cs}from"node:fs";import{existsSync as G_}from"node:fs";import{fileURLToPath as W_}from"node:url";function Fd(e){let t=new Map;for(let r of e)t.set(mR(r.command),["rsp",...r.wrapper]);return t}function Gd(e){let t=iR(e);if(t)return t;let r=nR(e);if(!r)return Os(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&nf(n[0]))return Os(e);let s=q_(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Os(e);let i=[...pn].sort((c,u)=>u.command.length-c.command.length).find(c=>sR(n,c.command));if(!i)return Os(e);let o=["rsp",...i.wrapper,...n.slice(i.command.length)],a=Zd(r.redirectSuffix);return{kind:"rewrite",command:[...o.map(fn),...a].join(" "),capabilityId:i.id}}function q_(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Zd(e.redirectSuffix);return r==="cat"&&t.length===2&&Ts(t[1])?{kind:"rewrite",command:["rsp","cat",fn(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Ts(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",fn(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Ts(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],fn(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Ts(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),fn(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Ts(e){return!!e&&!e.startsWith("-")}async function V_(e,t){return await Wd(e,t)}async function K_(e,t){return await Wd(e,t)}async function Wd(e,t){return(await ta(e,t,"pre-exec")).decision}async function ta(e,t,r){let n=sf(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:dn({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,i=ke(s,["cwd"])||ke(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Q_)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:dn({hook:r,command:ea(s),decision:f,reason:"disabled"})}}let a=ea(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:dn({hook:r,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=Re(i,process.env).proxyEnabled?aR(a):(t.rewrite??Gd)(a),d=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let f=l.reason?l:{...l,reason:"unsupported-command"};return{decision:f,telemetryRoot:i,event:dn({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await X_(i,t.wakeResident??Z_),{decision:l,telemetryRoot:i,event:dn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function Hd(e){return e.kind==="rewrite"?Vd(e.command):{stdout:"",status:0}}function qd(e){return e.kind==="rewrite"?Vd(e.command):{stdout:"",status:0}}function Vd(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
76
+ `,status:0}}async function z_(e){let t="";try{t=e?Cs(e,"utf8"):Cs(0,"utf8");let r=await ta(t,{cwd:process.cwd()},"claude-pre-exec");Ds(r.telemetryRoot,r.event);let n=r.decision;zd("claude-pre-exec",n);let s=Hd(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Ds(process.cwd(),Kd("claude-pre-exec",t,r)),Yd("claude-pre-exec",r),0}}async function Y_(e){let t="";try{t=e?Cs(e,"utf8"):Cs(0,"utf8");let r=await ta(t,{cwd:process.cwd()},"codex-pre-exec");Ds(r.telemetryRoot,r.event);let n=r.decision;zd("codex-pre-exec",n);let s=qd(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Ds(process.cwd(),Kd("codex-pre-exec",t,r)),Yd("codex-pre-exec",r),0}}function Ds(e,t){Ye(e,t).catch(()=>{})}function dn(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:rf(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Kd(e,t,r){let n=sf(t),s=n.ok?ea(n.payload):"";return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:rf(s),decision:"failed-open",reason:"hook-exception",error:ra(r)}}function Q_(e){return Re(e,process.env).enabled}async function Z_(e){let t=Re(e,process.env);if(!t.enabled||!rR(t))return;let r=nt(e);await In(r,tR(t))}async function X_(e,t){try{await Promise.resolve(t(e))}catch(r){eR(r)}}function zd(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
77
77
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
78
- `)}}function Nl(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${xo(t)}
79
- `)}function rb(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${xo(e)}
80
- `)}function xo(e){return e instanceof Error?e.name||"Error":typeof e}function nb(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 sb(e){if(!e.storeUri.startsWith("file://"))return!0;try{return qw(Ww(e.storeUri))}catch{return!1}}function Ro(e){return Se(e,["tool_input","command"])||Se(e,["tool_input","cmd"])||Se(e,["tool_input","args","command"])||Se(e,["input","command"])||Se(e,["input","cmd"])||Se(e,["arguments","command"])||Se(e,["arguments","cmd"])||Se(e,["command"])||Se(e,["cmd"])}function ib(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=$l(t);if(r.length===0||r[0]?.quoted||r.some(i=>/[()$`]/.test(i.text))||r.some(i=>i.text.includes("=")&&Fl(i.text)))return null;let n=[],s=[];for(let i of r){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}n.push(i)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function $l(e){let t=[],r="",n=!1,s=null,i=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}if(/[ \t]/.test(a)){i();continue}r+=a}return s?[]:(i(),t)}function ob(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function ab(e){let t=$l(e.trim()).map(r=>r.text);return ns(t)?{kind:"passthrough",reason:Vw}:null}function ns(e){return e[0]==="gh"&&e.some(cb)}function cb(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ll(e){return e.map(t=>t.text)}function zr(e){return/[^\w@%+=:,./-]/.test(e)?ko(e):e}function ub(e){let t=lb(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${ko(e.trim())}`,capabilityId:"proxy:universal"}}function lb(e){let t=e.trim();if(!t)return"missing-command";if(Ml(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=as(os(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Bl.has(r))return"interactive"}function rs(e){let t=e.trim();return db(t)?{kind:"rewrite",command:`rsp exec -- ${ko(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function db(e){return!(!e||!fb(e)||!pb(e)||Ml(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||mb(e,"rsp")||jl(e,Bl)||gb(e))}function fb(e){return/&&|[;|]/.test(e)}function Ml(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 pb(e){return os(e).some(t=>{let r=as(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 jl(e,t){return os(e).some(r=>{let n=as(r)[0];return n?t.has(n):!1})}function mb(e,t){return jl(e,new Set([t]))}function gb(e){return os(e).some(t=>{let r=as(t);return r[0]==="grep"&&r.includes("-q")})}function os(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function as(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ko(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ul(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:ns(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:ns(t)&&t[1]?`gh ${t[1]} json-jq`:ns(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 Fl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function hb(e){return e.join("\0")}function Jl(e){try{let t=JSON.parse(e);return Gl(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Se(e,t){let r=e;for(let n of t){if(!Gl(r))return"";r=r[n]}return typeof r=="string"?r:""}function Gl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Kr,bE,Vw,Bl,Yr=_(()=>{"use strict";Pe();Ve();_e();Kr=[{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:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],bE=Tl(Kr),Vw="lossless-gh-json-jq";Bl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Yl={};M(Yl,{fastTelemetryRoot:()=>To,isFastGitStatus:()=>us,runFastGitStatus:()=>ls});import{spawnSync as zl}from"node:child_process";import{existsSync as Kl,readdirSync as kb}from"node:fs";function us(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ls(){if(Eb(process.cwd()))return{stdout:Eo(),stderr:Buffer.alloc(0),status:0,signal:null};if(zl("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Eo(),stderr:Buffer.alloc(0),status:0,signal:null};let t=zl("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?Eo():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function To(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ve(),kt));return t(e).rootDir}catch{return e}}function Eo(){return Buffer.from(`${j({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
81
- `)}function Eb(e){try{return!Kl(`${e}/.git`)||Kl(`${e}/.git/index`)?!1:kb(e).every(t=>t===".git")}catch{return!1}}var vo=_(()=>{"use strict";Me()});var $o={};M($o,{renderGhContract:()=>nd,runGhWrapper:()=>qb});import{spawn as Ub}from"node:child_process";async function qb(e,t){let r=sd(e),n=await Vb(r);return nd(e,n,t)}async function nd(e,t,r){if((t.status??0)!==0||t.signal){let m=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let n=sd(e),s=Qr(t.stdout),i=t_(n,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=u_(i);if(o){if(!r.store)throw new Error("truncated gh output requires an elision store");let m=await r.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:o.bytes}});o.target.truncated.handle=m}let a=o?.target.truncated.handle||void 0,c=C(i);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=l_(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(c),f=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Re(f)}
78
+ `)}}function Yd(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ra(t)}
79
+ `)}function eR(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ra(e)}
80
+ `)}function ra(e){return e instanceof Error?e.name||"Error":typeof e}function tR(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 rR(e){if(!e.storeUri.startsWith("file://"))return!0;try{return G_(W_(e.storeUri))}catch{return!1}}function ea(e){return ke(e,["tool_input","command"])||ke(e,["tool_input","cmd"])||ke(e,["tool_input","args","command"])||ke(e,["input","command"])||ke(e,["input","cmd"])||ke(e,["arguments","command"])||ke(e,["arguments","cmd"])||ke(e,["command"])||ke(e,["cmd"])}function nR(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Qd(t);if(r.length===0||r[0]?.quoted||r.some(i=>/[()$`]/.test(i.text))||r.some(i=>i.text.includes("=")&&nf(i.text)))return null;let n=[],s=[];for(let i of r){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}n.push(i)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function Qd(e){let t=[],r="",n=!1,s=null,i=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}if(/[ \t]/.test(a)){i();continue}r+=a}return s?[]:(i(),t)}function sR(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function iR(e){let t=Qd(e.trim()).map(r=>r.text);return Ps(t)?{kind:"passthrough",reason:H_}:null}function Ps(e){return e[0]==="gh"&&e.some(oR)}function oR(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Zd(e){return e.map(t=>t.text)}function fn(e){return/[^\w@%+=:,./-]/.test(e)?na(e):e}function aR(e){let t=cR(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${na(e.trim())}`,capabilityId:"proxy:universal"}}function cR(e){let t=e.trim();if(!t)return"missing-command";if(ef(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=As(Is(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Xd.has(r))return"interactive"}function Os(e){let t=e.trim();return uR(t)?{kind:"rewrite",command:`rsp exec -- ${na(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function uR(e){return!(!e||!lR(e)||!dR(e)||ef(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||fR(e,"rsp")||tf(e,Xd)||pR(e))}function lR(e){return/&&|[;|]/.test(e)}function ef(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 dR(e){return Is(e).some(t=>{let r=As(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 tf(e,t){return Is(e).some(r=>{let n=As(r)[0];return n?t.has(n):!1})}function fR(e,t){return tf(e,new Set([t]))}function pR(e){return Is(e).some(t=>{let r=As(t);return r[0]==="grep"&&r.includes("-q")})}function Is(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function As(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function na(e){return`'${e.replace(/'/g,"'\\''")}'`}function rf(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Ps(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Ps(t)&&t[1]?`gh ${t[1]} json-jq`:Ps(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 nf(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function mR(e){return e.join("\0")}function sf(e){try{let t=JSON.parse(e);return of(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function ke(e,t){let r=e;for(let n of t){if(!of(r))return"";r=r[n]}return typeof r=="string"?r:""}function of(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pn,EO,H_,Xd,mn=b(()=>{"use strict";Se();Ze();xe();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:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],EO=Fd(pn),H_="lossless-gh-json-jq";Xd=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var pf={};M(pf,{fastTelemetryRoot:()=>ia,isFastGitStatus:()=>$s,runFastGitStatus:()=>Ls});import{spawnSync as df}from"node:child_process";import{existsSync as ff,readdirSync as SR}from"node:fs";function $s(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ls(){if(xR(process.cwd()))return{stdout:sa(),stderr:Buffer.alloc(0),status:0,signal:null};if(df("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:sa(),stderr:Buffer.alloc(0),status:0,signal:null};let t=df("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?sa():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function ia(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ze(),Dt));return t(e).rootDir}catch{return e}}function sa(){return Buffer.from(`${j({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
81
+ `)}function xR(e){try{return!ff(`${e}/.git`)||ff(`${e}/.git/index`)?!1:SR(e).every(t=>t===".git")}catch{return!1}}var oa=b(()=>{"use strict";Ie()});var ma={};M(ma,{renderGhContract:()=>_f,runGhWrapper:()=>GR});import{spawn as MR}from"node:child_process";async function GR(e,t){let r=Rf(e),n=await HR(r);return _f(e,n,t)}async function _f(e,t,r){if((t.status??0)!==0||t.signal){let m=ge(e.join(" "),t.stdout,t.stderr);return{stdout:N(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let n=Rf(e),s=gn(t.stdout),i=XR(n,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=aS(i);if(o){if(!r.store)throw new Error("truncated gh output requires an elision store");let m=await r.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:o.bytes}});o.target.truncated.handle=m}let a=o?.target.truncated.handle||void 0,c=C(i);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=cS(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(c),d=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!d)throw new Error("terse gh output requires an elision store");let f=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Ee(d)}
82
82
  `;return{stdout:Buffer.from(`${C(u.payload)}
83
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function sd(e){let t=mt(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 i=r,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let m=0;m<l.length;m+=1){let h=l[m]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Xl(l[++m]??""):h.startsWith("--fields=")?u=Xl(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return Wb(d),d}function Zl(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?Jb[t]:Fb[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Xl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function Wb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new fs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=Hb[t];for(let n of e.fields)if(!r.includes(n))throw new fs(e,`unknown field: ${n}`,r)}async function Vb(e){if(e.action==="combined")return await zb(e);let t=Kb(e);if(!t)return await e_(Zl(e));let r=await re({...t,command:["gh",...Zl(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await Yb(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function zb(e){let t=e.target??"",[r,n,s]=await Promise.all([re({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),re({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),re({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[r,n,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=od(Qr(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:ie(Qr(s.stdout)).map(Zb)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function Kb(e){let t=ad(e.passthrough),r=Xb(e.passthrough,"--limit")??30,n=Ie(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:Ie(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 Yb(e,t){let r=Qr(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ie(r).map(id);case"pr:view":return od(r);case"issue:list":return ie(r).filter(n=>!Tt(n.pull_request)).map(ed);case"issue:view":return ed(r);case"run:list":return{items:ie($(r).workflow_runs).map(td),total:ne($(r),"total_count")};case"run:view":{let n=td(r),s=ad(e.passthrough);if(!s)return n;let i=await re({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:i.status===0?ie($(Qr(i.stdout)).jobs).map(Qb):[]}}default:return r}}function id(e){let t=$(e);return{number:ne(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Ao(t.user),labels:ie(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x($(t.base),"ref"),headRefName:x($(t.head),"ref")}}function od(e){return id(e)}function ed(e){let t=$(e);return{number:ne(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:ie(t.labels).map(r=>({name:x(r,"name")})),author:Ao(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function td(e){let t=$(e);return{databaseId:ne(t,"database_id")||ne(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function Qb(e){let t=$(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function Zb(e){let t=$(e);return{author:Ao(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Ao(e){let t=$(e);return{login:x(t,"login")}}function ad(e){return e.find(t=>!t.startsWith("-"))}function Ie(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function Xb(e,t){let r=Ie(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function e_(e){let t=Ub("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,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:o,signal:a})})})}function t_(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Oo(r,"prs"),i=s.rows.map(c=>cd(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):nr({...n,prs:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} ${rd(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return nr({...n,pr:ud($(r),e),summary:`PR #${ne($(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return r_(e,t,$(r));case"issue:list":{let s=Oo(r,"issues"),i=s.rows.map(c=>ld(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):nr({...n,issues:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} ${rd(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return nr({...n,issue:a_($(r),e),summary:`issue #${ne($(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Oo(r,"runs"),i=s.rows.map(c=>dd(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):nr({...n,runs:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return nr({...n,run:c_($(r),e),summary:`run ${ne($(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function r_(e,t,r){let n=ud($(r.view),{...e,action:"view",wide:!0}),s=W(ie(r.checks).map(n_),e.query),i=$(r.comments).comments,o=W(ie(i).map(s_).slice(-3),e.query);return je({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${ne($(r.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function n_(e){return{name:x(e,"name"),state:Zr(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function s_(e){return{author:pd(e.author),body:ps(e,"body",Io,!1),created:x(e,"createdAt")}}function Oo(e,t){if(Array.isArray(e))return{rows:ie(e)};let r=$(e),n=ne(r,"total")||ne(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ie(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ie(r.workflow_runs),total:n}:{rows:[]}}function Po(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Co(e,t,r,n,s){return je({...e,empty:!0,scope:i_(t),[r]:[],aggregate:n,summary:`0 ${o_(t)}`},s)}function i_(e){let t=Ie(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let i=Ie(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${r}`}let n=Ie(e.passthrough,"--branch")??Ie(e.passthrough,"-b"),s=Ie(e.passthrough,"--workflow")??Ie(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function o_(e){let t=Ie(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function cd(e,t){let r={number:ne(e,"number"),title:x(e,"title"),state:Zr(e),draft:!!e.isDraft};return No(r,e,t,["author","labels","url","updated"]),r}function ud(e,t){let r=cd(e,t);return r.body=ps(e,"body",Io,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function ld(e,t){let r={number:ne(e,"number"),title:x(e,"title"),state:Zr(e),labels:fd(e.labels)};return No(r,e,t,["author","url","updated"]),r}function a_(e,t){let r=ld(e,t);return r.body=ps(e,"body",Io,t.full),r}function dd(e,t){let r={id:ne(e,"databaseId"),name:x(e,"name"),status:Zr(e),conclusion:x(e,"conclusion")};return No(r,e,t,["event","branch","workflow","created"]),r}function c_(e,t){let r=dd(e,t),n=ie(e.jobs).map(s=>({name:x(s,"name"),status:Zr(s),conclusion:x(s,"conclusion"),log:ps(s,"log",Gb,t.full)}));return r.jobs=n,r}function ps(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let i=s.slice(0,r),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function u_(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Tt(r)){if(Tt(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 l_(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 rd(e,t){return e.every(r=>r.state===t)?t:"returned"}function Do(e,t,r){return r?`${e}/${t}`:String(e)}function nr(e,t,r){return t.query?je(e,r):e}function Zr(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function No(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=pd(t.author):s==="labels"?e.labels=fd(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function fd(e){return Array.isArray(e)?e.map(t=>Tt(t)?x(t,"name"):String(t)).filter(Boolean):[]}function pd(e){return Tt(e)?x(e,"login"):""}function Qr(e){return e.trim()?JSON.parse(e):null}function ie(e){return Array.isArray(e)?e.filter(Tt):[]}function $(e){return Tt(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function ne(e,t){let r=e[t];return typeof r=="number"?r:0}function Tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fb,Jb,Io,Gb,Hb,fs,Lo=_(()=>{"use strict";ee();jn();St();pr();ve();Fb={"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"]},Jb={"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"]},Io=160,Gb=160,Hb={"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"]};fs=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var jo={};M(jo,{renderTestContract:()=>md,runTestWrapper:()=>g_});import{spawn as d_}from"node:child_process";async function g_(e,t){let r=mt(e),n=await __(r.argv);return await md(e,n,t)}async function md(e,t,r){let n=mt(e),i=gd(n.argv)==="vitest"?R_(t.stdout):S_(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${E_(i.durationSeconds)}`,c=W(i.failures,n.query);if(r.level==="terse")return await h_(n.argv,t,{...i,failures:c},o,a,r,n.query);let u=[],l,f=0;for(let h of c){let p=await x_(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:p.text}),l??=p.handle,f+=p.bytesElided}let d={exit_code:o,summary:n.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let m=n.query?je(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function h_(e,t,r,n,s,i,o){let a=y_(r.failures),c={exit_code:n,summary:o?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?je(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),f=Math.max(0,r.failures.length-a.length),d=a.some((v,E)=>v.excerpt!==r.failures[E].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:u};let m={exit_code:n,summary:s};r.failures.length>0&&(m.failures=r.failures.map(v=>({suite:v.suite,name:v.name,excerpt:v.excerpt})));let h=C(m),p=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:p}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${p}) \u2014 ${Re(g)}`;return{stdout:Buffer.from(`${l}
84
- ${y}`),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:p,rowsElided:f,rawOutput:Buffer.from(h)}}function Mo(e){return e===0||e===null?0:1}function y_(e){let t=[],r=p_;for(let n of e.slice(0,m_)){let s=w_(n.excerpt,Math.min(f_,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function w_(e,t){if(t<=0)return"";let r=e.split(`
83
+ ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:d,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Rf(e){let t=bt(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 i=r,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let m=0;m<l.length;m+=1){let h=l[m]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=hf(l[++m]??""):h.startsWith("--fields=")?u=hf(h.slice(9)):o.push(h)}let f={kind:i,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return WR(f),f}function gf(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?UR[t]:jR[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function hf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function WR(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Ms(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=FR[t];for(let n of e.fields)if(!r.includes(n))throw new Ms(e,`unknown field: ${n}`,r)}async function HR(e){if(e.action==="combined")return await qR(e);let t=VR(e);if(!t)return await ZR(gf(e));let r=await ne({...t,command:["gh",...gf(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await KR(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function qR(e){let t=e.target??"",[r,n,s]=await Promise.all([ne({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ne({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ne({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[r,n,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=xf(gn(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:oe(gn(s.stdout)).map(YR)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function VR(e){let t=Ef(e.passthrough),r=QR(e.passthrough,"--limit")??30,n=Be(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:Be(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 KR(e,t){let r=gn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return oe(r).map(Sf);case"pr:view":return xf(r);case"issue:list":return oe(r).filter(n=>!At(n.pull_request)).map(yf);case"issue:view":return yf(r);case"run:list":return{items:oe($(r).workflow_runs).map(wf),total:se($(r),"total_count")};case"run:view":{let n=wf(r),s=Ef(e.passthrough);if(!s)return n;let i=await ne({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:i.status===0?oe($(gn(i.stdout)).jobs).map(zR):[]}}default:return r}}function Sf(e){let t=$(e);return{number:se(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:fa(t.user),labels:oe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x($(t.base),"ref"),headRefName:x($(t.head),"ref")}}function xf(e){return Sf(e)}function yf(e){let t=$(e);return{number:se(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:oe(t.labels).map(r=>({name:x(r,"name")})),author:fa(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function wf(e){let t=$(e);return{databaseId:se(t,"database_id")||se(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function zR(e){let t=$(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function YR(e){let t=$(e);return{author:fa(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function fa(e){let t=$(e);return{login:x(t,"login")}}function Ef(e){return e.find(t=>!t.startsWith("-"))}function Be(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function QR(e,t){let r=Be(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function ZR(e){let t=MR("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,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:o,signal:a})})})}function XR(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=aa(r,"prs"),i=s.rows.map(c=>kf(c,e)),o=K(i,e.query),a=ca(o.length,i.length,s.total,e.query);return o.length===0?ua(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):pr({...n,prs:o,aggregate:a,summary:`${la(o.length,i.length,e.query)} ${bf(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return pr({...n,pr:vf($(r),e),summary:`PR #${se($(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return eS(e,t,$(r));case"issue:list":{let s=aa(r,"issues"),i=s.rows.map(c=>Tf(c,e)),o=K(i,e.query),a=ca(o.length,i.length,s.total,e.query);return o.length===0?ua(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):pr({...n,issues:o,aggregate:a,summary:`${la(o.length,i.length,e.query)} ${bf(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return pr({...n,issue:iS($(r),e),summary:`issue #${se($(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=aa(r,"runs"),i=s.rows.map(c=>Of(c,e)),o=K(i,e.query),a=ca(o.length,i.length,s.total,e.query);return o.length===0?ua(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):pr({...n,runs:o,aggregate:a,summary:`${la(o.length,i.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:oS($(r),e),summary:`run ${se($(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function eS(e,t,r){let n=vf($(r.view),{...e,action:"view",wide:!0}),s=K(oe(r.checks).map(tS),e.query),i=$(r.comments).comments,o=K(oe(i).map(rS).slice(-3),e.query);return Ge({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${se($(r.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function tS(e){return{name:x(e,"name"),state:hn(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function rS(e){return{author:Cf(e.author),body:js(e,"body",da,!1),created:x(e,"createdAt")}}function aa(e,t){if(Array.isArray(e))return{rows:oe(e)};let r=$(e),n=se(r,"total")||se(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:oe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:oe(r.workflow_runs),total:n}:{rows:[]}}function ca(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function ua(e,t,r,n,s){return Ge({...e,empty:!0,scope:nS(t),[r]:[],aggregate:n,summary:`0 ${sS(t)}`},s)}function nS(e){let t=Be(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let i=Be(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${r}`}let n=Be(e.passthrough,"--branch")??Be(e.passthrough,"-b"),s=Be(e.passthrough,"--workflow")??Be(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function sS(e){let t=Be(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function kf(e,t){let r={number:se(e,"number"),title:x(e,"title"),state:hn(e),draft:!!e.isDraft};return pa(r,e,t,["author","labels","url","updated"]),r}function vf(e,t){let r=kf(e,t);return r.body=js(e,"body",da,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Tf(e,t){let r={number:se(e,"number"),title:x(e,"title"),state:hn(e),labels:Pf(e.labels)};return pa(r,e,t,["author","url","updated"]),r}function iS(e,t){let r=Tf(e,t);return r.body=js(e,"body",da,t.full),r}function Of(e,t){let r={id:se(e,"databaseId"),name:x(e,"name"),status:hn(e),conclusion:x(e,"conclusion")};return pa(r,e,t,["event","branch","workflow","created"]),r}function oS(e,t){let r=Of(e,t),n=oe(e.jobs).map(s=>({name:x(s,"name"),status:hn(s),conclusion:x(s,"conclusion"),log:js(s,"log",JR,t.full)}));return r.jobs=n,r}function js(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let i=s.slice(0,r),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function aS(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(At(r)){if(At(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 cS(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 bf(e,t){return e.every(r=>r.state===t)?t:"returned"}function la(e,t,r){return r?`${e}/${t}`:String(e)}function pr(e,t,r){return t.query?Ge(e,r):e}function hn(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function pa(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=Cf(t.author):s==="labels"?e.labels=Pf(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function Pf(e){return Array.isArray(e)?e.map(t=>At(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Cf(e){return At(e)?x(e,"login"):""}function gn(e){return e.trim()?JSON.parse(e):null}function oe(e){return Array.isArray(e)?e.filter(At):[]}function $(e){return At(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function se(e,t){let r=e[t];return typeof r=="number"?r:0}function At(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jR,UR,da,JR,FR,Ms,ga=b(()=>{"use strict";te();ps();Pt();xr();Ce();jR={"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"]},UR={"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"]},da=160,JR=160,FR={"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"]};Ms=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var wa={};M(wa,{renderTestContract:()=>Df,runTestWrapper:()=>pS});import{spawn as uS}from"node:child_process";async function pS(e,t){let r=bt(e),n=await wS(r.argv);return await Df(e,n,t)}async function Df(e,t,r){let n=bt(e),i=If(n.argv)==="vitest"?bS(t.stdout):_S(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=ge(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${xS(i.durationSeconds)}`,c=K(i.failures,n.query);if(r.level==="terse")return await mS(n.argv,t,{...i,failures:c},o,a,r,n.query);let u=[],l,d=0;for(let h of c){let p=await RS(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:p.text}),l??=p.handle,d+=p.bytesElided}let f={exit_code:o,summary:n.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(f.failures=u);let m=n.query?Ge(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:ya(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function mS(e,t,r,n,s,i,o){let a=gS(r.failures),c={exit_code:n,summary:o?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?Ge(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),d=Math.max(0,r.failures.length-a.length),f=a.some((v,k)=>v.excerpt!==r.failures[k].excerpt);if(d===0&&!f)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:ya(t.status),signal:t.signal,payload:u};let m={exit_code:n,summary:s};r.failures.length>0&&(m.failures=r.failures.map(v=>({suite:v.suite,name:v.name,excerpt:v.excerpt})));let h=C(m),p=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:p}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${p}) \u2014 ${Ee(g)}`;return{stdout:Buffer.from(`${l}
84
+ ${w}`),stderr:Buffer.from(t.stderr),status:ya(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:p,rowsElided:d,rawOutput:Buffer.from(h)}}function ya(e){return e===0||e===null?0:1}function gS(e){let t=[],r=dS;for(let n of e.slice(0,fS)){let s=hS(n.excerpt,Math.min(lS,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function hS(e,t){if(t<=0)return"";let r=e.split(`
85
85
  `),n=r.length<=2?e:`${r[0]}
86
86
  \u2026
87
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function gd(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 b_(e){if(gd(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.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 __(e){let t=b_(e),r=d_(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function R_(e){let t=hd(e);if(!ot(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=at(t.numTotalTests),i=at(t.numFailedTests),o=T_(at(t.startTime),at(t.endTime));for(let a of r){if(!ot(a))continue;let c=Ae(a.name)||Ae(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)ot(l)&&l.status==="failed"&&n.push({suite:c,name:Ae(l.fullName)||Ae(l.title)||Ae(l.name),excerpt:k_(l.failureMessages)||Ae(l.failureMessage)})}return s||=r.reduce((a,c)=>!ot(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=n.length,o||=r.reduce((a,c)=>ot(c)?a+at(c.perfStats&&ot(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:r.length||1,durationSeconds:o,failures:n}}function S_(e){let t=e.split(`
88
- `).filter(Boolean).map(c=>hd(c)).filter(ot);if(t.length===0)return null;let r=[],n=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,n+=at(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=at(c.failed),o+=at(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ae(c.name).split("::").slice(0,-1).join("::"),name:Ae(c.name),excerpt:Ae(c.stdout)});continue}if(c.reason==="compiler-message"&&ot(c.message)){let u=Ae(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(`
89
- `)}),i||=1,n||=1,s||=1),s||=r.length,i||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:i,durationSeconds:o,failures:r}}async function x_(e,t,r){let n=Buffer.from(e);if(n.length<=Bo)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}}),i=n.subarray(0,Bo).toString("utf8").replace(/\uFFFD$/,""),o=n.length-Buffer.byteLength(i);return{text:`${i}
90
- \u2026 elided ${o} bytes (+${n.length}) \u2014 ${Re(s)}`,handle:s,bytesElided:n.length}}function hd(e){try{return JSON.parse(e)}catch{return null}}function k_(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
91
- `):""}function E_(e){return`${Number(e.toFixed(1))}s`}function T_(e,t){return e>0&&t>e?(t-e)/1e3:0}function at(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ae(e){return typeof e=="string"?e:""}function ot(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Bo,f_,p_,m_,Uo=_(()=>{"use strict";ee();St();pr();ve();Bo=320,f_=160,p_=Bo,m_=3});var Go={};M(Go,{parseCatCommand:()=>Jo,renderCatContract:()=>N_,runCatWrapper:()=>A_});import{isUtf8 as v_}from"node:buffer";import{readFile as O_}from"node:fs/promises";import{extname as P_}from"node:path";async function A_(e,t){let r=Jo(e),n;try{n=await O_(r.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=me(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${r.file}`}),stderr:Buffer.from(`${i}
92
- `),status:1,signal:null}}return Sd(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Rd(e,r,n,t)}async function N_(e,t,r){if((t.status??0)!==0||t.signal){let o=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let n=Jo(e),s=Buffer.from(t.stdout,"utf8");return Sd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Rd(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Jo(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=_d(t[++o],Fo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=_d(u,Fo);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function Rd(e,t,r,n){let s=r.toString("utf8"),i=B_(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let o=n.level!=="lossless"||r.length>bd(n.heavyByteThreshold,yd)||i.truncated;if(!wd(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=wd(t.file)?$_(e,t.file,r,s,n.level,i):L_(e,t.file,r,s,i),c=`${C(a)}
93
- `;if(!o&&Buffer.byteLength(c)<=bd(n.heavyByteThreshold,yd))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 ${Re(u)}
94
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function $_(e,t,r,n,s,i){let o=ms(n),a=s==="terse"?D_:C_,c=ms(i.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:o.length,symbols:M_(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function L_(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ms(n).length,content:ms(s.text),truncated:s.truncated}}function B_(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
95
- `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,i=t.limit??Fo,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
87
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function If(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 yS(e){if(If(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.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 wS(e){let t=yS(e),r=uS(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function bS(e){let t=Af(e);if(!dt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=ft(t.numTotalTests),i=ft(t.numFailedTests),o=ES(ft(t.startTime),ft(t.endTime));for(let a of r){if(!dt(a))continue;let c=Me(a.name)||Me(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)dt(l)&&l.status==="failed"&&n.push({suite:c,name:Me(l.fullName)||Me(l.title)||Me(l.name),excerpt:SS(l.failureMessages)||Me(l.failureMessage)})}return s||=r.reduce((a,c)=>!dt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=n.length,o||=r.reduce((a,c)=>dt(c)?a+ft(c.perfStats&&dt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:r.length||1,durationSeconds:o,failures:n}}function _S(e){let t=e.split(`
88
+ `).filter(Boolean).map(c=>Af(c)).filter(dt);if(t.length===0)return null;let r=[],n=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,n+=ft(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=ft(c.failed),o+=ft(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Me(c.name).split("::").slice(0,-1).join("::"),name:Me(c.name),excerpt:Me(c.stdout)});continue}if(c.reason==="compiler-message"&&dt(c.message)){let u=Me(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(`
89
+ `)}),i||=1,n||=1,s||=1),s||=r.length,i||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:i,durationSeconds:o,failures:r}}async function RS(e,t,r){let n=Buffer.from(e);if(n.length<=ha)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}}),i=n.subarray(0,ha).toString("utf8").replace(/\uFFFD$/,""),o=n.length-Buffer.byteLength(i);return{text:`${i}
90
+ \u2026 elided ${o} bytes (+${n.length}) \u2014 ${Ee(s)}`,handle:s,bytesElided:n.length}}function Af(e){try{return JSON.parse(e)}catch{return null}}function SS(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
91
+ `):""}function xS(e){return`${Number(e.toFixed(1))}s`}function ES(e,t){return e>0&&t>e?(t-e)/1e3:0}function ft(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Me(e){return typeof e=="string"?e:""}function dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ha,lS,dS,fS,ba=b(()=>{"use strict";te();Pt();xr();Ce();ha=320,lS=160,dS=ha,fS=3});var Sa={};M(Sa,{parseCatCommand:()=>Ra,renderCatContract:()=>IS,runCatWrapper:()=>DS});import{isUtf8 as kS}from"node:buffer";import{readFile as vS}from"node:fs/promises";import{extname as TS}from"node:path";async function DS(e,t){let r=Ra(e),n;try{n=await vS(r.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=ge(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${r.file}`}),stderr:Buffer.from(`${i}
92
+ `),status:1,signal:null}}return jf(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Mf(e,r,n,t)}async function IS(e,t,r){if((t.status??0)!==0||t.signal){let o=ge(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let n=Ra(e),s=Buffer.from(t.stdout,"utf8");return jf(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Mf(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ra(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=Bf(t[++o],_a);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Bf(u,_a);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function Mf(e,t,r,n){let s=r.toString("utf8"),i=$S(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let o=n.level!=="lossless"||r.length>Lf(n.heavyByteThreshold,Nf)||i.truncated;if(!$f(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=$f(t.file)?AS(e,t.file,r,s,n.level,i):NS(e,t.file,r,s,i),c=`${C(a)}
93
+ `;if(!o&&Buffer.byteLength(c)<=Lf(n.heavyByteThreshold,Nf))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 ${Ee(u)}
94
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function AS(e,t,r,n,s,i){let o=Us(n),a=s==="terse"?PS:OS,c=Us(i.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:o.length,symbols:LS(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function NS(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Us(n).length,content:Us(s.text),truncated:s.truncated}}function $S(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
95
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,i=t.limit??_a,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
96
96
  `)}${n&&o.length>0?`
97
- `:""}`,truncated:o.length<s.length}}function M_(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:r+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[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&&!j_(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ms(e){let t=e.split(`
98
- `);return t.at(-1)===""?t.slice(0,-1):t}function Sd(e){return e.includes(0)||!v_(e)}function wd(e){return I_.has(P_(e).toLowerCase())}function j_(e){return["for","if","switch","while"].includes(e)}function bd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function _d(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var yd,Fo,C_,D_,I_,Ho=_(()=>{"use strict";ee();St();ve();yd=8*1024,Fo=10,C_=8,D_=2,I_=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Cd={};M(Cd,{REPO_STORE_PATH:()=>Vo,mergeRspBlock:()=>vd,provisionRspRepoStore:()=>K_});import{constants as U_}from"node:fs";import{access as F_,copyFile as J_,mkdir as kd,readFile as G_,rename as H_,writeFile as Ed}from"node:fs/promises";import{dirname as q_,join as Xr,resolve as W_}from"node:path";async function K_(e,t={}){let r=W_(e),n=Xr(r,".red"),s=Xr(n,"config.yaml"),i=Xr(r,Vo);await kd(n,{recursive:!0}),await kd(q_(i),{recursive:!0});let o="";try{o=await G_(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=vd(o,{enabled:!0,ttlDays:t.ttlDays??ye,ephemeralTtlHours:t.ephemeralTtlHours??we,byteBudget:t.byteBudget??be,heavyGitByteThreshold:t.heavyGitByteThreshold??Je}),c=a!==o;c&&await Ed(s,a,"utf8");let u=!await Wo(i),l=!1,f=!1;if(u){let m=Xr(r,V_),h=Xr(r,z_);if(await Wo(m))await H_(m,i),f=!0;else if(await Wo(h))await J_(h,i),l=!0;else{let{RspElisionStore:p}=await Promise.resolve().then(()=>(et(),Wt)),g=process.env.REDDB_BIN;try{await(await p.open({uri:`file://${i}`,ttlDays:t.ttlDays??ye,ephemeralTtlHours:t.ephemeralTtlHours??we,byteBudget:t.byteBudget??be,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Y_(a,Vo);return d!==a&&await Ed(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function vd(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${gs(t.ttlDays,ye)}`,` ephemeralTtlHours: ${gs(t.ephemeralTtlHours,we)}`,` byteBudget: ${gs(t.byteBudget,be)}`,` heavyGitByteThreshold: ${gs(t.heavyGitByteThreshold,Je)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
99
- `),s=Od(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
97
+ `:""}`,truncated:o.length<s.length}}function LS(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:r+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[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&&!BS(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Us(e){let t=e.split(`
98
+ `);return t.at(-1)===""?t.slice(0,-1):t}function jf(e){return e.includes(0)||!kS(e)}function $f(e){return CS.has(TS(e).toLowerCase())}function BS(e){return["for","if","switch","while"].includes(e)}function Lf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Bf(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Nf,_a,OS,PS,CS,xa=b(()=>{"use strict";te();Pt();Ce();Nf=8*1024,_a=10,OS=8,PS=2,CS=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Vf={};M(Vf,{REPO_STORE_PATH:()=>va,mergeRspBlock:()=>Wf,provisionRspRepoStore:()=>VS});import{constants as MS}from"node:fs";import{access as jS,copyFile as US,mkdir as Jf,readFile as JS,rename as FS,writeFile as Ff}from"node:fs/promises";import{dirname as GS,join as yn,resolve as WS}from"node:path";async function VS(e,t={}){let r=WS(e),n=yn(r,".red"),s=yn(n,"config.yaml"),i=yn(r,va);await Jf(n,{recursive:!0}),await Jf(GS(i),{recursive:!0});let o="";try{o=await JS(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Wf(o,{enabled:!0,ttlDays:t.ttlDays??we,ephemeralTtlHours:t.ephemeralTtlHours??be,byteBudget:t.byteBudget??_e,heavyGitByteThreshold:t.heavyGitByteThreshold??qe}),c=a!==o;c&&await Ff(s,a,"utf8");let u=!await ka(i),l=!1,d=!1;if(u){let m=yn(r,HS),h=yn(r,qS);if(await ka(m))await FS(m,i),d=!0;else if(await ka(h))await US(h,i),l=!0;else{let{RspElisionStore:p}=await Promise.resolve().then(()=>(Ke(),Qt)),g=process.env.REDDB_BIN;try{await(await p.open({uri:`file://${i}`,ttlDays:t.ttlDays??we,ephemeralTtlHours:t.ephemeralTtlHours??be,byteBudget:t.byteBudget??_e,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let f=KS(a,va);return f!==a&&await Ff(s,f,"utf8"),{configPath:s,storePath:i,configChanged:c||f!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:d}}function Wf(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Js(t.ttlDays,we)}`,` ephemeralTtlHours: ${Js(t.ephemeralTtlHours,be)}`,` byteBudget: ${Js(t.byteBudget,_e)}`,` heavyGitByteThreshold: ${Js(t.heavyGitByteThreshold,qe)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
99
+ `),s=Hf(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
100
100
  `)}
101
- `}let i=zo(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(i)].join(`
101
+ `}let i=Ta(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(i)].join(`
102
102
  `)}
103
- `}function Od(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Yo(n)&&Ko(n)===0&&Pd(n)===t)return r}return-1}function zo(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Yo(e[s])&&Ko(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ko(e){return(e.match(/^ */)?.[0]??"").length}function Yo(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Pd(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function gs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Y_(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
104
- `),n=Od(r,"plugins");if(n===-1)return e;let s=zo(r,n,0),i=Td(r,"memory",n+1,s,2);if(i===-1)return e;let o=zo(r,i,2),a=[...r],c=Td(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
103
+ `}function Hf(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Pa(n)&&Oa(n)===0&&qf(n)===t)return r}return-1}function Ta(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Pa(e[s])&&Oa(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Oa(e){return(e.match(/^ */)?.[0]??"").length}function Pa(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function qf(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Js(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function KS(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
104
+ `),n=Hf(r,"plugins");if(n===-1)return e;let s=Ta(r,n,0),i=Gf(r,"memory",n+1,s,2);if(i===-1)return e;let o=Ta(r,i,2),a=[...r],c=Gf(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
105
105
  `)}
106
- `}function Td(e,t,r,n,s){for(let i=r;i<n;i++){let o=e[i];if(Yo(o)&&Ko(o)===s&&Pd(o)===t)return i}return-1}async function Wo(e){try{return await F_(e,U_.F_OK),!0}catch{return!1}}var Vo,V_,z_,Dd=_(()=>{"use strict";Be();Pe();Vo=mi,V_=La,z_=".red/memory/graph.rdb"});var Ld={};M(Ld,{runRspMcpServer:()=>Z_});import{createInterface as Q_}from"node:readline";async function Z_(){let e=Ge(process.cwd(),process.env),t=Q_({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 X_(n,e);Nd({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Nd({jsonrpc:"2.0",id:typeof $d(r)?.id>"u"?null:$d(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function X_(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:Ad(t)}]};if(!t.enabled)return{content:[{type:"text",text:Ad(t)}],isError:!0};let n=aR(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:vt({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),i=await n.get(s);return i?"status"in i?{content:[{type:"text",text:vt({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:vt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:vt(eR(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await tR(r.arguments,n)}]}}return{}}function vt(e){return`${j(e)}
107
- `}function eR(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function tR(e,t){let r=rR(e?.payload),n=nR(e?.level),s=await go(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return iR(s.output);let i=Zn(r);if(n==="brief"&&Buffer.byteLength(i)<=2*1024)return vt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(r),text:i});let o=Buffer.from(r),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:n,bytes_elided:o.length}});return sR(i,o.length,a,n)}function rR(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function nR(e){return e==="terse"?"terse":"brief"}function sR(e,t,r,n){let s=n==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Id(i.subarray(0,o)),c=Id(i.subarray(Math.max(0,i.length-o)));return vt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:oR(i),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function iR(e){return e.endsWith(`
106
+ `}function Gf(e,t,r,n,s){for(let i=r;i<n;i++){let o=e[i];if(Pa(o)&&Oa(o)===s&&qf(o)===t)return i}return-1}async function ka(e){try{return await jS(e,MS.F_OK),!0}catch{return!1}}var va,HS,qS,Kf=b(()=>{"use strict";De();Se();va=Fi,HS=yc,qS=".red/memory/graph.rdb"});var Xf={};M(Xf,{runRspMcpServer:()=>YS});import{createInterface as zS}from"node:readline";async function YS(){let e=Re(process.cwd(),process.env),t=zS({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 QS(n,e);Qf({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Qf({jsonrpc:"2.0",id:typeof Zf(r)?.id>"u"?null:Zf(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function QS(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:Yf(t)}]};if(!t.enabled)return{content:[{type:"text",text:Yf(t)}],isError:!0};let n=ix(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:Nt({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),i=await n.get(s);return i?"status"in i?{content:[{type:"text",text:Nt({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:Nt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:Nt(ZS(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await XS(r.arguments,n)}]}}return{}}function Nt(e){return`${j(e)}
107
+ `}function ZS(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function XS(e,t){let r=ex(e?.payload),n=tx(e?.level),s=await Ko(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return nx(s.output);let i=Es(r);if(n==="brief"&&Buffer.byteLength(i)<=2*1024)return Nt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(r),text:i});let o=Buffer.from(r),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:n,bytes_elided:o.length}});return rx(i,o.length,a,n)}function ex(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function tx(e){return e==="terse"?"terse":"brief"}function rx(e,t,r,n){let s=n==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=zf(i.subarray(0,o)),c=zf(i.subarray(Math.max(0,i.length-o)));return Nt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:sx(i),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function nx(e){return e.endsWith(`
108
108
  `)?e:`${e}
109
- `}function Id(e){return e.toString("utf8").replace(/�$/g,"")}function oR(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 aR(e){return new Wr(Ze(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 Ad(e){return vt({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 Nd(e){process.stdout.write(`${JSON.stringify(e)}
110
- `)}function $d(e){try{return JSON.parse(e)}catch{return null}}var Bd=_(()=>{"use strict";Me();Pe();jr();Ve()});var jd={};M(jd,{renderShellInit:()=>cR});function cR(e,t=Kr){if(e==="fish")return uR(t);if(e==="bash"||e==="zsh")return lR(e,t);throw new Error(`unsupported shell: ${e}`)}function uR(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(ys))].map(r=>` abbr --add --position command -- ${r} '${mR(`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(`
111
- `)}function lR(e,t){let r=fR(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...hs("git",r.get("git")??[]),...hs("gh",r.get("gh")??[]),...hs("vitest",r.get("vitest")??[]),...hs("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(`
112
- `)}function hs(e,t){if(t.length===0)return[];if(t.some(i=>i.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(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(ys),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(ys)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let i=r.map(o=>Md(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of dR(n)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${pR(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Md(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function dR(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 fR(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ys(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ys(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Md(e){return e.replace(/[\\|)&;]/g,"\\$&")}function pR(e){return e.replace(/'/g,"'\\''")}function mR(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ud=_(()=>{"use strict";Yr()});function Qo(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"&&gR(t.chosenOption)&&hR(t.outcome)&&yR(t.cost)}function gR(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function hR(e){return e==="success"||e==="failure"||e==="escalated"}function yR(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 Fd=_(()=>{});import{createHash as wR}from"node:crypto";function Xd(e,t){return new Xo(e,t)}function Jd(e){let t=Number(e.red_entity_id??e.rid),r=ea(e.properties??e.PROPERTIES),n=ef(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),i=String(r.title??e.label??e.LABEL??s),o=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:i,content:o,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Gd(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=tf(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:ea(e.properties??e.PROPERTIES)}}function RR(e){let t=Number(e.red_entity_id??e.rid),r=ea(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Qo(r)?null:{rid:t,event:r}}function ea(e){return e==null?{}:typeof e=="string"?JSON.parse(e):ws(e)?e:{}}function ef(e){let t=e==="contact"?"person":e;if(bR.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function tf(e){if(_R.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function SR(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Hd(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Pt(e){return ws(e)?e:{}}function qd(e,t){return Pt(e)[t]}function Wd(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Vd(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function zd(e){let t=Pt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function se(e){return typeof e=="string"&&e.length>0?e:void 0}function ws(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zo(e){return e!=null}function xR(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function kR(e){return wR("sha256").update(JSON.stringify(e)).digest("hex")}function ER(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Kd(e){return`artifact-hash:${e}`}function Yd(e,t,r){return`connection:${e}:${t}:${r}`}function Qd(){return"model-tier-bandit:v1"}function TR(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Zd(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function rf(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+Zd(r,a)*3+Zd(n,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function vR(e,t,r,n){let s=0;for(let i of r){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=n.get(o);if(!a)continue;let c=nf({...rf(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Ot(s)}function nf(e){return{...e,lexical:Ot(e.lexical),tags:Ot(e.tags),kind:Ot(e.kind),connections:Ot(e.connections),vector:Ot(e.vector),total:Ot(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ot(e){return Math.round(e*1e3)/1e3}function OR(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(i=>r.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function PR(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,i)=>({ref:`B${i+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 CR(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ne,bR,_R,Xo,sf=_(()=>{"use strict";Fd();Ne={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},bR=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),_R=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Xo=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(Pt(r));if(t==="getArtifact")return await this.getArtifact(qd(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Pt(r);return await this.search(Wd(n,"query"),Vd(n,"limit")??10,zd(n.options))}if(t==="think"){let n=Pt(r);return await this.think(Wd(n,"query"),Vd(n,"limit")??8,zd(n.options))}if(t==="link")return await this.link(Pt(r));if(t==="backlinks")return await this.backlinks(qd(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Pt(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 ${Ne.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ne.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ne.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:CR(t.map(n=>n.kind))}}async capture(t){let r=se(t.title)||"Untitled artifact",n=se(t.content);if(!n)throw new Error("brain capture requires content");let s=ef(se(t.kind)||"note"),i=xR(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=kR([s,r,n,i,se(t.sourcePath),se(t.sourceSession)]),c=await this.kv().get(Kd(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${ER(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:i,source_agent:se(t.sourceAgent),source_runner:se(t.sourceRunner),source_session:se(t.sourceSession),source_path:se(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:ws(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ne.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let m=Jd(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Kd(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Ne.artifacts}`)).rows.map(Jd).filter(Zo)}async search(t,r,n={}){let s=TR(t),i=new Set(n.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=rf(u,s),f=nf({...l,connections:vR(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:OR(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 PR(t,s)}async link(t){let r=await this.getArtifact(Hd(t.from)),n=await this.getArtifact(Hd(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=tf(se(t.kind)||"related_to"),i=await this.findConnection(r.rid,n.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:se(t.reason),confidence:se(t.confidence)||"explicit",created_at:Date.now(),metadata:ws(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ne.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Gd(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Yd(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 ${Ne.connections}`)).rows.map(Gd).filter(Zo)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=SR(se(t.interval)||"day"),s=se(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(!Qo(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ne.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 ${Ne.outcomeEvents}`)).rows.map(RR).filter(Zo).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Qd());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Qd(),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(Yd(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ne.kv)}}});var wf={};M(wf,{runResidentServer:()=>MR});import{randomUUID as sr}from"node:crypto";import{execFileSync as DR,spawn as IR}from"node:child_process";import{existsSync as AR}from"node:fs";import{mkdir as ff,rename as NR,rm as of,writeFile as pf}from"node:fs/promises";import{createServer as $R}from"node:net";import{dirname as sa,join as bs}from"node:path";import{fileURLToPath as LR,pathToFileURL as BR}from"node:url";async function MR(e){await ff(sa(e.socketPath),{recursive:!0});let t=QR();YR();let r=e.telemetryDrainTimeoutMs??mf,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Rn,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=$R(E=>{l.add(E),E.once("close",()=>l.delete(E)),h(),sS(E,async O=>{h();let B=await iS(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),le={id:O.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};yf(E,le),O.op==="handover"&&setImmediate(()=>m())})});function m(){i=!0,u=!0,c=KR(c),d.close();for(let E of l)E.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(E=>{let O=()=>{_s(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(E,O),{signal:E,handler:O}});await new Promise((E,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),E()})}),(async()=>{let E=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(Q=>setTimeout(Q,O));let B=await qt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),le=Number(process.hrtime.bigint()-E)/1e6,xe=new na(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??bn,byteBudget:e.telemetryByteBudget??e.byteBudget??_n});if(i){await B.close();return}if(await ta(xe,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:xe,storeOpenCount:1,storeElapsedMs:le},s=setInterval(()=>{let Q=n.kind==="ready"?n:void 0;Q&&ta(Q.telemetry,r)},f),s.unref(),h()})().catch(E=>{n={kind:"failed",error:E instanceof Error?E:new Error(String(E))},h()}),e.pidPath&&await pf(e.pidPath,`${process.pid}
113
- `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??bs(q(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await hn(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(E=>d.once("close",E)),a&&clearTimeout(a),s&&clearInterval(s),await of(e.socketPath,{force:!0});let v=n;v.kind==="ready"&&(await ta(v.telemetry,r,u),await v.store.close()),c&&clearTimeout(c);for(let{signal:E,handler:O}of g)process.off(E,O);t?.kill("SIGTERM"),_s(),e.pidPath&&await of(e.pidPath,{force:!0}),await yn(y)}async function HR(e,t,r=new Date){let n=await Bn(e,1,r),s=r.toISOString().slice(0,10),i=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=n.savings.tokens_saved>0?i/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=bs(q(t),JR),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*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 ff(sa(a),{recursive:!0}),await pf(c,`${j(u)}
114
- `,{encoding:"utf8",mode:384}),await NR(c,a)}async function ta(e,t=mf,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await hf(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
115
- `)}}async function qR(e){let t=[];for(let r of GR){let n=await WR(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await VR(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${gf(r)}`))}return t}async function WR(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 i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw r}}async function VR(e,t,r){let n=zR(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${gf(t)}`)}function zR(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 gf(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function KR(e){return e&&clearTimeout(e),setTimeout(()=>{_s(),process.exit(0)},FR)}function YR(){af||(af=!0,process.on("exit",()=>_s()))}function QR(){if(process.platform==="win32")return;let t=IR(process.execPath,["-e",`
109
+ `}function zf(e){return e.toString("utf8").replace(/�$/g,"")}function sx(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 ix(e){return new ln(nt(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 Yf(e){return Nt({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 Qf(e){process.stdout.write(`${JSON.stringify(e)}
110
+ `)}function Zf(e){try{return JSON.parse(e)}catch{return null}}var ep=b(()=>{"use strict";Ie();Se();rn();Ze()});var rp={};M(rp,{renderShellInit:()=>ox});function ox(e,t=pn){if(e==="fish")return ax(t);if(e==="bash"||e==="zsh")return cx(e,t);throw new Error(`unsupported shell: ${e}`)}function ax(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(Gs))].map(r=>` abbr --add --position command -- ${r} '${fx(`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(`
111
+ `)}function cx(e,t){let r=lx(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Fs("git",r.get("git")??[]),...Fs("gh",r.get("gh")??[]),...Fs("vitest",r.get("vitest")??[]),...Fs("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(`
112
+ `)}function Fs(e,t){if(t.length===0)return[];if(t.some(i=>i.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(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(Gs),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Gs)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let i=r.map(o=>tp(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of ux(n)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${dx(u)}' ]`).join(" && ")).join(" || ");s.push(` ${tp(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function ux(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 lx(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!Gs(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Gs(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function tp(e){return e.replace(/[\\|)&;]/g,"\\$&")}function dx(e){return e.replace(/'/g,"'\\''")}function fx(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var np=b(()=>{"use strict";mn()});function Ca(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"&&px(t.chosenOption)&&mx(t.outcome)&&gx(t.cost)}function px(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function mx(e){return e==="success"||e==="failure"||e==="escalated"}function gx(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 sp=b(()=>{});import{createHash as hx}from"node:crypto";function hp(e,t){return new Ia(e,t)}function ip(e){let t=Number(e.red_entity_id??e.rid),r=Aa(e.properties??e.PROPERTIES),n=yp(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),i=String(r.title??e.label??e.LABEL??s),o=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:i,content:o,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function op(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=wp(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:Aa(e.properties??e.PROPERTIES)}}function bx(e){let t=Number(e.red_entity_id??e.rid),r=Aa(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ca(r)?null:{rid:t,event:r}}function Aa(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Ws(e)?e:{}}function yp(e){let t=e==="contact"?"person":e;if(yx.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function wp(e){if(wx.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function _x(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function ap(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Lt(e){return Ws(e)?e:{}}function cp(e,t){return Lt(e)[t]}function up(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function lp(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function dp(e){let t=Lt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ie(e){return typeof e=="string"&&e.length>0?e:void 0}function Ws(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Da(e){return e!=null}function Rx(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Sx(e){return hx("sha256").update(JSON.stringify(e)).digest("hex")}function xx(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function fp(e){return`artifact-hash:${e}`}function pp(e,t,r){return`connection:${e}:${t}:${r}`}function mp(){return"model-tier-bandit:v1"}function Ex(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function gp(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function bp(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+gp(r,a)*3+gp(n,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function kx(e,t,r,n){let s=0;for(let i of r){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=n.get(o);if(!a)continue;let c=_p({...bp(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return $t(s)}function _p(e){return{...e,lexical:$t(e.lexical),tags:$t(e.tags),kind:$t(e.kind),connections:$t(e.connections),vector:$t(e.vector),total:$t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function $t(e){return Math.round(e*1e3)/1e3}function vx(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(i=>r.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function Tx(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,i)=>({ref:`B${i+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 Ox(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var je,yx,wx,Ia,Rp=b(()=>{"use strict";sp();je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},yx=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),wx=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Ia=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(Lt(r));if(t==="getArtifact")return await this.getArtifact(cp(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Lt(r);return await this.search(up(n,"query"),lp(n,"limit")??10,dp(n.options))}if(t==="think"){let n=Lt(r);return await this.think(up(n,"query"),lp(n,"limit")??8,dp(n.options))}if(t==="link")return await this.link(Lt(r));if(t==="backlinks")return await this.backlinks(cp(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Lt(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${je.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${je.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${je.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:Ox(t.map(n=>n.kind))}}async capture(t){let r=ie(t.title)||"Untitled artifact",n=ie(t.content);if(!n)throw new Error("brain capture requires content");let s=yp(ie(t.kind)||"note"),i=Rx(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Sx([s,r,n,i,ie(t.sourcePath),ie(t.sourceSession)]),c=await this.kv().get(fp(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${xx(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:i,source_agent:ie(t.sourceAgent),source_runner:ie(t.sourceRunner),source_session:ie(t.sourceSession),source_path:ie(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Ws(t.metadata)?t.metadata:void 0},f=(await this.db.query(`INSERT INTO ${je.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!f)throw new Error("INSERT artifact returned no row");let m=ip(f);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(fp(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${je.artifacts}`)).rows.map(ip).filter(Da)}async search(t,r,n={}){let s=Ex(t),i=new Set(n.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=bp(u,s),d=_p({...l,connections:kx(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:vx(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 Tx(t,s)}async link(t){let r=await this.getArtifact(ap(t.from)),n=await this.getArtifact(ap(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=wp(ie(t.kind)||"related_to"),i=await this.findConnection(r.rid,n.rid,s);if(i!=null){let l=(await this.listConnections()).find(d=>d.rid===i);if(l)return l}let o={reason:ie(t.reason),confidence:ie(t.confidence)||"explicit",created_at:Date.now(),metadata:Ws(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${je.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=op(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(pp(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${je.connections}`)).rows.map(op).filter(Da)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=_x(ie(t.interval)||"day"),s=ie(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(!Ca(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${je.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${je.outcomeEvents}`)).rows.map(bx).filter(Da).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(mp());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(mp(),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(pp(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(je.kv)}}});var Np={};M(Np,{runResidentServer:()=>Lx});import{randomUUID as mr}from"node:crypto";import{execFileSync as Px,spawn as Cx}from"node:child_process";import{existsSync as Dx}from"node:fs";import{mkdir as Op,rename as Ix,rm as Sp,writeFile as Pp}from"node:fs/promises";import{createServer as Ax}from"node:net";import{dirname as Ba,join as Hs}from"node:path";import{fileURLToPath as Nx,pathToFileURL as $x}from"node:url";async function Lx(e){await Op(Ba(e.socketPath),{recursive:!0});let t=zx();Kx();let r=e.telemetryDrainTimeoutMs??Cp,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Mn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=Ax(k=>{l.add(k),k.once("close",()=>l.delete(k)),h(),rE(k,async O=>{h();let B=await nE(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),de={id:O.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};Ap(k,de),O.op==="handover"&&setImmediate(()=>m())})});function m(){i=!0,u=!0,c=Vx(c),f.close();for(let k of l)k.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(k=>{let O=()=>{qs(),f.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(k,O),{signal:k,handler:O}});await new Promise((k,O)=>{f.once("error",O),f.listen(e.socketPath,()=>{f.off("error",O),k()})}),(async()=>{let k=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(Z=>setTimeout(Z,O));let B=await it.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),de=Number(process.hrtime.bigint()-k)/1e6,ve=new La(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Ln,byteBudget:e.telemetryByteBudget??e.byteBudget??Bn});if(i){await B.close();return}if(await Na(ve,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:ve,storeOpenCount:1,storeElapsedMs:de},s=setInterval(()=>{let Z=n.kind==="ready"?n:void 0;Z&&Na(Z.telemetry,r)},d),s.unref(),h()})().catch(k=>{n={kind:"failed",error:k instanceof Error?k:new Error(String(k))},h()}),e.pidPath&&await Pp(e.pidPath,`${process.pid}
113
+ `,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",w=e.registryPath??Hs(V(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await An(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(k=>f.once("close",k)),a&&clearTimeout(a),s&&clearInterval(s),await Sp(e.socketPath,{force:!0});let v=n;v.kind==="ready"&&(await Na(v.telemetry,r,u),await v.store.close()),c&&clearTimeout(c);for(let{signal:k,handler:O}of g)process.off(k,O);t?.kill("SIGTERM"),qs(),e.pidPath&&await Sp(e.pidPath,{force:!0}),await Nn(w)}async function Fx(e,t,r=new Date){let n=await es(e,1,r),s=r.toISOString().slice(0,10),i=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=n.savings.tokens_saved>0?i/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=Hs(V(t),Ux),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*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 Op(Ba(a),{recursive:!0}),await Pp(c,`${j(u)}
114
+ `,{encoding:"utf8",mode:384}),await Ix(c,a)}async function Na(e,t=Cp,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Ip(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
115
+ `)}}async function Gx(e){let t=[];for(let r of Jx){let n=await Wx(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await Hx(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Dp(r)}`))}return t}async function Wx(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 i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw r}}async function Hx(e,t,r){let n=qx(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Dp(t)}`)}function qx(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 Dp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Vx(e){return e&&clearTimeout(e),setTimeout(()=>{qs(),process.exit(0)},jx)}function Kx(){xp||(xp=!0,process.on("exit",()=>qs()))}function zx(){if(process.platform==="win32")return;let t=Cx(process.execPath,["-e",`
116
116
  const { execFileSync } = require("node:child_process");
117
117
  const parentPid = Number(process.argv[1]);
118
118
  const known = new Set();
@@ -153,24 +153,24 @@ const timer = setInterval(() => {
153
153
  clearInterval(timer);
154
154
  process.exit(0);
155
155
  }, 500);
156
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function _s(){for(let e of ZR())try{process.kill(e,"SIGTERM")}catch{}}function ZR(){if(process.platform==="win32")return[];let e="";try{e=DR("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]),i=Number(n[2]),o=n[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function XR(e){if(e.collection!==ce)return e;let t=await cf(e.raw_text,lf(e.raw_bytes)),r=await cf(e.emitted_text,lf(e.emitted_bytes)),{raw_text:n,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function cf(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=jR)try{return await hf((async()=>({tokens:(await eS())("cl100k_base").encode(e).length,estimated:!1}))(),UR,"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 eS(){return uf??=import(BR(tS()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await uf}function tS(){let e=sa(LR(import.meta.url)),r=[bs(e,"..","node_modules","js-tiktoken","dist","index.js"),bs(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>AR(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function lf(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function H(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function ra(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function hf(e,t,r){let n;try{return await Promise.race([e,new Promise((s,i)=>{n=setTimeout(()=>i(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function rS(e){try{return JSON.parse(e)}catch{return e}}function nS(e){return df(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>df(t)&&(t.collection===te||t.collection===G||t.collection===ce||t.collection===Ce)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function df(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sS(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
157
- `);if(s<0)return;let i=r.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??sr(),ok:!1,error:a instanceof Error?a.message:String(a)};yf(e,u)}finally{e.end()}})()})}function yf(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
158
- `)}catch{}}async function iS(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 i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await Ji(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await Bn(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await Gi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return aS(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await oS(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function oS(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Xd(s,t).request(r,n)}function aS(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var jR,UR,mf,FR,JR,GR,na,af,uf,bf=_(()=>{"use strict";Be();wn();Me();et();sf();_e();Pe();jR=256*1024,UR=500,mf=2e3,FR=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),JR="rsp-status-summary.json",GR=[te,G,ce,Ce,Cr],na=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 qR(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,i=[...n.records];for(let a of r)i.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 Fi(this.opts.rootDir,async a=>{let c=Kt(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:H(c.command)||"unknown",source_id:H(c.id),source_collection:H(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await HR(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof r.id=="string"&&r.id.trim()!==""?r.id:sr(),a={...await XR(r),id:o,created_at:s,expires_at:i};return await t.kv(r.collection).put(o,a),{collection:r.collection,key:o,created_at:s,expires_at:i,bytes:r.collection===te?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===te||r.accounting_recorded===!0?null:r.collection===ce?await this.writeEvent(t,{collection:te,id:`mirror:${H(r.id)||sr()}`,created_at:H(r.created_at)||H(r.ts)||new Date().toISOString(),event_type:"invocation",command:H(r.command)||"unknown",command_class:ra(H(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===Ce?await this.writeEvent(t,{collection:te,id:`mirror:${H(r.id)||sr()}`,created_at:H(r.created_at)||H(r.ts)||new Date().toISOString(),event_type:"invocation",command:H(r.command)||"unknown",command_class:ra(H(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:H(r.reason)||"unknown",wrapper_family:H(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:H(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ce,id:sr(),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:te,id:`mirror:${sr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:ra(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(Cr).get("index:v1"),n=typeof r=="string"?rS(r):r;return nS(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Cr).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),i=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||i.length<r.records.length)&&await this.writeIndex(t,{version:1,records:i})}};af=!1});ve();function ge(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=ge(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function Pa(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function Ca(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 js(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 js=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return sn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function $t(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function Da(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 i=e[++n]??"",o=i.indexOf("=");o<=0||(r[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:r}}function on(e,t){let r=ge(e,"--since")??e.find(i=>i.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 Ia(e){return e.includes("--full")}Me();import{existsSync as cS}from"node:fs";import{fileURLToPath as uS}from"node:url";function Ma(e){let t={app:e,version:up(Bt("__RED_BUILD_VERSION__",()=>"2.76.0")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"98f11e91d3780bfdcbbfec1428f03cece7fc553d")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-19T16:30:47-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function up(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}ve();Me();pr();import{existsSync as Xh}from"node:fs";import{fileURLToPath as ey}from"node:url";oi();Me();ui();import{existsSync as Xg}from"node:fs";import{fileURLToPath as eh}from"node:url";async function Xt(e,t){let r={stats:th(e.telemetryByteBudget),telemetry:Wi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=eh(e.storeUri);if(!Xg(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(et(),Wt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Wi(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(et(),Wt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(_e(),Ar)),a=await Ut(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}function Vi(e,t=Wi(30),r=!1){return`${j(zi(e,t,r))}
159
- `}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),i=e.storage_classes??Mn(),o=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:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:rh(t.savings),dollars_saved_estimate_usd_display:nh(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:o,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-o.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:Hi(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Hi(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Hi(t.latency.store_elapsed_ms_avg)}}}function gu(e){return`${j(e)}
160
- `}function Wi(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 th(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Mn()}}function Mn(){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 Ki(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
161
- `)}function rh(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 nh(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?_r(e.dollars_saved_estimate_usd):`${_r(e.dollars_saved_low_usd)}-${_r(e.dollars_saved_high_usd)} (estimate_midpoint: ${_r(e.dollars_saved_estimate_usd)})`}function Hi(e){return e==null?"none":String(e)}function qi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Ou(e){let{stats:t,telemetry:r}=await Xt(e,30),[n,s]=await Promise.all([ty(e),Promise.resolve().then(()=>(ao(),oo)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function Pu(e){let t=zi(e.stats,e.telemetry,!1),r=Fs({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??Mn()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},ry(e));return`${j(r)}
162
- `}async function ty(e){if(!e.storeUri.startsWith("file://"))return[];let t=ey(e.storeUri);if(!Xh(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(et(),Wt)),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 ry(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"]}Me();ve();import{existsSync as yb}from"node:fs";import{fileURLToPath as wb}from"node:url";_e();import{spawn as Xn}from"node:child_process";async function bl(e,t,r){let n=process.hrtime.bigint(),s=await Bw(e.positional),i=Number(process.hrtime.bigint()-n)/1e6;return Mw(t,e,s,i,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Bw(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(Hn(),Gn)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Gr(),Jr)).then(o=>o.parseExecCommandLine(e));r=Xn(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Xn(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",i=>{n+=i.length,process.stdout.write(i)}),r.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{r.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
- `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(o,a)=>i({stdoutBytes:n,stderrBytes:s,status:o,signal:a}))})}function _l(e){return e>0&&Math.random()<e}async function qr(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
164
- `);let s=await xl(t);if(n){let i=jw(e,t,r),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(_e(),Ar));wl(o(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:_o(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),wl(o(n,{collection:c,ts:new Date().toISOString(),command:_o(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}async function Rl(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${es()}, passing through
165
- `),await xl(e)}function es(){return"rsp is not enabled in this directory; run /red-setup"}function Sl(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function De(e){return _o(e.positional)}function _o(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 Hr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Mw(e,t,r,n,s){let i=r.stdoutBytes+r.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:n};rt(e,{collection:"rsp_accounting_events_v1",...o}),rt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function jw(e,t,r){let n=t[0]??"unknown",s=Uw(r)||e;return{reason:yl(r)==="ENOENT"||yl(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:Jw(r)??1,stderrHead:Fw(s,240)}}function Uw(e){return e instanceof Error?Hr(e.message):Hr(String(e??""))}function Fw(e,t){let r=Hr(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function yl(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function Jw(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 wl(e){e.catch(()=>{})}async function xl(e){if(e[0]==="exec"||e[0]==="proxy")return await Gw(e);let t=e[0];if(!t)return 2;let r=Xn(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)}
166
- `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function Gw(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Hn(),Gn));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(Gr(),Jr));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
167
- `),2}let r=Xn(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
168
- `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function ql(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled")),Hl("disabled",n,r);n.push(await bb(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):rr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Ve(),kt));if(n.push(_b(await i(t))),n.push(Rb(e)),Vl(e)){let{telemetry:o}=await Xt(e,r);n.push(Sb(o,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Hl(n.some(o=>!o.pass)?"fail":"pass",n,r)}function Wl(e){let{exitCode:t,...r}=e;return`${j({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
169
- `}async function bb(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Yr(),cs)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):rr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return rr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Hr(t.message):"unknown error"}`,"rsp setup")}}function _b(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):rr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function Rb(e){return e.storeUri.startsWith("file://")?Vl(e)?K("store_provisioning","rsp store exists for this directory"):rr("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Sb(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",i=r?.count??n;return rr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,xb(s,t))}function xb(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 Vl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return yb(wb(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function rr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Ms({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Hl(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)}}vo();function Ql(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${Tb(t).join(`
156
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function qs(){for(let e of Yx())try{process.kill(e,"SIGTERM")}catch{}}function Yx(){if(process.platform==="win32")return[];let e="";try{e=Px("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]),i=Number(n[2]),o=n[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function Qx(e){if(e.collection!==ue)return e;let t=await Ep(e.raw_text,vp(e.raw_bytes)),r=await Ep(e.emitted_text,vp(e.emitted_bytes)),{raw_text:n,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function Ep(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=Bx)try{return await Ip((async()=>({tokens:(await Zx())("cl100k_base").encode(e).length,estimated:!1}))(),Mx,"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 Zx(){return kp??=import($x(Xx()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await kp}function Xx(){let e=Ba(Nx(import.meta.url)),r=[Hs(e,"..","node_modules","js-tiktoken","dist","index.js"),Hs(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Dx(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function vp(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function q(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function $a(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Ip(e,t,r){let n;try{return await Promise.race([e,new Promise((s,i)=>{n=setTimeout(()=>i(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function eE(e){try{return JSON.parse(e)}catch{return e}}function tE(e){return Tp(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Tp(t)&&(t.collection===re||t.collection===G||t.collection===ue||t.collection===Ne)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Tp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rE(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
157
+ `);if(s<0)return;let i=r.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??mr(),ok:!1,error:a instanceof Error?a.message:String(a)};Ap(e,u)}finally{e.end()}})()})}function Ap(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
158
+ `)}catch{}}async function nE(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 i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await yo(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await es(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await wo(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return iE(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await sE(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function sE(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await hp(s,t).request(r,n)}function iE(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Bx,Mx,Cp,jx,Ux,Jx,La,xp,kp,$p=b(()=>{"use strict";De();$n();Ie();Ke();Rp();xe();Se();Bx=256*1024,Mx=500,Cp=2e3,jx=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Ux="rsp-status-summary.json",Jx=[re,G,ue,Ne,Ur],La=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 Gx(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,i=[...n.records];for(let a of r)i.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 ho(this.opts.rootDir,async a=>{let c=er(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:q(c.command)||"unknown",source_id:q(c.id),source_collection:q(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await Fx(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof r.id=="string"&&r.id.trim()!==""?r.id:mr(),a={...await Qx(r),id:o,created_at:s,expires_at:i};return await t.kv(r.collection).put(o,a),{collection:r.collection,key:o,created_at:s,expires_at:i,bytes:r.collection===re?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===re||r.accounting_recorded===!0?null:r.collection===ue?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(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===Ne?await this.writeEvent(t,{collection:re,id:`mirror:${q(r.id)||mr()}`,created_at:q(r.created_at)||q(r.ts)||new Date().toISOString(),event_type:"invocation",command:q(r.command)||"unknown",command_class:$a(q(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:q(r.reason)||"unknown",wrapper_family:q(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:q(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ne,id:mr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:re,id:`mirror:${mr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:$a(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(Ur).get("index:v1"),n=typeof r=="string"?eE(r):r;return tE(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Ur).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),i=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||i.length<r.records.length)&&await this.writeIndex(t,{version:1,records:i})}};xp=!1});Ce();function he(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=he(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function cc(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function uc(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 di(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 di=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Sn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Ft(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function lc(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 i=e[++n]??"",o=i.indexOf("=");o<=0||(r[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:r}}function xn(e,t){let r=he(e,"--since")??e.find(i=>i.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 dc(e){return e.includes("--full")}Ie();import{existsSync as oE}from"node:fs";import{fileURLToPath as aE}from"node:url";function Rc(e){let t={app:e,version:vm(Gt("__RED_BUILD_VERSION__",()=>"2.77.0")??"0.0.0-dev"),gitSha:Gt("__RED_BUILD_GIT_SHA__",()=>"d2c6a81abdb8339db13c48db91f22a8a6e58da43")??"unknown",buildTime:Gt("__RED_BUILD_TIME__",()=>"2026-07-20T17:06:26-03:00")??"unknown",bundleAsset:Gt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Gt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Gt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function vm(e){return e.startsWith("v")?e.slice(1):e}function Gt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Ce();Ie();xr();import{existsSync as Qw}from"node:fs";import{fileURLToPath as Zw}from"node:url";Ni();Ie();Bi();import{existsSync as hy}from"node:fs";import{fileURLToPath as yy}from"node:url";async function sr(e,t){let r={stats:wy(e.telemetryByteBudget),telemetry:Ro(t)};if(!e.storeUri.startsWith("file://"))return r;let n=yy(e.storeUri);if(!hy(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Ke(),Qt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Ro(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Ke(),Qt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(xe(),Gr)),a=await qt(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}function So(e,t=Ro(30),r=!1){return`${j(xo(e,t,r))}
159
+ `}function xo(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),i=e.storage_classes??ts(),o=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:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:by(t.savings),dollars_saved_estimate_usd_display:_y(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:_o(t.health.degradation_rate),show_hit_rate_display:_o(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-o.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:_o(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:bo(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:bo(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:bo(t.latency.store_elapsed_ms_avg)}}}function Zu(e){return`${j(e)}
160
+ `}function Ro(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 wy(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:ts()}}function ts(){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 Eo(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
161
+ `)}function by(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 _y(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Cr(e.dollars_saved_estimate_usd):`${Cr(e.dollars_saved_low_usd)}-${Cr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Cr(e.dollars_saved_estimate_usd)})`}function bo(e){return e==null?"none":String(e)}function _o(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Wl(e){let{stats:t,telemetry:r}=await sr(e,30),[n,s]=await Promise.all([Xw(e),Promise.resolve().then(()=>(Jo(),Uo)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function Hl(e){let t=xo(e.stats,e.telemetry,!1),r=gi({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??ts()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},eb(e));return`${j(r)}
162
+ `}async function Xw(e){if(!e.storeUri.startsWith("file://"))return[];let t=Zw(e.storeUri);if(!Qw(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(Ke(),Qt)),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 eb(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"]}Ie();Ce();import{existsSync as gR}from"node:fs";import{fileURLToPath as hR}from"node:url";xe();import{spawn as ks}from"node:child_process";async function $d(e,t,r){let n=process.hrtime.bigint(),s=await $_(e.positional),i=Number(process.hrtime.bigint()-n)/1e6;return L_(t,e,s,i,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function $_(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(hs(),gs)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(an(),on)).then(o=>o.parseExecCommandLine(e));r=ks(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=ks(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",i=>{n+=i.length,process.stdout.write(i)}),r.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{r.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(o,a)=>i({stdoutBytes:n,stderrBytes:s,status:o,signal:a}))})}function Ld(e){return e>0&&Math.random()<e}async function un(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
164
+ `);let s=await jd(t);if(n){let i=B_(e,t,r),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(xe(),Gr));Nd(o(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Xo(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),Nd(o(n,{collection:c,ts:new Date().toISOString(),command:Xo(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}async function Bd(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${vs()}, passing through
165
+ `),await jd(e)}function vs(){return"rsp is not enabled in this directory; run /red-setup"}function Md(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Le(e){return Xo(e.positional)}function Xo(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 cn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function L_(e,t,r,n,s){let i=r.stdoutBytes+r.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:Le(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:n};at(e,{collection:"rsp_accounting_events_v1",...o}),at(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function B_(e,t,r){let n=t[0]??"unknown",s=M_(r)||e;return{reason:Ad(r)==="ENOENT"||Ad(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:U_(r)??1,stderrHead:j_(s,240)}}function M_(e){return e instanceof Error?cn(e.message):cn(String(e??""))}function j_(e,t){let r=cn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Ad(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function U_(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 Nd(e){e.catch(()=>{})}async function jd(e){if(e[0]==="exec"||e[0]==="proxy")return await J_(e);let t=e[0];if(!t)return 2;let r=ks(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)}
166
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function J_(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(hs(),gs));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(an(),on));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
167
+ `),2}let r=ks(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
168
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function cf(e,t,r){let n=[],s=!e.enabled;if(n.push(s?Y("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Y("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(Y("hook_wiring","skipped because rsp is disabled"),Y("proxy_mode","skipped because rsp is disabled"),Y("resident_liveness","skipped because rsp is disabled"),Y("store_provisioning","skipped because rsp is disabled"),Y("recent_degradation_rate","skipped because rsp is disabled")),af("disabled",n,r);n.push(await yR(e)),n.push(e.proxyEnabled?Y("proxy_mode","proxy routing enabled for pre-exec rewrites"):fr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Ze(),Dt));if(n.push(wR(await i(t))),n.push(bR(e)),lf(e)){let{telemetry:o}=await sr(e,r);n.push(_R(o,r))}else n.push(Y("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return af(n.some(o=>!o.pass)?"fail":"pass",n,r)}function uf(e){let{exitCode:t,...r}=e;return`${j({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
169
+ `}async function yR(e){try{if(e.proxyEnabled)return Y("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(mn(),Ns)),r=t("git status");return r.kind==="rewrite"?Y("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):fr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return fr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?cn(t.message):"unknown error"}`,"rsp setup")}}function wR(e){return e.state==="registered-alive-socket-healthy"?Y("resident_liveness","resident registry points at a healthy socket"):fr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function bR(e){return e.storeUri.startsWith("file://")?lf(e)?Y("store_provisioning","rsp store exists for this directory"):fr("store_provisioning","rsp store is not provisioned","rsp setup"):Y("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function _R(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return Y("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",i=r?.count??n;return fr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,RR(s,t))}function RR(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 lf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return gR(hR(e.storeUri))}catch{return!1}}function Y(e,t){return{name:e,pass:!0,finding:t}}function fr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:li({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function af(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)}}oa();function mf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${ER(t).join(`
170
170
  `)}
171
- `}function Tb(e){switch(e){case"stats":return L("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 L("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 L("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 L("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 L("rsp gh <pr|issue|run> <list|view> [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 gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return L("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 L("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 L("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 L('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 L("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 L("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return L("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return L("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return L("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return L("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return L("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return L("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 L("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 L("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 L("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 L(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function L(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}Be();_e();import{spawn as vb}from"node:child_process";import{createHash as Ob}from"node:crypto";import{existsSync as Pb,readFileSync as Cb,statSync as Db}from"node:fs";import{tmpdir as Ib}from"node:os";import{dirname as Ab,join as it}from"node:path";async function Y(e,t,r,n,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-r)/1e6;return n?(Et(Mb(s,e,t,o,n.lastResponseMetrics())),i&&Nb(s,i)):jb(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Et(e){e.catch(()=>{})}async function ds(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(_e(),Ar));await s(e,{collection:i,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 Nb(e,t){try{let r=qe(e),n=Db(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!Bb(r,Date.now()-s))return;let i=$b(e),o=Lb(i),a=it(o,"rsp.sock"),c=it(o,"rsp.pid"),u=it(q(i),"rsp-resident.pid.json"),l=it(i,".red","tmp","rsp.wake.lock");vb(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:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function $b(e){let t=e;for(;;){if(Pb(it(t,".git")))return t;let r=Ab(t);if(r===t)return e;t=r}}function Lb(e){let t=Ob("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=it(r,"red-skills",t);if(it(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return it(Ib(),`red-skills-${n}`,t)}function Bb(e,t){try{let r=Cb(e,"utf8");for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function Mb(e,t,r,n,s){let i=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(_e(),Ar));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:De(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.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:De(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:De(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function jb(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);rt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n}),rt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:De(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},qo=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function xd(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new qo,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(vo(),Yl));if(o(e.positional))return await Y(e,await a(),i,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(St(),po)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await Y(e,u,i,s,r,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Lo(),$o)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Uo(),jo)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,r,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Ho(),Go)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s,r,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Gr(),Jr)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s)}}catch(o){return $t(o)?(process.stdout.write(o.render()),2):await qr("wrapper failed",e.positional,o,r)}finally{await s.close()}return await qr("wrapper failed",e.positional,n,r)}async function _f(e=process.argv.slice(2)){let t=Ma("rsp");if(Pa(e))return process.stdout.write(Ql(e)),0;let r=Ca(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(Yr(),cs));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(Yr(),cs));return await p()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(jr(),yo));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(jr(),yo));return await p()}if(r.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Dd(),Cd)),g=await p(process.cwd());return process.stdout.write(Ki(g)),0}if(r.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Bd(),Ld));return await p(),0}if(r.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(ao(),oo));return await p(r.positional)}if(r.command==="shell-init"){let p=r.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(N({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(Ud(),jd));return process.stdout.write(g(p)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Pe(),Dc)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:p}=await Promise.resolve().then(()=>(Ve(),kt)),g=p(process.cwd()),w=await ql(s,g,on(r.positional,1));return process.stdout.write(Wl(w)),w.exitCode}let i=Sl(r.command);if(!s.enabled)return i?await Rl(r.positional):(process.stdout.write(`${es()}
172
- `),0);if(r.command==="git"&&us(r.positional)){let p=process.hrtime.bigint();return await Y(r,await ls(),p,void 0,await To(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ve(),kt)),u=o(process.cwd());if(i&&_l(s.measurementHoldoutShare))return await bl(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(bf(),wf)),g=o(process.cwd()),w=ge(r.positional,"--socket")??g.socketPath,y=n(process.cwd(),process.env,r.storeUri??ge(r.positional,"--store-uri"));return y.enabled?(await p({socketPath:w,pidPath:ge(r.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:U(r.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??y.idleMs,residentVersion:ge(r.positional,"--resident-version")??t.version,registryPath:ge(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${es()}
173
- `),0)}if(r.command==="warm-resident"){let p=o(process.cwd()),g=ge(r.positional,"--socket")??p.socketPath,w=ge(r.positional,"--wake-lock")??p.wakeLockPath,y=n(process.cwd(),process.env,r.storeUri??ge(r.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Ve(),kt));return await v({...p,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:U(r.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:p}=await Promise.resolve().then(()=>(Hn(),Gn));return await p(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(Ve(),kt)),w=r.command==="sweep"?await g(u):await p(u);return process.stdout.write(`${j(w)}
174
- `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:p}=await Promise.resolve().then(()=>(jn(),bu)),g=Da(r.positional);if(!g)return process.stdout.write(N({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let w=await p({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
175
- `),w.status}if(!r.command){let p=await Ou(s);return process.stdout.write(Pu(p)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!cS(uS(s.storeUri)))return i?await xd(r,s,u.rootDir):(process.stdout.write(N({command:De(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(p=!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:p})),f=()=>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:p}=await Promise.resolve().then(()=>(et(),Wt));return await p.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},m=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:p,telemetry:g}=await Xt(s,on(r.positional,30));return process.stdout.write(Vi(p,g,Ia(r.positional))),0}if(r.command==="gains"){let p=await m();if(h=()=>p.close(),!lS(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
176
- `),1;let g=await p.telemetryGains(on(r.positional,28));return process.stdout.write(gu(g)),0}if(r.command==="git"){if(Et(f()),us(r.positional)){let v=process.hrtime.bigint();return await Y(r,await ls(),v,void 0,u.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(St(),po)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="gh"){Et(f());let{runGhWrapper:p}=await Promise.resolve().then(()=>(Lo(),$o)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g});return await Y(r,y,w,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Et(f());let{runTestWrapper:p}=await Promise.resolve().then(()=>(Uo(),jo)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g});return await Y(r,y,w,g,u.rootDir)}if(r.command==="cat"){Et(f());let{runCatWrapper:p}=await Promise.resolve().then(()=>(Ho(),Go)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="exec"){Et(f());let{runExecWrapper:p}=await Promise.resolve().then(()=>(Gr(),Jr)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="show"&&r.handle){let p=await m();h=()=>p.close();let g=await p.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await ds(u.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await ds(u.rootDir,r.handle,!1,y.length),1}let w=N({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(w),await ds(u.rootDir,r.handle,!1,w.length),1}return process.stdout.write(N({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(p){if($t(p))return process.stdout.write(p.render()),2;if(i)return await qr("wrapper failed",r.positional,p,u.rootDir);throw p}finally{await h?.()}}function lS(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}ve();import.meta.url===`file://${process.argv[1]}`&&_f().then(e=>process.exit(e),e=>{$t(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{_f as main,Ki as renderSetupResult,Vi as renderStats};
171
+ `}function ER(e){switch(e){case"stats":return L("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 L("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 L("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 L("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 L("rsp gh <pr|issue|run> <list|view> [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 gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return L("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 L("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 L("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 L('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 L("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 L("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return L("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return L("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return L("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return L("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return L("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return L("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 L("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 L("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 L("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 L(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function L(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}De();xe();import{spawn as kR}from"node:child_process";import{createHash as vR}from"node:crypto";import{existsSync as TR,readFileSync as OR,statSync as PR}from"node:fs";import{tmpdir as CR}from"node:os";import{dirname as DR,join as lt}from"node:path";async function Q(e,t,r,n,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-r)/1e6;return n?(It(LR(s,e,t,o,n.lastResponseMetrics())),i&&IR(s,i)):BR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function It(e){e.catch(()=>{})}async function Bs(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(xe(),Gr));await s(e,{collection:i,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 IR(e,t){try{let r=ze(e),n=PR(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!$R(r,Date.now()-s))return;let i=AR(e),o=NR(i),a=lt(o,"rsp.sock"),c=lt(o,"rsp.pid"),u=lt(V(i),"rsp-resident.pid.json"),l=lt(i,".red","tmp","rsp.wake.lock");kR(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:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function AR(e){let t=e;for(;;){if(TR(lt(t,".git")))return t;let r=DR(t);if(r===t)return e;t=r}}function NR(e){let t=vR("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=lt(r,"red-skills",t);if(lt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return lt(CR(),`red-skills-${n}`,t)}function $R(e,t){try{let r=OR(e,"utf8");for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function LR(e,t,r,n,s){let i=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(xe(),Gr));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:Le(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:Le(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.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:Le(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Le(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function BR(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);at(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Le(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n}),at(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Le(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var pt=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}},Ea=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Uf(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ea,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(oa(),pf));if(o(e.positional))return await Q(e,await a(),i,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Pt(),qo)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await Q(e,u,i,s,r,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(ga(),ma)),a=await o(e.positional,{level:e.level,store:s});return await Q(e,a,i,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(ba(),wa)),a=await o(e.positional,{level:e.level,store:s});return await Q(e,a,i,s,r,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(xa(),Sa)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Q(e,a,i,s,r,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(an(),on)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Q(e,a,i,s)}}catch(o){return Ft(o)?(process.stdout.write(o.render()),2):await un("wrapper failed",e.positional,o,r)}finally{await s.close()}return await un("wrapper failed",e.positional,n,r)}async function Lp(e=process.argv.slice(2)){let t=Rc("rsp");if(cc(e))return process.stdout.write(mf(e)),0;let r=uc(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(mn(),Ns));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(mn(),Ns));return await p()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(rn(),Yo));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(rn(),Yo));return await p()}if(r.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Kf(),Vf)),g=await p(process.cwd());return process.stdout.write(Eo(g)),0}if(r.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(ep(),Xf));return await p(),0}if(r.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Jo(),Uo));return await p(r.positional)}if(r.command==="shell-init"){let p=r.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(N({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(np(),rp));return process.stdout.write(g(p)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Se(),mu)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:p}=await Promise.resolve().then(()=>(Ze(),Dt)),g=p(process.cwd()),y=await cf(s,g,xn(r.positional,1));return process.stdout.write(uf(y)),y.exitCode}let i=Md(r.command);if(!s.enabled)return i?await Bd(r.positional):(process.stdout.write(`${vs()}
172
+ `),0);if(r.command==="git"&&$s(r.positional)){let p=process.hrtime.bigint();return await Q(r,await Ls(),p,void 0,await ia(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ze(),Dt)),u=o(process.cwd());if(i&&Ld(s.measurementHoldoutShare))return await $d(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>($p(),Np)),g=o(process.cwd()),y=he(r.positional,"--socket")??g.socketPath,w=n(process.cwd(),process.env,r.storeUri??he(r.positional,"--store-uri"));return w.enabled?(await p({socketPath:y,pidPath:he(r.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,residentVersion:he(r.positional,"--resident-version")??t.version,registryPath:he(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${vs()}
173
+ `),0)}if(r.command==="warm-resident"){let p=o(process.cwd()),g=he(r.positional,"--socket")??p.socketPath,y=he(r.positional,"--wake-lock")??p.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??he(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Ze(),Dt));return await v({...p,socketPath:g,wakeLockPath:y},{storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:p}=await Promise.resolve().then(()=>(hs(),gs));return await p(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(Ze(),Dt)),y=r.command==="sweep"?await g(u):await p(u);return process.stdout.write(`${j(y)}
174
+ `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:p}=await Promise.resolve().then(()=>(ps(),$l)),g=lc(r.positional);if(!g)return process.stdout.write(N({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let y=await p({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(y.stdout),y.stderr&&process.stderr.write(`${y.stderr}
175
+ `),y.status}if(!r.command){let p=await Wl(s);return process.stdout.write(Hl(p)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!oE(aE(s.storeUri)))return i?await Uf(r,s,u.rootDir):(process.stdout.write(N({command:Le(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(p=!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:p})),d=()=>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}),f=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(Ke(),Qt));return await p.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},m=()=>s.storeUri.endsWith("/red-skills.rdb")?l():f(),h;try{if(r.command==="stats"){let{stats:p,telemetry:g}=await sr(s,xn(r.positional,30));return process.stdout.write(So(p,g,dc(r.positional))),0}if(r.command==="gains"){let p=await m();if(h=()=>p.close(),!cE(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
176
+ `),1;let g=await p.telemetryGains(xn(r.positional,28));return process.stdout.write(Zu(g)),0}if(r.command==="git"){if(It(d()),$s(r.positional)){let v=process.hrtime.bigint();return await Q(r,await Ls(),v,void 0,u.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Pt(),qo)),g=new pt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),w=await p(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await Q(r,w,y,g,u.rootDir)}if(r.command==="gh"){It(d());let{runGhWrapper:p}=await Promise.resolve().then(()=>(ga(),ma)),g=new pt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),w=await p(r.positional,{level:r.level,store:g});return await Q(r,w,y,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){It(d());let{runTestWrapper:p}=await Promise.resolve().then(()=>(ba(),wa)),g=new pt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),w=await p(r.positional,{level:r.level,store:g});return await Q(r,w,y,g,u.rootDir)}if(r.command==="cat"){It(d());let{runCatWrapper:p}=await Promise.resolve().then(()=>(xa(),Sa)),g=new pt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),w=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Q(r,w,y,g,u.rootDir)}if(r.command==="exec"){It(d());let{runExecWrapper:p}=await Promise.resolve().then(()=>(an(),on)),g=new pt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),w=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Q(r,w,y,g,u.rootDir)}if(r.command==="show"&&r.handle){let p=await m();h=()=>p.close();let g=await p.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await Bs(u.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let w=N({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(w),await Bs(u.rootDir,r.handle,!1,w.length),1}let y=N({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(y),await Bs(u.rootDir,r.handle,!1,y.length),1}return process.stdout.write(N({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(p){if(Ft(p))return process.stdout.write(p.render()),2;if(i)return await un("wrapper failed",r.positional,p,u.rootDir);throw p}finally{await h?.()}}function cE(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}Ce();import.meta.url===`file://${process.argv[1]}`&&Lp().then(e=>process.exit(e),e=>{Ft(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Lp as main,Eo as renderSetupResult,So as renderStats};