@reddb-io/red-skills 2.79.1 → 2.81.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,119 +1,131 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Mp=Object.defineProperty;var b=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)Mp(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 _n(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 Ua(e,t);if(e.includes('"'))throw Te(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:jp(e)?Number(e):e}function Fe(e,t){let r=e.trim();if(r.startsWith('"'))return[Ua(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function Ua(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 jp(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Up(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Fp(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 Fp(e);if(typeof e=="string")return Gp(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:Fa(e)}function Gp(e,t){return Wp(e,t)?Fa(e):e}function Wp(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Up(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Fa(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,Qs=b(()=>{yr();A=","});function Hp(e={}){return{indent:Math.max(1,e.indent??si),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function qp(e,t){let r=[],n=!1;return _n(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=Hp(t),n=qp(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=ai(s.content,ee(s.content,":",s.number))}catch(l){if(r.strict)throw ri(l,s.number);u=void 0}if(u!==void 0)return zp(u,n,r)}if(i&&ee(s.content,":",s.number)===-1)return Oe(s.content.trim(),s.number);let o={index:0},a=ii(n,o,0,r),c=n[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function ii(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}=Vp(e,t,r,n);Wa(s,o,a,c,n,i.number)}return s}function Vp(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 ri(g,s.number);t.index+=1;let y=Xs(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=Kp(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:p}}if(u!==-1){let h;try{h=ai(a,o)}catch(g){if(n.strict)throw ri(g,s.number);t.index+=1;let y=Xs(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=oi(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:p}}let[d,f]=Fe(a,s.number);if(d===""&&!f)throw R(s.number,"expected non-empty field name");t.index+=1;let m=Xs(e,t,r,c,s.number,n);return{key:d,quoted:f,value:m}}function Xs(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?ii(e,t,r+1,i):{}}function Kp(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]=Fe(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)}),Wa(i,c,u,d,s,o.number),r.index+=1}return i}function zp(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=oi(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 oi(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 Yp(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 Qp(e,r,n,s+1,i)}function Yp(e,t,r,n,s,i){let o=[];for(;o.length<e.len;){let c=r[n.index];if(c===void 0)throw ei(r,n.index);if(c.depth<s)break;if(c.depth>s)throw 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 ei(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 Qp(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 ei(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(Xp(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 Xp(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=ai(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return oi(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 ii(o,{index:0},r+1,n)}return t.index+=1,Oe(i,s.number)}function ei(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function ai(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]=Fe(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=Ga(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]=Fe(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=Ga(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 Ga(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]=Fe(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(em(r[a],r[c])||ti(r[a],r[c])||ti(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 em(e,t){return e.length===t.length&&ti(e,t)}function ti(e,t){return t.every((r,n)=>e[n]===r)}function ri(e,t){return R(t,e.reason??String(e.message))}function Wa(e,t,r,n,s,i){if(s.expandPaths&&!r&&t.includes(".")){let o=t.split(".");if(o.every(tm)){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&&!Ft(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 tm(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Ft(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)?ci(n,void 0,e,0,!1,r):Ft(e)?Ha(n,e,0,r):n.push(Pe(e,A)),n.join("")}function _r(e,t){e.push(" ".repeat(t*si))}function Ha(e,t,r,n){for(let[s,i]of Object.entries(t))_r(e,r),ni(e,s,i,r,n)}function ni(e,t,r,n,s){if(Array.isArray(r)){ci(e,t,r,n,!1,s);return}if(Ft(r)){let i=s.keyedMapCollapse?nm(r,s):void 0;if(i!==void 0){e.push(me(t),"{",i.fields.map(ui).join(A),`}:
7
- `);for(let[o,a]of Object.entries(r))_r(e,n+1),e.push(me(o),": ",i.paths.map(c=>Pe(za(a,c),A)).join(A),`
8
- `);return}e.push(me(t),`:
9
- `),Ha(e,r,n+1,s);return}e.push(me(t),": ",Pe(r,A),`
10
- `)}function ci(e,t,r,n,s,i){if(r.length===0){t!==void 0?e.push(me(t),`: []
3
+ var xm=Object.defineProperty;var w=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)xm(e,r,{get:t[r],enumerable:!0})};function R(e,t){return new Tr(e,t)}function I(e,t){return new Et(e,t)}function Wt(e){return e instanceof Et?e:e instanceof Tr?new Et(e.line,e.reason):new Et(0,String(e&&e.message?e.message:e))}var Tr,Et,Or=w(()=>{Tr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Et=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function Dn(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 Pe(e){return R(e,"invalid quoted string")}function Ce(e,t){if(e==="")return"";if(e.startsWith('"'))return cu(e,t);if(e.includes('"'))throw Pe(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:km(e)?Number(e):e}function We(e,t){let r=e.trim();if(r.startsWith('"'))return[cu(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function cu(e,t){if(e[0]!=='"')throw Pe(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 Pe(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 Pe(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw Pe(t);r+=String.fromCharCode(a),n+=4;break}default:throw Pe(t)}continue}if(s<" "&&s!==" ")throw Pe(t);r+=s}throw Pe(t)}function xt(e,t,r){if(e==="")return[];let n=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let u=e[a];if(o){o=!1;continue}u==="\\"&&i?o=!0:u==='"'?i=!i:u===t&&!i&&(n.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw Pe(r);return n.push(e.slice(s).trim()),n}function re(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 Pe(r);return-1}function km(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function vm(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Tm(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 Pr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Ie(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Tm(e);if(typeof e=="string")return Pm(e,t);throw R(0,"not a primitive")}function Om(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function he(e){return Om(e)?e:lu(e)}function Pm(e,t){return Cm(e,t)?lu(e):e}function Cm(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||vm(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function lu(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 Ht(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var A,li=w(()=>{Or();A=","});function Im(e={}){return{indent:Math.max(1,e.indent??yi),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Dm(e,t){let r=[],n=!1;return Dn(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 U(e,t){let r=Im(t),n=Dm(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 c;try{c=_i(s.content,re(s.content,":",s.number))}catch(l){if(r.strict)throw gi(l,s.number);c=void 0}if(c!==void 0)return Nm(c,n,r)}if(i&&re(s.content,":",s.number)===-1)return Ce(s.content.trim(),s.number);let o={index:0},a=bi(n,o,0,r),u=n[o.index];if(u!==void 0)throw R(u.number,"expected end of document");return a}function bi(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:u}=Am(e,t,r,n);pu(s,o,a,u,n,i.number)}return s}function Am(e,t,r,n){let s=e[t.index],i=s.content,o=re(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),u=i.slice(o+1),c=re(a,"[",s.number),l=re(a,"{",s.number);if(l!==-1&&(c===-1||l<c)){let h;try{h=jm(a)}catch(g){if(n.strict)throw gi(g,s.number);t.index+=1;let y=di(e,t,r,u,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(u.trim()!=="")throw R(s.number,"expected keyed map rows");let m=$m(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:m}}if(c!==-1){let h;try{h=_i(a,o)}catch(g){if(n.strict)throw gi(g,s.number);t.index+=1;let y=di(e,t,r,u,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 m=wi(h,u,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:m}}let[f,d]=We(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let p=di(e,t,r,u,s.number,n);return{key:f,quoted:d,value:p}}function di(e,t,r,n,s,i){let o=n.trim();if(o==="[]")return[];if(o!=="")return Ce(o,s);let a=e[t.index];return a!==void 0&&a.depth>r?bi(e,t,r+1,i):{}}function $m(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=re(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[u,c]=We(o.content.slice(0,a),o.number);if(u===""&&!c)throw R(o.number,"expected non-empty field name");let l=xt(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,p)=>{Cr(f,d,Ce(l[p],o.number),s,o.number)}),pu(i,u,c,f,s,o.number),r.index+=1}return i}function Nm(e,t,r){let n=t[0],s=re(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=wi(e,i,t,o,0,r),u=t[o.index];if(u!==void 0)throw R(u.number,"expected end of document");return a}function wi(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 Lm(e,e.fields,r,n,s+1,i)}if(a!==""){let u=xt(a,e.delimiter,o).map(c=>Ce(c,o));if(u.length!==e.len)throw R(o,"array length mismatch");return u}return Bm(e,r,n,s+1,i)}function Lm(e,t,r,n,s,i){let o=[];for(;o.length<e.len;){let u=r[n.index];if(u===void 0)throw pi(r,n.index);if(u.depth<s)break;if(u.depth>s)throw R(u.number,"invalid indentation");if(u.blankBefore&&i.strict)throw R(u.number,"blank line inside array");if(!du(u.content,e.delimiter,u.number))break;let c=xt(u.content,e.delimiter,u.number);if(c.length!==t.length)throw R(u.number,"array row length mismatch");let l={};t.forEach((f,d)=>{Cr(l,f,Ce(c[d],u.number),i,u.number)}),o.push(l),n.index+=1}if(o.length!==e.len)throw pi(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&du(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function du(e,t,r){let n=re(e,":",r);if(n===-1)return!0;let s=re(e,t,r);return s===-1?!1:s<n}function Bm(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 pi(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(Mm(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 Mm(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=re(i,":",s.number),a;try{a=_i(i,o)}catch{a=void 0}if(a!==void 0){let u=i.slice(o+1);return wi(a,u,e,t,r,n)}}if(re(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 bi(o,{index:0},r+1,n)}return t.index+=1,Ce(i,s.number)}function pi(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function _i(e,t){if(t===-1)throw R(0,"array header missing colon");let r=e.slice(0,t),n=re(r,"[",0);if(n===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=We(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 u=o.slice(0,a),c=/^[0-9]*/.exec(u)[0];if(c===""||c.length>1&&c.startsWith("0"))throw R(0,"invalid array header");let l=Number.parseInt(c,10),f;switch(u.slice(c.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw R(0,"invalid array header")}let d=o.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=fu(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:p}}function jm(e){let t=re(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let r,n;try{[r,n]=We(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=fu(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 fu(e,t){let r=[],n=0;function s(a,u){let c=0;for(;n<e.length&&!(u&&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]=We(e.slice(l,n),0);if(f==="")throw R(0,"invalid array header");if(c+=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(u?e[n]==="}":n===e.length)break;throw R(0,"invalid array header")}if(c===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 u=a+1;u<r.length;u+=1)if(Gm(r[a],r[u])||mi(r[a],r[u])||mi(r[u],r[a]))throw R(0,"duplicate key");for(let a of r){let u=a.join("\0");if(o.has(u))throw R(0,"duplicate key");o.add(u)}return r}function Gm(e,t){return e.length===t.length&&mi(e,t)}function mi(e,t){return t.every((r,n)=>e[n]===r)}function gi(e,t){return R(t,e.reason??String(e.message))}function pu(e,t,r,n,s,i){if(s.expandPaths&&!r&&t.includes(".")){let o=t.split(".");if(o.every(Fm)){Cr(e,o,n,s,i);return}}Cr(e,[t],n,s,i)}function Cr(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");Ht(e,i,r);return}if(o&&!qt(e[i])){if(n.strict)throw R(s,"path expansion conflict");Ht(e,i,{})}else o||Ht(e,i,{});Cr(e[i],t.slice(1),r,n,s)}function Fm(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function qt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function O(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Ri(n,void 0,e,0,!1,r):qt(e)?mu(n,e,0,r):n.push(Ie(e,A)),n.join("")}function Ir(e,t){e.push(" ".repeat(t*yi))}function mu(e,t,r,n){for(let[s,i]of Object.entries(t))Ir(e,r),hi(e,s,i,r,n)}function hi(e,t,r,n,s){if(Array.isArray(r)){Ri(e,t,r,n,!1,s);return}if(qt(r)){let i=s.keyedMapCollapse?Um(r,s):void 0;if(i!==void 0){e.push(he(t),"{",i.fields.map(Si).join(A),`}:
7
+ `);for(let[o,a]of Object.entries(r))Ir(e,n+1),e.push(he(o),": ",i.paths.map(u=>Ie(bu(a,u),A)).join(A),`
8
+ `);return}e.push(he(t),`:
9
+ `),mu(e,r,n+1,s);return}e.push(he(t),": ",Ie(r,A),`
10
+ `)}function Ri(e,t,r,n,s,i){if(r.length===0){t!==void 0?e.push(he(t),`: []
11
11
  `):s?e.push(`[0]:
12
12
  `):e.push(`[]
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:qa(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(za(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),rm(e,a,n+1,i)}function rm(e,t,r,n){if(Array.isArray(t)){e.push("- "),ci(e,void 0,t,r,!0,n);return}if(Ft(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
- `);return}e.push("- "),ni(e,s[0][0],s[0][1],r+1,n);for(let[i,o]of s.slice(1))_r(e,r+1),ni(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(ui).join(A),"}"),e.push(":")}function qa(e,t){let r=Va(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Ka(r)}}function nm(e,t){let r=Object.values(e);if(!(r.length<2))return qa(r,t)}function Va(e,t){let r=e[0]?.value;if(!Ft(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!Ft(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=Va(i,t);if(o===void 0)return;s.children=o}return n}}function Ka(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Ka(r.children,n)})}function za(e,t){let r=e;for(let n of t)r=r[n];return r}function ui(e){return e.children===void 0?me(e.key):`${me(e.key)}{${e.children.map(ui).join(A)}}`}var si,Rr=b(()=>{yr();Qs();si=2});var Ya=b(()=>{Rr()});function im(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 ac(e,t){if(!oc.test(e))throw D(t,"invalid tag")}function om(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!oc.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 am(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(!sc.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),ac(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=>Fe(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 cm(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 Qa(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 um(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 lm(e,t,r){if(e.startsWith("- "))throw D(t,"reserved line prefix");let n=im(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=am(e,t);if(s!==null)return s.continuation?(cm(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=om(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:Qa(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:Qa(e,r.delimiter,r.fields.length,t)}}function dm(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>=ic)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(_n(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=lm(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 Rn(e){return dm(e).flatMap(t=>t.rows.map(r=>um(t.fields,r,0)))}function fm(e){if(!sc.includes(e))throw D(0,"invalid header delimiter")}function Xa(e,t,r=!1){return`[${`${r?"~":""}${e===A?"":e}`}]{${t}}:
20
- `}function Za(e,t){return`[]<${e}>{${t}}:
21
- `}function li(e,t){return t.map(me).join(e)}function pm(e){if(!Array.isArray(e)||e.length===0)throw D(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Fe(String(t),0)}catch(n){throw jt(n)}if(r==="")throw D(0,"TOONL header requires fields");return r})}function ec(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function tc(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw D(0,"TOONL continuation cadence must be positive")}function mm(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function rc(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 gm(e){return JSON.stringify([...e].sort())}function nc(e,t){let r=gm(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function Sn({delimiter:e=A,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){fm(e),tc(r),tc(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=()=>mm(f,c,u)?(c=0,u=0,Xa(e,i,!0)):"",p=g=>{ac(g,0);let y=l.get(g);if(y===void 0){if(l.size>=ic)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=nc(rc(g),o),w="";(s===null||s.length!==y.length||s.some((O,B)=>O!==y[B]))&&(w+=m(),s=y,i=li(e,s),a=0,c=0,u=0,w+=Xa(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=pm(y),v=li(A,w),k=p(g);return ec(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=nc(rc(y),w.fieldsByShape),k=li(A,v),O=v.map(de=>Pe(y[de],A)),B="";return ec(w.fields,v)||(w.fields=v,B+=Za(g,k)),`${B}${g}:${O.join(A)}
24
- `},end(){return d?"":(d=!0,m())}}}var sc,ic,oc,CE,DE,cc=b(()=>{yr();Rr();Qs();sc=[A,"|"," "],ic=8,oc=/^[A-Za-z0-9_-]+$/,CE=new TextEncoder,DE=new TextDecoder});var te=b(()=>{yr();Rr();Rr();Ya();cc()});function hm(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${C(di(e))}
25
- `)}function di(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??hm(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ym(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 xn(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 ym(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
- `).trim()}var Ce=b(()=>{"use strict";te()});import{isAbsolute as wm,join as Je,resolve as pi}from"node:path";function Rm(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function mc(e){return Je(Rm(e),pc)}function gc(e){return Je(mc(e),"state")}function hc(e){return Je(mc(e),"tmp")}function V(e){return Je(gc(e),"rsp")}function Sm(e){return Je(gc(e),"red-skills.rdb")}function xm(e){return Je(hc(e),"red-skills.rdb")}function bc(e,t){let r=Sm(e);if(t(r))return r;let n=xm(e);if(t(n))throw Em();return r}function Em(){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 _c(e){return Je(hc(e),"waits")}function Rc(e){let t=e.overrideEnvVars??mi;for(let n of t){let s=e.env[n];if(s)return wm(s)?s:pi(e.startDir,s)}let r=pi(e.startDir);for(;;){if(e.exists(Je(r,pc)))return r;let n=Je(r,".."),s=pi(n);if(s===r)break;r=s}return e.startDir}var pc,bm,_m,mi,yc,wc,De=b(()=>{pc=".red",bm="MEMORY_ROOT",_m="RED_BRAIN_ROOT",mi=[bm,_m];yc=".red/state/red-skills.rdb";wc=".red/tmp/red-skills.rdb"});function j(e){return C(e,{keyedMapCollapse:!0})}var km,vm,lk,Ie=b(()=>{te();De();km=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],vm=[{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"}],lk=[...km,...vm]});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 Om(e,t){if(!t)return!0;let r=gi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function K(e,t){return t?e.filter(r=>Om(r,t)):[...e]}function Ge(e,t){return hi(e,t,{includeLegacyHelp:!0})}function hi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function gi(e){return Array.isArray(e)?e.map(gi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(gi).join(" "):String(e??"")}var xr=b(()=>{"use strict"});async function xc(e,t){return Pm?Im(e,t):Cm?Nm(e,t):Dm(e,t)}async function Dm(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 Im(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:Am(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Am(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 Nm(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:Lm(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Lm(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Pm,Cm,Ec=b(()=>{Pm=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Cm=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as $m}from"node:fs";import{join as Bm}from"node:path";function kc(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=Bm(r,"bin",t);if($m(i))return i;throw new Error(`reddb: binary "${t}" not found.
13
+ `);return}if(r.every(Pr)){fi(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Ie(a,A)).join(A)),e.push(`
14
+ `);return}let o=s?void 0:gu(r,i);if(o!==void 0){fi(e,t,r.length,o.fields),e.push(`
15
+ `);for(let a of r)Ir(e,n+1),e.push(o.paths.map(u=>Ie(bu(a,u),A)).join(A)),e.push(`
16
+ `);return}fi(e,t,r.length,void 0),e.push(`
17
+ `);for(let a of r)Ir(e,n+1),Jm(e,a,n+1,i)}function Jm(e,t,r,n){if(Array.isArray(t)){e.push("- "),Ri(e,void 0,t,r,!0,n);return}if(qt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
+ `);return}e.push("- "),hi(e,s[0][0],s[0][1],r+1,n);for(let[i,o]of s.slice(1))Ir(e,r+1),hi(e,i,o,r+1,n);return}e.push("- ",Ie(t,A),`
19
+ `)}function fi(e,t,r,n){t!==void 0&&e.push(he(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Si).join(A),"}"),e.push(":")}function gu(e,t){let r=hu(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:yu(r)}}function Um(e,t){let r=Object.values(e);if(!(r.length<2))return gu(r,t)}function hu(e,t){let r=e[0]?.value;if(!qt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!qt(s)||Object.keys(s).length!==n.length||n.some(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})=>Pr(a)))continue;if(!t.nestedTabularHeaders)return;let o=hu(i,t);if(o===void 0)return;s.children=o}return n}}function yu(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:yu(r.children,n)})}function bu(e,t){let r=e;for(let n of t)r=r[n];return r}function Si(e){return e.children===void 0?he(e.key):`${he(e.key)}{${e.children.map(Si).join(A)}}`}var yi,Dr=w(()=>{Or();li();yi=2});var wu=w(()=>{Dr()});function Hm(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw I(t,"invalid trailer count");return Number.parseInt(r,10)}function Cu(e,t){if(!Pu.test(e))throw I(t,"invalid tag")}function qm(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Pu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw I(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Vm(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw I(t,"invalid header");let s=r.slice(0,n),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!Tu.includes(o)&&o!=="")throw I(t,"invalid header delimiter");let a=o===""?A:o,u=r.slice(n+1),c=null;if(!i&&u.startsWith("<")){let d=u.indexOf(">");if(d===-1)throw I(t,"invalid tag");if(c=u.slice(1,d),Cu(c,t),o!=="")throw I(t,"invalid header delimiter");u=u.slice(d+1)}if(!u.startsWith("{")||!u.endsWith("}:"))throw I(t,"invalid header");let l=u.slice(1,-2),f;try{f=xt(l,a,t).map(d=>We(d,t)[0])}catch(d){throw Wt(d)}if(f.length===0||f.some(d=>d===""))throw I(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:c}}function Km(e,t,r){if(e===null||e.delimiter===void 0)throw I(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw I(r,"continuation header mismatch")}function _u(e,t,r,n){let s;try{s=xt(e,t,n)}catch(i){throw Wt(i)}if(s.length!==r)throw I(n,"row arity mismatch");for(let i of s)try{Ce(i,n)}catch(o){throw Wt(o)}return s}function zm(e,t,r){let n={};return e.forEach((s,i)=>{try{Ht(n,s,Ce(t[i],r))}catch(o){throw Wt(o)}}),n}function Ym(e,t,r){if(e.startsWith("- "))throw I(t,"reserved line prefix");let n=Hm(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw I(t,"trailer without header");if(r.rowCount!==n)throw I(t,"trailer count mismatch");return{kind:"trailer"}}let s=Vm(e,t);if(s!==null)return s.continuation?(Km(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=qm(e,t);if(i!==null){let o=r?.taggedLanes?.get(i.tag);if(o===void 0)throw I(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:_u(i.cellsText,o.delimiter,o.fields.length,t)}}if(r===null||r.delimiter===void 0)throw I(t,"row before header");return{kind:"row",cells:_u(e,r.delimiter,r.fields.length,t)}}function Qm(e,t={}){let r=[],n=new Map,s=[],i=[],o=null,a=!1,u=!1;function c(p,h){let m=i.at(-1);if(m!==void 0&&m.lane===p.lane&&m.delimiter===p.delimiter&&m.fieldText===p.fieldText){m.rows.push(h);return}i.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.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(p,h,m){let g=n.get(p);if(g===void 0){if(n.size>=Ou)throw I(m,"too many tagged lanes");g={segments:[],current:null},n.set(p,g),r.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Dn(e).forEach((p,h)=>{let m=h+1;if(p==="")return;let g=o===null?{taggedLanes:n}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:n},y=Ym(p,m,g);if(y.kind==="trailer"){l(),o=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){u=!0,f(y.header.tag,y.header,m);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"){u=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),c(b,y.cells);return}if(o===null)throw I(m,"row before header");o.rows.push(y.cells),c(o,y.cells)}}),!u)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of r){if(p===null){d.push(...s);continue}let h=n.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function An(e){return Qm(e).flatMap(t=>t.rows.map(r=>zm(t.fields,r,0)))}function Zm(e){if(!Tu.includes(e))throw I(0,"invalid header delimiter")}function Ru(e,t,r=!1){return`[${`${r?"~":""}${e===A?"":e}`}]{${t}}:
20
+ `}function Su(e,t){return`[]<${e}>{${t}}:
21
+ `}function Ei(e,t){return t.map(he).join(e)}function Xm(e){if(!Array.isArray(e)||e.length===0)throw I(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=We(String(t),0)}catch(n){throw Wt(n)}if(r==="")throw I(0,"TOONL header requires fields");return r})}function Eu(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function xu(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw I(0,"TOONL continuation cadence must be positive")}function eg(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function ku(e){if(e===null||typeof e!="object"||Array.isArray(e))throw I(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw I(0,"TOONL output requires object rows");if(t.some(r=>!Pr(e[r])))throw I(0,"TOONL rows must be flat objects");return t}function tg(e){return JSON.stringify([...e].sort())}function vu(e,t){let r=tg(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function $n({delimiter:e=A,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Zm(e),xu(r),xu(n);let s=null,i="",o=new Map,a=0,u=0,c=0,l=new Map,f=!1,d={continuationEveryRows:r,continuationEveryBytes:n},p=()=>s===null||!t?"":`[=${a}]
22
+ `,h=()=>eg(d,u,c)?(u=0,c=0,Ru(e,i,!0)):"",m=g=>{Cu(g,0);let y=l.get(g);if(y===void 0){if(l.size>=Ou)throw I(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(f)throw I(0,"TOONL encoder is closed");let y=vu(ku(g),o),b="";(s===null||s.length!==y.length||s.some((P,B)=>P!==y[B]))&&(b+=p(),s=y,i=Ei(e,s),a=0,u=0,c=0,b+=Ru(e,i));let x=s.map(P=>Ie(g[P],e));b+=h();let v=`${x.join(e)}
23
+ `;return b+=v,a+=1,u+=1,c+=v.length,b},declareLane(g,y){if(f)throw I(0,"TOONL encoder is closed");let b=Xm(y),x=Ei(A,b),v=m(g);return Eu(v.fields,b)?"":(v.fields=b,Su(g,x))},pushTagged(g,y){if(f)throw I(0,"TOONL encoder is closed");let b=m(g),x=vu(ku(y),b.fieldsByShape),v=Ei(A,x),P=x.map(pe=>Ie(y[pe],A)),B="";return Eu(b.fields,x)||(b.fields=x,B+=Su(g,v)),`${B}${g}:${P.join(A)}
24
+ `},end(){return f?"":(f=!0,p())}}}var Tu,Ou,Pu,Fk,Jk,Iu=w(()=>{Or();Dr();li();Tu=[A,"|"," "],Ou=8,Pu=/^[A-Za-z0-9_-]+$/,Fk=new TextEncoder,Jk=new TextDecoder});var K=w(()=>{Or();Dr();Dr();wu();Iu()});function rg(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${O(xi(e))}
25
+ `)}function xi(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??rg(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ng(e.diagnostics,3)),t}function ye(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:Ar(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:Ar(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:Ar(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:Ar(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Ar(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Nn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Ar(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function ng(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var De=w(()=>{"use strict";K()});import{isAbsolute as sg,join as He,resolve as vi}from"node:path";function ag(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Bu(e){return He(ag(e),Lu)}function Mu(e){return He(Bu(e),"state")}function ju(e){return He(Bu(e),"tmp")}function z(e){return He(Mu(e),"rsp")}function ug(e){return He(Mu(e),"red-skills.rdb")}function cg(e){return He(ju(e),"red-skills.rdb")}function Ju(e,t){let r=ug(e);if(t(r))return r;let n=cg(e);if(t(n))throw lg();return r}function lg(){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 Uu(e){return He(ju(e),"waits")}function Wu(e){let t=e.overrideEnvVars??Ti;for(let n of t){let s=e.env[n];if(s)return sg(s)?s:vi(e.startDir,s)}let r=vi(e.startDir);for(;;){if(e.exists(He(r,Lu)))return r;let n=He(r,".."),s=vi(n);if(s===r)break;r=s}return e.startDir}var Lu,ig,og,Ti,Gu,Fu,Ae=w(()=>{Lu=".red",ig="MEMORY_ROOT",og="RED_BRAIN_ROOT",Ti=[ig,og];Gu=".red/state/red-skills.rdb";Fu=".red/tmp/red-skills.rdb"});function j(e){return O(e,{keyedMapCollapse:!0})}var dg,fg,R0,$e=w(()=>{K();Ae();dg=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],fg=[{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"}],R0=[...dg,...fg]});function kt(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 mg(e,t){if(!t)return!0;let r=Oi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Y(e,t){return t?e.filter(r=>mg(r,t)):[...e]}function qe(e,t){return Pi(e,t,{includeLegacyHelp:!0})}function Pi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Oi(e){return Array.isArray(e)?e.map(Oi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Oi).join(" "):String(e??"")}var $r=w(()=>{"use strict"});async function qu(e,t){return gg?bg(e,t):hg?_g(e,t):yg(e,t)}async function yg(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 bg(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:wg(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*wg(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 _g(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:Rg(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Rg(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var gg,hg,Vu=w(()=>{gg=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",hg=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Sg}from"node:fs";import{join as Eg}from"node:path";function Ku(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=Eg(r,"bin",t);if(Sg(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 vc=b(()=>{});import{fileURLToPath as Mm}from"node:url";import{dirname as jm,resolve as Um,join as _k}from"node:path";function Gm(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Tc(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:kc({name:Gm(),packageRoot:Jm,envVar:"REDDB_BIN"})}var Fm,Jm,Oc=b(()=>{vc();Fm=jm(Mm(import.meta.url)),Jm=Um(Fm,"..")});var Wm,Hm,E,kn,et=b(()=>{Wm=new TextEncoder,Hm=new TextDecoder("utf-8"),E=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},kn=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(Wm.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(Hm.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 wi(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:/"?qm(e):Vm(e)}function qm(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=Km(s),a=r.port?Number(r.port):yi(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 Vm(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):yi(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):yi(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 Km(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 yi(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 bi=b(()=>{et()});function Ym(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Pc(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Pc(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Pc(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 Qm(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 zm,Er,_i=b(()=>{et();zm=new Set(["embedded"]),Er=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&zm.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:Qm(n.value)}async put(t,r,n,s={}){this._guard("put");let i=Ym(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 Ri(e,t){return`${Si(e)}.${Xm(t)}`}function Si(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 Xm(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 Cc(e){return`'${String(e).replace(/'/g,"''")}'`}var Wt,xi=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(Cc).join(", ")}]`:"",o=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Ri(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 ${Ri(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 ${Ri(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 ${Si(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(Cc).join(", ")}] FROM ${Si(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(`
30
+ or check the postinstall log for a download error.`)}var zu=w(()=>{});import{fileURLToPath as xg}from"node:url";import{dirname as kg,resolve as vg,join as I0}from"node:path";function Pg(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Yu(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Ku({name:Pg(),packageRoot:Og,envVar:"REDDB_BIN"})}var Tg,Og,Qu=w(()=>{zu();Tg=kg(xg(import.meta.url)),Og=vg(Tg,"..")});var Cg,Ig,k,Bn,nt=w(()=>{Cg=new TextEncoder,Ig=new TextDecoder("utf-8"),k=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},Bn=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(Cg.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(Ig.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 Ii(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:/"?Dg(e):Ag(e)}function Dg(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=$g(s),a=r.port?Number(r.port):Ci(o),u=r.username?decodeURIComponent(r.username):void 0,c=r.password?decodeURIComponent(r.password):void 0;return{kind:o,host:r.hostname,port:a,path:i||void 0,username:u,password:c,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 Ag(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):Ci(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):Ci(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 $g(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 Ci(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 Di=w(()=>{nt()});function Lg(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Zu(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Zu(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Zu(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 Bg(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 Ng,Nr,Ai=w(()=>{nt();Ng=new Set(["embedded"]),Nr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Ng.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:Bg(n.value)}async put(t,r,n,s={}){this._guard("put");let i=Lg(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`${Ni(e)}.${Mg(t)}`}function Ni(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 Mg(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function jg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function Xu(e){return`'${String(e).replace(/'/g,"''")}'`}var zt,Li=w(()=>{nt();zt=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(Xu).join(", ")}]`:"",o=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${$i(s,t)} = ${jg(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 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 ${Ni(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?o.filter(u=>String(u.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(Xu).join(", ")}] FROM ${Ni(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 u=await a.text();for(let c of u.split(`
32
32
 
33
- `)){let l=u.split(`
34
- `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function eg(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?ki(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 ki(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 tg(e){if(!Number.isInteger(e))throw new E("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function rg(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 ${tg(e.priority)}`),e.key!=null&&(t+=` KEY ${vi(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${vi(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function ng(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?vi(e):JSON.stringify(e)}function vi(e){return`'${String(e).replace(/'/g,"''")}'`}function Ei(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var kr,Ti=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=rg(n);return this.client.call("query",{sql:`QUEUE PUSH ${We(t)} ${ng(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${We(t)}${ki(r)}`});return Ei(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${We(t)}${ki(r)}`});return Ei(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=eg(t,r,n),i=await this.client.call("query",{sql:s});return Ei(i)}}});function Dc(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new E("INVALID_ARGUMENT",`${t} must be an object`)}function sg(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 vn(e){return String(e).split(".").map(Ic).join(".")}function Ic(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 ig(e){return Ac(JSON.stringify(e))}function og(e){return JSON.stringify(e)}function ag(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ig(e):Ac(e)}function Ac(e){return`'${String(e).replace(/'/g,"''")}'`}var vr,Oi=b(()=>{et();vr=class{constructor(t){this.db=t}async insert(t,r){Dc(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${vn(t)} DOCUMENT VALUES (${og(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=sg(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 ${vn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Dc(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])=>`${Ic(c)} = ${ag(u)}`).join(", "),a=(await this.db.query(`UPDATE ${vn(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 ${vn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function cg(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${tt(r)}.${tt(n)})`}return lg(e)}function ug(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 lg(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 Tr,Pi=b(()=>{Tr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ug(n,"config");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:`PUT CONFIG ${tt(s)} ${tt(t)} = ${cg(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 dg(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 fg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Lc(e)}function Lc(e){return`'${String(e).replace(/'/g,"''")}'`}var Or,Ci=b(()=>{Or=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){dg(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Lc).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Ht(s)}.${Ht(t)} = ${fg(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 Bc(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(pg)}async function Mc(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gg(t)}`)).rows??[]).some(n=>n.name===String(t))}function pg(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(mg).join(".")}function mg(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 gg(e){return`'${String(e).replace(/'/g,"''")}'`}var Pr,Di=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=wi(e);if(kg(r),r.kind==="embedded"){let n=Eg(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=xg(r),i=t.binary??Tc(),o=await xc(i,s),a=new kn(o);return await a.call("version",{}),new Ai(a,{transport:"embedded"})}}function Uc(e){return wg(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:_g(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Sg(e)?{$uuid:e}:e}function wg(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 bg(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Uc):e.map(Uc)}function _g(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 Rg(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 Sg(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Tn(e){if(Array.isArray(e))return e.map(Tn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Rg(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]=Tn(s);return r}return e}function xg(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Eg(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 kg(e){if(e.kind!=="embedded")throw new E("EMBEDDED_ONLY",hg)}function Ni(){return new E(jc,`${jc}: nested transactions are not supported on one connection`)}function Jc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vg(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new E("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Fc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Tg(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 >= ${Fc} 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 hg,yg,Fc,jc,On,Ii,Ai,Li=b(()=>{Ec();Oc();et();bi();_i();xi();Ti();Oi();Pi();Ci();Di();_i();xi();Ti();Oi();Pi();Ci();Di();bi();hg="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yg="1.0",Fc="1.0.9",jc="NESTED_TX_NOT_SUPPORTED";On=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 Ni()}},Ii=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Ni();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 On(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Jc(r,n)}throw r}}},Ai=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=yg,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=bg(r);return n==null?this.client.call("query",{sql:t}).then(Tn):this.client.call("query",{sql:t,params:n}).then(Tn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return vg(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 Tg(n,r.length)}tx(){return new Ii(this)}async transaction(t){if(this.inTransaction)throw Ni();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 On(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 Mc(this,t)}list(){return Bc(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 Bi(e,t,r=Gc){let n=Math.max(0,Math.floor(e)),s=r in Wc?r:Gc,i=Wc[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:Og}}function $i(e,t){return Pg(Math.max(0,e)/1e6*t)}function Cr(e){return`$${e.toFixed(6)}`}function Pg(e){return Math.round(e*1e6)/1e6}var Gc,Wc,Og,Mi=b(()=>{"use strict";Gc="gpt-5",Wc={"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},Og="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Cg,readFileSync as a0}from"node:fs";import{dirname as Dg,join as Ig}from"node:path";function Hc(e,t){let r=e;for(let n=0;n<16;n++){let s=Ig(r,t);if(Cg(s))return s;let i=Dg(r);if(i===r)break;r=i}return null}function Ag(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Pn(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 Ag(u)}}var qc=b(()=>{});import{createConnection as Ng}from"node:net";async function Vt(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let i=Ng(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 ji=b(()=>{});import{createHash as Lg,randomUUID as Qc}from"node:crypto";import{spawn as Xc}from"node:child_process";import{constants as Ui}from"node:fs";import{readFileSync as $g}from"node:fs";import{mkdir as Cn,open as Bg,readFile as Zc,rename as Mg,rm as Ae,stat as jg,writeFile as Ug}from"node:fs/promises";import{tmpdir as Fg}from"node:os";import{dirname as rt,join as ae,resolve as Dn}from"node:path";import{fileURLToPath as eu}from"node:url";function nt(e){let t=Zg(e)??Dn(e),r=Xg(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 In(e,t){if(await Cn(rt(e.socketPath),{recursive:!0,mode:448}),await zc(e.socketPath,t))return;await Kc(e,t);let r=await iu(e.lockPath);if(r)try{if(await zc(e.socketPath,t))return;await Kc(e,t),await Hg(e.socketPath);let n=qg(e,t);await Vc(e.socketPath,n);return}finally{await r.close(),await Ae(e.lockPath,{force:!0})}await Vc(e.socketPath)}async function _t(e,t=200){try{return await ru(e,t)!=null}catch{return!1}}async function ru(e,t=200){let r=await Vt({socketPath:e,timeoutMs:t},{id:Qc(),op:"ping"});return r.ok?uu(r.value)?{version:nh(r.value.version)}:{}:null}async function An(e,t){if(await Cn(rt(e.socketPath),{recursive:!0,mode:448}),await _t(e.socketPath,50))return!1;let r=await iu(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=au(t);return Xc(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 nu(e,t){try{await In(e,t)}finally{await Ae(e.wakeLockPath,{force:!0})}}async function Ir(e){try{let t=zg(await Zc(e,"utf8"));return sh(t)?t:null}catch{return null}}async function Nn(e,t){let r={version:tu,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 Cn(rt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Ug(n,`${C(r)}
38
- `,{encoding:"utf8",mode:384}),await Mg(n,e)}async function Ln(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 Qg(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 su(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 ou(t.entry.pid),await Ae(e.registryPath,{force:!0}),await Ae(t.entry.socket_path,{force:!0}),await Dr(e)):t}async function Vc(e,t){let r=Date.now()+Wg(),n;for(;Date.now()<r;){if(await _t(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 Wg(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Gg}async function Hg(e){await Ae(e,{force:!0})}async function iu(e){await Cn(rt(e),{recursive:!0,mode:448});try{return await Bg(e,Ui.O_CREAT|Ui.O_EXCL|Ui.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function qg(e,t){let[r,n]=au(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Xc(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=Kg(`${o}${c}`,Vg)})),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:
33
+ `)){let l=c.split(`
34
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Gg(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=Ve(e),a=Ve(t),u=s!=null?` GROUP ${Ve(s)}`:"",c=i!=null?Mi(i):"";return`QUEUE READ ${o}${u} CONSUMER ${a}${c} WAIT ${n}ms`}function Ve(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 Mi(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 Fg(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Jg(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 ${Fg(e.priority)}`),e.key!=null&&(t+=` KEY ${ji(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ji(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Ug(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ji(e):JSON.stringify(e)}function ji(e){return`'${String(e).replace(/'/g,"''")}'`}function Bi(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Lr,Gi=w(()=>{nt();Lr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ve(t)}`})}push(t,r,n={}){let s=Jg(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ve(t)} ${Ug(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ve(t)}${Mi(r)}`});return Bi(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ve(t)}${Mi(r)}`});return Bi(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ve(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ve(t)}`})}async readWait(t,r,n={}){let s=Gg(t,r,n),i=await this.client.call("query",{sql:s});return Bi(i)}}});function ec(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function Wg(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 Mn(e){return String(e).split(".").map(tc).join(".")}function tc(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 Hg(e){return rc(JSON.stringify(e))}function qg(e){return JSON.stringify(e)}function Vg(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Hg(e):rc(e)}function rc(e){return`'${String(e).replace(/'/g,"''")}'`}var Br,Fi=w(()=>{nt();Br=class{constructor(t){this.db=t}async insert(t,r){ec(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Mn(t)} DOCUMENT VALUES (${qg(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=Wg(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 ${Mn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){ec(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[u]of s)if(u.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([u,c])=>`${tc(u)} = ${Vg(c)}`).join(", "),a=(await this.db.query(`UPDATE ${Mn(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 ${Mn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function Kg(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${st(r)}.${st(n)})`}return Yg(e)}function zg(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 st(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 Yg(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 Mr,Ji=w(()=>{Mr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){zg(n,"config");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:`PUT CONFIG ${st(s)} ${st(t)} = ${Kg(r,n)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${st(n)} ${st(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${st(n)} ${st(t)}`})}}});function Qg(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 Yt(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 Zg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):sc(e)}function sc(e){return`'${String(e).replace(/'/g,"''")}'`}var jr,Ui=w(()=>{jr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){Qg(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(sc).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Yt(s)}.${Yt(t)} = ${Zg(r)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Yt(n)}.${Yt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Yt(n)}.${Yt(t)}`})}}});async function oc(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Xg)}async function ac(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${th(t)}`)).rows??[]).some(n=>n.name===String(t))}function Xg(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ic(e){return String(e).split(".").map(eh).join(".")}function eh(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 th(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,Wi=w(()=>{nt();Gr=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(ic).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${ic(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 u of this.columns)a[u]=o[u];return a})}}});async function Qt(e,t={}){let r=Ii(e);if(dh(r),r.kind==="embedded"){let n=lh(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=ch(r),i=t.binary??Yu(),o=await qu(i,s),a=new Bn(o);return await a.call("version",{}),new qi(a,{transport:"embedded"})}}function cc(e){return sh(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:oh(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&uh(e)?{$uuid:e}:e}function sh(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 ih(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(cc):e.map(cc)}function oh(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 ah(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 uh(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function jn(e){if(Array.isArray(e))return e.map(jn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ah(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]=jn(s);return r}return e}function ch(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function lh(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 dh(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",rh)}function Vi(){return new k(uc,`${uc}: nested transactions are not supported on one connection`)}function dc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function fh(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${lc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function ph(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 >= ${lc} 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 rh,nh,lc,uc,Gn,Hi,qi,Ki=w(()=>{Vu();Qu();nt();Di();Ai();Li();Gi();Fi();Ji();Ui();Wi();Ai();Li();Gi();Fi();Ji();Ui();Wi();Di();rh="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",nh="1.0",lc="1.0.9",uc="NESTED_TX_NOT_SUPPORTED";Gn=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 Vi()}},Hi=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Vi();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 Gn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){dc(r,n)}throw r}}},qi=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=nh,this.cache=new Nr(t,this.transport),this.queue=new Lr(t),this.queues=this.queue,this.documents=new Br(this);let n=new zt(t);this.kv=Object.assign((s="kv_default")=>new zt(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 Mr(t,s),this.vault=(s="red.vault")=>new jr(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=ih(r);return n==null?this.client.call("query",{sql:t}).then(jn):this.client.call("query",{sql:t,params:n}).then(jn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return fh(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 ph(n,r.length)}tx(){return new Hi(this)}async transaction(t){if(this.inTransaction)throw Vi();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 Gn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){dc(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ac(this,t)}list(){return oc(this)}from(t){return new Gr(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 Yi(e,t,r=fc){let n=Math.max(0,Math.floor(e)),s=r in pc?r:fc,i=pc[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:zi(n,i),dollars_saved_low_usd:o==null?null:zi(o,i),dollars_saved_high_usd:a==null?null:zi(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:mh}}function zi(e,t){return gh(Math.max(0,e)/1e6*t)}function Fr(e){return`$${e.toFixed(6)}`}function gh(e){return Math.round(e*1e6)/1e6}var fc,pc,mh,Qi=w(()=>{"use strict";fc="gpt-5",pc={"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},mh="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as hh,readFileSync as bv}from"node:fs";import{dirname as yh,join as bh}from"node:path";function mc(e,t){let r=e;for(let n=0;n<16;n++){let s=bh(r,t);if(hh(s))return s;let i=yh(r);if(i===r)break;r=i}return null}function wh(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Fn(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,u=s.slice(0,o).trim();if(!u)continue;let c=s.slice(o+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:u}),c&&r.map(f=>f.key).join(".")===t)return wh(c)}}var gc=w(()=>{});import{createConnection as _h}from"node:net";async function Zt(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let i=_h(e.socketPath),o=!1,a="",u=setTimeout(()=>{c(()=>s(new Error("resident rsp server timed out"))),i.destroy()},r);function c(l){o||(o=!0,clearTimeout(u),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);c(()=>{try{n(JSON.parse(d))}catch(p){s(p)}}),i.end()}),i.on("error",l=>c(()=>s(l))),i.on("close",()=>{o||c(()=>s(new Error("resident rsp server closed without response")))})})}var Zi=w(()=>{});import{createHash as Rh,randomUUID as _c}from"node:crypto";import{spawn as Rc}from"node:child_process";import{constants as Xi}from"node:fs";import{readFileSync as Sh}from"node:fs";import{mkdir as Jn,open as Eh,readFile as Sc,rename as xh,rm as Ne,stat as kh,writeFile as vh}from"node:fs/promises";import{tmpdir as Th}from"node:os";import{dirname as it,join as ue,resolve as Un}from"node:path";import{fileURLToPath as Ec}from"node:url";function ot(e){let t=jh(e)??Un(e),r=Mh(t),n=z(t);return{rootDir:t,socketPath:ue(r,"rsp.sock"),pidPath:ue(r,"rsp.pid"),lockPath:ue(r,"rsp.lock"),wakeLockPath:ue(t,".red","tmp","rsp","wake.lock"),summaryPath:ue(n,"rsp-status-summary.json"),registryPath:ue(n,"rsp-resident.pid.json")}}async function Wn(e,t){if(await Jn(it(e.socketPath),{recursive:!0,mode:448}),await bc(e.socketPath,t))return;await yc(e,t);let r=await Oc(e.lockPath);if(r)try{if(await bc(e.socketPath,t))return;await yc(e,t),await Ih(e.socketPath);let n=Dh(e,t);await hc(e.socketPath,n);return}finally{await r.close(),await Ne(e.lockPath,{force:!0})}await hc(e.socketPath)}async function vt(e,t=200){try{return await kc(e,t)!=null}catch{return!1}}async function kc(e,t=200){let r=await Zt({socketPath:e,timeoutMs:t},{id:_c(),op:"ping"});return r.ok?Dc(r.value)?{version:Uh(r.value.version)}:{}:null}async function Hn(e,t){if(await Jn(it(e.socketPath),{recursive:!0,mode:448}),await vt(e.socketPath,50))return!1;let r=await Oc(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=Cc(t);return Rc(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 vc(e,t){try{await Wn(e,t)}finally{await Ne(e.wakeLockPath,{force:!0})}}async function Ur(e){try{let t=Nh(await Sc(e,"utf8"));return Wh(t)?t:null}catch{return null}}async function qn(e,t){let r={version:xc,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await Jn(it(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await vh(n,`${O(r)}
38
+ `,{encoding:"utf8",mode:384}),await xh(n,e)}async function Vn(e,t=process.pid){try{let r=await Ur(e);if(r&&r.pid!==t)return;await Ne(e,{force:!0})}catch{}}async function Jr(e){let t=await Ur(e.registryPath);if(!t)try{return await Sc(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Xt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await vt(t.socket_path,100);return r&&await Bh(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 Tc(e){let t=await Jr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Ne(e.registryPath,{force:!0}),await Jr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Pc(t.entry.pid),await Ne(e.registryPath,{force:!0}),await Ne(t.entry.socket_path,{force:!0}),await Jr(e)):t}async function hc(e,t){let r=Date.now()+Ch(),n;for(;Date.now()<r;){if(await vt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(eo("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(eo("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?eo("resident rsp server did not start",t):"resident rsp server did not start")}function Ch(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Ph}async function Ih(e){await Ne(e,{force:!0})}async function Oc(e){await Jn(it(e),{recursive:!0,mode:448});try{return await Eh(e,Xi.O_CREAT|Xi.O_EXCL|Xi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Dh(e,t){let[r,n]=Cc(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Rc(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",u=>{i=u}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",u=>{o=$h(`${o}${u}`,Ah)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function eo(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 Kg(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function zg(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return J(t)}}async function Kc(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(cu(t.clientVersion,r.resident_version)&&(await Yg(r.pid,1500),!Kt(r.pid))){await Ae(e.registryPath,{force:!0});return}await ou(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 ou(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 Yg(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Kt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Qg(e){if(!e.startsWith("file://"))return!1;try{return await jg(eu(e)),!1}catch(t){return t.code==="ENOENT"}}function au(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Dn(process.argv[1]):eu(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Xg(e){let t=Lg("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(Fg(),`red-skills-${n}`,t)}function Zg(e){let t=Dn(e);for(let r=0;r<32;r++){try{let s=Ji(ae(t,".git"));if(s!=null)return eh(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 eh(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Dn(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 zc(e,t){let r=await ru(e).catch(()=>null);return r?cu(t.clientVersion,r.version)?(await th(e,t.clientVersion),await ih(e),!1):!0:!1}async function th(e,t){try{await Vt({socketPath:e,timeoutMs:200},{id:Qc(),op:"handover",clientVersion:t})}catch{}}function cu(e,t){return!e||!t?!1:rh(e,t)>0}function rh(e,t){let r=Yc(e),n=Yc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Yc(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 uu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nh(e){return typeof e=="string"&&e.length>0?e:void 0}function sh(e){return uu(e)&&e.version===tu&&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 ih(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,tu,Gg,Vg,$n=b(()=>{te();De();ji();Jg=108,tu=1,Gg=5e3;Vg=8*1024});var gu={};M(gu,{DEFAULT_RSP_BYTE_BUDGET:()=>_e,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>be,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>qe,DEFAULT_RSP_IDLE_MS:()=>jn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>mu,DEFAULT_RSP_STORE_PATH:()=>Gi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Mn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>du,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>fu,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Bn,DEFAULT_RSP_TTL_DAYS:()=>we,MIN_RSP_IDLE_MS:()=>pu,resolveRspConfig:()=>Re});import{existsSync as oh,readFileSync as ah}from"node:fs";import{join as ch,resolve as lu}from"node:path";function Re(e,t,r){let n=Hc(lu(e),ch(".red","config.yaml")),s=n?ah(n,"utf8"):"",i=Pn(s,"rsp.enabled")==="true",o=Pn(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"),Bn),f=He(ye(s,"rsp.telemetryByteBudget")??ye(s,"rsp.byteBudget"),Mn),m=He(zt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ye(s,"rsp.telemetryDrainIntervalMs"),du),h=He(zt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ye(s,"rsp.telemetryDrainTimeoutMs"),fu),p=uh(zt(t.RSP_IDLE_MS)??ye(s,"rsp.idleMs"),jn,pu),g=He(zt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ye(s,"rsp.heavyGitByteThreshold"),qe),y=lh(zt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??ye(s,"rsp.measurement.holdoutShare"),mu),w=nt(e).rootDir,v=r??t.RSP_STORE_URI??`file://${bc(lu(w),oh)}`;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=Pn(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 uh(e,t,r){let n=He(e,t);return Math.max(n,r)}function lh(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,Gi,we,be,_e,Bn,Mn,du,fu,jn,pu,mu,Se=b(()=>{"use strict";qc();De();$n();qe=8*1024,Gi=yc,we=7,be=6,_e=64*1024*1024,Bn=90,Mn=4*1024*1024,du=3e4,fu=2e3,jn=5*6e4,pu=5e3,mu=0});var F,Un=b(()=>{"use strict";Se();F="rsp_elisions_v1"});import{spawnSync as Lr}from"node:child_process";import{createHash as qi}from"node:crypto";import{existsSync as dh}from"node:fs";import{mkdir as fh,readFile as ph,readdir as hu,rename as mh,writeFile as gh}from"node:fs/promises";import{homedir as hh}from"node:os";import{basename as yh,dirname as wh,join as Ar}from"node:path";import{fileURLToPath as bh}from"node:url";import{gunzipSync as _h,gzipSync as Rh}from"node:zlib";function Vi(e,t){return`el:${qi("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 Gn(){return"index:v1"}function Sh(e){return`blob:${e}`}function yu(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":Wn(t)?"re-executable":"ephemeral"}return"ephemeral"}function $r(e){return Kn(e.storage_class)?e.storage_class:Ve(e.command)}function wu(e){return Kn(e.storage_class)?e.storage_class:Ve(e.command)}function Ki(e){let t=kh(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=wu(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function zi(e,t,r){let n=t.getTime();return[...e].sort((s,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:xh(i),storage_class:wu(s),recover:`rsp show ${s.handle}`}})}function xh(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 Yi(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 Qi(e,t){let r=process.cwd(),n=Lr("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=Lr("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:Eh(r),original_bytes:e.length}:null}function Eh(e){let t=Wi(e,["rev-parse","HEAD"])||"unborn",r=Wi(e,["write-tree"])||"no-index",n=Wi(e,["status","--porcelain=v1","-z"])||"";return qi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Wi(e,t){let r=Lr("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(!Wn(r))return null;let n=Su(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 Wn(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 qi("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 eo(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 to(e,t,r){let n=Rh(e);return{key:Sh(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function bu(e){try{let t=_h(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function _u(e){let t=e.object_ids[0];if(!t)return null;let r=Lr("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 Ru(e){if(!Wn(e.argv))return null;let t=Su(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 Su(e,t,r){let n=t[0];if(!n)return null;let s=Lr(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 kh(){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 xu(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 Eu(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 ku(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 hu(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 vu(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 Hn(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=Th(e.derivation_recipe),n=Oh(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&Jn(s);return e.collection===F&&typeof e.handle=="string"&&Br(e.handle)&&(t||r||n||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||no(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"&&vh(e.loss)&&(e.storage_class===void 0||Kn(e.storage_class))}function ro(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||Kn(t.storage_class))&&(r===void 0||typeof r=="string"&&Jn(r))})}function qn(e){return ce(e)&&typeof e.key=="string"&&Jn(e.key)&&no(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 Vn(e){return ce(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function vh(e){return ce(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Kn(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Th(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 Oh(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")&&Wn(e.argv)&&typeof e.original_bytes=="number"&&no(e.content_hash)}function no(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 Tu(e){try{let n=(await ph(e,"utf8")).trim();if(n==="")return Fn();let s;try{s=JSON.parse(n)}catch{s=J(n)}if(Ph(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=Fn();return await Yt(e,s),s}let n=Fn();return await Yt(e,n),n}let t=Fn();return await Yt(e,t),t}async function Ou(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Pu(e){return yh(e)==="red-skills.rdb"}async function zn(){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(hh(),".cache","red-skills","bundles")),t=Ar(e,"reddb"),r;try{r=await hu(t)}catch{return}r.sort().reverse();for(let n of r){let s=Ar(t,n,process.platform==="win32"?"red.exe":"red");if(dh(s)){process.env.REDDB_BIN=s;return}}}async function Yt(e,t){await fh(wh(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await gh(r,`${C(Hi(t))}
42
- `,"utf8"),await mh(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 Fn(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Ph(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(qn))&&ce(e.tombstones)&&Object.values(e.tombstones).every(Vn)&&ro(e.index)}function Cu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return bh(e)}var so=b(()=>{"use strict";te();Un()});import{createHash as Ch}from"node:crypto";import{existsSync as Du}from"node:fs";import{mkdir as Dh,readFile as Ih,rename as io,rm as jr,stat as oo}from"node:fs/promises";import{basename as Ah,dirname as Nh}from"node:path";var it,Iu=b(()=>{"use strict";Li();Un();so();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=Cu(t.uri),n=await Ou(r),s=new e(n,{uri:t.uri,ttlDays:Hn(t.ttlDays,we),ephemeralTtlHours:Hn(t.ephemeralTtlHours,be),byteBudget:Hn(t.byteBudget,_e),now:t.now??(()=>new Date)});return Pu(n)?(await zn(),await Dh(Nh(n),{recursive:!0}),s.db=await qt(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Tu(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=Vi(n,r),a=st(o),c=Ve(r.command),u=c==="derivable"?Qi(n,r.command):null,l=c==="re-executable"?Xi(n,r.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=Yi(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Rt(n),h=d==="ephemeral"?to(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:F,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:eo(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:$r(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:$r(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:Ki(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),zi(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let 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 Vn(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return _u(t.derivation_recipe);if(t.reexecution_recipe)return Ru(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return qn(r)?bu(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 oo(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(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=Vi(n,r),a=st(o),c=Ve(r.command),u=c==="derivable"?Qi(n,r.command):null,l=c==="re-executable"?Xi(n,r.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=Yi(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Rt(n),h=d==="ephemeral"?to(n,m,i):null,p=Zi(n,u,l,h);h&&!qn(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: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(Vn(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:eo(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:$r(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:$r(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:Ki(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return zi(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=xu(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Eu(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 ku(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let o=(await Ih(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Ah(s),c=Ch("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=>vu(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(Gn());return ro(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Gn(),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 oo(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 ${yu(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 oo(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 io(this.path,o),await io(i,this.path),await jr(o,{force:!0})}catch(u){throw!Du(this.path)&&Du(o)&&await io(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===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:Gn(),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(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:()=>F,RspElisionStore:()=>it,ensureReddbBinaryFromWarmCache:()=>zn,storageClassForCommand:()=>Ve});var Ke=b(()=>{"use strict";Un();so();Iu()});var ao,co,uo,re,G,ue,Ne,Ur,Yn=b(()=>{"use strict";ao="rsp-telemetry.spool.toonl",co="rsp-telemetry.spool.jsonl",uo="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 Xt(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 lo=b(()=>{"use strict"});import{randomUUID as po,createHash as Lh}from"node:crypto";import{appendFileSync as Bu,existsSync as $h,mkdirSync as Mu}from"node:fs";import{mkdir as ju,readdir as Bh,readFile as Uu,rename as Mh,rm as Fu,writeFile as mo}from"node:fs/promises";import{basename as fo,dirname as Fr,join as Zt,resolve as Au}from"node:path";function Xn(e){if(!e)return null;let t=Au(e);for(;;){if($h(Zt(t,".red")))return t;let r=Au(Zt(t,".."));if(r===t)break;t=r}return null}function ze(e){return Zt(V(e),ao)}function Zn(e){return Zt(V(e),co)}function ho(e){return Zt(V(e),uo)}async function Ye(e,t){at(e,t)}function at(e,t){try{let r=Xn(e);if(!r)return;let n=ze(r);Mu(Fr(n),{recursive:!0}),Bu(n,Wh({spool_id:po(),event:Uh(t)}),{encoding:"utf8",mode:384})}catch{}}function Uh(e){return Nu(Nu(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Nu(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=jh)return e;let i={...e};return delete i[t],le(i[r])===0&&(i[r]=s),i.estimated=!0,i}async function Fh(e){let t=Xn(e);if(!t)return[];let r=ze(t);await ju(Fr(r),{recursive:!0}).catch(()=>{});let n=await Wu(t),s=[...await Hu(t),...await qh(n)];return await Promise.all(n.map(i=>Fu(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function yo(e,t){let r=Xn(e);if(!r)return;let n=ze(r);await ju(Fr(n),{recursive:!0}).catch(()=>{}),await Hh(r);for(let s of await Jh(r))await Lu(r,s,t);for(let s of await Hu(r))await Ju(r,s,t,!0);for(let s of await Wu(r))await Lu(r,s,t)}async function Jh(e){let t=[ze(e),Zn(e)],r=Fr(t[0]);return(await Bh(r).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${fo(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${fo(c)}.`));if(!i)return!1;let o=`${fo(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Gh(a))}).sort().map(s=>Zt(r,s))}function Gh(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Lu(e,t,r){try{let n=await Gu(t);for(let s of qu(n))await Ju(e,s,r,!1)}finally{await Fu(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:po(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}$u(e,{correction_id:po(),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 Gu(e){let t="";for(let r=0;r<5;r++){let n=await Uu(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!Xt(t)||t.collection!==re&&t.collection!==G&&t.collection!==ue&&t.collection!==Ne?null:t}catch{return null}}function Wh(e){return Sn().push(zh(e))}function $u(e,t){try{let r=Xn(e);if(!r)return;let n=ho(r);Mu(Fr(n),{recursive:!0});let s=Sn();Bu(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 Wu(e){let t=[ze(e),Zn(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Mh(n,s),await mo(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return r}async function Hh(e){await Promise.all([mo(ze(e),"",{flag:"a"}),mo(Zn(e),"",{flag:"a"})]).catch(()=>{})}async function qh(e){let t=[];for(let r of e)t.push(...qu(await Gu(r)));return t}async function Hu(e){let t=await Uu(ho(e),"utf8").catch(()=>""),r=new Map;for(let n of Vh(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 qu(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(Xt(i)){let o=er(JSON.stringify(i));t.push(o?{spool_id:Qn(JSON.stringify(i)),event:o}:{spool_id:Qn(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Qn(s),raw_line:s});continue}try{for(let i of Rn(`${r}
40
+ `)}function $h(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Nh(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return U(t)}}async function yc(e,t){try{let r=await Ur(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Xt(r.pid)){await Ne(e.registryPath,{force:!0});return}if(await vt(r.socket_path,100))return;if(Ic(t.clientVersion,r.resident_version)&&(await Lh(r.pid,1500),!Xt(r.pid))){await Ne(e.registryPath,{force:!0});return}await Pc(r.pid),await Ne(e.registryPath,{force:!0})}catch{}}function Xt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Pc(e){if(!Xt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Xt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Lh(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Xt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Bh(e){if(!e.startsWith("file://"))return!1;try{return await kh(Ec(e)),!1}catch(t){return t.code==="ENOENT"}}function Cc(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Un(process.argv[1]):Ec(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Mh(e){let t=Rh("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ue(r,"red-skills",t);if(ue(s,"rsp.sock").length<Oh)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Th(),`red-skills-${n}`,t)}function jh(e){let t=Un(e);for(let r=0;r<32;r++){try{let s=to(ue(t,".git"));if(s!=null)return Gh(t,s)??t;if(to(ue(t,".git","HEAD"))!=null||to(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=it(t);if(n===t)return null;t=n}return null}function Gh(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Un(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?it(it(it(n))):null}function to(e){try{return Sh(e,"utf8")}catch{return null}}async function bc(e,t){let r=await kc(e).catch(()=>null);return r?Ic(t.clientVersion,r.version)?(await Fh(e,t.clientVersion),await Hh(e),!1):!0:!1}async function Fh(e,t){try{await Zt({socketPath:e,timeoutMs:200},{id:_c(),op:"handover",clientVersion:t})}catch{}}function Ic(e,t){return!e||!t?!1:Jh(e,t)>0}function Jh(e,t){let r=wc(e),n=wc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function wc(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 Dc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Uh(e){return typeof e=="string"&&e.length>0?e:void 0}function Wh(e){return Dc(e)&&e.version===xc&&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 Hh(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await vt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Oh,xc,Ph,Ah,Kn=w(()=>{K();Ae();Zi();Oh=108,xc=1,Ph=5e3;Ah=8*1024});var Mc={};M(Mc,{DEFAULT_RSP_BYTE_BUDGET:()=>Se,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Re,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ze,DEFAULT_RSP_IDLE_MS:()=>Qn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Bc,DEFAULT_RSP_STORE_PATH:()=>ro,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Yn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>$c,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Nc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zn,DEFAULT_RSP_TTL_DAYS:()=>_e,MIN_RSP_IDLE_MS:()=>Lc,resolveRspConfig:()=>Ee});import{existsSync as qh,readFileSync as Vh}from"node:fs";import{join as Kh,resolve as Ac}from"node:path";function Ee(e,t,r){let n=mc(Ac(e),Kh(".red","config.yaml")),s=n?Vh(n,"utf8"):"",i=Fn(s,"rsp.enabled")==="true",o=Fn(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",u=Ke(we(s,"rsp.ttlDays"),_e),c=Ke(er(t.RSP_EPHEMERAL_TTL_HOURS)??we(s,"rsp.ephemeralTtlHours"),Re),l=Ke(we(s,"rsp.byteBudget"),Se),f=Ke(we(s,"rsp.telemetryTtlDays"),zn),d=Ke(we(s,"rsp.telemetryByteBudget")??we(s,"rsp.byteBudget"),Yn),p=Ke(er(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??we(s,"rsp.telemetryDrainIntervalMs"),$c),h=Ke(er(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??we(s,"rsp.telemetryDrainTimeoutMs"),Nc),m=zh(er(t.RSP_IDLE_MS)??we(s,"rsp.idleMs"),Qn,Lc),g=Ke(er(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??we(s,"rsp.heavyGitByteThreshold"),ze),y=Yh(er(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??we(s,"rsp.measurement.holdoutShare"),Bc),b=ot(e).rootDir,x=r??t.RSP_STORE_URI??`file://${Ju(Ac(b),qh)}`;return{enabled:i,proxyEnabled:a,storeUri:x,ttlDays:u,ephemeralTtlHours:c,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:y}}function we(e,t){let r=Fn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Ke(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function zh(e,t,r){let n=Ke(e,t);return Math.max(n,r)}function Yh(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function er(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ze,ro,_e,Re,Se,zn,Yn,$c,Nc,Qn,Lc,Bc,xe=w(()=>{"use strict";gc();Ae();Kn();ze=8*1024,ro=Gu,_e=7,Re=6,Se=64*1024*1024,zn=90,Yn=4*1024*1024,$c=3e4,Nc=2e3,Qn=5*6e4,Lc=5e3,Bc=0});var J,Zn=w(()=>{"use strict";xe();J="rsp_elisions_v1"});import{spawnSync as qr}from"node:child_process";import{createHash as io}from"node:crypto";import{existsSync as Qh}from"node:fs";import{mkdir as Zh,readFile as Xh,readdir as jc,rename as ey,writeFile as ty}from"node:fs/promises";import{homedir as ry}from"node:os";import{basename as ny,dirname as sy,join as Wr}from"node:path";import{fileURLToPath as iy}from"node:url";import{gunzipSync as oy,gzipSync as ay}from"node:zlib";function oo(e,t){return`el:${io("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 at(e){return`record:${e.slice(3)}`}function Ot(e){return`expired:${e.slice(3)}`}function ts(){return"index:v1"}function uy(e){return`blob:${e}`}function Gc(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Ye(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":rs(t)?"re-executable":"ephemeral"}return"ephemeral"}function Vr(e){return os(e.storage_class)?e.storage_class:Ye(e.command)}function Fc(e){return os(e.storage_class)?e.storage_class:Ye(e.command)}function ao(e){let t=dy(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Fc(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 uo(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:cy(i),storage_class:Fc(s),recover:`rsp show ${s.handle}`}})}function cy(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 co(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 Pt(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 lo(e,t){let r=process.cwd(),n=qr("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=qr("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:ly(r),original_bytes:e.length}:null}function ly(e){let t=no(e,["rev-parse","HEAD"])||"unborn",r=no(e,["write-tree"])||"no-index",n=no(e,["status","--porcelain=v1","-z"])||"";return io("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function no(e,t){let r=qr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function fo(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!rs(r))return null;let n=Hc(process.cwd(),r,e.length);return!n||Tt(n)!==Tt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Tt(e)}}function rs(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 Tt(e){return io("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function po(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 mo(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 go(e,t,r){let n=ay(e);return{key:uy(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function Jc(e){try{let t=oy(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Uc(e){let t=e.object_ids[0];if(!t)return null;let r=qr("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 Wc(e){if(!rs(e.argv))return null;let t=Hc(e.cwd,e.argv,e.original_bytes);return t?Tt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function Hc(e,t,r){let n=t[0];if(!n)return null;let s=qr(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 dy(){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 Kr(e){return/^el:[a-f0-9]{12}$/.test(e)}function es(e){return/^blob:[a-f0-9]{64}$/.test(e)}function qc(e){if(!Hr(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:Hr(e.scope)?e.scope:void 0,ranking:Hr(e.ranking)?e.ranking:void 0}}}function Vc(e){if(!Hr(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 Hr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Kc(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 jc(o,{withFileTypes:!0}).catch(()=>[]);for(let u of a){if(n.length>=t)return;if(s.has(u.name))continue;let c=Wr(o,u.name);u.isDirectory()?await i(c):u.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(u.name)&&n.push(c)}}return await i(e),n}function zc(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Hr(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),u=`${i} ${a}`.toLowerCase(),c=t.filter(l=>u.includes(l));return c.length===0&&t.length>0?null:{id:String(r),rid:r,label:i,node_type:o,score:c.length||1,excerpt:a.slice(0,500)}}function ns(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function zr(e){if(!ce(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=py(e.derivation_recipe),n=my(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&es(s);return e.collection===J&&typeof e.handle=="string"&&Kr(e.handle)&&(t||r||n||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||yo(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&es(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&fy(e.loss)&&(e.storage_class===void 0||os(e.storage_class))}function ho(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"&&Kr(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||os(t.storage_class))&&(r===void 0||typeof r=="string"&&es(r))})}function ss(e){return ce(e)&&typeof e.key=="string"&&es(e.key)&&yo(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function is(e){return ce(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function fy(e){return ce(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function os(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function py(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 my(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")&&rs(e.argv)&&typeof e.original_bytes=="number"&&yo(e.content_hash)}function yo(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 Yc(e){try{let n=(await Xh(e,"utf8")).trim();if(n==="")return Xn();let s;try{s=JSON.parse(n)}catch{s=U(n)}if(gy(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=Xn();return await tr(e,s),s}let n=Xn();return await tr(e,n),n}let t=Xn();return await tr(e,t),t}async function Qc(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Zc(e){return ny(e)==="red-skills.rdb"}async function as(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Wr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Wr(ry(),".cache","red-skills","bundles")),t=Wr(e,"reddb"),r;try{r=await jc(t)}catch{return}r.sort().reverse();for(let n of r){let s=Wr(t,n,process.platform==="win32"?"red.exe":"red");if(Qh(s)){process.env.REDDB_BIN=s;return}}}async function tr(e,t){await Zh(sy(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await ty(r,`${O(so(t))}
42
+ `,"utf8"),await ey(r,e)}function so(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=>so(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=so(n));return t}return String(e)}function Xn(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function gy(e){return ce(e)&&e.version===1&&ce(e.records)&&Object.values(e.records).every(zr)&&(e.blobs===void 0||ce(e.blobs)&&Object.values(e.blobs).every(ss))&&ce(e.tombstones)&&Object.values(e.tombstones).every(is)&&ho(e.index)}function Xc(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return iy(e)}var bo=w(()=>{"use strict";K();Zn()});import{createHash as hy}from"node:crypto";import{existsSync as el}from"node:fs";import{mkdir as yy,readFile as by,rename as wo,rm as Yr,stat as _o}from"node:fs/promises";import{basename as wy,dirname as _y}from"node:path";var ut,tl=w(()=>{"use strict";Ki();Zn();bo();ut=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=Xc(t.uri),n=await Qc(r),s=new e(n,{uri:t.uri,ttlDays:ns(t.ttlDays,_e),ephemeralTtlHours:ns(t.ephemeralTtlHours,Re),byteBudget:ns(t.byteBudget,Se),now:t.now??(()=>new Date)});return Zc(n)?(await as(),await yy(_y(n),{recursive:!0}),s.db=await Qt(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Yc(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=oo(n,r),a=at(o),u=Ye(r.command),c=u==="derivable"?lo(n,r.command):null,l=u==="re-executable"?fo(n,r.command):null,f=u==="derivable"&&!c||u==="re-executable"&&!l?"ephemeral":u,d=co(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Tt(n),h=f==="ephemeral"?go(n,p,i):null,m=po(n,c,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:m,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:p,...c?{derivation_recipe:c}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[Ot(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:m,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(!Kr(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[at(t)];if(!zr(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:at(n.handle),bytes:mo(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Vr(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:Vr(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:Pt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:ao(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),uo(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=Pt(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=Pt(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[Ot(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Ot(t)];return is(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Uc(t.derivation_recipe);if(t.reexecution_recipe)return Wc(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return ss(r)?Jc(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 tr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await _o(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 tr(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=oo(n,r),a=at(o),u=Ye(r.command),c=u==="derivable"?lo(n,r.command):null,l=u==="re-executable"?fo(n,r.command):null,f=u==="derivable"&&!c||u==="re-executable"&&!l?"ephemeral":u,d=co(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Tt(n),h=f==="ephemeral"?go(n,p,i):null,m=po(n,c,l,h);h&&!ss(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:J,handle:o,original_bytes:n.length,stored_bytes:m,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:p,...c?{derivation_recipe:c}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(Ot(o)),await this.kv().put(a,g);let b=(await this.readRedDbIndex()).records.filter(x=>x.handle!==o);return b.push({handle:o,key:a,bytes:m,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:b},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!Kr(t))return null;let r=await this.kvGet(Ot(t));if(is(r))return r;let n=await this.kvGet(at(t));if(!zr(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:at(n.handle),bytes:mo(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Vr(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:Vr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Pt(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:ao(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return uo(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=qc(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Vc(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 Kc(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let o=(await by(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=wy(s),u=hy("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:${u}`)!=null)continue;let c=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:u,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:c,updated_at:c,accessed_at:c,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:c,updated_at:c}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",u,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:${u}`,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=>zc(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(ts());return ho(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ts(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),i=[];for(let u of t.records)Date.parse(u.expires_at)<=n?await this.expireRedDbEntry(u,u.expires_at):i.push(u);let o=Pt(i);for(i.sort((u,c)=>u.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let u=i.shift();await this.expireRedDbEntry(u,s),o=Pt(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 _o(this.path).then(c=>c.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 Yr(i,{force:!0}),await Yr(o,{force:!0});let a=await Qt(`file://${i}`);try{for(let c of n){await a.query(`CREATE KV IF NOT EXISTS ${Gc(c.name)}`);let l=a.kv(c.name);for(let f of c.items)await l.put(f.key,f.value)}}finally{await a.close()}let u=await _o(i).then(c=>c.size,()=>0);if(u===0||u>this.opts.byteBudget||u>=r){await Yr(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await wo(this.path,o),await wo(i,this.path),await Yr(o,{force:!0})}catch(c){throw!el(this.path)&&el(o)&&await wo(o,this.path),await Yr(i,{force:!0}),c}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:ts(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let 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(Ot(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(at(t));if(!zr(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 rr={};M(rr,{DEFAULT_RSP_BYTE_BUDGET:()=>Se,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Re,DEFAULT_RSP_TTL_DAYS:()=>_e,RSP_ELISION_COLLECTION:()=>J,RspElisionStore:()=>ut,ensureReddbBinaryFromWarmCache:()=>as,storageClassForCommand:()=>Ye});var Qe=w(()=>{"use strict";Zn();bo();tl()});var Ro,So,Eo,ne,W,le,Le,Qr,us=w(()=>{"use strict";Ro="rsp-telemetry.spool.toonl",So="rsp-telemetry.spool.jsonl",Eo="rsp-telemetry.spool.corrections.toonl",ne="rsp_accounting_events_v1",W="rsp_decisions_v1",le="rsp_telemetry_invocations_v1",Le="rsp_telemetry_degradations_v1",Qr="rsp_telemetry_index_v1"});function nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function de(e){return ct(e)??0}function ct(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var xo=w(()=>{"use strict"});import{randomUUID as vo,createHash as Ry}from"node:crypto";import{appendFileSync as ol,existsSync as Sy,mkdirSync as al}from"node:fs";import{mkdir as ul,readdir as Ey,readFile as cl,rename as xy,rm as ll,writeFile as To}from"node:fs/promises";import{basename as ko,dirname as Zr,join as sr,resolve as rl}from"node:path";function ls(e){if(!e)return null;let t=rl(e);for(;;){if(Sy(sr(t,".red")))return t;let r=rl(sr(t,".."));if(r===t)break;t=r}return null}function Ze(e){return sr(z(e),Ro)}function ds(e){return sr(z(e),So)}function Po(e){return sr(z(e),Eo)}async function Xe(e,t){lt(e,t)}function lt(e,t){try{let r=ls(e);if(!r)return;let n=Ze(r);al(Zr(n),{recursive:!0}),ol(n,Cy({spool_id:vo(),event:vy(t)}),{encoding:"utf8",mode:384})}catch{}}function vy(e){return nl(nl(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function nl(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=ky)return e;let i={...e};return delete i[t],de(i[r])===0&&(i[r]=s),i.estimated=!0,i}async function Ty(e){let t=ls(e);if(!t)return[];let r=Ze(t);await ul(Zr(r),{recursive:!0}).catch(()=>{});let n=await pl(t),s=[...await ml(t),...await Dy(n)];return await Promise.all(n.map(i=>ll(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function Co(e,t){let r=ls(e);if(!r)return;let n=Ze(r);await ul(Zr(n),{recursive:!0}).catch(()=>{}),await Iy(r);for(let s of await Oy(r))await sl(r,s,t);for(let s of await ml(r))await dl(r,s,t,!0);for(let s of await pl(r))await sl(r,s,t)}async function Oy(e){let t=[Ze(e),ds(e)],r=Zr(t[0]);return(await Ey(r).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${ko(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(u=>s.startsWith(`${ko(u)}.`));if(!i)return!1;let o=`${ko(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Py(a))}).sort().map(s=>sr(r,s))}function Py(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function sl(e,t,r){try{let n=await fl(t);for(let s of gl(n))await dl(e,s,r,!1)}finally{await ll(t,{force:!0})}}async function dl(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&il(e,{correction_id:vo(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}il(e,{correction_id:vo(),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 fl(e){let t="";for(let r=0;r<5;r++){let n=await cl(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function ir(e){try{let t=JSON.parse(e);return!nr(t)||t.collection!==ne&&t.collection!==W&&t.collection!==le&&t.collection!==Le?null:t}catch{return null}}function Cy(e){return $n().push(Ny(e))}function il(e,t){try{let r=ls(e);if(!r)return;let n=Po(r);al(Zr(n),{recursive:!0});let s=$n();ol(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 pl(e){let t=[Ze(e),ds(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await xy(n,s),await To(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return r}async function Iy(e){await Promise.all([To(Ze(e),"",{flag:"a"}),To(ds(e),"",{flag:"a"})]).catch(()=>{})}async function Dy(e){let t=[];for(let r of e)t.push(...gl(await fl(r)));return t}async function ml(e){let t=await cl(Po(e),"utf8").catch(()=>""),r=new Map;for(let n of Ay(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:ir(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function gl(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(nr(i)){let o=ir(JSON.stringify(i));t.push(o?{spool_id:cs(JSON.stringify(i)),event:o}:{spool_id:cs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:cs(s),raw_line:s});continue}try{for(let i of An(`${r}
45
45
  ${s}
46
- `))go(i)&&Yh(i)&&t.push({spool_id:i.spool_id,event:Vu(i)})}catch{s.startsWith("{")&&t.push({spool_id:Qn(s),raw_line:s})}}}return t}function Vh(e){return Kh(e).map(Qh).filter(t=>t!==null)}function Kh(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let i=JSON.parse(s);go(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let i of Rn(`${r}
46
+ `))Oo(i)&&Ly(i)&&t.push({spool_id:i.spool_id,event:hl(i)})}catch{s.startsWith("{")&&t.push({spool_id:cs(s),raw_line:s})}}}return t}function Ay(e){return $y(e).map(By).filter(t=>t!==null)}function $y(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let i=JSON.parse(s);Oo(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let i of An(`${r}
47
47
  ${s}
48
- `))go(i)&&t.push(i)}catch{}}}return t}function Qn(e){return`legacy:${Lh("sha256").update(e).digest("hex").slice(0,24)}`}function zh(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 Vu(e){let{spool_id:t,...r}=e;return er(JSON.stringify(r))}function Yh(e){return typeof e.spool_id=="string"&&Vu(e)!==null}function Qh(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 go(e){return Xt(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var jh,Ku=b(()=>{"use strict";De();te();Yn();lo();jh=64*1024});async function ts(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await Qu(e,s),o=(await Jr(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)||es(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 X=a.length+u.length,Ze=c.filter(S=>S.hit===!0).length,Z=Bi(m,h),gr=Xh(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: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:X===0?0:u.length/X,show_total:c.length,show_hits:Ze,show_misses:Math.max(0,c.length-Ze),show_hit_rate:c.length===0?0:z(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: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 Xh(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 wo(e,t,r=new Date){let s=(await Jr(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:ay(s)}}async function bo(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 Qu(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)/hy()))),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,X=null,Ze=0,Z=0;for(let _ of c){let T=Et(_),gt=T.slice(0,10),ht=T.slice(0,16),fe=es(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)),Ks=ot(_.wrapper_ms);if(Ks!=null){p.push(Ks);let ja=g.get(fe)??[];ja.push(Ks),g.set(fe,ja)}gt&&y.set(gt,(y.get(gt)??0)+1),ht&&w.set(ht,(w.get(ht)??0)+1);let zs=dy(T);zs&&v.set(zs,(v.get(zs)??0)+1);let Ys=my(T);Ys&&k.set(Ys,(k.get(Ys)??0)+pe);let bn=O.get(fe)??{command_family:fe,invocations:0,tokens_saved:0,bytes_saved:0};bn.invocations++,bn.tokens_saved+=pe,bn.bytes_saved+=Mt,O.set(fe,bn),_.elided===!0&&ve++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(Ze++,le(_.store_open_count)>0&&Z++),pe>0&&(!X||pe>X.tokens_saved||pe===X.tokens_saved&&Mt>X.bytes_saved)&&(X={timestamp:T,command_family:fe,tokens_saved:pe,bytes_saved:Mt})}let gr=d.map(_=>({timestamp:Et(_),command_family:es(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=ry(gr),Ue=ty(l),mt=sy([...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:Yu(p),by_command_family:[...g.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...Yu(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:fy(v)},savings:{tokens:Bi(B,de),measured_control_holdout:Zh(c,u),weekly_tokens_saved:gy(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:X},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:Ze===0?null:Z,warm_hits:Ze===0?null:Math.max(0,Ze-Z)},mining:{recovery_usage_by_family:Ue,degradation_clusters:I,threshold_tuning_suggestions:mt}}}async function Qu(e,t){let r=(await Jr(e,re)).filter(o=>rr(o)>=t),n=r.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await Jr(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 Jr(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=oy(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(zu).filter(a=>a!=null),s=t.map(zu).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:z(iy(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:ey(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function zu(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 ey(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 ty(e){let t=new Map;for(let r of e){let n=es(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 ry(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:ny(r)}))}function ny(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 sy(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 iy(e){return e.reduce((t,r)=>t+r,0)/e.length}function oy(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function ay(e){let t=uy();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=cy(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 cy(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function uy(){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 Jr(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=>ly(n.value)).filter(n=>Xt(n))}function ly(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 Yu(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 es(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 dy(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${py(t.getUTCDay())}:${t.getUTCHours()}`:null}function fy(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 py(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function my(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 gy(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 hy(){return 24*60*60*1e3}var Xu=b(()=>{"use strict";Ke();Mi();Yn();lo()});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:()=>co,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>uo,RSP_TELEMETRY_SPOOL_FILE:()=>ao,appendTelemetryEvent:()=>Ye,appendTelemetryEventSync:()=>at,drainTelemetrySpool:()=>yo,parseTelemetryEvent:()=>er,readAccountingLaneStats:()=>wo,readTelemetryGainsReport:()=>bo,readTelemetryStats:()=>ts,takeTelemetrySpool:()=>Fh,telemetryLegacySpoolPath:()=>Zn,telemetrySpoolCorrectionsPath:()=>ho,telemetrySpoolPath:()=>ze});var xe=b(()=>{"use strict";Yn();Ku();Xu()});function Oo(e){return e==="success"?0:e==="failure"?1:2}function Po(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Qe(e,t,r){return{status:e,exitCode:Oo(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 el,tl,rl,vo,nl,sl,il,ol,To,kt=b(()=>{"use strict";el="rsp.wait.result",tl="rsp.wait.registry",rl="rsp.wait.list",vo={cmd:18e5,pr:27e5,run:27e5,release:72e5},nl=16*1024,sl=1e4,il=2e3,ol=6e4,To={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 Sy,readFile as xy}from"node:fs/promises";async function is(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await ss(r),s=[r,...n];if(s.every(c=>!vt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(al(e,"SIGTERM"),ns(n,"SIGTERM"),await cl(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let i=[...new Set([...s,...await ss(r)])];al(e,"SIGKILL"),ns(i,"SIGKILL");let o=Math.max(1e3,t);await Ey(e,o);let a=await cl(i,o);return{cleaned:a,escalation:"kill",survivors:a?[]:i.filter(vt)}}function al(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 ns(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function Ey(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 cl(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!vt(n)))return!0;await ky(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!vt(n))}async function ss(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await Sy("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let i=Number(s),o=await ul(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 ul(e))?.[19]}async function os(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 ul(e){if(process.platform!=="linux")return null;try{let t=await xy(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function ky(e){await new Promise(t=>setTimeout(t,e))}var Tt=b(()=>{"use strict"});import{constants as vy}from"node:os";async function ll(e){let t=e[1],r={timeoutMs:vo.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:sl,terminateGraceMs:il,probeTimeoutMs:ol,format:"toon",captureBytes:nl},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=vo[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=Py(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=Oy(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 Ty(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Ty(e){if(!(e.signal in vy.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 Oy(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Py(e){return e.startsWith("SIG")?e:`SIG${e}`}var dl=b(()=>{"use strict";kt();Tt()});import{existsSync as Co,readFileSync as Cy,statSync as Dy}from"node:fs";import{basename as fl,dirname as as,isAbsolute as Iy,join as Do,resolve as Vr}from"node:path";function Ny(e,t=process.env){let r=Vr(e);if(mi.map(o=>t[o]).find(Boolean))return Rc({startDir:r,env:t,exists:Co});let s=$y(r),i=Ly(r,s);return i||(s??r)}function Ly(e,t){let r=e;for(;;){if(Co(Do(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 _c(Ny(e,t))}function pl(e,t=process.env){return Do(or(e,t),Ay)}function $y(e){let t=e;for(;;){let r=Do(t,".git");if(Co(r))return jy(r)?t:By(r)??t;let n=Vr(t,"..");if(n===t)return null;t=n}}function By(e){let t=My(e);if(!t)return null;let r=as(t),n=as(r);return fl(r)!=="worktrees"||fl(n)!==".git"?null:as(n)}function My(e){let t;try{t=Cy(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Iy(n)?Vr(n):Vr(as(e),n)}function jy(e){try{return Dy(e).isDirectory()}catch{return!1}}var Ay,Io=b(()=>{"use strict";De();Ay="spool"});import{randomUUID as Uy}from"node:crypto";import{existsSync as Fy}from"node:fs";import{mkdir as Jy,readdir as Gy,readFile as Wy,rename as Hy,rm as Ao,writeFile as qy}from"node:fs/promises";import{dirname as Vy,join as gl}from"node:path";function hl(e,t,r=process.env){return gl(or(e,r),`${t}${Ky}`)}async function ar(e,t){await No(e,`${j(t)}
49
- `)}async function cs(e,t,r){t.status=r,await ar(e,t)}async function us(e,t=process.env){let r=or(e,t);if(!Fy(r))return[];let n=await Gy(r).catch(()=>[]),s=[];for(let i of n.filter(o=>zy.some(a=>o.endsWith(a)))){let o=gl(r,i),a=await Yy(o);if(!a){await Ao(o,{force:!0});continue}if(!await Qy(a)){await Ao(o,{force:!0});continue}s.push(a)}return s}async function Yy(e){let t;try{t=await Wy(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Xy(r);return n&&Object.keys(n).length>0?n:null}async function Qy(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 os(t,r)}function Xy(e){try{let t=J(e);if(ml(t))return t}catch{}try{let t=JSON.parse(e);if(ml(t))return t}catch{}return null}async function No(e,t){await Jy(Vy(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Uy()}`;try{await qy(r,t,"utf8"),await Hy(r,e)}finally{await Ao(r,{force:!0})}}function Lo(e){return{schema:tl,version:1,...e}}function ml(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ky,zy,zr=b(()=>{"use strict";te();Ie();kt();Io();Tt();Ky=".toon",zy=[".toon",".json"]});function cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Le(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 ls(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var ds=b(()=>{"use strict"});import{spawn as Zy}from"node:child_process";import{resolve as ew}from"node:path";async function yl(e,t,r){let n=[];if(e.signalPid){let s=await tw(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await rw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function tw(e){let t=e.signalPid;if(!await os(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 rw(e,t,r){let n=Le(t.wait),s=Le(t.verdict);return await nw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?ew(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 nw(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,is(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";ds();Tt()});import{resolve as sw}from"node:path";async function _l(e){let{kind:t,entry:r,options:n,cwd:s}=e,i=iw(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:Oo(e.status)}function iw(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:el,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 No(sw(e),lr(t,r))}function lr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
48
+ `))Oo(i)&&t.push(i)}catch{}}}return t}function cs(e){return`legacy:${Ry("sha256").update(e).digest("hex").slice(0,24)}`}function Ny(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 hl(e){let{spool_id:t,...r}=e;return ir(JSON.stringify(r))}function Ly(e){return typeof e.spool_id=="string"&&hl(e)!==null}function By(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 Oo(e){return nr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var ky,yl=w(()=>{"use strict";Ae();K();us();xo();ky=64*1024});async function ps(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await _l(e,s),o=(await Xr(e,W)).filter(S=>ar(S)>=s),a=i.filter(S=>C(S.event_type)!=="show"&&C(S.degradation_reason)===""),u=i.filter(S=>C(S.event_type)==="show"),c=i.filter(S=>C(S.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,y=[],b=0,x=0,v=0;for(let S of a){S.elided===!0&&l++;let D=de(S.raw_bytes),Ue=de(S.emitted_bytes),_t=Math.max(0,D-Ue),Jt=ur(S,"raw"),_=ur(S,"emitted"),T=Math.max(0,Jt.tokens-_.tokens);h||=(S.estimated===!0||Jt.estimated||_.estimated)&&T>0,f+=D,d+=Ue,p+=T;let Rt=Ct(S).slice(0,10);Rt&&m.set(Rt,(m.get(Rt)??0)+T);let St=C(S.command)||"unknown",me=g.get(St)??{command:St,invocations:0,bytes_saved:0,tokens_saved:0};me.invocations++,me.bytes_saved+=_t,me.tokens_saved+=T,g.set(St,me);let ge=ct(S.wrapper_ms);ge!=null&&y.push(ge),b+=de(S.store_open_count);let Ut=ct(S.store_elapsed_ms);Ut!=null&&(x+=Ut,v++)}let P=new Map,B=new Map,pe=[],Oe=null;for(let S of c){let D=C(S.degradation_reason)||C(S.reason)||"unknown",Ue=C(S.wrapper_family)||fs(C(S.command));P.set(D,(P.get(D)??0)+1),B.set(Ue,(B.get(Ue)??0)+1);let _t=Ct(S);pe.push({timestamp:_t,family:Ue,command:C(S.command)||"unknown",reason:D,exit_code:ct(S.wrapper_exit_code),stderr_head:C(S.stderr_head)||null}),(!Oe||_t>Oe.timestamp)&&(Oe={timestamp:_t,reason:D,command:C(S.command)||"unknown"})}let ee=a.length+c.length,rt=u.filter(S=>S.hit===!0).length,te=Yi(p,h),vr=My(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:p,tokens_saved_estimated:te.tokens_saved_estimated,token_estimate_range_pct:te.token_estimate_range_pct,tokens_saved_low:te.tokens_saved_low,tokens_saved_high:te.tokens_saved_high,dollars_saved_estimate_usd:te.dollars_saved_estimate_usd,dollars_saved_low_usd:te.dollars_saved_low_usd,dollars_saved_high_usd:te.dollars_saved_high_usd,pricing_model_family:te.pricing_model_family,pricing_input_usd_per_million_tokens:te.pricing_input_usd_per_million_tokens,pricing_note:te.pricing_note,daily_tokens_saved:[...m.entries()].sort(([S],[D])=>S.localeCompare(D)).map(([S,D])=>({date:S,tokens_saved:D})),top_commands:[...g.values()].sort((S,D)=>D.bytes_saved-S.bytes_saved||D.tokens_saved-S.tokens_saved||S.command.localeCompare(D.command))},health:{degradations:c.length,degradation_rate:ee===0?0:c.length/ee,show_total:u.length,show_hits:rt,show_misses:Math.max(0,u.length-rt),show_hit_rate:u.length===0?0:Q(rt/u.length),by_reason:[...P.entries()].sort((S,D)=>D[1]-S[1]||S[0].localeCompare(D[0])).map(([S,D])=>({reason:S,count:D})),by_family:[...B.entries()].sort((S,D)=>D[1]-S[1]||S[0].localeCompare(D[0])).map(([S,D])=>({family:S,count:D})),recent_failures:pe.sort((S,D)=>D.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:Oe},latency:{wrapper_ms_p50:or(y,.5),wrapper_ms_p95:or(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Q(x),store_elapsed_ms_avg:v===0?null:Q(x/v)},decisions:vr}}function My(e){let t=0,r=0,n=0,s=0,i=new Map;for(let o of e){let a=C(o.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,o.quota_free===!0&&(s+=Math.max(1,de(o.saved_units))),a!=="contributed"){let u=C(o.reason)||"unknown";i.set(u,(i.get(u)??0)+1)}}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Q(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Io(e,t,r=new Date){let s=(await Xr(e,ne)).filter(i=>ar(i)<=r.getTime()||Ct(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=Ct(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Vy(s)}}async function Do(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 _l(e,o),u=a.filter(_=>C(_.event_type)!=="show"&&C(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&C(_.degradation_reason)===""),c=a.filter(_=>C(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>C(_.event_type)==="show"),f=a.filter(_=>C(_.degradation_reason)!==""),d=[...u,...f].map(ar).filter(_=>Number.isFinite(_)&&_>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/rb()))),m=[],g=new Map,y=new Map,b=new Map,x=new Map,v=new Map,P=new Map,B=0,pe=!1,Oe=0,ee=null,rt=0,te=0;for(let _ of u){let T=Ct(_),Rt=T.slice(0,10),St=T.slice(0,16),me=fs(C(_.command)),ge=Math.max(0,ur(_,"raw").tokens-ur(_,"emitted").tokens);B+=ge,pe||=_.estimated===!0&&ge>0;let Ut=Math.max(0,de(_.raw_bytes)-de(_.emitted_bytes)),ai=ct(_.wrapper_ms);if(ai!=null){m.push(ai);let uu=g.get(me)??[];uu.push(ai),g.set(me,uu)}Rt&&y.set(Rt,(y.get(Rt)??0)+1),St&&b.set(St,(b.get(St)??0)+1);let ui=Qy(T);ui&&x.set(ui,(x.get(ui)??0)+1);let ci=eb(T);ci&&v.set(ci,(v.get(ci)??0)+ge);let In=P.get(me)??{command_family:me,invocations:0,tokens_saved:0,bytes_saved:0};In.invocations++,In.tokens_saved+=ge,In.bytes_saved+=Ut,P.set(me,In),_.elided===!0&&Oe++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(rt++,de(_.store_open_count)>0&&te++),ge>0&&(!ee||ge>ee.tokens_saved||ge===ee.tokens_saved&&Ut>ee.bytes_saved)&&(ee={timestamp:T,command_family:me,tokens_saved:ge,bytes_saved:Ut})}let vr=f.map(_=>({timestamp:Ct(_),command_family:fs(C(_.command)),reason:C(_.degradation_reason)||C(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),S=new Map;for(let _ of vr)S.set(_.reason,(S.get(_.reason)??0)+1);let D=Jy(vr),Ue=Fy(l),_t=Wy([...P.values()],Ue,D),Jt=[...b.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:u.length===0&&f.length===0,invocations:u.length,degradations:f.length},latency:{global:wl(m),by_command_family:[...g.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...wl(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:b.size===0?null:Q([...b.values()].reduce((_,T)=>_+T,0)/b.size),peak_minute:Jt?{minute:Jt[0],requests:Jt[1]}:null,hour_weekday_heatmap:Zy(x)},savings:{tokens:Yi(B,pe),measured_control_holdout:jy(u,c),weekly_tokens_saved:tb(v),elision_rate:u.length===0?0:Q(Oe/u.length),top_commands_by_tokens_saved:[...P.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:[...P.values()].sort((_,T)=>T.invocations-_.invocations||T.tokens_saved-_.tokens_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:ee},health:{degradation_timeline:vr,degradations_by_reason:[...S.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:rt===0?null:te,warm_hits:rt===0?null:Math.max(0,rt-te)},mining:{recovery_usage_by_family:Ue,degradation_clusters:D,threshold_tuning_suggestions:_t}}}async function _l(e,t){let r=(await Xr(e,ne)).filter(o=>ar(o)>=t),n=r.some(o=>C(o.event_type)!=="show"||C(o.degradation_reason)!==""),s=(await Xr(e,le)).filter(o=>ar(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:C(o.event_type)||"invocation"})),i=(await Xr(e,Le)).filter(o=>ar(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:C(o.reason)||"unknown"}));return[...r,...s,...i]}function ur(e,t){let r=ct(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=de(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function jy(e,t){let r=qy(t.map(a=>ct(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(bl).filter(a=>a!=null),s=t.map(bl).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:Q(Hy(i));return{enabled:!0,holdout_share:Q(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Gy(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function bl(e){let t=ur(e,"raw").tokens;if(t<=0)return null;let r=ur(e,"emitted").tokens;return Math.max(0,t-r)/t}function Gy(e,t){if(e.length<=1)return{low:Q(Math.max(0,t)),high:Q(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:Q(Math.max(0,t-n)),high:Q(Math.min(1,t+n))}}function Fy(e){let t=new Map;for(let r of e){let n=fs(C(r.recovered_command)||C(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Q(r.show_hits/r.show_total)}))}function Jy(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:Uy(r)}))}function Uy(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 Wy(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 Hy(e){return e.reduce((t,r)=>t+r,0)/e.length}function qy(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Vy(e){let t=zy();for(let r of e){if(C(r.event_type)==="show"||C(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Ky(r.storage_class)??Ye(C(r.command));t[n].records+=1;let s=de(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Ky(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function zy(){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 Xr(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=>Yy(n.value)).filter(n=>nr(n))}function Yy(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function ar(e){let t=Date.parse(Ct(e));return Number.isFinite(t)?t:0}function Ct(e){return C(e.created_at)||C(e.ts)||""}function C(e){return typeof e=="string"?e:""}function or(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 Q(r[n])}function wl(e){return{wrapper_ms_p50:or(e,.5),wrapper_ms_p90:or(e,.9),wrapper_ms_p95:or(e,.95),wrapper_ms_p99:or(e,.99)}}function Q(e){return Math.round(e*100)/100}function fs(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 Qy(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Xy(t.getUTCDay())}:${t.getUTCHours()}`:null}function Zy(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 Xy(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function eb(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 tb(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Q((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function rb(){return 24*60*60*1e3}var Rl=w(()=>{"use strict";Qe();Qi();us();xo()});var en={};M(en,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ne,RSP_DECISIONS_COLLECTION:()=>W,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Le,RSP_TELEMETRY_INDEX_COLLECTION:()=>Qr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>le,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>So,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Eo,RSP_TELEMETRY_SPOOL_FILE:()=>Ro,appendTelemetryEvent:()=>Xe,appendTelemetryEventSync:()=>lt,drainTelemetrySpool:()=>Co,parseTelemetryEvent:()=>ir,readAccountingLaneStats:()=>Io,readTelemetryGainsReport:()=>Do,readTelemetryStats:()=>ps,takeTelemetrySpool:()=>Ty,telemetryLegacySpoolPath:()=>ds,telemetrySpoolCorrectionsPath:()=>Po,telemetrySpoolPath:()=>Ze});var ke=w(()=>{"use strict";us();yl();Rl()});function Fo(e){return e==="success"?0:e==="failure"?1:2}function Jo(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function et(e,t,r){return{status:e,exitCode:Fo(e),summary:t,...r?{details:r}:{}}}function H(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function lr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var El,xl,kl,jo,vl,Tl,Ol,Pl,Go,It=w(()=>{"use strict";El="rsp.wait.result",xl="rsp.wait.registry",kl="rsp.wait.list",jo={cmd:18e5,pr:27e5,run:27e5,release:72e5},vl=16*1024,Tl=1e4,Ol=2e3,Pl=6e4,Go={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 ub,readFile as cb}from"node:fs/promises";async function dr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await hs(r),s=[r,...n];if(s.every(u=>!Dt(u)))return{cleaned:!0,escalation:"none",survivors:[]};if(Cl(e,"SIGTERM"),gs(n,"SIGTERM"),await Il(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let i=[...new Set([...s,...await hs(r)])];Cl(e,"SIGKILL"),gs(i,"SIGKILL");let o=Math.max(1e3,t);await lb(e,o);let a=await Il(i,o);return{cleaned:a,escalation:"kill",survivors:a?[]:i.filter(Dt)}}function Cl(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 gs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function lb(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 Il(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Dt(n)))return!0;await db(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Dt(n))}async function hs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await ub("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let i=Number(s),o=await Dl(i);if(!o)continue;let a=Number(o[1]);if(!Number.isSafeInteger(a))continue;let u=t.get(a)??[];u.push(i),t.set(a,u)}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 tn(e){return(await Dl(e))?.[19]}async function ys(e,t){if(!Dt(e))return!1;if(!t)return!0;let r=await tn(e);return r===void 0?process.platform!=="linux":r===t}function Dt(e){try{return process.kill(e,0),!0}catch{return!1}}async function Dl(e){if(process.platform!=="linux")return null;try{let t=await cb(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function db(e){await new Promise(t=>setTimeout(t,e))}var dt=w(()=>{"use strict"});import{constants as fb}from"node:os";async function Al(e){let t=e[1],r={timeoutMs:jo.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Tl,terminateGraceMs:Ol,probeTimeoutMs:Pl,format:"toon",captureBytes:vl},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=jo[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=rn(e[++o]??""):a==="--reason"?r.reason=e[++o]??"":a==="--signal-pid"?r.signalPid=Number(e[++o]):a==="--signal"?r.signal=gb(e[++o]??""):a==="--notify-cmd"?r.notifyCmd=e[++o]??"":a==="--notify-timeout"?r.notifyTimeoutMs=rn(e[++o]??""):a==="--terminate-grace"?r.terminateGraceMs=rn(e[++o]??""):a==="--probe-timeout"?r.probeTimeoutMs=rn(e[++o]??""):a==="--result-file"?r.resultFile=e[++o]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=mb(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 pb(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function pb(e){if(!(e.signal in fb.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(!Dt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await tn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function rn(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 nn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return rn(n)}catch{return t}}function mb(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function gb(e){return e.startsWith("SIG")?e:`SIG${e}`}var $l=w(()=>{"use strict";It();dt()});import{existsSync as Uo,readFileSync as hb,statSync as yb}from"node:fs";import{basename as Nl,dirname as bs,isAbsolute as bb,join as Wo,resolve as sn}from"node:path";function _b(e,t=process.env){let r=sn(e);if(Ti.map(o=>t[o]).find(Boolean))return Wu({startDir:r,env:t,exists:Uo});let s=Sb(r),i=Rb(r,s);return i||(s??r)}function Rb(e,t){let r=e;for(;;){if(Uo(Wo(r,".red")))return r;if(t&&r===t)return null;let n=sn(r,"..");if(n===r)return null;r=n}}function fr(e,t=process.env){return Uu(_b(e,t))}function Ll(e,t=process.env){return Wo(fr(e,t),wb)}function Sb(e){let t=e;for(;;){let r=Wo(t,".git");if(Uo(r))return kb(r)?t:Eb(r)??t;let n=sn(t,"..");if(n===t)return null;t=n}}function Eb(e){let t=xb(e);if(!t)return null;let r=bs(t),n=bs(r);return Nl(r)!=="worktrees"||Nl(n)!==".git"?null:bs(n)}function xb(e){let t;try{t=hb(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return bb(n)?sn(n):sn(bs(e),n)}function kb(e){try{return yb(e).isDirectory()}catch{return!1}}var wb,Ho=w(()=>{"use strict";Ae();wb="spool"});import{randomUUID as vb}from"node:crypto";import{existsSync as Tb}from"node:fs";import{mkdir as Ob,readdir as Pb,readFile as Cb,rename as Ib,rm as qo,writeFile as Db}from"node:fs/promises";import{dirname as Ab,join as Ml}from"node:path";function jl(e,t,r=process.env){return Ml(fr(e,r),`${t}${$b}`)}async function pr(e,t){await Vo(e,`${j(t)}
49
+ `)}async function ws(e,t,r){t.status=r,await pr(e,t)}async function _s(e,t=process.env){let r=fr(e,t);if(!Tb(r))return[];let n=await Pb(r).catch(()=>[]),s=[];for(let i of n.filter(o=>Nb.some(a=>o.endsWith(a)))){let o=Ml(r,i),a=await Lb(o);if(!a){await qo(o,{force:!0});continue}if(!await Bb(a)){await qo(o,{force:!0});continue}s.push(a)}return s}async function Lb(e){let t;try{t=await Cb(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Mb(r);return n&&Object.keys(n).length>0?n:null}async function Bb(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 ys(t,r)}function Mb(e){try{let t=U(e);if(Bl(t))return t}catch{}try{let t=JSON.parse(e);if(Bl(t))return t}catch{}return null}async function Vo(e,t){await Ob(Ab(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${vb()}`;try{await Db(r,t,"utf8"),await Ib(r,e)}finally{await qo(r,{force:!0})}}function Ko(e){return{schema:xl,version:1,...e}}function Bl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $b,Nb,an=w(()=>{"use strict";K();$e();It();Ho();dt();$b=".toon",Nb=[".toon",".json"]});function mr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){return mr(e)?e:{}}function At(e){return Array.isArray(e)?e.filter(mr):[]}function q(e,t){let r=e[t];return typeof r=="string"?r:""}function gr(e,t){let r=e[t];return typeof r=="number"?r:0}function zo(e){let t=JSON.parse(e);if(!mr(t))throw new Error("expected JSON object");return t}function Rs(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Ss=w(()=>{"use strict"});import{spawn as jb}from"node:child_process";import{resolve as Gb}from"node:path";async function Gl(e,t,r){let n=[];if(e.signalPid){let s=await Fb(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Jb(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function Fb(e){let t=e.signalPid;if(!await ys(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:Fl(r),pid:t,signal:e.signal}}}async function Jb(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await Ub(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Gb(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 Ub(e,t,r,n,s){return await new Promise(i=>{let o=!1,a=!1,u=f=>{o||(o=!0,i(f))},c=jb(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,dr(c,n).then(f=>u({error:`timed out after ${r}ms`,...f.cleaned?{}:{survivors:f.survivors}}))},r);c.once("error",f=>{clearTimeout(l),u({error:Fl(f)})}),c.once("close",(f,d)=>{clearTimeout(l),!a&&u(f===0?null:{error:`exited with ${d??f??"unknown"}`,status:f??null,signal:d??null})})})}function Fl(e){return e instanceof Error?e.message:String(e)}var Jl=w(()=>{"use strict";Ss();dt()});import{resolve as Wb}from"node:path";async function Ul(e){let{kind:t,entry:r,options:n,cwd:s}=e,i=Hb(e.verdict,e.cleanupProven,e.survivors),o=new Date().toISOString(),a=un(t,r,i,{status:"pending"},o);await cn(n.resultFile,a,n.format);let u=await Gl(n,a,s),c=un(t,r,i,u,o);return await cn(n.resultFile,c,n.format),{result:c,exitCode:Wl(i,u)}}function Wl(e,t){return t.status!=="success"||e.status==="running"?2:Fo(e.status)}function Hb(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 un(e,t,r,n,s){return{schema:El,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:Wl(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function cn(e,t,r){e&&await Vo(Wb(e),hr(t,r))}function hr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
50
50
  `:`${j(e)}
51
- `}var Sl=b(()=>{"use strict";Ie();kt();zr();bl()});import{createWriteStream as ow,mkdirSync as aw}from"node:fs";import{readFile as cw,rm as uw}from"node:fs/promises";import{dirname as lw}from"node:path";import{join as xl}from"node:path";function El(e,t,r){return{stdout:new fs(r,xl(e,`${t}.stdout.bin`)),stderr:new fs(r,xl(e,`${t}.stderr.bin`))}}function dw(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!fw(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function fw(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var fs,kl=b(()=>{"use strict";fs=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,i={bytes:this.total,...dw(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 cw(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{aw(lw(this.spoolPath),{recursive:!0}),t=ow(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 uw(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 pw}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 cs(s,i,y.verdict.status).catch(()=>{}),u(y))},m=pw(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 is(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 ps(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:mw(u,c,i.last_poll_at)};let l;try{l=await t()}catch(p){l=W(p instanceof Error?p.message:String(p))}if(u=l,i.attempts=++c,i.last_poll_at=new Date().toISOString(),i.last_observation=Bo(l),await ar(s,i).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await cs(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),m=Math.min(d+f,Math.max(0,a-Date.now())),h=e.makeWakeSignal?.();await gw(m,o,h)}return await cs(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:Bo(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 Bo(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function mw(e,t,r){return W("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Bo(e)}:{}})}async function gw(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(i,e);function i(){clearTimeout(s),t.removeEventListener("abort",o),r?.removeEventListener("abort",a),n()}let o=()=>i(),a=()=>i();t.addEventListener("abort",o,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}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 Ll={};M(Ll,{readGhConditionalJson:()=>ne});import{spawn as hw}from"node:child_process";import{createHash as yw,randomUUID as ww}from"node:crypto";import{mkdir as bw,readFile as _w,rename as Rw,writeFile as Sw}from"node:fs/promises";import{dirname as xw,join as Il}from"node:path";async function ne(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=vw(e.path,e.params),s=Tw(n),i=await Cw(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 Ow(a,t,e.env,e.signal),u=Pw(c.stdout);if(u.statusCode===304&&!!o)return await Mo(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 Dw(r,i)),await Mo(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 Mo(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 vw(e,t){return JSON.stringify({method:"GET",path:e,params:Al(t)})}function Tw(e){return yw("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Ow(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=hw("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 Pw(e){let t=e.replace(/\r\n/g,`
51
+ `}var Hl=w(()=>{"use strict";$e();It();an();Jl()});import{createWriteStream as qb,mkdirSync as Vb}from"node:fs";import{readFile as Kb,rm as zb}from"node:fs/promises";import{dirname as Yb}from"node:path";import{join as ql}from"node:path";function Vl(e,t,r){return{stdout:new Es(r,ql(e,`${t}.stdout.bin`)),stderr:new Es(r,ql(e,`${t}.stderr.bin`))}}function Qb(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!Zb(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function Zb(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Es,Kl=w(()=>{"use strict";Es=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,...Qb(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 Kb(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{Vb(Yb(this.spoolPath),{recursive:!0}),t=qb(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 zb(this.spoolPath,{force:!0}).catch(()=>{})}}});function zl(e,t=process.env){return{async mint(r,n){let s=Ee(e,t),i=await ut.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 Yl=w(()=>{"use strict";xe();Qe()});import{spawn as Xb}from"node:child_process";async function Zl(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:i,signal:o}=e;if(!t.trim())return{verdict:H("missing command line")};let a=e.store??zl(n),u=Vl(e.spoolDir,i.id,r.captureBytes);return await new Promise(c=>{let l=!1,f=!1,d=async y=>{l||(l=!0,o.removeEventListener("abort",m),await ws(s,i,y.verdict.status).catch(()=>{}),c(y))},p=Xb(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",y=>u.stdout.write(Buffer.from(y))),p.stderr?.on("data",y=>u.stderr.write(Buffer.from(y)));let h=async(y,b)=>{if(l||f)return;f=!0,clearTimeout(g);let x=await dr(p,r.terminateGraceMs),v=await Ql(null,null,u,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:v},cleanupProven:x.cleaned,survivors:x.survivors})},m=()=>void h("indeterminate","command interrupted");o.addEventListener("abort",m,{once:!0});let g=setTimeout(()=>{h("timeout",`command timed out after ${Xl(r.timeoutMs)}`)},r.timeoutMs);p.once("error",y=>{clearTimeout(g),u.stdout.discard(),u.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),p.once("close",(y,b)=>{if(clearTimeout(g),l||f)return;let x=y===0;Ql(y,b,u,a,t).then(v=>d({verdict:{status:x?"success":"failure",exitCode:x?0:1,summary:x?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:v}}))}),o.aborted&&m()})}async function xs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:i,signal:o}=e,a=Date.now()+r,u=0,c;for(;Date.now()<a;){if(o.aborted)return{verdict:ew(c,u,i.last_poll_at)};let l;try{l=await t()}catch(m){l=H(m instanceof Error?m.message:String(m))}if(c=l,i.attempts=++u,i.last_poll_at=new Date().toISOString(),i.last_observation=Yo(l),await pr(s,i).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await ws(s,i,l.status).catch(()=>{}),{verdict:l};let f=Math.min(n*4,Math.round(n*Math.pow(1.25,u-1))),d=Math.floor(Math.random()*1e3),p=Math.min(f+d,Math.max(0,a-Date.now())),h=e.makeWakeSignal?.();await tw(p,o,h)}return await ws(s,i,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Xl(r)}`,details:c?{attempts:u,last_poll_at:i.last_poll_at??null,last_observation:Yo(c)}:{attempts:u}}}}async function Ql(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 Yo(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function ew(e,t,r){return H("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Yo(e)}:{}})}async function tw(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(i,e);function i(){clearTimeout(s),t.removeEventListener("abort",o),r?.removeEventListener("abort",a),n()}let o=()=>i(),a=()=>i();t.addEventListener("abort",o,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function Xl(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var ed=w(()=>{"use strict";Kl();Yl();It();dt();an()});var sd={};M(sd,{readGhConditionalJson:()=>se});import{spawn as rw}from"node:child_process";import{createHash as nw,randomUUID as sw}from"node:crypto";import{mkdir as iw,readFile as ow,rename as aw,writeFile as uw}from"node:fs/promises";import{dirname as cw,join as td}from"node:path";async function se(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=fw(e.path,e.params),s=pw(n),i=await hw(r),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of rd(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let u=await mw(a,t,e.env,e.signal),c=gw(u.stdout);if(c.statusCode===304&&!!o)return await Qo(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:u.stderr,etag:o.etag,quotaFree:!0};if(c.statusCode>=200&&c.statusCode<300){let f=c.headers.get("etag");return f&&(i.entries[s]={key:s,request:n,etag:f,body:c.body,updated_at:new Date().toISOString()},await yw(r,i)),await Qo(r,e.command??`gh api ${e.path}`,!1),{status:u.status,stdout:c.body,stderr:u.stderr,etag:f??void 0,quotaFree:!1}}return await Qo(r,e.command??`gh api ${e.path}`,!1),{status:u.status,stdout:c.body||u.stdout,stderr:u.stderr,quotaFree:!1}}function rd(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function fw(e,t){return JSON.stringify({method:"GET",path:e,params:rd(t)})}function pw(e){return nw("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function mw(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let i=!1,o=f=>{i||(i=!0,n?.removeEventListener("abort",u),s(f))},a=rw("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function u(){try{a.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",u,{once:!0});let c=[],l=[];a.stdout.on("data",f=>c.push(Buffer.from(f))),a.stderr.on("data",f=>l.push(Buffer.from(f))),a.once("error",f=>o({status:1,stdout:"",stderr:f.message})),a.once("close",f=>{o({status:f??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function gw(e){let t=e.replace(/\r\n/g,`
52
52
  `),r=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(r.length===0)return{statusCode:0,headers:new Map,body:e};let n=r[r.length-1],s=Number(n[1]),i=n.index+n[0].length,o=t.indexOf(`
53
53
 
54
- `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
55
- `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function Cw(e){for(let t of[Nl(e),Iw(e)])try{let r=Aw(await _w(t,"utf8"));if(Nw(r))return r}catch{}return{version:1,entries:{}}}async function Dw(e,t){let r=Nl(e);await bw(xw(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await Sw(n,`${C(t)}
56
- `,{encoding:"utf8",mode:384}),await Rw(n,r)}function Nl(e){return Il(V(e),Ew)}function Iw(e){return Il(V(e),kw)}function Aw(e){try{return JSON.parse(e)}catch{return J(e)}}async function Mo(e,t,r){await Ye(e,{collection:G,id:ww(),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 Nw(e){return jo(e)&&e.version===1&&jo(e.entries)&&Object.values(e.entries).every(Lw)}function Lw(e){return jo(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function jo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ew,kw,ms=b(()=>{"use strict";De();te();xe();Ew="gh-etag-cache.toon",kw="gh-etag-cache.json"});import{spawn as $w}from"node:child_process";async function Xr(e,t){return await Bw(t,async r=>{let n=await jw(e,t.cwd,r);return n||await Mw(e,t.cwd,r)})}async function Bw(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 Mw(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=$w("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=o.pid;l&&ss(l).then(d=>ns(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 jw(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Uw(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=Le(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=ls(e,"--branch"),s=ls(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(Le(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=ls(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 Uw(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=Le(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let i=H(Le(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(Le(JSON.parse(o.stdout)).statuses):[],u=a.status===0?Ot(Le(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:Fw(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 Fw(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 $l=b(()=>{"use strict";ms();ds();Tt()});function Ml(e,t,r){let n=Date.now();return()=>Jw(e,t,r,n)}async function Jw(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return W("missing PR number");let s=await Xr(["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(Gw),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 Xr(["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 Xr(["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 Fl(e,t,r){let n=await Xr(["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||Ww(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 Gw(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 Ww(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Jl=b(()=>{"use strict";kt();$l();ds()});function Zr(){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 Uo=b(()=>{"use strict"});import{EventEmitter as Hw}from"node:events";import{spawn as qw}from"node:child_process";function Vw(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Kw(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var zw,Yw,Qw,en,Gl=b(()=>{"use strict";zw="pull_request,pull_request_review,check_run,check_suite,workflow_run",Yw=3,Qw=/no extension matched|unknown command|command not found/i,en=class extends Hw{constructor(r){super();this.opts=r}child;_dead=!1;restarts=0;_mode="polling";get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>this.stop(),{once:!0}),this.spawnChild())}stop(){this._dead=!0,this.emit("stopped");let r=this.child;if(this.child=void 0,r)try{r.kill("SIGTERM")}catch{}}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,i=c=>{(r==="pr"?Vw(c,n):Kw(c,n))&&(a(),s.abort())},o=()=>{a()},a=()=>{this.off("delivery",i),this.off("stopped",o)};return this.on("delivery",i),this.once("stopped",o),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=qw(r,["webhook","forward",`--events=${zw}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"]})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",o=>{s+=o;let a;for(;(a=s.indexOf(`
59
- `))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let i=[];n.stderr?.on("data",o=>{i.push(Buffer.from(o))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",o=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(i).toString("utf8");Qw.test(a)||this.restarts===0&&(o===1||o===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=Yw)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Fo={};M(Fo,{listWaits:()=>us,renderWaitHelp:()=>Zr,runWait:()=>eb});import{randomUUID as Wl}from"node:crypto";import{mkdir as Xw,rm as Zw}from"node:fs/promises";async function eb(e,t=process.cwd()){let r;try{r=await ll(e)}catch(n){return await ib(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Zr()),0;if(r.kind==="ls"){let n={schema:rl,version:1,waits:await us(t)};return process.stdout.write(lr(n,r.options.format)),0}return Po(r.kind)?await tb({...r,kind:r.kind},t):(process.stdout.write(Zr()),2)}async function tb(e,t){let r=e.kind,n=Lo({id:Wl(),kind:r,target:sb(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:To[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 Xw(or(t),{recursive:!0}),await ar(s,n);let l=await rb(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 Zw(s,{force:!0}).catch(()=>{})}}async function rb(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??"";if(!/^[1-9][0-9]*$/.test(o))return{verdict:W("missing PR number")};n.webhook_mode="polling";let a=new en({cwd:t,cancelSignal:s});return a.once("mode-changed",()=>{n.webhook_mode="webhook"}),a.start(),await ps({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),makeWakeSignal:a.makeWakeSignalFor("pr",o),registryPath:r,entry:n,signal:s})}case"run":{let o=await nb(e,i,r,n);if(!o.ok)return{verdict:W(o.reason)};n.webhook_mode="polling";let a=new en({cwd:t,cancelSignal:s});return a.once("mode-changed",()=>{n.webhook_mode="webhook"}),a.start(),await ps({probe:()=>jl(o.value,i),timeoutMs:e.options.timeoutMs,baseSleepMs:qr("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",o.value),registryPath:r,entry:n,signal:s})}case"release":return await ps({probe:()=>Fl(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 nb(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 sb(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 ib(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,i=Po(e[1])?e[1]:"cmd",o=new Date().toISOString(),a=Lo({id:Wl(),kind:i,target:`${i}:`,reason:"",pid:process.pid,started_at:o,deadline_at:o,timeout_ms:0,poll_tier:To[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();Io();Jl();Tt();zr();Uo();Gl();zr();Uo()});var hs={};M(hs,{parseProxyCommandLine:()=>Yl,rewriteProxyCommandLine:()=>zl,runProxy:()=>db});import{spawn as lb}from"node:child_process";async function db(e,t){let r="",n="",s=[],i=process.hrtime.bigint();try{if(r=Yl(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=zl(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await fb(t.telemetryRoot,r,c),await Vl(r);throw c}for(let c of s)await pb(t.telemetryRoot,c);let o=await Vl(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 zl(e,t="lossless"){let r=bb(e),n=[];return{commandLine:r.map((i,o)=>{if(i.kind==="operator"||wb(r,o)==="|")return i.text;let a=mb(i.text,t);return a?(n.push(a.match),a.text):i.text}).join(""),matches:n}}function Yl(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 fb(e,t,r){await Ye(e,{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Wo(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function pb(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 Vl(e){let t=lb(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
60
- `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function mb(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Rb(s);if(!i)return null;let o=yb(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(m=>m.value);if(gs(c))return{text:e,match:{command:a.map(m=>m.raw).join(" "),commandFamily:Wo(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=gb(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:Wo(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function gb(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}:hb(t,r)}function hb(e,t){return e[0]==="cat"&&e.length===2&&Go(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Go(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])&&Go(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Go(e){return!!e&&!e.startsWith("-")}function yb(e){let t=0;for(;t<e.length&&Kl(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Kl(e[t].value);)t+=1;return t}function wb(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function bb(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=_b(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 _b(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 Rb(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 Wo(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:gs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:gs(t)&&t[1]?`gh ${t[1]} json-jq`:gs(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 gs(e){return e[0]==="gh"&&e.some(Sb)}function Sb(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Kl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var ys=b(()=>{"use strict";xe()});function Zl(e,t={}){let r=xb(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=Ho(i),u=Ho(o),l=Ho(a),d=t.excludedByteRanges??[];return r.filter(f=>f.text.trim().length>0).filter(f=>!d.some(m=>Pb(f.start,f.end,m.start,m.end))).map(f=>({line:f,score:qo(f.length,c)+qo(f.tokens.length,u)+qo(f.numbers.length===0?0:Math.max(...f.numbers.map(Math.abs)),l)+Tb(f.tokens,n,r.length)+Ob(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 xb(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(Ql(n++,r,i,e.slice(r,i).replace(/\r$/,""))),r=i+1}return(r<e.length||e.length===0)&&t.push(Ql(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Ql(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Eb(n),tokens:kb(n),numbers:vb(n),length:n.length}}function Eb(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 kb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function vb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function Tb(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 Ob(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Ho(e){let t=Xl(e),r=Xl(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function qo(e,t){return Math.abs(e-t.median)/t.mad}function Xl(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 Pb(e,t,r,n){return e<n&&r<t}var ed=b(()=>{"use strict"});var Vo={};M(Vo,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>qe,GIT_LOG_MACHINE_FIELDS:()=>rd,StructuredUsageError:()=>ws,cleanStatusPayload:()=>od,recoveryInstruction:()=>Ee,renderGitContract:()=>nd,runGitWrapper:()=>Db});import{spawn as Cb}from"node:child_process";async function Db(e,t){let r=sd(e),n=id(r.argv),s=await Lb(n,r.argv.slice(1));return nd(e,s,t)}async function nd(e,t,r){let n=sd(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=id(n.argv),i;try{i=$b(s,n.argv,t.stdout,n.query)}catch(d){if(d instanceof bs)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(Ib(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=e_(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)}
61
- `;return{stdout:Buffer.from(`${C(a.payload)}
62
- ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function Ee(e){return e.startsWith("el:")?`rsp show ${e}`:e}function sd(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 ws(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function Ib(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!Ab(e)||n.level!=="lossless")return!0;let s=Zb(n.heavyGitByteThreshold,qe);return Buffer.byteLength(t)<=s}function Ab(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function id(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 Nb(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${rd.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 Lb(e,t){let r=Cb("git",Nb(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 $b(e,t,r,n){switch(e){case"status":return Bb(t,r,n);case"log":return Hb(t,r,n);case"diff":return qb(t,r,n);case"commit":return ct(Vb(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ct(Kb(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return zb(t,r,n);case"branch":return Yb(t,r,n);case"show":return Qb(t,r,n)}}function Bb(e,t,r){let n="",s=[],i=!1,o=!1;for(let u of Mb(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=Fb(u),i=!0;continue}let l=jb(u);if(l){i=!0,s.push(l);continue}let d=Ub(u);d&&(i=!0,s.push(d))}if(s.length===0){if(!o||i)return od(e.join(" "),n);throw new bs("git-status-unparseable")}let a=K(s,r),c=ad(a,"state");return ct({command:e.join(" "),branch:n,rows:a,summary:Wb(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Mb(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function jb(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return tn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return tn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return tn(t.slice(10).join(" "),r)}return e.startsWith("? ")?tn(e.slice(2),"??"):null}function Ub(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?tn(Jb(e.slice(3),t),t):null}function tn(e,t){let r=td(t[0]??"."),n=td(t[1]??".");return{path:Gb(e),index:r,worktree:n,state:Xb(`${r}${n}`)}}function td(e){return e===" "?".":e}function Fb(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function Jb(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function Gb(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function Wb(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 od(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 Hb(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 qb(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 Vb(e,t){let r=t.split(`
63
- `)[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 Kb(e,t){let r=t.split(`
64
- `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,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 zb(e,t,r){let n=t.split(`
65
- `),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=ad(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 Yb(e,t,r){let n=t.split(`
66
- `).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 Qb(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(`
67
- `)){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(`
68
- `).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 Xb(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function ad(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Zb(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function e_(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 rd,ws,bs,Pt=b(()=>{"use strict";te();Se();xr();Ce();Se();rd=["%h","%an","%as","%s"];ws=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return xn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},bs=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var Qo={};M(Qo,{NORMALIZATION_ALLOWLIST:()=>md,NORMALIZE_ANSI:()=>Rs,NORMALIZE_BLANK_LINES:()=>Es,NORMALIZE_CR_PROGRESS:()=>Ss,NORMALIZE_JSON_TOON:()=>pd,NORMALIZE_TRAILING_WHITESPACE:()=>xs,crushJsonArrayItems:()=>rn,formatCodexNormalizeDecision:()=>bd,formatNormalizeDecision:()=>wd,hookDecisionFromClaudePostExecJson:()=>gd,hookDecisionFromCodexPostExecJson:()=>hd,normalizeOutput:()=>ks,renderGenericJsonLane:()=>zo,runClaudePostExecHook:()=>n_,runCodexPostExecHook:()=>s_,transcodeJsonToToon:()=>fd});import{readFileSync as _s}from"node:fs";function fd(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 Ko(i,a)?o.trimEnd():e}async function zo(e,t={}){let r=c_(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=dd(t.minTokens,t_),o=dd(t.maxItems,r_);if(!(s>o&&p_(e)>=i))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??rn)(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:m_(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(`
69
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:f}}function rn(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=u_(e),s=new Set;n&&e.forEach((a,c)=>{Yo(a)!==n&&s.add(c)});let i=l_(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 ks(e){let t=e;for(let r of md)t=r.apply(t);return t}async function gd(e,t){return await yd(e,t)}async function hd(e,t){return await yd(e,t)}async function yd(e,t){let r=a_(e),n=g_(r,["cwd"])||t.cwd;if(!await(t.isEnabled??o_)(n))return{kind:"passthrough",reason:"disabled"};let i=h_(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??ks)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function wd(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function bd(e){return{stdout:"",status:0}}async function n_(e){let t=e?_s(e,"utf8"):_s(0,"utf8"),r=await gd(t,{cwd:process.cwd()}),n=wd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function s_(e){let t=e?_s(e,"utf8"):_s(0,"utf8"),r=await hd(t,{cwd:process.cwd()}),n=bd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function i_(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&&cd(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&cd(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function cd(e){return e>=32&&e<=63}function o_(e){return Re(e,process.env).enabled}function a_(e){try{let t=JSON.parse(e);return dr(t)?t:{}}catch{return{}}}function c_(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 u_(e){let t=new Map;for(let s of e){let i=Yo(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 Yo(e){return Array.isArray(e)?"array":dr(e)?Object.keys(e).sort().map(t=>`${t}:${ud(e[t])}`).join("|"):ud(e)}function l_(e,t){let r=new Set,n=new Map;e.forEach((s,i)=>{if(!(t&&Yo(s)!==t))for(let[o,a]of _d(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 d_(s))r.add(i);for(let i of f_(s))r.add(i)}return r}function d_(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=ld(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),i=ld(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 f_(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 _d(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])=>_d(n,t?`${t}.${r}`:r)):[]}function ud(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function ld(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 p_(e){return Math.ceil(e.length/4)}function dd(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function m_(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 g_(e,t){let r=e;for(let n of t){if(!dr(r))return"";r=r[n]}return typeof r=="string"?r:""}function h_(e,t){let r=e[t];return dr(r)?r:null}function dr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ko(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)=>Ko(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)&&Ko(r[o],n[o]))}var Rs,Ss,xs,Es,pd,t_,r_,md,nn=b(()=>{"use strict";te();Se();Rs={id:"ansi",apply:i_},Ss={id:"cr-progress",apply:e=>e.split(`
54
+ `,i),a=o>=0?t.slice(i,o):t.slice(i),u=new Map;for(let c of a.split(`
55
+ `)){let l=c.indexOf(":");l<=0||u.set(c.slice(0,l).trim().toLowerCase(),c.slice(l+1).trim())}return{statusCode:s,headers:u,body:o>=0?t.slice(o+2):""}}async function hw(e){for(let t of[nd(e),bw(e)])try{let r=ww(await ow(t,"utf8"));if(_w(r))return r}catch{}return{version:1,entries:{}}}async function yw(e,t){let r=nd(e);await iw(cw(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await uw(n,`${O(t)}
56
+ `,{encoding:"utf8",mode:384}),await aw(n,r)}function nd(e){return td(z(e),lw)}function bw(e){return td(z(e),dw)}function ww(e){try{return JSON.parse(e)}catch{return U(e)}}async function Qo(e,t,r){await Xe(e,{collection:W,id:sw(),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 _w(e){return Zo(e)&&e.version===1&&Zo(e.entries)&&Object.values(e.entries).every(Rw)}function Rw(e){return Zo(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Zo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lw,dw,ks=w(()=>{"use strict";Ae();K();ke();lw="gh-etag-cache.toon",dw="gh-etag-cache.json"});import{spawn as Sw}from"node:child_process";async function ln(e,t){return await Ew(t,async r=>{let n=await kw(e,t.cwd,r);return n||await xw(e,t.cwd,r)})}async function Ew(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 xw(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=Sw("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=o.pid;l&&hs(l).then(f=>gs(f,"SIGKILL"));try{o.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let u=[],c=[];o.stdout.on("data",l=>u.push(Buffer.from(l))),o.stderr.on("data",l=>c.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(u).toString("utf8"),stderr:Buffer.concat(c).toString("utf8").trim()})})})}async function kw(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await vw(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await se({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:gr(s,"database_id")||gr(s,"id"),status:q(s,"status").toUpperCase(),conclusion:q(s,"conclusion").toUpperCase(),workflowName:q(s,"workflow_name")||q(s,"name"),headBranch:q(s,"head_branch"),url:q(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Rs(e,"--branch"),s=Rs(e,"--limit")??"20",i=await se({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=At(Be(JSON.parse(i.stdout)).workflow_runs).map(a=>({databaseId:gr(a,"database_id")||gr(a,"id")}));return{status:0,stdout:JSON.stringify(o),stderr:i.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Rs(e,"--limit")??"20",s=await se({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=At(JSON.parse(s.stdout)).map(o=>({tagName:q(o,"tag_name"),publishedAt:q(o,"published_at"),isDraft:o.draft===!0}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}return null}async function vw(e,t,r){let n=await se({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let i=q(Be(s.head),"sha"),[o,a]=i?await Promise.all([se({path:`repos/{owner}/{repo}/commits/${i}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),se({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}],u=o.status===0?At(Be(JSON.parse(o.stdout)).statuses):[],c=a.status===0?At(Be(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,o.stderr,a.stderr].filter(Boolean).join(`
57
+ `),stdout:JSON.stringify({number:gr(s,"number"),state:q(s,"state").toUpperCase(),mergeable:Tw(s),statusCheckRollup:[...u.map(l=>({conclusion:q(l,"state").toUpperCase()})),...c.map(l=>({status:q(l,"status").toUpperCase(),conclusion:q(l,"conclusion").toUpperCase()}))],url:q(s,"html_url")})}}function Tw(e){let t=q(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var id=w(()=>{"use strict";ks();Ss();dt()});function ad(e,t,r){let n=Date.now();return()=>Ow(e,t,r,n)}async function Ow(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return H("missing PR number");let s=await ln(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return H(s.stderr||"gh pr view failed");let i=zo(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),u=o.map(Pw),c=u.filter(f=>f==="failure").length,l=u.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return et("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return et("failure",`PR #${e} has merge conflicts`,{failing:c,pending:l,mergeable:a});if(c>0)return et("failure",`PR #${e} has failing checks`,{failing:c,pending:l,mergeable:a});if(l>0)return lr(`PR #${e} has ${l} pending checks`);if(o.length===0){let f=Date.now()-n;return a==="UNKNOWN"||f<r.emptyChecksGraceMs?lr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:f}):et("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?lr(`PR #${e} mergeability is still unknown`,{checks:o.length,mergeable:a}):et("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function ud(e,t){if(!e)return H("missing run id");let r=await ln(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return H(r.stderr||"gh run view failed");let n=zo(r.stdout),s=String(n.status??"").toLowerCase(),i=String(n.conclusion??"").toLowerCase();return s!=="completed"?lr(`run ${e} is ${s||"pending"}`):i==="success"?et("success",`run ${e} succeeded`,od(n)):et("failure",`run ${e} concluded ${i||"unknown"}`,od(n))}async function cd(e,t){let r=await ln(["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 mr(s)&&s.databaseId!=null?String(s.databaseId):""}async function ld(e,t,r){let n=await ln(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return H(n.stderr||"gh release list failed");let i=At(JSON.parse(n.stdout)).find(o=>{let a=String(o.tagName??""),u=new Date(String(o.publishedAt??""));return o.isDraft!==!0&&(!e||Cw(e,a))&&u>=t});return i?et("success",`release ${String(i.tagName)} published`,{tag:String(i.tagName),published_at:String(i.publishedAt??"")}):lr("no matching release is published yet")}function Pw(e){let t=mr(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 od(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 Cw(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var dd=w(()=>{"use strict";It();id();Ss()});function dn(){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 Xo=w(()=>{"use strict"});import{EventEmitter as Iw}from"node:events";import{spawn as Dw}from"node:child_process";function Aw(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function $w(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Nw,Lw,Bw,Mw,fn,fd=w(()=>{"use strict";dt();Nw="pull_request,pull_request_review,check_run,check_suite,workflow_run",Lw=3,Bw=1e3,Mw=/no extension matched|unknown command|command not found/i,fn=class extends Iw{constructor(r){super();this.opts=r}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=dr(r,Bw).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,i=u=>{(r==="pr"?Aw(u,n):$w(u,n))&&(a(),s.abort())},o=()=>{a()},a=()=>{this.off("delivery",i),this.off("stopped",o)};return this.on("delivery",i),this.once("stopped",o),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=Dw(r,["webhook","forward",`--events=${Nw}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",o=>{s+=o;let a;for(;(a=s.indexOf(`
59
+ `))>=0;){let u=s.slice(0,a).trim();s=s.slice(a+1),u&&this.onLine(u)}});let i=[];n.stderr?.on("data",o=>{i.push(Buffer.from(o))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",o=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(i).toString("utf8");Mw.test(a)||this.restarts===0&&(o===1||o===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=Lw)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var ea={};M(ea,{listWaits:()=>_s,renderWaitHelp:()=>dn,runWait:()=>Fw});import{randomUUID as pd}from"node:crypto";import{mkdir as jw,rm as Gw}from"node:fs/promises";async function Fw(e,t=process.cwd()){let r;try{r=await Al(e)}catch(n){return await qw(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(dn()),0;if(r.kind==="ls"){let n={schema:kl,version:1,waits:await _s(t)};return process.stdout.write(hr(n,r.options.format)),0}return Jo(r.kind)?await Jw({...r,kind:r.kind},t):(process.stdout.write(dn()),2)}async function Jw(e,t){let r=e.kind,n=Ko({id:pd(),kind:r,target:Hw(e),reason:e.options.reason,pid:process.pid,pid_start_time:await tn(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Go[r],status:"running",attempts:0}),s=jl(t,n.id),i=new AbortController,o,a=l=>{o=l,i.abort()},u=()=>a("SIGINT"),c=()=>a("SIGTERM");process.once("SIGINT",u),process.once("SIGTERM",c);try{await jw(fr(t),{recursive:!0}),await pr(s,n);let l=await Uw(e,t,s,n,i.signal);o&&(l={...l,verdict:H(`wait interrupted by ${o}`,l.verdict.details)});let f=await Ul({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(hr(f.result,e.options.format)),f.exitCode}catch(l){let f=H(l instanceof Error?l.message:String(l)),d=un(r,n,f,{status:"success"},new Date().toISOString());return await cn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(hr(d,e.options.format)),2}finally{process.removeListener("SIGINT",u),process.removeListener("SIGTERM",c),await Gw(s,{force:!0}).catch(()=>{})}}async function Uw(e,t,r,n,s){let i={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Zl({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:Ll(t),registryPath:r,entry:n,signal:s});case"pr":{let o=e.target??"";if(!/^[1-9][0-9]*$/.test(o))return{verdict:H("missing PR number")};n.webhook_mode="polling";let a=new fn({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),a.start();try{return await xs({probe:ad(o,i,{emptyChecksGraceMs:nn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:nn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",o),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let o=await Ww(e,i,r,n);if(!o.ok)return{verdict:H(o.reason)};n.webhook_mode="polling";let a=new fn({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),a.start();try{return await xs({probe:()=>ud(o.value,i),timeoutMs:e.options.timeoutMs,baseSleepMs:nn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",o.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await xs({probe:()=>ld(e.tagGlob,new Date(n.started_at),i),timeoutMs:e.options.timeoutMs,baseSleepMs:nn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Ww(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 cd(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await pr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Hw(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 qw(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,i=Jo(e[1])?e[1]:"cmd",o=new Date().toISOString(),a=Ko({id:pd(),kind:i,target:`${i}:`,reason:"",pid:process.pid,started_at:o,deadline_at:o,timeout_ms:0,poll_tier:Go[i],status:"indeterminate",attempts:0}),u=un(i,a,H(t instanceof Error?t.message:String(t)),{status:"success"},o);return await cn(s,u,r).catch(()=>{}),process.stdout.write(hr(u,r)),2}var ta=w(()=>{"use strict";$l();Hl();ed();It();Ho();dd();dt();an();Xo();fd();an();Xo()});var Ts={};M(Ts,{parseProxyCommandLine:()=>wd,rewriteProxyCommandLine:()=>bd,runProxy:()=>Zw});import{spawn as Qw}from"node:child_process";async function Zw(e,t){let r="",n="",s=[],i=process.hrtime.bigint();try{if(r=wd(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let u=bd(r,t.level??"lossless");n=u.commandLine,s=u.matches}catch(u){if(r)return await Xw(t.telemetryRoot,r,u),await hd(r);throw u}for(let u of s)await e_(t.telemetryRoot,u);let o=await hd(n||r),a=Number(process.hrtime.bigint()-i)/1e6;return await Xe(t.telemetryRoot,{collection:le,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 bd(e,t="lossless"){let r=o_(e),n=[];return{commandLine:r.map((i,o)=>{if(i.kind==="operator"||i_(r,o)==="|")return i.text;let a=t_(i.text,t);return a?(n.push(a.match),a.text):i.text}).join(""),matches:n}}function wd(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 Xw(e,t,r){await Xe(e,{collection:W,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:na(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function e_(e,t){await Xe(e,{collection:W,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 hd(e){let t=Qw(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
60
+ `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function t_(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=u_(s);if(!i)return null;let o=s_(i);if(o>=i.length)return null;let a=i.slice(o),u=a.map(p=>p.value);if(vs(u))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:na(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let c=r_(a);if(!c)return null;let l=i.slice(0,o).map(p=>p.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...c.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:na(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:c.capabilityId}}}function r_(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}:n_(t,r)}function n_(e,t){return e[0]==="cat"&&e.length===2&&ra(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&ra(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])&&ra(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function ra(e){return!!e&&!e.startsWith("-")}function s_(e){let t=0;for(;t<e.length&&yd(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&yd(e[t].value);)t+=1;return t}function i_(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function o_(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=a_(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 a_(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 u_(e){let t=[],r="",n="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:r,value:n}),r="",n="",o=!1)};for(let u=0;u<e.length;u+=1){let c=e[u];if(i){r+=c,n+=c,i=!1,o=!0;continue}if(c==="\\"){r+=c,i=!0,o=!0;continue}if(s){r+=c,c===s?s=void 0:n+=c,o=!0;continue}if(c==="'"||c==='"'){r+=c,s=c,o=!0;continue}if(/[ \t]/.test(c)){a();continue}if(/[()<>`]/.test(c))return null;r+=c,n+=c,o=!0}return s||i?null:(a(),t)}function na(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:vs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:vs(t)&&t[1]?`gh ${t[1]} json-jq`:vs(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 vs(e){return e[0]==="gh"&&e.some(c_)}function c_(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function yd(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Os=w(()=>{"use strict";ke()});function Sd(e,t={}){let r=l_(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let p of new Set(d.tokens))n.set(p,(n.get(p)??0)+1)}let 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))),u=sa(i),c=sa(o),l=sa(a),f=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>h_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:ia(d.length,u)+ia(d.tokens.length,c)+ia(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+m_(d.tokens,n,r.length)+g_(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function l_(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(_d(n++,r,i,e.slice(r,i).replace(/\r$/,""))),r=i+1}return(r<e.length||e.length===0)&&t.push(_d(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function _d(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:d_(n),tokens:f_(n),numbers:p_(n),length:n.length}}function d_(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 f_(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function p_(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function m_(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 g_(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function sa(e){let t=Rd(e),r=Rd(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function ia(e,t){return Math.abs(e-t.median)/t.mad}function Rd(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 h_(e,t,r,n){return e<n&&r<t}var Ed=w(()=>{"use strict"});var oa={};M(oa,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ze,GIT_LOG_MACHINE_FIELDS:()=>kd,StructuredUsageError:()=>Ps,cleanStatusPayload:()=>Pd,recoveryInstruction:()=>ve,renderGitContract:()=>vd,runGitWrapper:()=>b_});import{spawn as y_}from"node:child_process";async function b_(e,t){let r=Td(e),n=Od(r.argv),s=await S_(n,r.argv.slice(1));return vd(e,s,t)}async function vd(e,t,r){let n=Td(e);if((t.status??0)!==0||t.signal){let f=ye(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Od(n.argv),i;try{i=E_(s,n.argv,t.stdout,n.query)}catch(f){if(f instanceof Cs)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=O(i);if(w_(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=F_(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let u=Buffer.byteLength(o),c=await r.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:u}});if(!c)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${u}) \u2014 ${ve(c)}
61
+ `;return{stdout:Buffer.from(`${O(a.payload)}
62
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:c,bytesElided:u,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function ve(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Td(e){let t=kt(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 Ps(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function w_(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!__(e)||n.level!=="lossless")return!0;let s=G_(n.heavyGitByteThreshold,ze);return Buffer.byteLength(t)<=s}function __(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Od(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 R_(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${kd.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 S_(e,t){let r=y_("git",R_(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,u)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:u})})})}function E_(e,t,r,n){switch(e){case"status":return x_(t,r,n);case"log":return D_(t,r,n);case"diff":return A_(t,r,n);case"commit":return ft($_(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ft(N_(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return L_(t,r,n);case"branch":return B_(t,r,n);case"show":return M_(t,r,n)}}function x_(e,t,r){let n="",s=[],i=!1,o=!1;for(let c of k_(t)){if(!c)continue;if(o=!0,c.startsWith("# branch.head ")){n=c.slice(14),i=!0;continue}if(c.startsWith("# ")){i=!0;continue}if(c.startsWith("## ")){n=O_(c),i=!0;continue}let l=v_(c);if(l){i=!0,s.push(l);continue}let f=T_(c);f&&(i=!0,s.push(f))}if(s.length===0){if(!o||i)return Pd(e.join(" "),n);throw new Cs("git-status-unparseable")}let a=Y(s,r),u=Cd(a,"state");return ft({command:e.join(" "),branch:n,rows:a,summary:I_(a.length,s.length,u,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function k_(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function v_(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return pn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return pn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return pn(t.slice(10).join(" "),r)}return e.startsWith("? ")?pn(e.slice(2),"??"):null}function T_(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?pn(P_(e.slice(3),t),t):null}function pn(e,t){let r=xd(t[0]??"."),n=xd(t[1]??".");return{path:C_(e),index:r,worktree:n,state:j_(`${r}${n}`)}}function xd(e){return e===" "?".":e}function O_(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function P_(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function C_(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function I_(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 Pd(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 D_(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=Y(n,r);return ft({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 A_(e,t,r){let s=t.split("\0").filter(Boolean).map(a=>{let[u,c,l]=a.split(" ");return{path:l??"",added:u==="-"?null:Number(u??0),deleted:c==="-"?null:Number(c??0)}}),i=Y(s,r),o=i.reduce((a,u)=>(a.added+=typeof u.added=="number"?u.added:0,a.deleted+=typeof u.deleted=="number"?u.deleted:0,a),{added:0,deleted:0});return ft({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 $_(e,t){let r=t.split(`
63
+ `)[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]??"",u=n?.[2]??"",c=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:u,subject:n?.[3]??"",files_changed:c,insertions:l,deletions:f,summary:`commit ${u} on ${a}: ${c} files, +${l} -${f}`}}function N_(e,t){let r=t.split(`
64
+ `).filter(Boolean),n=r.find(u=>u.startsWith("To "))?.slice(3)??"",s=r.filter(u=>u.includes(" ")).map(u=>{let[c,l,f=""]=u.split(" "),[d,p]=(l??"").split(":");return{flag:c??"",from:d??"",to:p??"",summary:f}}),i=s.find(u=>u.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(u=>u.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 L_(e,t,r){let n=t.split(`
65
+ `),s=[],i=null;for(let u of n){let c=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(u);if(c){i={commit:c[1]??"",finalLine:Number(c[2]??0),author:"",path:""};continue}if(!i)continue;if(u.startsWith("author ")){i.author=u.slice(7);continue}if(u.startsWith("filename ")){i.path=u.slice(9);continue}if(!u.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=Y(s,r),a=Cd(o,"author");return ft({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 B_(e,t,r){let n=t.split(`
66
+ `).filter(Boolean).map(o=>{let[a,u,c,l,f,d]=o.split("\0");return{current:a==="*",name:u??"",commit:c??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=Y(n,r),i=s.find(o=>o.current)?.name??"";return ft({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 M_(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,u,c,l,f,d=""]=i.split(""),p=[];for(let b of o.split(`
67
+ `)){let x=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!x)continue;let v=x[3]??"";p.push({path:(x[1]??"").trim(),changed:Number(x[2]??0),added:[...v].filter(P=>P==="+").length,deleted:[...v].filter(P=>P==="-").length,binary:v.startsWith("Bin")})}let h=Y(p,r),m=0,g=0,y=0;for(let b of h)m+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return ft({command:e.join(" "),commit:a??"",short:u??"",author:c??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
68
+ `).length:0,files:h,summary:`${r?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ft(e,t,r){return t?qe(e,r):e}function j_(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Cd(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function G_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function F_(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 kd,Ps,Cs,$t=w(()=>{"use strict";K();xe();$r();De();xe();kd=["%h","%an","%as","%s"];Ps=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Nn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Cs=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var la={};M(la,{NORMALIZATION_ALLOWLIST:()=>Bd,NORMALIZE_ANSI:()=>Ds,NORMALIZE_BLANK_LINES:()=>Ns,NORMALIZE_CR_PROGRESS:()=>As,NORMALIZE_JSON_TOON:()=>Ld,NORMALIZE_TRAILING_WHITESPACE:()=>$s,crushJsonArrayItems:()=>mn,formatCodexNormalizeDecision:()=>Jd,formatNormalizeDecision:()=>Fd,hookDecisionFromClaudePostExecJson:()=>Md,hookDecisionFromCodexPostExecJson:()=>jd,normalizeOutput:()=>Ls,renderGenericJsonLane:()=>ua,runClaudePostExecHook:()=>W_,runCodexPostExecHook:()=>H_,transcodeJsonToToon:()=>Nd});import{readFileSync as Is}from"node:fs";function Nd(e,t){let r=t?.encode??O,n=t?.decode??U,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 aa(i,a)?o.trimEnd():e}async function ua(e,t={}){let r=z_(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:O(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,i=$d(t.minTokens,J_),o=$d(t.maxItems,U_);if(!(s>o&&eR(e)>=i))return{output:O(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let u;try{u=(t.crusher??mn)(n,o)}catch(m){return{output:O(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:tR(m)}}}let c=u.items,l={items:c},f=`items: ${u.kept} kept, ${u.dropped} dropped (shape outliers: ${u.shapeOutliers}, value outliers: ${u.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=O(l).trimEnd();return{output:[f,p,h].filter(Boolean).join(`
69
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:c.length,handle:d}}function mn(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=Y_(e),s=new Set;n&&e.forEach((a,u)=>{ca(a)!==n&&s.add(u)});let i=Q_(e,n);for(let a of s)r.add(a);for(let a of i)r.add(a);let o=[...r].sort((a,u)=>a-u).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 Ls(e){let t=e;for(let r of Bd)t=r.apply(t);return t}async function Md(e,t){return await Gd(e,t)}async function jd(e,t){return await Gd(e,t)}async function Gd(e,t){let r=K_(e),n=rR(r,["cwd"])||t.cwd;if(!await(t.isEnabled??V_)(n))return{kind:"passthrough",reason:"disabled"};let i=nR(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,u=(t.normalize??Ls)(o);return u===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:u}}function Fd(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Jd(e){return{stdout:"",status:0}}async function W_(e){let t=e?Is(e,"utf8"):Is(0,"utf8"),r=await Md(t,{cwd:process.cwd()}),n=Fd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function H_(e){let t=e?Is(e,"utf8"):Is(0,"utf8"),r=await jd(t,{cwd:process.cwd()}),n=Jd(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function q_(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&&Id(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Id(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Id(e){return e>=32&&e<=63}function V_(e){return Ee(e,process.env).enabled}function K_(e){try{let t=JSON.parse(e);return yr(t)?t:{}}catch{return{}}}function z_(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return yr(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 Y_(e){let t=new Map;for(let s of e){let i=ca(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 ca(e){return Array.isArray(e)?"array":yr(e)?Object.keys(e).sort().map(t=>`${t}:${Dd(e[t])}`).join("|"):Dd(e)}function Q_(e,t){let r=new Set,n=new Map;e.forEach((s,i)=>{if(!(t&&ca(s)!==t))for(let[o,a]of Ud(s)){let u=n.get(o)??[];u.push({index:i,value:a}),n.set(o,u)}});for(let s of n.values()){for(let i of Z_(s))r.add(i);for(let i of X_(s))r.add(i)}return r}function Z_(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,u)=>a-u),n=Ad(r),s=r.map(a=>Math.abs(a-n)).sort((a,u)=>a-u),i=Ad(s);if(i===0)return t.filter(u=>u.value===n).length/t.length<.8?[]:t.filter(u=>u.value!==n).map(u=>u.index);let o=i*8;return t.filter(a=>Math.abs(a.value-n)>o).map(a=>a.index)}function X_(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 Ud(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:yr(e)?Object.entries(e).flatMap(([r,n])=>Ud(n,t?`${t}.${r}`:r)):[]}function Dd(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Ad(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 eR(e){return Math.ceil(e.length/4)}function $d(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function tR(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 rR(e,t){let r=e;for(let n of t){if(!yr(r))return"";r=r[n]}return typeof r=="string"?r:""}function nR(e,t){let r=e[t];return yr(r)?r:null}function yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function aa(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,u)=>aa(a,o[u]))}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)&&aa(r[o],n[o]))}var Ds,As,$s,Ns,Ld,J_,U_,Bd,gn=w(()=>{"use strict";K();xe();Ds={id:"ansi",apply:q_},As={id:"cr-progress",apply:e=>e.split(`
70
70
  `).map(t=>{let r=t.endsWith("\r")?t.slice(0,-1):t,n=r.lastIndexOf("\r");return n>=0?r.slice(n+1):r}).join(`
71
- `)},xs={id:"trailing-whitespace",apply:e=>e.split(`
71
+ `)},$s={id:"trailing-whitespace",apply:e=>e.split(`
72
72
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
73
- `)},Es={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
73
+ `)},Ns={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
74
74
 
75
- `)};pd={id:"json-to-toon",apply:e=>fd(e)},t_=200,r_=15;md=[Rs,Ss,xs,Es,pd]});var an={};M(an,{parseExecCommandLine:()=>vd,renderExecContract:()=>kd,runExecWrapper:()=>R_});import{isUtf8 as y_}from"node:buffer";import{spawn as w_}from"node:child_process";async function R_(e,t){let r=vd(e),n=await S_(r);return await kd(r,n,t)}async function kd(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=x_(n),o=i.kind==="text"?Buffer.from(i.text):n,a=G_(r.heavyByteThreshold,b_);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"?k_(i.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):v_(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 vd(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 S_(e){let t=w_(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 x_(e){return y_(e)?{kind:"text",text:E_(e.toString("utf8"))}:{kind:"bytes"}}function E_(e){let t=e;for(let r of[Rs,Ss,xs,Es])t=r.apply(t);return t}function k_(e,t,r,n,s,i=$_,o=rn){let c=Math.max(1,Math.floor((n==="terse"?Ed:__)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),d=L_(e,c,l,i),f=T_(e),m=O_(f,e,u,c,l,d.kind==="ok"?d.lines:[],o),h=Td(s,f,t,J_(u),r,m.summary),p=d.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Ad(d.error)}:m.degradation;return{text:Id(h),degradation:p}}function v_(e,t,r,n){let s=Math.max(1,Math.floor(Ed/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Id(Td(n,"bytes",t,0,r,i))}}function Td(e,t,r,n,s,i){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:i,recovery:{original:Ee(s)}}}function T_(e){let t=e.trim();return t?Pd(t)?"json":Cd(e)?"jsonl":B_(e)?"unified-diff":Dd(e)?"tabular":M_(e)?"log-like":j_(e)?"prose":"untyped":"untyped"}function O_(e,t,r,n,s,i,o=rn){switch(e){case"json":return P_(t,o);case"jsonl":return{summary:C_(t)};case"unified-diff":return{summary:D_(t)};case"tabular":return{summary:I_(t)};case"log-like":return{summary:A_(t,i)};case"prose":return{summary:N_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Od(r,n,s,i)}}}function P_(e,t){let r=Pd(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:Sd(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Ad(n)}}}return{summary:Sd(r)}}if(on(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 Sd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ut),item_keys:Zo(e)}}function C_(e){let t=Cd(e)??[],r=U_(t,"level");return{records:t.length,keys:Zo(t),levels:r,first:ut(t[0]),last:ut(t.at(-1))}}function D_(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 I_(e){let t=Dd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Od(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function A_(e,t){let r=sn(e);return{entries:r.length,levels:F_(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 N_(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 Od(e,t,r,n){let s=xd(e.subarray(0,t)),i=xd(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 L_(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function $_(e,t){return Zl(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Pd(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return on(r)||Array.isArray(r)?r:null}catch{return null}}function Cd(e){let t=sn(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 B_(e){let t=sn(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 Dd(e){let t=sn(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 M_(e){let t=sn(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 j_(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 sn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Zo(e){let t=new Map;for(let r of e)if(on(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 U_(e,t){let r=new Map;for(let n of e){if(!on(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 F_(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):on(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<=Rd?t:`${t.slice(0,Rd-1)}\u2026`}function Id(e){let t=C(e).trimEnd(),r=J(t);if(!Xo(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
76
- `}function Xo(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)=>Xo(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)&&Xo(r[o],n[o]))}function on(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ad(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 xd(e){return e.toString("utf8").replace(/�$/g,"")}function J_(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 G_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var b_,__,Ed,Rd,cn=b(()=>{"use strict";te();ed();Pt();nn();Ce();b_=8*1024,__=2*1024,Ed=1024,Rd=240});var Fd=b(()=>{"use strict";ji()});var Dt={};M(Dt,{ResidentRspElisionStore:()=>dn,ensureResidentServer:()=>In,kickResidentServer:()=>An,pingResident:()=>_t,readResidentRegistry:()=>Ir,removeResidentRegistry:()=>Ln,residentRegistryStatus:()=>Dr,resolveResidentPaths:()=>nt,sweepResidentRegistry:()=>su,warmResidentServer:()=>nu,writeResidentRegistry:()=>Nn});import{randomUUID as Q_}from"node:crypto";function Jd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dn,Xe=b(()=>{"use strict";Fd();$n();dn=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 In(this.paths,this.config);let r=await Vt(this.paths,{...t,id:Q_()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var Ls={};M(Ls,{RSP_WRAPPER_CAPABILITIES:()=>mn,formatCodexHookDecision:()=>Vd,formatHookDecision:()=>qd,hookDecisionFromClaudePreExecJson:()=>rR,hookDecisionFromCodexPreExecJson:()=>nR,rewriteCommand:()=>Wd,rewriteTableFromCapabilities:()=>Gd,runClaudePreExecHook:()=>sR,runCodexPreExecHook:()=>iR});import{readFileSync as Ds}from"node:fs";import{existsSync as X_}from"node:fs";import{fileURLToPath as Z_}from"node:url";function Gd(e){let t=new Map;for(let r of e)t.set(xR(r.command),["rsp",...r.wrapper]);return t}function Wd(e){let t=mR(e);if(t)return t;let r=fR(e);if(!r)return Ps(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&sf(n[0]))return Ps(e);let s=tR(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Ps(e);let i=[...mn].sort((c,u)=>u.command.length-c.command.length).find(c=>pR(n,c.command));if(!i)return Ps(e);let o=["rsp",...i.wrapper,...n.slice(i.command.length)],a=Zd(r.redirectSuffix);return{kind:"rewrite",command:[...o.map(pn),...a].join(" "),capabilityId:i.id}}function tR(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Zd(e.redirectSuffix);return r==="cat"&&t.length===2&&Os(t[1])?{kind:"rewrite",command:["rsp","cat",pn(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Os(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",pn(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Os(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],pn(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Os(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),pn(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Os(e){return!!e&&!e.startsWith("-")}async function rR(e,t){return await Hd(e,t)}async function nR(e,t){return await Hd(e,t)}async function Hd(e,t){return(await ra(e,t,"pre-exec")).decision}async function ra(e,t,r){let n=of(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:fn({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??oR)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:fn({hook:r,command:ta(s),decision:f,reason:"disabled"})}}let a=ta(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:fn({hook:r,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=Re(i,process.env).proxyEnabled?hR(a):(t.rewrite??Wd)(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:fn({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await cR(i,t.wakeResident??aR),{decision:l,telemetryRoot:i,event:fn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function qd(e){return e.kind==="rewrite"?Kd(e.command):{stdout:"",status:0}}function Vd(e){return e.kind==="rewrite"?Kd(e.command):{stdout:"",status:0}}function Kd(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
- `,status:0}}async function sR(e){let t="";try{t=e?Ds(e,"utf8"):Ds(0,"utf8");let r=await ra(t,{cwd:process.cwd()},"claude-pre-exec");Is(r.telemetryRoot,r.event);let n=r.decision;Yd("claude-pre-exec",n);let s=qd(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Is(process.cwd(),zd("claude-pre-exec",t,r)),Qd("claude-pre-exec",r),0}}async function iR(e){let t="";try{t=e?Ds(e,"utf8"):Ds(0,"utf8");let r=await ra(t,{cwd:process.cwd()},"codex-pre-exec");Is(r.telemetryRoot,r.event);let n=r.decision;Yd("codex-pre-exec",n);let s=Vd(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Is(process.cwd(),zd("codex-pre-exec",t,r)),Qd("codex-pre-exec",r),0}}function Is(e,t){Ye(e,t).catch(()=>{})}function fn(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:nf(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function zd(e,t,r){let n=of(t),s=n.ok?ta(n.payload):"";return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:nf(s),decision:"failed-open",reason:"hook-exception",error:na(r)}}function oR(e){return Re(e,process.env).enabled}async function aR(e){let t=Re(e,process.env);if(!t.enabled||!dR(t))return;let r=nt(e);await An(r,lR(t))}async function cR(e,t){try{await Promise.resolve(t(e))}catch(r){uR(r)}}function Yd(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
75
+ `)};Ld={id:"json-to-toon",apply:e=>Nd(e)},J_=200,U_=15;Bd=[Ds,As,$s,Ns,Ld]});var bn={};M(bn,{parseExecCommandLine:()=>zd,renderExecContract:()=>Kd,runExecWrapper:()=>uR});import{isUtf8 as sR}from"node:buffer";import{spawn as iR}from"node:child_process";async function uR(e,t){let r=zd(e),n=await cR(r);return await Kd(r,n,t)}async function Kd(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=ye(e,t.stdout,t.stderr);return{stdout:$(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let i=lR(n),o=i.kind==="text"?Buffer.from(i.text):n,a=CR(r.heavyByteThreshold,oR);if(o.length<=a&&r.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let u=n.length,c=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:c,bytes_elided:u}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=i.kind==="text"?fR(i.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):pR(n,n.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:u,rawOutput:n,degradation:f.degradation}}function zd(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 cR(e){let t=iR(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 lR(e){return sR(e)?{kind:"text",text:dR(e.toString("utf8"))}:{kind:"bytes"}}function dR(e){let t=e;for(let r of[Ds,As,$s,Ns])t=r.apply(t);return t}function fR(e,t,r,n,s,i=ER,o=mn){let u=Math.max(1,Math.floor((n==="terse"?Vd:aR)/2)),c=Buffer.from(e),l=Math.max(0,c.length-u),f=SR(e,u,l,i),d=mR(e),p=gR(d,e,c,u,l,f.kind==="ok"?f.lines:[],o),h=Yd(s,d,t,PR(c),r,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:rf(f.error)}:p.degradation;return{text:tf(h),degradation:m}}function pR(e,t,r,n){let s=Math.max(1,Math.floor(Vd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:tf(Yd(n,"bytes",t,0,r,i))}}function Yd(e,t,r,n,s,i){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:i,recovery:{original:ve(s)}}}function mR(e){let t=e.trim();return t?Zd(t)?"json":Xd(e)?"jsonl":xR(e)?"unified-diff":ef(e)?"tabular":kR(e)?"log-like":vR(e)?"prose":"untyped":"untyped"}function gR(e,t,r,n,s,i,o=mn){switch(e){case"json":return hR(t,o);case"jsonl":return{summary:yR(t)};case"unified-diff":return{summary:bR(t)};case"tabular":return{summary:wR(t)};case"log-like":return{summary:_R(t,i)};case"prose":return{summary:RR(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Qd(r,n,s,i)}}}function hR(e,t){let r=Zd(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(pt),item_keys:fa(r)}}}catch(n){return{summary:Hd(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:rf(n)}}}return{summary:Hd(r)}}if(yn(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,pt(i)]))}}}return{summary:{root_type:typeof r,value:pt(r)}}}function Hd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(pt),item_keys:fa(e)}}function yR(e){let t=Xd(e)??[],r=TR(t,"level");return{records:t.length,keys:fa(t),levels:r,first:pt(t[0]),last:pt(t.at(-1))}}function bR(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 u=/^\+\+\+ b\/(.+)$/.exec(o);u&&(r=u[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 wR(e){let t=ef(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Qd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function _R(e,t){let r=hn(e);return{entries:r.length,levels:OR(r),first:Nt(r[0]??""),last:Nt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Nt(n.text)}))}}function RR(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:Nt(t[0]??""),closing:Nt(t.at(-1)??"")}}function Qd(e,t,r,n){let s=qd(e.subarray(0,t)),i=qd(e.subarray(r));return{head:s,tail:i,outliers:n.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Nt(o.text)}))}}function SR(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function ER(e,t){return Sd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Zd(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return yn(r)||Array.isArray(r)?r:null}catch{return null}}function Xd(e){let t=hn(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 xR(e){let t=hn(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 ef(e){let t=hn(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(u=>u.trim());if(a.length!==s.length||a.some(u=>u===""))return null;i.push(Object.fromEntries(s.map((u,c)=>[u,a[c]??""])))}return i.length>0?{columns:s,rows:i}:null}function kR(e){let t=hn(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 vR(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 hn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function fa(e){let t=new Map;for(let r of e)if(yn(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 TR(e,t){let r=new Map;for(let n of e){if(!yn(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 OR(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 pt(e){return typeof e=="string"?Nt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(pt):yn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,pt(r)])):String(e)}function Nt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Wd?t:`${t.slice(0,Wd-1)}\u2026`}function tf(e){let t=O(e).trimEnd(),r=U(t);if(!da(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
76
+ `}function da(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,u)=>da(a,o[u]))}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)&&da(r[o],n[o]))}function yn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rf(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 qd(e){return e.toString("utf8").replace(/�$/g,"")}function PR(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 CR(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var oR,aR,Vd,Wd,wn=w(()=>{"use strict";K();Ed();$t();gn();De();oR=8*1024,aR=2*1024,Vd=1024,Wd=240});var df=w(()=>{"use strict";Zi()});var Lt={};M(Lt,{ResidentRspElisionStore:()=>Sn,ensureResidentServer:()=>Wn,kickResidentServer:()=>Hn,pingResident:()=>vt,readResidentRegistry:()=>Ur,removeResidentRegistry:()=>Vn,residentRegistryStatus:()=>Jr,resolveResidentPaths:()=>ot,sweepResidentRegistry:()=>Tc,warmResidentServer:()=>vc,writeResidentRegistry:()=>qn});import{randomUUID as MR}from"node:crypto";function ff(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Sn,tt=w(()=>{"use strict";df();Kn();Sn=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?ff(r)&&r.status==="expired"?r:!ff(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 Wn(this.paths,this.config);let r=await Zt(this.paths,{...t,id:MR()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var qs={};M(qs,{RSP_WRAPPER_CAPABILITIES:()=>kn,formatCodexHookDecision:()=>yf,formatHookDecision:()=>hf,hookDecisionFromClaudePreExecJson:()=>UR,hookDecisionFromCodexPreExecJson:()=>WR,rewriteCommand:()=>mf,rewriteTableFromCapabilities:()=>pf,runClaudePreExecHook:()=>HR,runCodexPreExecHook:()=>qR});import{readFileSync as Js}from"node:fs";import{existsSync as jR}from"node:fs";import{fileURLToPath as GR}from"node:url";function pf(e){let t=new Map;for(let r of e)t.set(lS(r.command),["rsp",...r.wrapper]);return t}function mf(e){let t=tS(e);if(t)return t;let r=XR(e);if(!r)return Gs(e);let n=r.tokens.map(u=>u.text);if(n.length>0&&Of(n[0]))return Gs(e);let s=JR(r);if(s)return s;if(r.tokens.some(u=>u.quoted))return Gs(e);let i=[...kn].sort((u,c)=>c.command.length-u.command.length).find(u=>eS(n,u.command));if(!i)return Gs(e);let o=["rsp",...i.wrapper,...n.slice(i.command.length)],a=Ef(r.redirectSuffix);return{kind:"rewrite",command:[...o.map(xn),...a].join(" "),capabilityId:i.id}}function JR(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Ef(e.redirectSuffix);return r==="cat"&&t.length===2&&js(t[1])?{kind:"rewrite",command:["rsp","cat",xn(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&js(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",xn(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&js(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],xn(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&js(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),xn(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function js(e){return!!e&&!e.startsWith("-")}async function UR(e,t){return await gf(e,t)}async function WR(e,t){return await gf(e,t)}async function gf(e,t){return(await ga(e,t,"pre-exec")).decision}async function ga(e,t,r){let n=Pf(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:En({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,i=Te(s,["cwd"])||Te(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??VR)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:En({hook:r,command:ma(s),decision:d,reason:"disabled"})}}let a=ma(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:En({hook:r,command:a,decision:d,reason:"missing-command"})}}let u=process.hrtime.bigint(),l=Ee(i,process.env).proxyEnabled?nS(a):(t.rewrite??mf)(a),f=Number(process.hrtime.bigint()-u)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:En({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await zR(i,t.wakeResident??KR),{decision:l,telemetryRoot:i,event:En({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function hf(e){return e.kind==="rewrite"?bf(e.command):{stdout:"",status:0}}function yf(e){return e.kind==="rewrite"?bf(e.command):{stdout:"",status:0}}function bf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
77
+ `,status:0}}async function HR(e){let t="";try{t=e?Js(e,"utf8"):Js(0,"utf8");let r=await ga(t,{cwd:process.cwd()},"claude-pre-exec");Us(r.telemetryRoot,r.event);let n=r.decision;_f("claude-pre-exec",n);let s=hf(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Us(process.cwd(),wf("claude-pre-exec",t,r)),Rf("claude-pre-exec",r),0}}async function qR(e){let t="";try{t=e?Js(e,"utf8"):Js(0,"utf8");let r=await ga(t,{cwd:process.cwd()},"codex-pre-exec");Us(r.telemetryRoot,r.event);let n=r.decision;_f("codex-pre-exec",n);let s=yf(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Us(process.cwd(),wf("codex-pre-exec",t,r)),Rf("codex-pre-exec",r),0}}function Us(e,t){Xe(e,t).catch(()=>{})}function En(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:W,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Tf(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function wf(e,t,r){let n=Pf(t),s=n.ok?ma(n.payload):"";return{collection:W,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Tf(s),decision:"failed-open",reason:"hook-exception",error:ha(r)}}function VR(e){return Ee(e,process.env).enabled}async function KR(e){let t=Ee(e,process.env);if(!t.enabled||!ZR(t))return;let r=ot(e);await Hn(r,QR(t))}async function zR(e,t){try{await Promise.resolve(t(e))}catch(r){YR(r)}}function _f(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
78
78
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
79
- `)}}function Qd(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${na(t)}
80
- `)}function uR(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${na(e)}
81
- `)}function na(e){return e instanceof Error?e.name||"Error":typeof e}function lR(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 dR(e){if(!e.storeUri.startsWith("file://"))return!0;try{return X_(Z_(e.storeUri))}catch{return!1}}function ta(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 fR(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Xd(t);if(r.length===0||r[0]?.quoted||r.some(i=>/[()$`]/.test(i.text))||r.some(i=>i.text.includes("=")&&sf(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 Xd(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 pR(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function mR(e){let t=Xd(e.trim()).map(r=>r.text);return Cs(t)?{kind:"passthrough",reason:eR}:null}function Cs(e){return e[0]==="gh"&&e.some(gR)}function gR(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Zd(e){return e.map(t=>t.text)}function pn(e){return/[^\w@%+=:,./-]/.test(e)?sa(e):e}function hR(e){let t=yR(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${sa(e.trim())}`,capabilityId:"proxy:universal"}}function yR(e){let t=e.trim();if(!t)return"missing-command";if(tf(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Ns(As(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&ef.has(r))return"interactive"}function Ps(e){let t=e.trim();return wR(t)?{kind:"rewrite",command:`rsp exec -- ${sa(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function wR(e){return!(!e||!bR(e)||!_R(e)||tf(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||RR(e,"rsp")||rf(e,ef)||SR(e))}function bR(e){return/&&|[;|]/.test(e)}function tf(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 _R(e){return As(e).some(t=>{let r=Ns(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 rf(e,t){return As(e).some(r=>{let n=Ns(r)[0];return n?t.has(n):!1})}function RR(e,t){return rf(e,new Set([t]))}function SR(e){return As(e).some(t=>{let r=Ns(t);return r[0]==="grep"&&r.includes("-q")})}function As(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Ns(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function sa(e){return`'${e.replace(/'/g,"'\\''")}'`}function nf(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Cs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Cs(t)&&t[1]?`gh ${t[1]} json-jq`:Cs(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 sf(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function xR(e){return e.join("\0")}function of(e){try{let t=JSON.parse(e);return af(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(!af(r))return"";r=r[n]}return typeof r=="string"?r:""}function af(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mn,MO,eR,ef,gn=b(()=>{"use strict";Se();Xe();xe();mn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],MO=Gd(mn),eR="lossless-gh-json-jq";ef=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var mf={};M(mf,{fastTelemetryRoot:()=>oa,isFastGitStatus:()=>$s,runFastGitStatus:()=>Bs});import{spawnSync as ff}from"node:child_process";import{existsSync as pf,readdirSync as DR}from"node:fs";function $s(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Bs(){if(IR(process.cwd()))return{stdout:ia(),stderr:Buffer.alloc(0),status:0,signal:null};if(ff("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:ia(),stderr:Buffer.alloc(0),status:0,signal:null};let t=ff("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?ia():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function oa(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Xe(),Dt));return t(e).rootDir}catch{return e}}function ia(){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"})}
82
- `)}function IR(e){try{return!pf(`${e}/.git`)||pf(`${e}/.git/index`)?!1:DR(e).every(t=>t===".git")}catch{return!1}}var aa=b(()=>{"use strict";Ie()});var ga={};M(ga,{renderGhContract:()=>Rf,runGhWrapper:()=>XR});import{spawn as VR}from"node:child_process";async function XR(e,t){let r=Sf(e),n=await eS(r);return Rf(e,n,t)}async function Rf(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=Sf(e),s=hn(t.stdout),i=cS(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=hS(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=yS(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)}
83
- `;return{stdout:Buffer.from(`${C(u.payload)}
84
- ${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 Sf(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=yf(l[++m]??""):h.startsWith("--fields=")?u=yf(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 ZR(f),f}function hf(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?zR[t]:KR[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function yf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function ZR(e){if(e.fields.size===0)return;if(e.action!=="list")throw new js(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=QR[t];for(let n of e.fields)if(!r.includes(n))throw new js(e,`unknown field: ${n}`,r)}async function eS(e){if(e.action==="combined")return await tS(e);let t=rS(e);if(!t)return await aS(hf(e));let r=await ne({...t,command:["gh",...hf(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await nS(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function tS(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=Ef(hn(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:oe(hn(s.stdout)).map(iS)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function rS(e){let t=kf(e.passthrough),r=oS(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 nS(e,t){let r=hn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return oe(r).map(xf);case"pr:view":return Ef(r);case"issue:list":return oe(r).filter(n=>!At(n.pull_request)).map(wf);case"issue:view":return wf(r);case"run:list":return{items:oe(L(r).workflow_runs).map(bf),total:se(L(r),"total_count")};case"run:view":{let n=bf(r),s=kf(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(L(hn(i.stdout)).jobs).map(sS):[]}}default:return r}}function xf(e){let t=L(e);return{number:se(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:pa(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(L(t.base),"ref"),headRefName:x(L(t.head),"ref")}}function Ef(e){return xf(e)}function wf(e){let t=L(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:pa(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function bf(e){let t=L(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 sS(e){let t=L(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function iS(e){let t=L(e);return{author:pa(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function pa(e){let t=L(e);return{login:x(t,"login")}}function kf(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 oS(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 aS(e){let t=VR("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 cS(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=ca(r,"prs"),i=s.rows.map(c=>vf(c,e)),o=K(i,e.query),a=ua(o.length,i.length,s.total,e.query);return o.length===0?la(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):pr({...n,prs:o,aggregate:a,summary:`${da(o.length,i.length,e.query)} ${_f(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return pr({...n,pr:Tf(L(r),e),summary:`PR #${se(L(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return uS(e,t,L(r));case"issue:list":{let s=ca(r,"issues"),i=s.rows.map(c=>Of(c,e)),o=K(i,e.query),a=ua(o.length,i.length,s.total,e.query);return o.length===0?la(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:`${da(o.length,i.length,e.query)} ${_f(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return pr({...n,issue:mS(L(r),e),summary:`issue #${se(L(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=ca(r,"runs"),i=s.rows.map(c=>Pf(c,e)),o=K(i,e.query),a=ua(o.length,i.length,s.total,e.query);return o.length===0?la(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:`${da(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:gS(L(r),e),summary:`run ${se(L(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function uS(e,t,r){let n=Tf(L(r.view),{...e,action:"view",wide:!0}),s=K(oe(r.checks).map(lS),e.query),i=L(r.comments).comments,o=K(oe(i).map(dS).slice(-3),e.query);return Ge({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${se(L(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 lS(e){return{name:x(e,"name"),state:yn(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function dS(e){return{author:Df(e.author),body:Us(e,"body",fa,!1),created:x(e,"createdAt")}}function ca(e,t){if(Array.isArray(e))return{rows:oe(e)};let r=L(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 ua(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function la(e,t,r,n,s){return Ge({...e,empty:!0,scope:fS(t),[r]:[],aggregate:n,summary:`0 ${pS(t)}`},s)}function fS(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 pS(e){let t=Be(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function vf(e,t){let r={number:se(e,"number"),title:x(e,"title"),state:yn(e),draft:!!e.isDraft};return ma(r,e,t,["author","labels","url","updated"]),r}function Tf(e,t){let r=vf(e,t);return r.body=Us(e,"body",fa,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Of(e,t){let r={number:se(e,"number"),title:x(e,"title"),state:yn(e),labels:Cf(e.labels)};return ma(r,e,t,["author","url","updated"]),r}function mS(e,t){let r=Of(e,t);return r.body=Us(e,"body",fa,t.full),r}function Pf(e,t){let r={id:se(e,"databaseId"),name:x(e,"name"),status:yn(e),conclusion:x(e,"conclusion")};return ma(r,e,t,["event","branch","workflow","created"]),r}function gS(e,t){let r=Pf(e,t),n=oe(e.jobs).map(s=>({name:x(s,"name"),status:yn(s),conclusion:x(s,"conclusion"),log:Us(s,"log",YR,t.full)}));return r.jobs=n,r}function Us(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 hS(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 yS(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 _f(e,t){return e.every(r=>r.state===t)?t:"returned"}function da(e,t,r){return r?`${e}/${t}`:String(e)}function pr(e,t,r){return t.query?Ge(e,r):e}function yn(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function ma(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=Df(t.author):s==="labels"?e.labels=Cf(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 Cf(e){return Array.isArray(e)?e.map(t=>At(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Df(e){return At(e)?x(e,"login"):""}function hn(e){return e.trim()?JSON.parse(e):null}function oe(e){return Array.isArray(e)?e.filter(At):[]}function L(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 KR,zR,fa,YR,QR,js,ha=b(()=>{"use strict";te();ms();Pt();xr();Ce();KR={"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"]},zR={"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"]},fa=160,YR=160,QR={"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"]};js=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 ba={};M(ba,{renderTestContract:()=>If,runTestWrapper:()=>SS});import{spawn as wS}from"node:child_process";async function SS(e,t){let r=bt(e),n=await TS(r.argv);return await If(e,n,t)}async function If(e,t,r){let n=bt(e),i=Af(n.argv)==="vitest"?OS(t.stdout):PS(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 ${IS(i.durationSeconds)}`,c=K(i.failures,n.query);if(r.level==="terse")return await xS(n.argv,t,{...i,failures:c},o,a,r,n.query);let u=[],l,d=0;for(let h of c){let p=await CS(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:wa(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 xS(e,t,r,n,s,i,o){let a=ES(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:wa(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}
85
- ${w}`),stderr:Buffer.from(t.stderr),status:wa(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:p,rowsElided:d,rawOutput:Buffer.from(h)}}function wa(e){return e===0||e===null?0:1}function ES(e){let t=[],r=_S;for(let n of e.slice(0,RS)){let s=kS(n.excerpt,Math.min(bS,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function kS(e,t){if(t<=0)return"";let r=e.split(`
79
+ `)}}function Rf(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ha(t)}
80
+ `)}function YR(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ha(e)}
81
+ `)}function ha(e){return e instanceof Error?e.name||"Error":typeof e}function QR(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 ZR(e){if(!e.storeUri.startsWith("file://"))return!0;try{return jR(GR(e.storeUri))}catch{return!1}}function ma(e){return Te(e,["tool_input","command"])||Te(e,["tool_input","cmd"])||Te(e,["tool_input","args","command"])||Te(e,["input","command"])||Te(e,["input","cmd"])||Te(e,["arguments","command"])||Te(e,["arguments","cmd"])||Te(e,["command"])||Te(e,["cmd"])}function XR(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Sf(t);if(r.length===0||r[0]?.quoted||r.some(i=>/[()$`]/.test(i.text))||r.some(i=>i.text.includes("=")&&Of(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 Sf(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 eS(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function tS(e){let t=Sf(e.trim()).map(r=>r.text);return Fs(t)?{kind:"passthrough",reason:FR}:null}function Fs(e){return e[0]==="gh"&&e.some(rS)}function rS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ef(e){return e.map(t=>t.text)}function xn(e){return/[^\w@%+=:,./-]/.test(e)?ya(e):e}function nS(e){let t=sS(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${ya(e.trim())}`,capabilityId:"proxy:universal"}}function sS(e){let t=e.trim();if(!t)return"missing-command";if(kf(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Hs(Ws(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&xf.has(r))return"interactive"}function Gs(e){let t=e.trim();return iS(t)?{kind:"rewrite",command:`rsp exec -- ${ya(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function iS(e){return!(!e||!oS(e)||!aS(e)||kf(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||uS(e,"rsp")||vf(e,xf)||cS(e))}function oS(e){return/&&|[;|]/.test(e)}function kf(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 aS(e){return Ws(e).some(t=>{let r=Hs(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 vf(e,t){return Ws(e).some(r=>{let n=Hs(r)[0];return n?t.has(n):!1})}function uS(e,t){return vf(e,new Set([t]))}function cS(e){return Ws(e).some(t=>{let r=Hs(t);return r[0]==="grep"&&r.includes("-q")})}function Ws(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Hs(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ya(e){return`'${e.replace(/'/g,"'\\''")}'`}function Tf(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Fs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Fs(t)&&t[1]?`gh ${t[1]} json-jq`:Fs(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function Of(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function lS(e){return e.join("\0")}function Pf(e){try{let t=JSON.parse(e);return Cf(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Te(e,t){let r=e;for(let n of t){if(!Cf(r))return"";r=r[n]}return typeof r=="string"?r:""}function Cf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var kn,YP,FR,xf,vn=w(()=>{"use strict";xe();tt();ke();kn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],YP=pf(kn),FR="lossless-gh-json-jq";xf=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Bf={};M(Bf,{fastTelemetryRoot:()=>wa,isFastGitStatus:()=>Vs,runFastGitStatus:()=>Ks});import{spawnSync as Nf}from"node:child_process";import{existsSync as Lf,readdirSync as bS}from"node:fs";function Vs(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ks(){if(wS(process.cwd()))return{stdout:ba(),stderr:Buffer.alloc(0),status:0,signal:null};if(Nf("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:ba(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Nf("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?ba():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function wa(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(tt(),Lt));return t(e).rootDir}catch{return e}}function ba(){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"})}
82
+ `)}function wS(e){try{return!Lf(`${e}/.git`)||Lf(`${e}/.git/index`)?!1:bS(e).every(t=>t===".git")}catch{return!1}}var _a=w(()=>{"use strict";$e()});async function _r(e,t,r){let n=new Array(e.length),s=0,i=Math.min(Math.max(1,Math.floor(t)),e.length),o=Array.from({length:i},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(o),n}function Gf(e,t,r,n={}){NS(t);let s=e==="issue"?"i":"p",i=t.map((d,p)=>({alias:`${s}${p}`,number:d})),o=(n.labelNames??[]).map((d,p)=>({alias:`l${p}`,name:d})),u=LS(["id","number",...r]).map(d=>BS($S[d],6)).join(`
83
+ `),c=i.map(({alias:d,number:p})=>[` ${d}: ${e}(number: ${p}) {`,u," }"].join(`
84
+ `)),l=o.map(({alias:d,name:p})=>` ${d}: label(name: ${JSON.stringify(p)}) { id name }`),f=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...c,...l," }","}"].join(`
85
+ `);return{kind:e,query:f,aliases:i,labelAliases:o}}function Ff(e,t){let r=wr(t),n=wr(r.data),s=wr(n.repository),i=Array.isArray(r.errors)?r.errors.map(wr):[];return e.aliases.map(({alias:o,number:a})=>{let u=s[o];if(Wf(u))return{number:a,value:u};let c=i.find(l=>{let f=l.path;return Array.isArray(f)&&f.includes(o)});return{number:a,error:Hf(c?.message)||"not found"}})}function Jf(e,t,r){let n=[],s=[];return e.forEach((i,o)=>{if(t.length>0){let a=`add${o}`;n.push({alias:a,number:i.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${gt(i.nodeId)}, labelIds: ${jf(t)}, clientMutationId: ${gt(String(i.number))} }) { clientMutationId }`)}if(r.length>0){let a=`remove${o}`;n.push({alias:a,number:i.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${gt(i.nodeId)}, labelIds: ${jf(r)}, clientMutationId: ${gt(String(i.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
86
+ `)}}function Uf(e,t){let r=t.map((s,i)=>({alias:`link${i}`,number:s.number})),n=t.map((s,i)=>` link${i}: addSubIssue(input: { issueId: ${gt(e.nodeId)}, subIssueId: ${gt(s.nodeId)}, clientMutationId: ${gt(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
87
+ `)}}function Ra(e,t){let r=wr(t),n=Array.isArray(r.errors)?r.errors.map(wr):[],s=new Map;for(let{alias:i}of e){let o=n.find(a=>Array.isArray(a.path)&&a.path.includes(i));o&&s.set(i,Hf(o.message)||"mutation failed")}return s}function NS(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function LS(e){return[...new Set(e)]}function BS(e,t){let r=" ".repeat(t);return e.split(`
88
+ `).map(n=>`${r}${n}`).join(`
89
+ `)}function gt(e){return JSON.stringify(e)}function jf(e){return`[${e.map(gt).join(", ")}]`}function wr(e){return Wf(e)?e:{}}function Wf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hf(e){return typeof e=="string"?e:""}var $S,qf=w(()=>{$S={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
90
+ `),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as jS,spawnSync as GS}from"node:child_process";function xa(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function zf(e,t={}){let r=eE(e),n=r.repo??t.repo??process.env.GH_REPO??rE();if(!n||!n.includes("/"))return Ta(e,"repository is required; pass --repo owner/repo");let s=t.exec??nE,i=Math.max(1,Math.floor(t.restConcurrency??Kf));return r.verb==="issues"||r.verb==="prs"?await US(r,n,s,i,e):r.verb==="edit-labels"?await HS(r,n,s,i,e):await VS(r,n,s,i,e)}async function US(e,t,r,n,s){let i=e.verb==="issues"?"issue":"pullRequest",o=Yf(e),a=[],u=[];for(let l of va(e.numbers,100)){let f=Gf(i,l,o.query),d=await ka(r,t,f.query);if(Pa(d))return await WS(e,t,r,n,s);if(d.code!==0){u.push(d.stderr),a.push(...l.map(p=>({number:p,value:{error:fe(d)||`failed to read ${p}`},failed:!0})));continue}a.push(...Ff(f,ht(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:zS(e.verb,p.value??{},o.output),failed:!!p.error})))}let c=a.filter(l=>l.failed).length;return Ys({command:Qs(s),transport:"graphql",order:e.numbers,[e.verb]:Tn(a),summary:`${a.length-c}/${a.length} read`},u.length>0?1:0,u.filter(Boolean).join(`
91
+ `))}async function WS(e,t,r,n,s){let i=Yf(e),o=e.verb==="issues"?"issues":"pulls",a=await _r(e.numbers,n,async c=>{let l=await r(["api",`repos/${t}/${o}/${c}`]);if(l.code!==0)return{number:c,value:{error:fe(l)||"REST fallback failed"}};let f=je(ht(l.stdout));if(e.verb==="prs"&&i.output.some(Qf)){let d=G(je(f.head).sha);if(!d)return{number:c,value:{error:"REST fallback pull response omitted head SHA"}};let p=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(p.code!==0)return{number:c,value:{error:fe(p)||"REST check-runs fallback failed"}};let h=await r(["api",`repos/${t}/commits/${d}/status`]);if(h.code!==0)return{number:c,value:{error:fe(h)||"REST commit-status fallback failed"}};f={...f,restCheckRollup:QS(je(ht(p.stdout)),je(ht(h.stdout)))}}return{number:c,value:YS(e.verb,f,i.output)}}),u=a.filter(c=>"error"in c.value).length;return Ys({command:Qs(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:Tn(a),summary:`${a.length-u}/${a.length} read via REST fallback`})}async function HS(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Ta(s,"pass --add and/or --remove");let i=[...new Set([...e.add,...e.remove])],[o,a]=await Promise.all([Zf(e.numbers,t,r,n),_r(i,n,async d=>{let p=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(je(ht(p.stdout)).node_id),error:p.code===0?"":fe(p)}})]),u=new Map(a.map(d=>[d.name,d.nodeId])),c=i.filter(d=>!u.get(d));if(c.length>0)return Sr(s,e.numbers,Oa(e.numbers,()=>({error:`label not found: ${c.join(", ")}`})),"graphql");let l=new Map(o.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),f=o.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of va(f,100)){let p=Jf(d,e.add.map(g=>u.get(g)),e.remove.map(g=>u.get(g))),h=await ka(r,t,p.query);if(Pa(h))return await qS(e,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"label mutation failed"});continue}let m=Ra(p.aliases,ht(h.stdout));for(let g of d){let b=p.aliases.filter(x=>x.number===g.number).map(x=>m.get(x.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return Sr(s,e.numbers,Xf(e.numbers,l),"graphql")}async function qS(e,t,r,n,s){let i=await _r(e.numbers,n,async o=>{for(let a of e.remove){let u=await r(["api","-X","DELETE",`repos/${t}/issues/${o}/labels/${encodeURIComponent(a)}`]);if(u.code!==0)return{number:o,value:{error:fe(u)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${o}/labels`];for(let c of e.add)a.push("-f",`labels[]=${c}`);let u=await r(a);if(u.code!==0)return{number:o,value:{error:fe(u)||"failed to add labels"}}}return{number:o,value:{ok:!0}}});return Sr(s,e.numbers,Tn(i),"rest-fallback",n)}async function VS(e,t,r,n,s){if(e.numbers.length<2)return Ta(s,"pass a parent and at least one child issue");let[i,...o]=e.numbers,a=await Zf(e.numbers,t,r,n),u=a[0],c=u?.nodeId;if(!c)return Sr(s,o,Oa(o,()=>({error:u?.error??"parent not found"})),"graphql");let l=new Map,f=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of va(f,100)){let p=Uf({number:i,nodeId:c},d),h=await ka(r,t,p.query);if(Pa(h))return await KS(i,o,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"sub-issue mutation failed"});continue}let m=Ra(p.aliases,ht(h.stdout));for(let g of p.aliases){let y=m.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return Sr(s,o,Xf(o,l),"graphql")}async function KS(e,t,r,n,s,i){let o=await _r(t,s,async a=>{let u=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),c=Number(u.stdout.trim());if(u.code!==0||!Number.isSafeInteger(c)||c<=0)return{number:a,value:{error:fe(u)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${c}`]);return{number:a,value:l.code===0?{ok:!0}:{error:fe(l)||"REST link failed"}}});return Sr(i,t,Tn(o),"rest-fallback",s)}function Sr(e,t,r,n,s){let i=Object.values(r).filter(o=>Er(o)&&"error"in o).length;return Ys({command:Qs(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Kf}:{},order:[...t],issues:r,summary:`${t.length-i}/${t.length} mutated`})}function Yf(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Vf(r,FS),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Vf(t,JS),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Vf(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function zS(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=Sa(t.labels).map(i=>G(i.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=XS(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=ep(t[s]));return"number"in n||(n.number=Ca(t.number)),n}function YS(e,t,r){let n={};for(let s of r)if(s==="labels"){let i=Array.isArray(t.labels)?t.labels.filter(Er):[];n.labels=i.map(o=>G(o.name)).filter(Boolean)}else if(Qf(s))n[s]=je(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let i=t.mergeable;n.mergeable=typeof i=="boolean"?i?"mergeable":"conflicting":"unknown"}else n[s]=ep(t[s]);return"number"in n||(n.number=Ca(t.number)),n}function QS(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Er):[],n=Array.isArray(t.statuses)?t.statuses.filter(Er):[],s=[...r.map(i=>({name:G(i.name),state:(G(i.conclusion)||G(i.status)).toLowerCase()})),...n.map(i=>({name:G(i.context),state:G(i.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||ZS(s.map(i=>i.state)),contexts:s}}function ZS(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function Qf(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function XS(e){let t=Sa(e).at(-1),r=je(je(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:Sa(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function ka(e,t,r){let[n,s]=tE(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Zf(e,t,r,n){return await _r(e,n,async s=>{let i=await r(["api",`repos/${t}/issues/${s}`]),o=je(ht(i.stdout)),a=G(o.node_id),u=Ca(o.id);return i.code!==0||!a?{number:s,error:fe(i)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:u>0?u:void 0}})}function va(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function eE(e){if(!xa(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],i=[],o;for(let a=2;a<e.length;a++){let u=e[a];if(u==="--repo")o=e[++a];else if(u==="--json")n.push(...Rr(e[++a]??""));else if(u.startsWith("--json="))n.push(...Rr(u.slice(7)));else if(u==="--add")s.push(...Rr(e[++a]??""));else if(u.startsWith("--add="))s.push(...Rr(u.slice(6)));else if(u==="--remove")i.push(...Rr(e[++a]??""));else if(u.startsWith("--remove="))i.push(...Rr(u.slice(9)));else{let c=Number(u);if(!Number.isSafeInteger(c)||c<=0)throw new Error(`invalid GitHub number: ${u}`);r.push(c)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:o,fields:n,add:s,remove:i}}function Ys(e,t=0,r=""){return{stdout:Buffer.from(`${O(e)}
92
+ `),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Ta(e,t){return Ys({command:Qs(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Oa(e,t){return Tn(e.map(r=>({number:r,value:t(r)})))}function Tn(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Xf(e,t){return Oa(e,r=>t.get(r)??{error:"mutation skipped"})}function Pa(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
93
+ ${e.stdout}`)}function fe(e){return(e.stderr||e.stdout).trim().split(`
94
+ `)[0]?.slice(0,240)??""}function ht(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Sa(e){let t=je(e).nodes;return Array.isArray(t)?t.filter(Er):[]}function ep(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function Ca(e){let t=Number(e);return Number.isFinite(t)?t:0}function Rr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function tE(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Qs(e){return`rsp ${e.join(" ")}`}function rE(){let e=GS("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function nE(e){let t=jS("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=>s({code:o??1,stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8")}))})}function je(e){return Er(e)?e:{}}function Er(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Kf,FS,JS,tp=w(()=>{"use strict";K();qf();Kf=4,FS=new Set(["number","title","state","labels","body"]),JS=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Ma={};M(Ma,{renderGhContract:()=>ap,runGhWrapper:()=>cE});import{spawn as sE}from"node:child_process";async function cE(e,t){if(xa(e))return await zf(e);let r=up(e),n=await dE(r);return ap(e,n,t)}async function ap(e,t,r){if((t.status??0)!==0||t.signal){let p=ye(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let n=up(e),s=On(t.stdout),i=wE(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=TE(i);if(o){if(!r.store)throw new Error("truncated gh output requires an elision store");let p=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=p}let a=o?.target.truncated.handle||void 0,u=O(i);if(r.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let c=OE(i);if(!c)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(u),f=await r.store?.mint(Buffer.from(u),{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 ${c.rowsElided} rows (+${l}) \u2014 ${ve(f)}
95
+ `;return{stdout:Buffer.from(`${O(c.payload)}
96
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:f,bytesElided:l,rowsElided:c.rowsElided,rawOutput:Buffer.from(u)}}function up(e){let t=kt(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,u=!1,c=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?u=!0:h==="--fields"?c=np(l[++p]??""):h.startsWith("--fields=")?c=np(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:u,fields:c,passthrough:o,query:t.query};return lE(d),d}function rp(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?oE[t]:iE[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function np(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function lE(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Zs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=uE[t];for(let n of e.fields)if(!r.includes(n))throw new Zs(e,`unknown field: ${n}`,r)}async function dE(e){if(e.action==="combined")return await fE(e);let t=pE(e);if(!t)return await bE(rp(e));let r=await se({...t,command:["gh",...rp(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await mE(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function fE(e){let t=e.target??"",[r,n,s]=await Promise.all([se({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),se({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),se({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=lp(On(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:ae(On(s.stdout)).map(hE)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function pE(e){let t=dp(e.passthrough),r=yE(e.passthrough,"--limit")??30,n=Ge(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ge(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function mE(e,t){let r=On(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ae(r).map(cp);case"pr:view":return lp(r);case"issue:list":return ae(r).filter(n=>!Mt(n.pull_request)).map(sp);case"issue:view":return sp(r);case"run:list":return{items:ae(N(r).workflow_runs).map(ip),total:ie(N(r),"total_count")};case"run:view":{let n=ip(r),s=dp(e.passthrough);if(!s)return n;let i=await se({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:i.status===0?ae(N(On(i.stdout)).jobs).map(gE):[]}}default:return r}}function cp(e){let t=N(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),isDraft:!!t.draft,author:La(t.user),labels:ae(t.labels).map(r=>({name:E(r,"name")})),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body"),baseRefName:E(N(t.base),"ref"),headRefName:E(N(t.head),"ref")}}function lp(e){return cp(e)}function sp(e){let t=N(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),labels:ae(t.labels).map(r=>({name:E(r,"name")})),author:La(t.user),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body")}}function ip(e){let t=N(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:E(t,"name")||E(t,"display_title"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),event:E(t,"event"),headBranch:E(t,"head_branch"),workflowName:E(t,"workflow_name"),createdAt:E(t,"created_at"),url:E(t,"html_url"),jobs:[]}}function gE(e){let t=N(e);return{name:E(t,"name"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),log:""}}function hE(e){let t=N(e);return{author:La(t.user),body:E(t,"body"),createdAt:E(t,"created_at")}}function La(e){let t=N(e);return{login:E(t,"login")}}function dp(e){return e.find(t=>!t.startsWith("-"))}function Ge(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function yE(e,t){let r=Ge(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function bE(e){let t=sE("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 wE(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Ia(r,"prs"),i=s.rows.map(u=>fp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):xr({...n,prs:o,aggregate:a,summary:`${$a(o.length,i.length,e.query)} ${op(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return xr({...n,pr:pp(N(r),e),summary:`PR #${ie(N(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return _E(e,t,N(r));case"issue:list":{let s=Ia(r,"issues"),i=s.rows.map(u=>mp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):xr({...n,issues:o,aggregate:a,summary:`${$a(o.length,i.length,e.query)} ${op(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return xr({...n,issue:kE(N(r),e),summary:`issue #${ie(N(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Ia(r,"runs"),i=s.rows.map(u=>gp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):xr({...n,runs:o,aggregate:a,summary:`${$a(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 xr({...n,run:vE(N(r),e),summary:`run ${ie(N(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function _E(e,t,r){let n=pp(N(r.view),{...e,action:"view",wide:!0}),s=Y(ae(r.checks).map(RE),e.query),i=N(r.comments).comments,o=Y(ae(i).map(SE).slice(-3),e.query);return qe({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${ie(N(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 RE(e){return{name:E(e,"name"),state:Pn(e),bucket:E(e,"bucket"),conclusion:E(e,"conclusion"),workflow:E(e,"workflow"),link:E(e,"link")}}function SE(e){return{author:yp(e.author),body:Xs(e,"body",Na,!1),created:E(e,"createdAt")}}function Ia(e,t){if(Array.isArray(e))return{rows:ae(e)};let r=N(e),n=ie(r,"total")||ie(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ae(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ae(r.workflow_runs),total:n}:{rows:[]}}function Da(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Aa(e,t,r,n,s){return qe({...e,empty:!0,scope:EE(t),[r]:[],aggregate:n,summary:`0 ${xE(t)}`},s)}function EE(e){let t=Ge(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let i=Ge(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${r}`}let n=Ge(e.passthrough,"--branch")??Ge(e.passthrough,"-b"),s=Ge(e.passthrough,"--workflow")??Ge(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function xE(e){let t=Ge(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function fp(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Pn(e),draft:!!e.isDraft};return Ba(r,e,t,["author","labels","url","updated"]),r}function pp(e,t){let r=fp(e,t);return r.body=Xs(e,"body",Na,t.full),t.wide&&(r.base=E(e,"baseRefName"),r.head=E(e,"headRefName")),r}function mp(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Pn(e),labels:hp(e.labels)};return Ba(r,e,t,["author","url","updated"]),r}function kE(e,t){let r=mp(e,t);return r.body=Xs(e,"body",Na,t.full),r}function gp(e,t){let r={id:ie(e,"databaseId"),name:E(e,"name"),status:Pn(e),conclusion:E(e,"conclusion")};return Ba(r,e,t,["event","branch","workflow","created"]),r}function vE(e,t){let r=gp(e,t),n=ae(e.jobs).map(s=>({name:E(s,"name"),status:Pn(s),conclusion:E(s,"conclusion"),log:Xs(s,"log",aE,t.full)}));return r.jobs=n,r}function Xs(e,t,r,n){let s=E(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 TE(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Mt(r)){if(Mt(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 OE(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 op(e,t){return e.every(r=>r.state===t)?t:"returned"}function $a(e,t,r){return r?`${e}/${t}`:String(e)}function xr(e,t,r){return t.query?qe(e,r):e}function Pn(e){return(E(e,"state")||E(e,"status")).toLowerCase()}function Ba(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=yp(t.author):s==="labels"?e.labels=hp(t.labels):s==="url"?e.url=E(t,"url"):s==="updated"?e.updated=E(t,"updatedAt"):s==="event"?e.event=E(t,"event"):s==="branch"?e.branch=E(t,"headBranch"):s==="workflow"?e.workflow=E(t,"workflowName"):s==="created"&&(e.created=E(t,"createdAt")))}function hp(e){return Array.isArray(e)?e.map(t=>Mt(t)?E(t,"name"):String(t)).filter(Boolean):[]}function yp(e){return Mt(e)?E(e,"login"):""}function On(e){return e.trim()?JSON.parse(e):null}function ae(e){return Array.isArray(e)?e.filter(Mt):[]}function N(e){return Mt(e)?e:{}}function E(e,t){let r=e[t];return typeof r=="string"?r:""}function ie(e,t){let r=e[t];return typeof r=="number"?r:0}function Mt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var iE,oE,Na,aE,uE,Zs,ja=w(()=>{"use strict";K();ks();tp();$t();$r();De();iE={"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"]},oE={"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"]},Na=160,aE=160,uE={"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"]};Zs=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var Ja={};M(Ja,{renderTestContract:()=>bp,runTestWrapper:()=>AE});import{spawn as PE}from"node:child_process";async function AE(e,t){let r=kt(e),n=await ME(r.argv);return await bp(e,n,t)}async function bp(e,t,r){let n=kt(e),i=wp(n.argv)==="vitest"?jE(t.stdout):GE(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=ye(e.join(" "),t.stdout,t.stderr);return{stdout:$(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 ${UE(i.durationSeconds)}`,u=Y(i.failures,n.query);if(r.level==="terse")return await $E(n.argv,t,{...i,failures:u},o,a,r,n.query);let c=[],l,f=0;for(let h of u){let m=await FE(h.excerpt,n.argv.join(" "),r.store);c.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:n.query?`${a} \xB7 ${u.length}/${i.failures.length} failures matched`:a};c.length>0&&(d.failures=c);let p=n.query?qe(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(O(p)),stderr:Buffer.from(t.stderr),status:Fa(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:c.length>0?Math.max(0,i.total-c.length):void 0}}async function $E(e,t,r,n,s,i,o){let a=NE(r.failures),u={exit_code:n,summary:o?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(u.failures=a);let c=o?qe(u,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):u,l=O(c),f=Math.max(0,r.failures.length-a.length),d=a.some((x,v)=>x.excerpt!==r.failures[v].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Fa(t.status),signal:t.signal,payload:c};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(x=>({suite:x.suite,name:x.name,excerpt:x.excerpt})));let h=O(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ve(g)}`;return{stdout:Buffer.from(`${l}
97
+ ${b}`),stderr:Buffer.from(t.stderr),status:Fa(t.status),signal:t.signal,payload:c,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function Fa(e){return e===0||e===null?0:1}function NE(e){let t=[],r=IE;for(let n of e.slice(0,DE)){let s=LE(n.excerpt,Math.min(CE,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function LE(e,t){if(t<=0)return"";let r=e.split(`
86
98
  `),n=r.length<=2?e:`${r[0]}
87
99
  \u2026
88
- ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Af(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 vS(e){if(Af(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 TS(e){let t=vS(e),r=wS(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 OS(e){let t=Nf(e);if(!dt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=ft(t.numTotalTests),i=ft(t.numFailedTests),o=AS(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:DS(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 PS(e){let t=e.split(`
89
- `).filter(Boolean).map(c=>Nf(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(`
90
- `)}),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 CS(e,t,r){let n=Buffer.from(e);if(n.length<=ya)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,ya).toString("utf8").replace(/\uFFFD$/,""),o=n.length-Buffer.byteLength(i);return{text:`${i}
91
- \u2026 elided ${o} bytes (+${n.length}) \u2014 ${Ee(s)}`,handle:s,bytesElided:n.length}}function Nf(e){try{return JSON.parse(e)}catch{return null}}function DS(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
92
- `):""}function IS(e){return`${Number(e.toFixed(1))}s`}function AS(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 ya,bS,_S,RS,_a=b(()=>{"use strict";te();Pt();xr();Ce();ya=320,bS=160,_S=ya,RS=3});var xa={};M(xa,{parseCatCommand:()=>Sa,renderCatContract:()=>FS,runCatWrapper:()=>US});import{isUtf8 as NS}from"node:buffer";import{readFile as LS}from"node:fs/promises";import{extname as $S}from"node:path";async function US(e,t){let r=Sa(e),n;try{n=await LS(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}
93
- `),status:1,signal:null}}return Uf(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await jf(e,r,n,t)}async function FS(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=Sa(e),s=Buffer.from(t.stdout,"utf8");return Uf(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await jf(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Sa(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=Mf(t[++o],Ra);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Mf(u,Ra);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 jf(e,t,r,n){let s=r.toString("utf8"),i=WS(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>Bf(n.heavyByteThreshold,Lf)||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)?JS(e,t.file,r,s,n.level,i):GS(e,t.file,r,s,i),c=`${C(a)}
94
- `;if(!o&&Buffer.byteLength(c)<=Bf(n.heavyByteThreshold,Lf))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)}
95
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function JS(e,t,r,n,s,i){let o=Fs(n),a=s==="terse"?MS:BS,c=Fs(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:HS(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function GS(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Fs(n).length,content:Fs(s.text),truncated:s.truncated}}function WS(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
96
- `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,i=t.limit??Ra,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
100
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function wp(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 BE(e){if(wp(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 ME(e){let t=BE(e),r=PE(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,u)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:u})})})}function jE(e){let t=_p(e);if(!yt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=bt(t.numTotalTests),i=bt(t.numFailedTests),o=WE(bt(t.startTime),bt(t.endTime));for(let a of r){if(!yt(a))continue;let u=Fe(a.name)||Fe(a.file)||"",c=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of c)yt(l)&&l.status==="failed"&&n.push({suite:u,name:Fe(l.fullName)||Fe(l.title)||Fe(l.name),excerpt:JE(l.failureMessages)||Fe(l.failureMessage)})}return s||=r.reduce((a,u)=>!yt(u)||!Array.isArray(u.assertionResults)?a:a+u.assertionResults.length,0),i||=n.length,o||=r.reduce((a,u)=>yt(u)?a+bt(u.perfStats&&yt(u.perfStats)?u.perfStats.runtime:u.duration)/1e3:a,0),{failed:i,total:s,suites:r.length||1,durationSeconds:o,failures:n}}function GE(e){let t=e.split(`
101
+ `).filter(Boolean).map(u=>_p(u)).filter(yt);if(t.length===0)return null;let r=[],n=0,s=0,i=0,o=0,a=[];for(let u of t){if(u.type==="suite"){u.event==="started"&&(i+=1,n+=bt(u.test_count)),(u.event==="failed"||u.event==="ok")&&(s+=bt(u.failed),o+=bt(u.exec_time));continue}if(u.type==="test"&&u.event==="failed"){r.push({suite:Fe(u.name).split("::").slice(0,-1).join("::"),name:Fe(u.name),excerpt:Fe(u.stdout)});continue}if(u.reason==="compiler-message"&&yt(u.message)){let c=Fe(u.message.rendered);c&&a.push(c)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
102
+ `)}),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 FE(e,t,r){let n=Buffer.from(e);if(n.length<=Ga)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,Ga).toString("utf8").replace(/\uFFFD$/,""),o=n.length-Buffer.byteLength(i);return{text:`${i}
103
+ \u2026 elided ${o} bytes (+${n.length}) \u2014 ${ve(s)}`,handle:s,bytesElided:n.length}}function _p(e){try{return JSON.parse(e)}catch{return null}}function JE(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
104
+ `):""}function UE(e){return`${Number(e.toFixed(1))}s`}function WE(e,t){return e>0&&t>e?(t-e)/1e3:0}function bt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Fe(e){return typeof e=="string"?e:""}function yt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ga,CE,IE,DE,Ua=w(()=>{"use strict";K();$t();$r();De();Ga=320,CE=160,IE=Ga,DE=3});var qa={};M(qa,{parseCatCommand:()=>Ha,renderCatContract:()=>ZE,runCatWrapper:()=>QE});import{isUtf8 as HE}from"node:buffer";import{readFile as qE}from"node:fs/promises";import{extname as VE}from"node:path";async function QE(e,t){let r=Ha(e),n;try{n=await qE(r.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=ye(e.join(" "),"",i);return{stdout:$({...o,help:`ls ${r.file}`}),stderr:Buffer.from(`${i}
105
+ `),status:1,signal:null}}return vp(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await kp(e,r,n,t)}async function ZE(e,t,r){if((t.status??0)!==0||t.signal){let o=ye(e.join(" "),t.stdout,t.stderr);return{stdout:$(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let n=Ha(e),s=Buffer.from(t.stdout,"utf8");return vp(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await kp(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ha(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=xp(t[++o],Wa);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[u,c]=a.split("=",2);r=u.slice(2),n=xp(c,Wa);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 kp(e,t,r,n){let s=r.toString("utf8"),i=tx(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>Ep(n.heavyByteThreshold,Rp)||i.truncated;if(!Sp(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=Sp(t.file)?XE(e,t.file,r,s,n.level,i):ex(e,t.file,r,s,i),u=`${O(a)}
106
+ `;if(!o&&Buffer.byteLength(u)<=Ep(n.heavyByteThreshold,Rp))return{stdout:Buffer.from(u),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let c=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!c)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${ve(c)}
107
+ `;return{stdout:Buffer.from(`${u}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:c,bytesElided:r.length,rawOutput:r}}function XE(e,t,r,n,s,i){let o=ei(n),a=s==="terse"?zE:KE,u=ei(i.text),c=u.slice(0,a),l=u.slice(Math.max(c.length,u.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:o.length,symbols:rx(o),content:{head:c,tail:l,truncated:i.truncated||c.length+l.length<o.length}}}function ex(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ei(n).length,content:ei(s.text),truncated:s.truncated}}function tx(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
108
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,i=t.limit??Wa,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
97
109
  `)}${n&&o.length>0?`
98
- `:""}`,truncated:o.length<s.length}}function HS(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&&!qS(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Fs(e){let t=e.split(`
99
- `);return t.at(-1)===""?t.slice(0,-1):t}function Uf(e){return e.includes(0)||!NS(e)}function $f(e){return jS.has($S(e).toLowerCase())}function qS(e){return["for","if","switch","while"].includes(e)}function Bf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Mf(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Lf,Ra,BS,MS,jS,Ea=b(()=>{"use strict";te();Pt();Ce();Lf=8*1024,Ra=10,BS=8,MS=2,jS=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Kf={};M(Kf,{REPO_STORE_PATH:()=>Ta,mergeRspBlock:()=>Hf,provisionRspRepoStore:()=>rx});import{constants as VS}from"node:fs";import{access as KS,copyFile as zS,mkdir as Jf,readFile as YS,rename as QS,writeFile as Gf}from"node:fs/promises";import{dirname as XS,join as wn,resolve as ZS}from"node:path";async function rx(e,t={}){let r=ZS(e),n=wn(r,".red"),s=wn(n,"config.yaml"),i=wn(r,Ta);await Jf(n,{recursive:!0}),await Jf(XS(i),{recursive:!0});let o="";try{o=await YS(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Hf(o,{enabled:!0,ttlDays:t.ttlDays??we,ephemeralTtlHours:t.ephemeralTtlHours??be,byteBudget:t.byteBudget??_e,heavyGitByteThreshold:t.heavyGitByteThreshold??qe}),c=a!==o;c&&await Gf(s,a,"utf8");let u=!await va(i),l=!1,d=!1;if(u){let m=wn(r,ex),h=wn(r,tx);if(await va(m))await QS(m,i),d=!0;else if(await va(h))await zS(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=nx(a,Ta);return f!==a&&await Gf(s,f,"utf8"),{configPath:s,storePath:i,configChanged:c||f!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:d}}function Hf(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(`
100
- `),s=qf(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
110
+ `:""}`,truncated:o.length<s.length}}function rx(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&&!nx(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ei(e){let t=e.split(`
111
+ `);return t.at(-1)===""?t.slice(0,-1):t}function vp(e){return e.includes(0)||!HE(e)}function Sp(e){return YE.has(VE(e).toLowerCase())}function nx(e){return["for","if","switch","while"].includes(e)}function Ep(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function xp(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var Rp,Wa,KE,zE,YE,Va=w(()=>{"use strict";K();$t();De();Rp=8*1024,Wa=10,KE=8,zE=2,YE=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var $p={};M($p,{REPO_STORE_PATH:()=>Ya,mergeRspBlock:()=>Ip,provisionRspRepoStore:()=>px});import{constants as sx}from"node:fs";import{access as ix,copyFile as ox,mkdir as Op,readFile as ax,rename as ux,writeFile as Pp}from"node:fs/promises";import{dirname as cx,join as Cn,resolve as lx}from"node:path";async function px(e,t={}){let r=lx(e),n=Cn(r,".red"),s=Cn(n,"config.yaml"),i=Cn(r,Ya);await Op(n,{recursive:!0}),await Op(cx(i),{recursive:!0});let o="";try{o=await ax(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Ip(o,{enabled:!0,ttlDays:t.ttlDays??_e,ephemeralTtlHours:t.ephemeralTtlHours??Re,byteBudget:t.byteBudget??Se,heavyGitByteThreshold:t.heavyGitByteThreshold??ze}),u=a!==o;u&&await Pp(s,a,"utf8");let c=!await za(i),l=!1,f=!1;if(c){let p=Cn(r,dx),h=Cn(r,fx);if(await za(p))await ux(p,i),f=!0;else if(await za(h))await ox(h,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Qe(),rr)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??_e,ephemeralTtlHours:t.ephemeralTtlHours??Re,byteBudget:t.byteBudget??Se,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=mx(a,Ya);return d!==a&&await Pp(s,d,"utf8"),{configPath:s,storePath:i,configChanged:u||d!==a,storeCreated:c,memoryStoreMigrated:l,legacyStoreMigrated:f}}function Ip(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ti(t.ttlDays,_e)}`,` ephemeralTtlHours: ${ti(t.ephemeralTtlHours,Re)}`,` byteBudget: ${ti(t.byteBudget,Se)}`,` heavyGitByteThreshold: ${ti(t.heavyGitByteThreshold,ze)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
112
+ `),s=Dp(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
101
113
  `)}
102
- `}let i=Oa(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(i)].join(`
114
+ `}let i=Qa(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(i)].join(`
103
115
  `)}
104
- `}function qf(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Ca(n)&&Pa(n)===0&&Vf(n)===t)return r}return-1}function Oa(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Ca(e[s])&&Pa(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Pa(e){return(e.match(/^ */)?.[0]??"").length}function Ca(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Vf(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Js(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function nx(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
105
- `),n=qf(r,"plugins");if(n===-1)return e;let s=Oa(r,n,0),i=Wf(r,"memory",n+1,s,2);if(i===-1)return e;let o=Oa(r,i,2),a=[...r],c=Wf(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
116
+ `}function Dp(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Xa(n)&&Za(n)===0&&Ap(n)===t)return r}return-1}function Qa(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Xa(e[s])&&Za(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Za(e){return(e.match(/^ */)?.[0]??"").length}function Xa(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ap(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mx(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
117
+ `),n=Dp(r,"plugins");if(n===-1)return e;let s=Qa(r,n,0),i=Cp(r,"memory",n+1,s,2);if(i===-1)return e;let o=Qa(r,i,2),a=[...r],u=Cp(a,"storePath",i+1,o,4);return u!==-1?a[u]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
106
118
  `)}
107
- `}function Wf(e,t,r,n,s){for(let i=r;i<n;i++){let o=e[i];if(Ca(o)&&Pa(o)===s&&Vf(o)===t)return i}return-1}async function va(e){try{return await KS(e,VS.F_OK),!0}catch{return!1}}var Ta,ex,tx,zf=b(()=>{"use strict";De();Se();Ta=Gi,ex=wc,tx=".red/memory/graph.rdb"});var ep={};M(ep,{runRspMcpServer:()=>ix});import{createInterface as sx}from"node:readline";async function ix(){let e=Re(process.cwd(),process.env),t=sx({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 ox(n,e);Xf({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Xf({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 ox(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:Qf(t)}]};if(!t.enabled)return{content:[{type:"text",text:Qf(t)}],isError:!0};let n=mx(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(ax(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await cx(r.arguments,n)}]}}return{}}function Nt(e){return`${j(e)}
108
- `}function ax(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function cx(e,t){let r=ux(e?.payload),n=lx(e?.level),s=await zo(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return fx(s.output);let i=ks(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 dx(i,o.length,a,n)}function ux(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function lx(e){return e==="terse"?"terse":"brief"}function dx(e,t,r,n){let s=n==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Yf(i.subarray(0,o)),c=Yf(i.subarray(Math.max(0,i.length-o)));return Nt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:px(i),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function fx(e){return e.endsWith(`
119
+ `}function Cp(e,t,r,n,s){for(let i=r;i<n;i++){let o=e[i];if(Xa(o)&&Za(o)===s&&Ap(o)===t)return i}return-1}async function za(e){try{return await ix(e,sx.F_OK),!0}catch{return!1}}var Ya,dx,fx,Np=w(()=>{"use strict";Ae();xe();Ya=ro,dx=Fu,fx=".red/memory/graph.rdb"});var Gp={};M(Gp,{runRspMcpServer:()=>hx});import{createInterface as gx}from"node:readline";async function hx(){let e=Ee(process.cwd(),process.env),t=gx({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 yx(n,e);Mp({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Mp({jsonrpc:"2.0",id:typeof jp(r)?.id>"u"?null:jp(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function yx(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:Bp(t)}]};if(!t.enabled)return{content:[{type:"text",text:Bp(t)}],isError:!0};let n=kx(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:jt({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),i=await n.get(s);return i?"status"in i?{content:[{type:"text",text:jt({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:jt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:jt(bx(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await wx(r.arguments,n)}]}}return{}}function jt(e){return`${j(e)}
120
+ `}function bx(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function wx(e,t){let r=_x(e?.payload),n=Rx(e?.level),s=await ua(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return Ex(s.output);let i=Ls(r);if(n==="brief"&&Buffer.byteLength(i)<=2*1024)return jt({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 Sx(i,o.length,a,n)}function _x(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function Rx(e){return e==="terse"?"terse":"brief"}function Sx(e,t,r,n){let s=n==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Lp(i.subarray(0,o)),u=Lp(i.subarray(Math.max(0,i.length-o)));return jt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:xx(i),head:a,tail:u&&u!==a?u:null,handle:r,help:[`rsp show ${r}`]})}function Ex(e){return e.endsWith(`
109
121
  `)?e:`${e}
110
- `}function Yf(e){return e.toString("utf8").replace(/�$/g,"")}function px(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 mx(e){return new dn(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 Qf(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 Xf(e){process.stdout.write(`${JSON.stringify(e)}
111
- `)}function Zf(e){try{return JSON.parse(e)}catch{return null}}var tp=b(()=>{"use strict";Ie();Se();nn();Xe()});var np={};M(np,{renderShellInit:()=>gx});function gx(e,t=mn){if(e==="fish")return hx(t);if(e==="bash"||e==="zsh")return yx(e,t);throw new Error(`unsupported shell: ${e}`)}function hx(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(Ws))].map(r=>` abbr --add --position command -- ${r} '${Rx(`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(`
112
- `)}function yx(e,t){let r=bx(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Gs("git",r.get("git")??[]),...Gs("gh",r.get("gh")??[]),...Gs("vitest",r.get("vitest")??[]),...Gs("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(`
113
- `)}function Gs(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(Ws),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Ws)),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=>rp(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of wx(n)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${_x(u)}' ]`).join(" && ")).join(" || ");s.push(` ${rp(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function wx(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 bx(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!Ws(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Ws(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function rp(e){return e.replace(/[\\|)&;]/g,"\\$&")}function _x(e){return e.replace(/'/g,"'\\''")}function Rx(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var sp=b(()=>{"use strict";gn()});function Da(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"&&Sx(t.chosenOption)&&xx(t.outcome)&&Ex(t.cost)}function Sx(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function xx(e){return e==="success"||e==="failure"||e==="escalated"}function Ex(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 ip=b(()=>{});import{createHash as kx}from"node:crypto";function yp(e,t){return new Aa(e,t)}function op(e){let t=Number(e.red_entity_id??e.rid),r=Na(e.properties??e.PROPERTIES),n=wp(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 ap(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=bp(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:Na(e.properties??e.PROPERTIES)}}function Ox(e){let t=Number(e.red_entity_id??e.rid),r=Na(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Da(r)?null:{rid:t,event:r}}function Na(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Hs(e)?e:{}}function wp(e){let t=e==="contact"?"person":e;if(vx.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function bp(e){if(Tx.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Px(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function cp(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function $t(e){return Hs(e)?e:{}}function up(e,t){return $t(e)[t]}function lp(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function dp(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function fp(e){let t=$t(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 Hs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ia(e){return e!=null}function Cx(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Dx(e){return kx("sha256").update(JSON.stringify(e)).digest("hex")}function Ix(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function pp(e){return`artifact-hash:${e}`}function mp(e,t,r){return`connection:${e}:${t}:${r}`}function gp(){return"model-tier-bandit:v1"}function Ax(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function hp(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function _p(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+hp(r,a)*3+hp(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 Nx(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=Rp({..._p(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Lt(s)}function Rp(e){return{...e,lexical:Lt(e.lexical),tags:Lt(e.tags),kind:Lt(e.kind),connections:Lt(e.connections),vector:Lt(e.vector),total:Lt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Lt(e){return Math.round(e*1e3)/1e3}function Lx(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 $x(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 Bx(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var je,vx,Tx,Aa,Sp=b(()=>{"use strict";ip();je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},vx=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Tx=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Aa=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($t(r));if(t==="getArtifact")return await this.getArtifact(up(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=$t(r);return await this.search(lp(n,"query"),dp(n,"limit")??10,fp(n.options))}if(t==="think"){let n=$t(r);return await this.think(lp(n,"query"),dp(n,"limit")??8,fp(n.options))}if(t==="link")return await this.link($t(r));if(t==="backlinks")return await this.backlinks(up(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis($t(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:Bx(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=wp(ie(t.kind)||"note"),i=Cx(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Dx([s,r,n,i,ie(t.sourcePath),ie(t.sourceSession)]),c=await this.kv().get(pp(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Ix(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:Hs(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=op(f);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(pp(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(op).filter(Ia)}async search(t,r,n={}){let s=Ax(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=_p(u,s),d=Rp({...l,connections:Nx(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:Lx(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 $x(t,s)}async link(t){let r=await this.getArtifact(cp(t.from)),n=await this.getArtifact(cp(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=bp(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:Hs(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=ap(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(mp(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(ap).filter(Ia)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=Px(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(!Da(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(Ox).filter(Ia).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(gp());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(gp(),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(mp(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(je.kv)}}});var Lp={};M(Lp,{runResidentServer:()=>Hx});import{randomUUID as mr}from"node:crypto";import{execFileSync as Mx,spawn as jx}from"node:child_process";import{existsSync as Ux}from"node:fs";import{mkdir as Pp,rename as Fx,rm as xp,writeFile as Cp}from"node:fs/promises";import{createServer as Jx}from"node:net";import{dirname as Ma,join as qs}from"node:path";import{fileURLToPath as Gx,pathToFileURL as Wx}from"node:url";async function Hx(e){await Pp(Ma(e.socketPath),{recursive:!0});let t=sE();nE();let r=e.telemetryDrainTimeoutMs??Dp,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??jn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=Jx(k=>{l.add(k),k.once("close",()=>l.delete(k)),h(),dE(k,async O=>{h();let B=await fE(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};Np(k,de),O.op==="handover"&&setImmediate(()=>m())})});function m(){i=!0,u=!0,c=rE(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=()=>{Vs(),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(X=>setTimeout(X,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 Ba(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Bn,byteBudget:e.telemetryByteBudget??e.byteBudget??Mn});if(i){await B.close();return}if(await La(ve,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:ve,storeOpenCount:1,storeElapsedMs:de},s=setInterval(()=>{let X=n.kind==="ready"?n:void 0;X&&La(X.telemetry,r)},d),s.unref(),h()})().catch(k=>{n={kind:"failed",error:k instanceof Error?k:new Error(String(k))},h()}),e.pidPath&&await Cp(e.pidPath,`${process.pid}
114
- `,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",w=e.registryPath??qs(V(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Nn(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 xp(e.socketPath,{force:!0});let v=n;v.kind==="ready"&&(await La(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"),Vs(),e.pidPath&&await xp(e.pidPath,{force:!0}),await Ln(w)}async function Qx(e,t,r=new Date){let n=await ts(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=qs(V(t),zx),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 Pp(Ma(a),{recursive:!0}),await Cp(c,`${j(u)}
115
- `,{encoding:"utf8",mode:384}),await Fx(c,a)}async function La(e,t=Dp,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Ap(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
116
- `)}}async function Xx(e){let t=[];for(let r of Yx){let n=await Zx(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await eE(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ip(r)}`))}return t}async function Zx(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 eE(e,t,r){let n=tE(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Ip(t)}`)}function tE(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 Ip(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function rE(e){return e&&clearTimeout(e),setTimeout(()=>{Vs(),process.exit(0)},Kx)}function nE(){Ep||(Ep=!0,process.on("exit",()=>Vs()))}function sE(){if(process.platform==="win32")return;let t=jx(process.execPath,["-e",`
122
+ `}function Lp(e){return e.toString("utf8").replace(/�$/g,"")}function xx(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 kx(e){return new Sn(ot(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 Bp(e){return jt({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function Mp(e){process.stdout.write(`${JSON.stringify(e)}
123
+ `)}function jp(e){try{return JSON.parse(e)}catch{return null}}var Fp=w(()=>{"use strict";$e();xe();gn();tt()});var Up={};M(Up,{renderShellInit:()=>vx});function vx(e,t=kn){if(e==="fish")return Tx(t);if(e==="bash"||e==="zsh")return Ox(e,t);throw new Error(`unsupported shell: ${e}`)}function Tx(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(ni))].map(r=>` abbr --add --position command -- ${r} '${Dx(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
124
+ `)}function Ox(e,t){let r=Cx(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ri("git",r.get("git")??[]),...ri("gh",r.get("gh")??[]),...ri("vitest",r.get("vitest")??[]),...ri("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
125
+ `)}function ri(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(ni),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(ni)),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=>Jp(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Px(n)){let a=o.map(u=>u.map((c,l)=>`[ "$${l+2}" = '${Ix(c)}' ]`).join(" && ")).join(" || ");s.push(` ${Jp(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Px(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 Cx(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ni(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ni(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Jp(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Ix(e){return e.replace(/'/g,"'\\''")}function Dx(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Wp=w(()=>{"use strict";vn()});function eu(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"&&Ax(t.chosenOption)&&$x(t.outcome)&&Nx(t.cost)}function Ax(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function $x(e){return e==="success"||e==="failure"||e==="escalated"}function Nx(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 Hp=w(()=>{});import{createHash as Lx}from"node:crypto";function nm(e,t){return new ru(e,t)}function qp(e){let t=Number(e.red_entity_id??e.rid),r=nu(e.properties??e.PROPERTIES),n=sm(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):[],u=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??u),updated_at:Number(r.updated_at??r.created_at??u),hash:String(r.hash??"")}}}function Vp(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=im(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:nu(e.properties??e.PROPERTIES)}}function jx(e){let t=Number(e.red_entity_id??e.rid),r=nu(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!eu(r)?null:{rid:t,event:r}}function nu(e){return e==null?{}:typeof e=="string"?JSON.parse(e):si(e)?e:{}}function sm(e){let t=e==="contact"?"person":e;if(Bx.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function im(e){if(Mx.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Gx(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Kp(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ft(e){return si(e)?e:{}}function zp(e,t){return Ft(e)[t]}function Yp(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Qp(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Zp(e){let t=Ft(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function oe(e){return typeof e=="string"&&e.length>0?e:void 0}function si(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tu(e){return e!=null}function Fx(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Jx(e){return Lx("sha256").update(JSON.stringify(e)).digest("hex")}function Ux(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Xp(e){return`artifact-hash:${e}`}function em(e,t,r){return`connection:${e}:${t}:${r}`}function tm(){return"model-tier-bandit:v1"}function Wx(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function rm(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function om(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+rm(r,a)*3+rm(n,a),0),tags:t.reduce((o,a)=>o+s.reduce((u,c)=>u+(c===a?4:c.includes(a)||a.includes(c)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function Hx(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 u=am({...om(a,t),connections:0,vector:0}).total;u>0&&(s+=Math.min(u,12)*.35)}return Gt(s)}function am(e){return{...e,lexical:Gt(e.lexical),tags:Gt(e.tags),kind:Gt(e.kind),connections:Gt(e.connections),vector:Gt(e.vector),total:Gt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Gt(e){return Math.round(e*1e3)/1e3}function qx(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 Vx(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 Kx(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Je,Bx,Mx,ru,um=w(()=>{"use strict";Hp();Je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Bx=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Mx=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),ru=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(Ft(r));if(t==="getArtifact")return await this.getArtifact(zp(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ft(r);return await this.search(Yp(n,"query"),Qp(n,"limit")??10,Zp(n.options))}if(t==="think"){let n=Ft(r);return await this.think(Yp(n,"query"),Qp(n,"limit")??8,Zp(n.options))}if(t==="link")return await this.link(Ft(r));if(t==="backlinks")return await this.backlinks(zp(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ft(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:Kx(t.map(n=>n.kind))}}async capture(t){let r=oe(t.title)||"Untitled artifact",n=oe(t.content);if(!n)throw new Error("brain capture requires content");let s=sm(oe(t.kind)||"note"),i=Fx(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Jx([s,r,n,i,oe(t.sourcePath),oe(t.sourceSession)]),u=await this.kv().get(Xp(a));if(u!=null){let h=await this.getArtifact(Number(u));if(h)return h}let c=`${Ux(r)}-${a.slice(0,8)}`,l={id:c,title:r,content:n,tags:i,source_agent:oe(t.sourceAgent),source_runner:oe(t.sourceRunner),source_session:oe(t.sourceSession),source_path:oe(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:si(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Je.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,c,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=qp(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Xp(a),p.rid),await this.materializeTagConnections(p),p}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Je.artifacts}`)).rows.map(qp).filter(tu)}async search(t,r,n={}){let s=Wx(t),i=new Set(n.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),u=new Map(o.map(c=>[c.rid,c]));return o.filter(c=>!i.has(c.rid)).map(c=>{let l=om(c,s),f=am({...l,connections:Hx(c,s,a,u),vector:0});return{artifact:c,score:f.total,score_breakdown:f,excerpt:qx(c.properties.content,s)}}).filter(c=>c.score>0).sort((c,l)=>l.score-c.score||l.artifact.properties.updated_at-c.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 Vx(t,s)}async link(t){let r=await this.getArtifact(Kp(t.from)),n=await this.getArtifact(Kp(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=im(oe(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:oe(t.reason),confidence:oe(t.confidence)||"explicit",created_at:Date.now(),metadata:si(t.metadata)?t.metadata:void 0},u=(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(!u)throw new Error("INSERT connection returned no row");let c=Vp(u);if(!c)throw new Error("INSERT connection returned invalid row");return await this.kv().put(em(r.rid,n.rid,s),c.rid),c}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(Vp).filter(tu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=Gx(oe(t.interval)||"day"),s=oe(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(!eu(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(jx).filter(tu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(tm());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(tm(),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(em(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Je.kv)}}});var Rm={};M(Rm,{runResidentServer:()=>rk});import{randomUUID as kr}from"node:crypto";import{execFileSync as zx,spawn as Yx}from"node:child_process";import{existsSync as Qx}from"node:fs";import{mkdir as gm,rename as Zx,rm as cm,writeFile as hm}from"node:fs/promises";import{createServer as Xx}from"node:net";import{dirname as au,join as ii}from"node:path";import{fileURLToPath as ek,pathToFileURL as tk}from"node:url";async function rk(e){await gm(au(e.socketPath),{recursive:!0});let t=gk();mk();let r=e.telemetryDrainTimeoutMs??ym,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Qn,a,u,c=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Xx(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),Sk(v,async P=>{h();let B=await Ek(n,P,e.storeUri,e.residentVersion??"0.0.0-dev"),pe={id:P.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};_m(v,pe),P.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,c=!0,u=pk(u),d.close();for(let v of l)v.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(v=>{let P=()=>{oi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,P),{signal:v,handler:P}});await new Promise((v,P)=>{d.once("error",P),d.listen(e.socketPath,()=>{d.off("error",P),v()})}),(async()=>{let v=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let P=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(P)&&P>0&&await new Promise(ee=>setTimeout(ee,P));let B=await ut.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),pe=Number(process.hrtime.bigint()-v)/1e6,Oe=new ou(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??zn,byteBudget:e.telemetryByteBudget??e.byteBudget??Yn});if(i){await B.close();return}if(await su(Oe,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:Oe,storeOpenCount:1,storeElapsedMs:pe},s=setInterval(()=>{let ee=n.kind==="ready"?n:void 0;ee&&su(ee.telemetry,r)},f),s.unref(),h()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},h()}),e.pidPath&&await hm(e.pidPath,`${process.pid}
126
+ `,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??ii(z(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await qn(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(v=>d.once("close",v)),a&&clearTimeout(a),s&&clearInterval(s),await cm(e.socketPath,{force:!0});let x=n;x.kind==="ready"&&(await su(x.telemetry,r,c),await x.store.close()),u&&clearTimeout(u);for(let{signal:v,handler:P}of g)process.off(v,P);t?.kill("SIGTERM"),oi(),e.pidPath&&await cm(e.pidPath,{force:!0}),await Vn(b)}async function uk(e,t,r=new Date){let n=await ps(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=ii(z(t),ok),u=`${a}.${process.pid}.${Date.now()}.tmp`,c={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&&(c.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(c.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await gm(au(a),{recursive:!0}),await hm(u,`${j(c)}
127
+ `,{encoding:"utf8",mode:384}),await Zx(u,a)}async function su(e,t=ym,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await wm(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
128
+ `)}}async function ck(e){let t=[];for(let r of ak){let n=await lk(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await dk(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${bm(r)}`))}return t}async function lk(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 dk(e,t,r){let n=fk(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${bm(t)}`)}function fk(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 bm(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function pk(e){return e&&clearTimeout(e),setTimeout(()=>{oi(),process.exit(0)},ik)}function mk(){lm||(lm=!0,process.on("exit",()=>oi()))}function gk(){if(process.platform==="win32")return;let t=Yx(process.execPath,["-e",`
117
129
  const { execFileSync } = require("node:child_process");
118
130
  const parentPid = Number(process.argv[1]);
119
131
  const known = new Set();
@@ -154,24 +166,24 @@ const timer = setInterval(() => {
154
166
  clearInterval(timer);
155
167
  process.exit(0);
156
168
  }, 500);
157
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Vs(){for(let e of iE())try{process.kill(e,"SIGTERM")}catch{}}function iE(){if(process.platform==="win32")return[];let e="";try{e=Mx("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 oE(e){if(e.collection!==ue)return e;let t=await kp(e.raw_text,Tp(e.raw_bytes)),r=await kp(e.emitted_text,Tp(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 kp(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=qx)try{return await Ap((async()=>({tokens:(await aE())("cl100k_base").encode(e).length,estimated:!1}))(),Vx,"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 aE(){return vp??=import(Wx(cE()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await vp}function cE(){let e=Ma(Gx(import.meta.url)),r=[qs(e,"..","node_modules","js-tiktoken","dist","index.js"),qs(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Ux(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Tp(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 Ap(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 uE(e){try{return JSON.parse(e)}catch{return e}}function lE(e){return Op(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Op(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 Op(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function dE(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
158
- `);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)};Np(e,u)}finally{e.end()}})()})}function Np(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
159
- `)}catch{}}async function fE(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 wo(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 ts(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 bo(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return mE(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await pE(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function pE(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await yp(s,t).request(r,n)}function mE(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var qx,Vx,Dp,Kx,zx,Yx,Ba,Ep,vp,$p=b(()=>{"use strict";De();$n();Ie();Ke();Sp();xe();Se();qx=256*1024,Vx=500,Dp=2e3,Kx=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),zx="rsp-status-summary.json",Yx=[re,G,ue,Ne,Ur],Ba=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 Xx(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 yo(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 Qx(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 oE(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"?uE(r):r;return lE(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})}};Ep=!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 uc(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function lc(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 fi(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 fi=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return xn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Jt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function dc(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 En(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 fc(e){return e.includes("--full")}Ie();import{existsSync as gE}from"node:fs";import{fileURLToPath as hE}from"node:url";function Sc(e){let t={app:e,version:Tm(Gt("__RED_BUILD_VERSION__",()=>"2.79.1")??"0.0.0-dev"),gitSha:Gt("__RED_BUILD_GIT_SHA__",()=>"0ac8949d24cbbae9260e6f3ef82eae9985383904")??"unknown",buildTime:Gt("__RED_BUILD_TIME__",()=>"2026-07-22T08:59:47-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 Tm(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 ob}from"node:fs";import{fileURLToPath as ab}from"node:url";Li();Ie();Mi();import{existsSync as yy}from"node:fs";import{fileURLToPath as wy}from"node:url";async function sr(e,t){let r={stats:by(e.telemetryByteBudget),telemetry:So(t)};if(!e.storeUri.startsWith("file://"))return r;let n=wy(e.storeUri);if(!yy(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:So(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 xo(e,t=So(30),r=!1){return`${j(Eo(e,t,r))}
160
- `}function Eo(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??rs(),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:_y(t.savings),dollars_saved_estimate_usd_display:Ry(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:Ro(t.health.degradation_rate),show_hit_rate_display:Ro(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:Ro(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:_o(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:_o(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:_o(t.latency.store_elapsed_ms_avg)}}}function Zu(e){return`${j(e)}
161
- `}function So(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 by(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:rs()}}function rs(){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 ko(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
162
- `)}function _y(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 Ry(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 _o(e){return e==null?"none":String(e)}function Ro(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Hl(e){let{stats:t,telemetry:r}=await sr(e,30),[n,s]=await Promise.all([cb(e),Promise.resolve().then(()=>(Jo(),Fo)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function ql(e){let t=Eo(e.stats,e.telemetry,!1),r=hi({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??rs()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},ub(e));return`${j(r)}
163
- `}async function cb(e){if(!e.storeUri.startsWith("file://"))return[];let t=ab(e.storeUri);if(!ob(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 ub(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 ER}from"node:fs";import{fileURLToPath as kR}from"node:url";xe();import{spawn as vs}from"node:child_process";async function $d(e,t,r){let n=process.hrtime.bigint(),s=await W_(e.positional),i=Number(process.hrtime.bigint()-n)/1e6;return H_(t,e,s,i,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function W_(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(()=>(ys(),hs)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(cn(),an)).then(o=>o.parseExecCommandLine(e));r=vs(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=vs(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)}
164
- `;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 Bd(e){return e>0&&Math.random()<e}async function ln(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
165
- `);let s=await Ud(t);if(n){let i=q_(e,t,r),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(xe(),Gr));Ld(o(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:ea(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})),Ld(o(n,{collection:c,ts:new Date().toISOString(),command:ea(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}async function Md(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ts()}, passing through
166
- `),await Ud(e)}function Ts(){return"rsp is not enabled in this directory; run /red-setup"}function jd(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function $e(e){return ea(e.positional)}function ea(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 un(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function H_(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:$e(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 q_(e,t,r){let n=t[0]??"unknown",s=V_(r)||e;return{reason:Nd(r)==="ENOENT"||Nd(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:z_(r)??1,stderrHead:K_(s,240)}}function V_(e){return e instanceof Error?un(e.message):un(String(e??""))}function K_(e,t){let r=un(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Nd(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function z_(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 Ld(e){e.catch(()=>{})}async function Ud(e){if(e[0]==="exec"||e[0]==="proxy")return await Y_(e);let t=e[0];if(!t)return 2;let r=vs(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)}
167
- `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function Y_(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(ys(),hs));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(cn(),an));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
168
- `),2}let r=vs(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
169
- `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function uf(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")),cf("disabled",n,r);n.push(await vR(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(()=>(Xe(),Dt));if(n.push(TR(await i(t))),n.push(OR(e)),df(e)){let{telemetry:o}=await sr(e,r);n.push(PR(o,r))}else n.push(Y("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return cf(n.some(o=>!o.pass)?"fail":"pass",n,r)}function lf(e){let{exitCode:t,...r}=e;return`${j({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
170
- `}async function vR(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(()=>(gn(),Ls)),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?un(t.message):"unknown error"}`,"rsp setup")}}function TR(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 OR(e){return e.storeUri.startsWith("file://")?df(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 PR(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})`,CR(s,t))}function CR(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 df(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ER(kR(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:di({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function cf(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)}}aa();function gf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${AR(t).join(`
169
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function oi(){for(let e of hk())try{process.kill(e,"SIGTERM")}catch{}}function hk(){if(process.platform==="win32")return[];let e="";try{e=zx("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 yk(e){if(e.collection!==le)return e;let t=await dm(e.raw_text,pm(e.raw_bytes)),r=await dm(e.emitted_text,pm(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 dm(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=nk)try{return await wm((async()=>({tokens:(await bk())("cl100k_base").encode(e).length,estimated:!1}))(),sk,"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 bk(){return fm??=import(tk(wk()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await fm}function wk(){let e=au(ek(import.meta.url)),r=[ii(e,"..","node_modules","js-tiktoken","dist","index.js"),ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>Qx(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function pm(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function V(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function iu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function wm(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 _k(e){try{return JSON.parse(e)}catch{return e}}function Rk(e){return mm(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>mm(t)&&(t.collection===ne||t.collection===W||t.collection===le||t.collection===Le)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function mm(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Sk(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
170
+ `);if(s<0)return;let i=r.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let c={id:o?.id??kr(),ok:!1,error:a instanceof Error?a.message:String(a)};_m(e,c)}finally{e.end()}})()})}function _m(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
171
+ `)}catch{}}async function Ek(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 Io(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 ps(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 Do(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return kk(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await xk(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function xk(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await nm(s,t).request(r,n)}function kk(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var nk,sk,ym,ik,ok,ak,ou,lm,fm,Sm=w(()=>{"use strict";Ae();Kn();$e();Qe();um();ke();xe();nk=256*1024,sk=500,ym=2e3,ik=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),ok="rsp-status-summary.json",ak=[ne,W,le,Le,Qr],ou=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 ck(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 Co(this.opts.rootDir,async a=>{let u=ir(a);if(!u){let c=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(c),!0}try{let c=await this.writeEvent(t,u);i.push(c);let l=await this.writeAccountingMirror(t,u);return l&&i.push(l),!0}catch(c){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:V(u.command)||"unknown",source_id:V(u.id),source_collection:V(u.collection),error:c instanceof Error?c.message:String(c),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 uk(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:kr(),a={...await yk(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===ne?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===ne||r.accounting_recorded===!0?null:r.collection===le?await this.writeEvent(t,{collection:ne,id:`mirror:${V(r.id)||kr()}`,created_at:V(r.created_at)||V(r.ts)||new Date().toISOString(),event_type:"invocation",command:V(r.command)||"unknown",command_class:iu(V(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===Le?await this.writeEvent(t,{collection:ne,id:`mirror:${V(r.id)||kr()}`,created_at:V(r.created_at)||V(r.ts)||new Date().toISOString(),event_type:"invocation",command:V(r.command)||"unknown",command_class:iu(V(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:V(r.reason)||"unknown",wrapper_family:V(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:V(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Le,id:kr(),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:ne,id:`mirror:${kr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:iu(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(Qr).get("index:v1"),n=typeof r=="string"?_k(r):r;return Rk(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Qr).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,u)=>a+u.bytes,0);for(i.sort((a,u)=>a.created_at.localeCompare(u.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})}};lm=!1});De();function be(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function F(e,t){let r=be(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function Du(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function Au(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 ki(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 ki=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Nn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Vt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function $u(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 Ln(e,t){let r=be(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 Nu(e){return e.includes("--full")}$e();import{existsSync as vk}from"node:fs";import{fileURLToPath as Tk}from"node:url";function Hu(e){let t={app:e,version:pg(Kt("__RED_BUILD_VERSION__",()=>"2.81.0")??"0.0.0-dev"),gitSha:Kt("__RED_BUILD_GIT_SHA__",()=>"52dbaf48bef67344ec08e62be03225c8382ea7a1")??"unknown",buildTime:Kt("__RED_BUILD_TIME__",()=>"2026-07-22T15:25:15-03:00")??"unknown",bundleAsset:Kt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Kt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Kt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function pg(e){return e.startsWith("v")?e.slice(1):e}function Kt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}De();$e();$r();import{existsSync as Vw}from"node:fs";import{fileURLToPath as Kw}from"node:url";Ki();$e();Qi();import{existsSync as nb}from"node:fs";import{fileURLToPath as sb}from"node:url";async function cr(e,t){let r={stats:ib(e.telemetryByteBudget),telemetry:No(t)};if(!e.storeUri.startsWith("file://"))return r;let n=sb(e.storeUri);if(!nb(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:u}=await Promise.resolve().then(()=>(Qe(),rr)),c=await u.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await c.stats(),telemetry:No(t)}}finally{await c.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Qe(),rr));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(ke(),en)),a=await Qt(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}function Lo(e,t=No(30),r=!1){return`${j(Bo(e,t,r))}
172
+ `}function Bo(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??ms(),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:ob(t.savings),dollars_saved_estimate_usd_display:ab(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:Ao(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Ao(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Ao(t.latency.store_elapsed_ms_avg)}}}function Sl(e){return`${j(e)}
173
+ `}function No(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 ib(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:ms()}}function ms(){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 Mo(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
174
+ `)}function ob(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 ab(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Fr(e.dollars_saved_estimate_usd):`${Fr(e.dollars_saved_low_usd)}-${Fr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Fr(e.dollars_saved_estimate_usd)})`}function Ao(e){return e==null?"none":String(e)}function $o(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function md(e){let{stats:t,telemetry:r}=await cr(e,30),[n,s]=await Promise.all([zw(e),Promise.resolve().then(()=>(ta(),ea)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function gd(e){let t=Bo(e.stats,e.telemetry,!1),r=Pi({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??ms()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},Yw(e));return`${j(r)}
175
+ `}async function zw(e){if(!e.storeUri.startsWith("file://"))return[];let t=Kw(e.storeUri);if(!Vw(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(Qe(),rr)),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 Yw(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}$e();De();import{existsSync as dS}from"node:fs";import{fileURLToPath as fS}from"node:url";ke();import{spawn as Bs}from"node:child_process";async function of(e,t,r){let n=process.hrtime.bigint(),s=await IR(e.positional),i=Number(process.hrtime.bigint()-n)/1e6;return DR(t,e,s,i,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function IR(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(()=>(Os(),Ts)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(wn(),bn)).then(o=>o.parseExecCommandLine(e));r=Bs(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Bs(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)}
176
+ `;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 af(e){return e>0&&Math.random()<e}async function Rn(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
177
+ `);let s=await lf(t);if(n){let i=AR(e,t,r),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(ke(),en));sf(o(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:pa(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})),sf(o(n,{collection:u,ts:new Date().toISOString(),command:pa(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}async function uf(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ms()}, passing through
178
+ `),await lf(e)}function Ms(){return"rsp is not enabled in this directory; run /red-setup"}function cf(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Me(e){return pa(e.positional)}function pa(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 _n(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function DR(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:Me(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:n};lt(e,{collection:"rsp_accounting_events_v1",...o}),lt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function AR(e,t,r){let n=t[0]??"unknown",s=$R(r)||e;return{reason:nf(r)==="ENOENT"||nf(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:LR(r)??1,stderrHead:NR(s,240)}}function $R(e){return e instanceof Error?_n(e.message):_n(String(e??""))}function NR(e,t){let r=_n(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function nf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function LR(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 sf(e){e.catch(()=>{})}async function lf(e){if(e[0]==="exec"||e[0]==="proxy")return await BR(e);let t=e[0];if(!t)return 2;let r=Bs(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
179
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function BR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Os(),Ts));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(wn(),bn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
180
+ `),2}let r=Bs(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
181
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function Df(e,t,r){let n=[],s=!e.enabled;if(n.push(s?Z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(Z("hook_wiring","skipped because rsp is disabled"),Z("proxy_mode","skipped because rsp is disabled"),Z("resident_liveness","skipped because rsp is disabled"),Z("store_provisioning","skipped because rsp is disabled"),Z("recent_degradation_rate","skipped because rsp is disabled")),If("disabled",n,r);n.push(await pS(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):br("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(tt(),Lt));if(n.push(mS(await i(t))),n.push(gS(e)),$f(e)){let{telemetry:o}=await cr(e,r);n.push(hS(o,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return If(n.some(o=>!o.pass)?"fail":"pass",n,r)}function Af(e){let{exitCode:t,...r}=e;return`${j({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
182
+ `}async function pS(e){try{if(e.proxyEnabled)return Z("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(vn(),qs)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):br("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return br("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?_n(t.message):"unknown error"}`,"rsp setup")}}function mS(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):br("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function gS(e){return e.storeUri.startsWith("file://")?$f(e)?Z("store_provisioning","rsp store exists for this directory"):br("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function hS(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return Z("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",i=r?.count??n;return br("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,yS(s,t))}function yS(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 $f(e){if(!e.storeUri.startsWith("file://"))return!0;try{return dS(fS(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function br(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:xi({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function If(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)}}_a();function Mf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${_S(t).join(`
171
183
  `)}
172
- `}function AR(e){switch(e){case"stats":return $("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 $("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 $("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 $("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 $("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 $("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 $("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 $("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 $('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 $("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 $("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return $("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return $("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return $("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return $("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return $("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return $("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 $("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 $("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 $("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 $(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function $(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}De();xe();import{spawn as NR}from"node:child_process";import{createHash as LR}from"node:crypto";import{existsSync as $R,readFileSync as BR,statSync as MR}from"node:fs";import{tmpdir as jR}from"node:os";import{dirname as UR,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(HR(s,e,t,o,n.lastResponseMetrics())),i&&FR(s,i)):qR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function It(e){e.catch(()=>{})}async function Ms(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 FR(e,t){try{let r=ze(e),n=MR(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!WR(r,Date.now()-s))return;let i=JR(e),o=GR(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");NR(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 JR(e){let t=e;for(;;){if($R(lt(t,".git")))return t;let r=UR(t);if(r===t)return e;t=r}}function GR(e){let t=LR("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(jR(),`red-skills-${n}`,t)}function WR(e,t){try{let r=BR(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 HR(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:$e(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:$e(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:$e(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:$e(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function qR(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:$e(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:$e(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}},ka=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Ff(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new ka,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(aa(),mf));if(o(e.positional))return await Q(e,await a(),i,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Pt(),Vo)),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(()=>(ha(),ga)),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(()=>(_a(),ba)),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(()=>(Ea(),xa)),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(()=>(cn(),an)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Q(e,a,i,s)}}catch(o){return Jt(o)?(process.stdout.write(o.render()),2):await ln("wrapper failed",e.positional,o,r)}finally{await s.close()}return await ln("wrapper failed",e.positional,n,r)}async function Bp(e=process.argv.slice(2)){let t=Sc("rsp");if(uc(e))return process.stdout.write(gf(e)),0;let r=lc(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(gn(),Ls));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(gn(),Ls));return await p()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(nn(),Qo));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(nn(),Qo));return await p()}if(r.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(zf(),Kf)),g=await p(process.cwd());return process.stdout.write(ko(g)),0}if(r.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(tp(),ep));return await p(),0}if(r.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Jo(),Fo));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(()=>(sp(),np));return process.stdout.write(g(p)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Se(),gu)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:p}=await Promise.resolve().then(()=>(Xe(),Dt)),g=p(process.cwd()),y=await uf(s,g,En(r.positional,1));return process.stdout.write(lf(y)),y.exitCode}let i=jd(r.command);if(!s.enabled)return i?await Md(r.positional):(process.stdout.write(`${Ts()}
173
- `),0);if(r.command==="git"&&$s(r.positional)){let p=process.hrtime.bigint();return await Q(r,await Bs(),p,void 0,await oa(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Xe(),Dt)),u=o(process.cwd());if(i&&Bd(s.measurementHoldoutShare))return await $d(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>($p(),Lp)),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(`${Ts()}
174
- `),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(()=>(Xe(),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(()=>(ys(),hs));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(()=>(Xe(),Dt)),y=r.command==="sweep"?await g(u):await p(u);return process.stdout.write(`${j(y)}
175
- `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:p}=await Promise.resolve().then(()=>(ms(),Ll)),g=dc(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}
176
- `),y.status}if(!r.command){let p=await Hl(s);return process.stdout.write(ql(p)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!gE(hE(s.storeUri)))return i?await Ff(r,s,u.rootDir):(process.stdout.write(N({command:$e(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,En(r.positional,30));return process.stdout.write(xo(p,g,fc(r.positional))),0}if(r.command==="gains"){let p=await m();if(h=()=>p.close(),!yE(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
177
- `),1;let g=await p.telemetryGains(En(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 Bs(),v,void 0,u.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Pt(),Vo)),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(()=>(ha(),ga)),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(()=>(_a(),ba)),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(()=>(Ea(),xa)),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(()=>(cn(),an)),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 Ms(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 Ms(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 Ms(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(Jt(p))return process.stdout.write(p.render()),2;if(i)return await ln("wrapper failed",r.positional,p,u.rootDir);throw p}finally{await h?.()}}function yE(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}Ce();import.meta.url===`file://${process.argv[1]}`&&Bp().then(e=>process.exit(e),e=>{Jt(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{Bp as main,ko as renderSetupResult,xo as renderStats};
184
+ `}function _S(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] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return 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}`)]}Ae();ke();import{spawn as RS}from"node:child_process";import{createHash as SS}from"node:crypto";import{existsSync as ES,readFileSync as xS,statSync as kS}from"node:fs";import{tmpdir as vS}from"node:os";import{dirname as TS,join as mt}from"node:path";async function X(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?(Bt(DS(s,e,t,o,n.lastResponseMetrics())),i&&OS(s,i)):AS(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Bt(e){e.catch(()=>{})}async function zs(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(ke(),en));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 OS(e,t){try{let r=Ze(e),n=kS(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!IS(r,Date.now()-s))return;let i=PS(e),o=CS(i),a=mt(o,"rsp.sock"),u=mt(o,"rsp.pid"),c=mt(z(i),"rsp-resident.pid.json"),l=mt(i,".red","tmp","rsp","wake.lock");RS(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",u,"--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",c,"--wake-lock",l],{cwd:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function PS(e){let t=e;for(;;){if(ES(mt(t,".git")))return t;let r=TS(t);if(r===t)return e;t=r}}function CS(e){let t=SS("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=mt(r,"red-skills",t);if(mt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return mt(vS(),`red-skills-${n}`,t)}function IS(e,t){try{let r=xS(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 DS(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:u,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(ke(),en));await a(e,{collection:u,event_type:"invocation",ts:new Date().toISOString(),command:Me(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:c,ts:new Date().toISOString(),command:Me(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:u,event_type:"invocation",ts:new Date().toISOString(),command:Me(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:Me(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function AS(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);lt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Me(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}),lt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Me(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 wt=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}},Ka=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Tp(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ka,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(_a(),Bf));if(o(e.positional))return await X(e,await a(),i,s,r,t);let{runGitWrapper:u}=await Promise.resolve().then(()=>($t(),oa)),c=await u(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await X(e,c,i,s,r,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(ja(),Ma)),a=await o(e.positional,{level:e.level,store:s});return await X(e,a,i,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Ua(),Ja)),a=await o(e.positional,{level:e.level,store:s});return await X(e,a,i,s,r,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Va(),qa)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await X(e,a,i,s,r,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(wn(),bn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await X(e,a,i,s)}}catch(o){return Vt(o)?(process.stdout.write(o.render()),2):await Rn("wrapper failed",e.positional,o,r)}finally{await s.close()}return await Rn("wrapper failed",e.positional,n,r)}async function Em(e=process.argv.slice(2)){let t=Hu("rsp");if(Du(e))return process.stdout.write(Mf(e)),0;let r=Au(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(vn(),qs));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(vn(),qs));return await m()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(gn(),la));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(gn(),la));return await m()}if(r.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Np(),$p)),g=await m(process.cwd());return process.stdout.write(Mo(g)),0}if(r.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Fp(),Gp));return await m(),0}if(r.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(ta(),ea));return await m(r.positional)}if(r.command==="shell-init"){let m=r.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(Wp(),Up));return process.stdout.write(g(m)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(xe(),Mc)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(tt(),Lt)),g=m(process.cwd()),y=await Df(s,g,Ln(r.positional,1));return process.stdout.write(Af(y)),y.exitCode}let i=cf(r.command);if(!s.enabled)return i?await uf(r.positional):(process.stdout.write(`${Ms()}
185
+ `),0);if(r.command==="git"&&Vs(r.positional)){let m=process.hrtime.bigint();return await X(r,await Ks(),m,void 0,await wa(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:u}=await Promise.resolve().then(()=>(tt(),Lt)),c=o(process.cwd());if(i&&af(s.measurementHoldoutShare))return await of(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Sm(),Rm)),g=o(process.cwd()),y=be(r.positional,"--socket")??g.socketPath,b=n(process.cwd(),process.env,r.storeUri??be(r.positional,"--store-uri"));return b.enabled?(await m({socketPath:y,pidPath:be(r.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:b.storeUri,ttlDays:F(r.positional,"--ttl-days")??b.ttlDays,ephemeralTtlHours:F(r.positional,"--ephemeral-ttl-hours")??b.ephemeralTtlHours,byteBudget:F(r.positional,"--byte-budget")??b.byteBudget,telemetryTtlDays:F(r.positional,"--telemetry-ttl-days")??b.telemetryTtlDays,telemetryByteBudget:F(r.positional,"--telemetry-byte-budget")??b.telemetryByteBudget,telemetryDrainIntervalMs:F(r.positional,"--telemetry-drain-interval-ms")??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:F(r.positional,"--telemetry-drain-timeout-ms")??b.telemetryDrainTimeoutMs,idleMs:F(r.positional,"--idle-ms")??b.idleMs,residentVersion:be(r.positional,"--resident-version")??t.version,registryPath:be(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Ms()}
186
+ `),0)}if(r.command==="warm-resident"){let m=o(process.cwd()),g=be(r.positional,"--socket")??m.socketPath,y=be(r.positional,"--wake-lock")??m.wakeLockPath,b=n(process.cwd(),process.env,r.storeUri??be(r.positional,"--store-uri"));if(!b.enabled)return 0;let{warmResidentServer:x}=await Promise.resolve().then(()=>(tt(),Lt));return await x({...m,socketPath:g,wakeLockPath:y},{storeUri:b.storeUri,ttlDays:F(r.positional,"--ttl-days")??b.ttlDays,ephemeralTtlHours:F(r.positional,"--ephemeral-ttl-hours")??b.ephemeralTtlHours,byteBudget:F(r.positional,"--byte-budget")??b.byteBudget,telemetryTtlDays:F(r.positional,"--telemetry-ttl-days")??b.telemetryTtlDays,telemetryByteBudget:F(r.positional,"--telemetry-byte-budget")??b.telemetryByteBudget,telemetryDrainIntervalMs:F(r.positional,"--telemetry-drain-interval-ms")??b.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:F(r.positional,"--telemetry-drain-timeout-ms")??b.telemetryDrainTimeoutMs,idleMs:F(r.positional,"--idle-ms")??b.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Os(),Ts));return await m(r.positional,{telemetryRoot:c.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(tt(),Lt)),y=r.command==="sweep"?await g(c):await m(c);return process.stdout.write(`${j(y)}
187
+ `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(ks(),sd)),g=$u(r.positional);if(!g)return process.stdout.write($({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let y=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(y.stdout),y.stderr&&process.stderr.write(`${y.stderr}
188
+ `),y.status}if(!r.command){let m=await md(s);return process.stdout.write(gd(m)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!vk(Tk(s.storeUri)))return i?await Tp(r,s,c.rootDir):(process.stdout.write($({command:Me(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(m=!0)=>Promise.resolve(new a(c,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:m})),f=()=>u(c,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Qe(),rr));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:m,telemetry:g}=await cr(s,Ln(r.positional,30));return process.stdout.write(Lo(m,g,Nu(r.positional))),0}if(r.command==="gains"){let m=await p();if(h=()=>m.close(),!Ok(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
189
+ `),1;let g=await m.telemetryGains(Ln(r.positional,28));return process.stdout.write(Sl(g)),0}if(r.command==="git"){if(Bt(f()),Vs(r.positional)){let x=process.hrtime.bigint();return await X(r,await Ks(),x,void 0,c.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>($t(),oa)),g=new wt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),b=await m(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await X(r,b,y,g,c.rootDir)}if(r.command==="gh"){Bt(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(ja(),Ma)),g=new wt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),b=await m(r.positional,{level:r.level,store:g});return await X(r,b,y,g,c.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Bt(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(Ua(),Ja)),g=new wt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),b=await m(r.positional,{level:r.level,store:g});return await X(r,b,y,g,c.rootDir)}if(r.command==="cat"){Bt(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(Va(),qa)),g=new wt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),b=await m(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await X(r,b,y,g,c.rootDir)}if(r.command==="exec"){Bt(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(wn(),bn)),g=new wt(()=>l(!1));h=()=>g.close();let y=process.hrtime.bigint(),b=await m(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await X(r,b,y,g,c.rootDir)}if(r.command==="show"&&r.handle){let m=await p();h=()=>m.close();let g=await m.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await zs(c.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let b=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(b),await zs(c.rootDir,r.handle,!1,b.length),1}let y=$({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(y),await zs(c.rootDir,r.handle,!1,y.length),1}return process.stdout.write($({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(Vt(m))return process.stdout.write(m.render()),2;if(i)return await Rn("wrapper failed",r.positional,m,c.rootDir);throw m}finally{await h?.()}}function Ok(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}De();import.meta.url===`file://${process.argv[1]}`&&Em().then(e=>process.exit(e),e=>{Vt(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write($({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Em as main,Mo as renderSetupResult,Lo as renderStats};