@reddb-io/red-skills 2.55.0 → 2.55.2

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,56 +1,55 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var yc=Object.defineProperty;var v=(e,t)=>()=>(e&&(t=e(e=0)),t);var $=(e,t)=>{for(var n in t)yc(e,n,{get:t[n],enumerable:!0})};function xi(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function Oi(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
4
- `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function Ft(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function Mn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function U(e,t){try{return t()}catch(n){throw n instanceof G?n:n instanceof Error?new G(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Pi(e){return e==="true"||e==="false"||e==="null"}function wc(e){if(!e||!hc.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function jt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=Ft(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let b=e.length-r.length+f+1;i=e.indexOf("[",b)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let w=f.trim();throw new SyntaxError(w===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${w}" between bracket and fields segment`)}return}let b=e.indexOf("}",c);b!==-1&&(a=b+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let u=Math.max(s+1,a),l=e.slice(u,o);if(l!==""){if(n){let f=l.trim();throw new SyntaxError(f===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${f}" between bracket segment and colon`)}return}let d;if(i>0){let f=e.slice(0,i).trim();d=f.startsWith('"')?Ln(f):f}let m=e.slice(o+1).trim(),h=e.slice(i+1,s),_;try{_=_c(h,t)}catch(f){if(n)throw f;return}let{length:x,delimiter:k}=_,p;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let b=e.slice(c+1,f),w=Ec(b,k);if(w!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Ei(k)}" but fields segment contains unquoted "${Ei(w)}"`);return}p=jn(b,k).map(T=>Ln(T.trim()))}}return{header:{key:d,length:x,delimiter:k,fields:p},inlineValues:m||void 0}}function _c(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Mt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Mt.pipe,n=n.slice(0,-1)),!bc.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}function Ec(e,t){for(let n of Rc)if(n!==t&&Mn(e,n)!==-1)return n}function Ei(e){return e===" "?"\\t":e}function jn(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function Di(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Ln(t);if(Pi(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(wc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Ln(e){let t=e.trim();if(t.startsWith('"')){let n=Ft(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return Oi(t.slice(1,n))}return t}function kc(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function Sc(e,t){let n=Ft(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Oi(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function vc(e,t){let n=e[t]==='"';return{...n?Sc(e,t):kc(e,t),isQuoted:n}}function $i(e){return e.trim().startsWith("[")&&Mn(e,":")!==-1}function Tc(e){return Mn(e,":")!==-1}function xc(){return{lineNumber:0,blankLines:[]}}function Oc(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=ki(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=ki(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new G("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new G(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Pc(e,t,n,r){for(let i of e){let s=Oc(i,r,t,n);s!==void 0&&(yield s)}}function ki(e,t){return Math.floor(e/t)}function lt(e,t,n,r,i){if(r.strict&&e!==t)throw new G(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Dc(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new G(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function $c(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ic(e.content,n.delimiter))throw new G(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Ii(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new G(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ic(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Nc(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=xc(),i=new Ac(Pc(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if($i(s.content)){let a=U(s,()=>jt(s.content,K,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!vi(s)){yield{type:"primitive",value:U(s,()=>Jt(s.content.trim()))};return}if(!vi(s)&&i.peekSync()?.depth===0)throw new G("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Fe(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Fe(a,i,0,n,o)}yield{type:"endObject"}}function Si(e,t,n){if(n){if(n.has(e))throw new G(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Fe(e,t,n,r,i){let s=e.content,o=U(e,()=>jt(s,K,r.strict));if(o&&o.header.key!==void 0){Si(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ut(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=U(e,()=>vc(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Si(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!l){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*Bc(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(l==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:U(e,()=>Jt(l))}}function*Bc(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Fe(s,e,r,n,i);else break}}function*Ut(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Lc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Cc(e,n,r,i,s),yield{type:"endArray"};return}yield*Mc(e,n,r,i,s),yield{type:"endArray"}}function*Lc(e,t,n,r){if(!t.trim()){lt(0,e.length,"inline array items",n,r);return}let i=U(r,()=>jn(t,e.delimiter)),s=U(r,()=>Di(i));lt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Cc(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;if(l.depth===s){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,t.advanceSync();let d=U(l,()=>jn(l.content,e.delimiter));lt(d.length,e.fields.length,"tabular row values",r,l);let m=U(l,()=>Di(d));yield*Uc(e.fields,m),o++}else break}lt(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Ii(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&$c(t.peekSync(),s,e)}function*Mc(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;let d=l.content.startsWith("- ")||l.content==="-";if(l.depth===s&&d){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,yield*jc(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}lt(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Ii(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Dc(t.peekSync(),s,e.length)}function*jc(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new G('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if($i(i)){let a=U(s,()=>jt(i,K,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=U(s,()=>jt(i,K,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ut(a,o.inlineValues,e,t+1,n,s);let u=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<u)break;if(l.depth===u&&!l.content.startsWith("- "))e.advanceSync(),yield*Fe(l,e,u,n,c);else break}yield{type:"endObject"};return}if(Tc(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Fe(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<c)break;if(u.depth===c&&!u.content.startsWith("- "))e.advanceSync(),yield*Fe(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:U(s,()=>Jt(i))}}function vi(e){let t=e.content;if(t.startsWith('"')){let n=Ft(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Uc(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function te(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return te(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(te);if(e instanceof Set)return Array.from(e).map(te);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),te(n)]));if(Gc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=te(e[n]));return t}return null}function $e(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function fe(e){return Array.isArray(e)}function I(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function dt(e){return Object.keys(e).length===0}function Gc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function ft(e){return e.length===0||e.every(t=>$e(t))}function Fc(e){return e.length===0||e.every(t=>fe(t))}function Ai(e){return e.length===0||e.every(t=>I(t))}function Vc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Ni(e){return/^[A-Z_]\w*$/i.test(e)}function Hc(e,t=K){return!(!e||e!==e.trim()||Pi(e)||Wc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Wc(e){return Jc.test(e)||qc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if(I(e)){let n={},r=e[Bi];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(u=>Ni(u))){Kc(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Gn(c,a))Un(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function Kc(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],u=i[c];if(u===void 0){let l={};i[c]=l,i=l}else if(I(u))i=u;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof u}`);let l={};i[c]=l,i=l}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(Gn(o,n))Un(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Un(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Gn(s,i))Un(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Gn(e,t){return I(e)&&I(t)}function zc(e){let t={stack:[],root:void 0};for(let n of e)Yc(t,n);return Qc(t)}function Yc(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,Bi,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function Qc(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function Xc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!I(t))return;let{segments:a,tail:c,leafValue:u}=Zc(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Ni(m)))return;let l=eu(a),d=s?`${s}.${l}`:l;if(!n.includes(l)&&!(i&&i.has(d)))return{foldedKey:l,remainder:c,leafValue:u,segmentCount:a.length}}function Zc(e,t,n){let r=[e],i=t;for(;r.length<n&&I(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!I(i)||dt(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function eu(e){return e.join(".")}function qe(e,t){return e===null?gc:typeof e=="boolean"||typeof e=="number"?String(e):tu(e,t)}function tu(e,t=K){return Hc(e,t)?e:`"${xi(e)}"`}function Ve(e){return Vc(e)?e:`"${xi(e)}"`}function Li(e,t=K){return e.map(n=>qe(n,t)).join(t)}function Ie(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ve(n)),s+=`[${e}${i!==K?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*nu(e,t,n){if($e(e)){let r=qe(e,t.delimiter);r!==""&&(yield r);return}fe(e)?yield*Cn(void 0,e,n,t):I(e)&&(yield*Je(e,n,t))}function*Je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*ru(c,u,t,n,o,r,i,a)}function*ru(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,u=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=Xc(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:h,leafValue:_,segmentCount:x}=d,k=Ve(m);if(h===void 0){if($e(_)){yield C(n,`${k}: ${qe(_,r.delimiter)}`,r.indent);return}else if(fe(_)){yield*Cn(m,_,n,r);return}else if(I(_)&&dt(_)){yield C(n,`${k}:`,r.indent);return}}if(I(h)){yield C(n,`${k}:`,r.indent);let p=u-x,f=o?`${o}.${m}`:m;yield*Je(h,n+1,r,s,f,p);return}}}let l=Ve(e);$e(t)?yield C(n,`${l}: ${qe(t,r.delimiter)}`,r.indent):fe(t)?yield*Cn(e,t,n,r):I(t)&&(yield C(n,`${l}:`,r.indent),dt(t)||(yield*Je(t,n+1,r,s,c,u)))}function*Cn(e,t,n,r){if(t.length===0){yield C(n,e!=null?`${Ve(e)}: []`:"[]",r.indent);return}if(ft(t)){yield C(n,qt(t,r.delimiter,e),r.indent);return}if(Fc(t)&&t.every(i=>ft(i))){yield*iu(e,t,n,r);return}if(Ai(t)){let i=Ci(t);i?yield*su(e,t,i,n,r):yield*Ti(e,t,n,r);return}yield*Ti(e,t,n,r)}function*iu(e,t,n,r){yield C(n,Ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(ft(i)){let s=qt(i,r.delimiter);yield W(n+1,s,r.indent)}}function qt(e,t,n){let r=Ie(e.length,{key:n,delimiter:t}),i=Li(e,t);return e.length===0?r:`${r} ${i}`}function*su(e,t,n,r,i){yield C(r,Ie(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Mi(t,n,r+1,i)}function Ci(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&ou(e,n))return n}function ou(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!$e(n[r]))return!1}return!0}function*Mi(e,t,n,r){for(let i of e)yield C(n,Li(t.map(s=>i[s]),r.delimiter),r.indent)}function*Ti(e,t,n,r){yield C(n,Ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Fn(i,n+1,r)}function*au(e,t,n){if(dt(e)){yield C(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(fe(s)&&Ai(s)){let c=Ci(s);if(c){yield W(t,Ie(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Mi(s,c,t+2,n),o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n));return}}let a=Ve(i);if($e(s))yield W(t,`${a}: ${qe(s,n.delimiter)}`,n.indent);else if(fe(s))if(s.length===0)yield W(t,`${a}: []`,n.indent);else if(ft(s))yield W(t,`${a}${qt(s,n.delimiter)}`,n.indent);else{yield W(t,`${a}${Ie(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Fn(c,t+2,n)}else I(s)&&(yield W(t,`${a}:`,n.indent),dt(s)||(yield*Je(s,t+2,n)));o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n))}function*Fn(e,t,n){if($e(e))yield W(t,qe(e,n.delimiter),n.indent);else if(fe(e))if(ft(e))yield W(t,qt(e,n.delimiter),n.indent);else{yield W(t,Ie(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Fn(r,t+1,n)}else I(e)&&(yield*au(e,t,n))}function C(e,t,n){return" ".repeat(n*e)+t}function W(e,t,n){return C(e,"- "+t,n)}function cu(e,t){let n=t("",e,[]);return n===void 0?Gt(e,t,[]):Gt(te(n),t,[])}function Gt(e,t,n){return I(e)?uu(e,t,n):fe(e)?lu(e,t,n):e}function uu(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=Gt(te(a),t,o))}return r}function lu(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=te(a);r.push(Gt(c,t,o))}return r}function P(e,t){return Array.from(ji(e,t)).join(`
5
- `)}function Jn(e,t){return Ui(e.split(`
6
- `),t)}function ji(e,t){let n=te(e),r=du(t);return nu(r.replacer?cu(n,r.replacer):n,r,0)}function Ui(e,t){let n=fu(t),r=zc(Nc(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ct(r,n.strict):r}function du(e){return{indent:e?.indent??2,delimiter:e?.delimiter??K,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function fu(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var gc,Mt,K,G,hc,bc,Rc,Ac,Jc,qc,Bi,Gi=v(()=>{gc="null",Mt={comma:",",tab:" ",pipe:"|"},K=Mt.comma;G=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};hc=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;bc=/^(?:0|[1-9]\d*)$/;Rc=[","," ","|"];Ac=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};Jc=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,qc=/^0\d+$/;Bi=Symbol("quotedKey")});var me=v(()=>{"use strict";Gi()});function Vn(e,t,n=Ji){let r=Math.max(0,Math.floor(e)),i=n in qi?n:Ji,s=qi[i],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:qn(r,s),dollars_saved_low_usd:o==null?null:qn(o,s),dollars_saved_high_usd:a==null?null:qn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:pu}}function qn(e,t){return yu(Math.max(0,e)/1e6*t)}function mt(e){return`$${e.toFixed(6)}`}function yu(e){return Math.round(e*1e6)/1e6}var Ji,qi,pu,Hn=v(()=>{"use strict";Ji="gpt-5",qi={"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},pu="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as gu,readFileSync as tg}from"node:fs";import{dirname as hu,join as wu}from"node:path";function Vi(e,t){let n=e;for(let r=0;r<16;r++){let i=wu(n,t);if(gu(i))return i;let s=hu(n);if(s===n)break;n=s}return null}function bu(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Wn(e,t){let n=[];for(let r of e.split(`
7
- `)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let u=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return bu(u)}}var Hi=v(()=>{});import{createConnection as _u}from"node:net";async function We(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=_u(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
3
+ var yc=Object.defineProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>{for(var n in t)yc(e,n,{get:t[n],enumerable:!0})};function Pi(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function Di(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
4
+ `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function Ft(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function jn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function j(e,t){try{return t()}catch(n){throw n instanceof U?n:n instanceof Error?new U(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function $i(e){return e==="true"||e==="false"||e==="null"}function bc(e){if(!e||!wc.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function jt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=Ft(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let w=e.length-r.length+f+1;i=e.indexOf("[",w)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let g=f.trim();throw new SyntaxError(g===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${g}" between bracket and fields segment`)}return}let w=e.indexOf("}",c);w!==-1&&(a=w+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let u=Math.max(s+1,a),l=e.slice(u,o);if(l!==""){if(n){let f=l.trim();throw new SyntaxError(f===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${f}" between bracket segment and colon`)}return}let d;if(i>0){let f=e.slice(0,i).trim();d=f.startsWith('"')?Cn(f):f}let m=e.slice(o+1).trim(),b=e.slice(i+1,s),_;try{_=Rc(b,t)}catch(f){if(n)throw f;return}let{length:T,delimiter:v}=_,p;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let w=e.slice(c+1,f),g=kc(w,v);if(g!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Si(v)}" but fields segment contains unquoted "${Si(g)}"`);return}p=Un(w,v).map(E=>Cn(E.trim()))}}return{header:{key:d,length:T,delimiter:v,fields:p},inlineValues:m||void 0}}function Rc(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Mt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Mt.pipe,n=n.slice(0,-1)),!_c.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}function kc(e,t){for(let n of Ec)if(n!==t&&jn(e,n)!==-1)return n}function Si(e){return e===" "?"\\t":e}function Un(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function Ii(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Cn(t);if($i(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(bc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Cn(e){let t=e.trim();if(t.startsWith('"')){let n=Ft(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return Di(t.slice(1,n))}return t}function Sc(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function vc(e,t){let n=Ft(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Di(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function Tc(e,t){let n=e[t]==='"';return{...n?vc(e,t):Sc(e,t),isQuoted:n}}function Ai(e){return e.trim().startsWith("[")&&jn(e,":")!==-1}function xc(e){return jn(e,":")!==-1}function Oc(){return{lineNumber:0,blankLines:[]}}function Pc(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=vi(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=vi(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new U("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new U(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Dc(e,t,n,r){for(let i of e){let s=Pc(i,r,t,n);s!==void 0&&(yield s)}}function vi(e,t){return Math.floor(e/t)}function ct(e,t,n,r,i){if(r.strict&&e!==t)throw new U(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function $c(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new U(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Ic(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ac(e.content,n.delimiter))throw new U(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Ni(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new U(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ac(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Bc(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=Oc(),i=new Nc(Dc(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(Ai(s.content)){let a=j(s,()=>jt(s.content,W,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!xi(s)){yield{type:"primitive",value:j(s,()=>Jt(s.content.trim()))};return}if(!xi(s)&&i.peekSync()?.depth===0)throw new U("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Fe(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Fe(a,i,0,n,o)}yield{type:"endObject"}}function Ti(e,t,n){if(n){if(n.has(e))throw new U(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Fe(e,t,n,r,i){let s=e.content,o=j(e,()=>jt(s,W,r.strict));if(o&&o.header.key!==void 0){Ti(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ut(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=j(e,()=>Tc(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Ti(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!l){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*Lc(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(l==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:j(e,()=>Jt(l))}}function*Lc(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Fe(s,e,r,n,i);else break}}function*Ut(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Cc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Mc(e,n,r,i,s),yield{type:"endArray"};return}yield*jc(e,n,r,i,s),yield{type:"endArray"}}function*Cc(e,t,n,r){if(!t.trim()){ct(0,e.length,"inline array items",n,r);return}let i=j(r,()=>Un(t,e.delimiter)),s=j(r,()=>Ii(i));ct(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Mc(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;if(l.depth===s){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,t.advanceSync();let d=j(l,()=>Un(l.content,e.delimiter));ct(d.length,e.fields.length,"tabular row values",r,l);let m=j(l,()=>Ii(d));yield*Gc(e.fields,m),o++}else break}ct(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Ni(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Ic(t.peekSync(),s,e)}function*jc(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;let d=l.content.startsWith("- ")||l.content==="-";if(l.depth===s&&d){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,yield*Uc(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}ct(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Ni(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&$c(t.peekSync(),s,e.length)}function*Uc(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new U('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(Ai(i)){let a=j(s,()=>jt(i,W,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=j(s,()=>jt(i,W,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ut(a,o.inlineValues,e,t+1,n,s);let u=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<u)break;if(l.depth===u&&!l.content.startsWith("- "))e.advanceSync(),yield*Fe(l,e,u,n,c);else break}yield{type:"endObject"};return}if(xc(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Fe(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<c)break;if(u.depth===c&&!u.content.startsWith("- "))e.advanceSync(),yield*Fe(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:j(s,()=>Jt(i))}}function xi(e){let t=e.content;if(t.startsWith('"')){let n=Ft(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Gc(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function ee(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return ee(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(ee);if(e instanceof Set)return Array.from(e).map(ee);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),ee(n)]));if(Fc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=ee(e[n]));return t}return null}function Pe(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function de(e){return Array.isArray(e)}function $(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ut(e){return Object.keys(e).length===0}function Fc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function lt(e){return e.length===0||e.every(t=>Pe(t))}function Jc(e){return e.length===0||e.every(t=>de(t))}function Bi(e){return e.length===0||e.every(t=>$(t))}function Wc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Li(e){return/^[A-Z_]\w*$/i.test(e)}function Hc(e,t=W){return!(!e||e!==e.trim()||$i(e)||Kc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Kc(e){return qc.test(e)||Vc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if($(e)){let n={},r=e[Ci];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(u=>Li(u))){zc(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Fn(c,a))Gn(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function zc(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],u=i[c];if(u===void 0){let l={};i[c]=l,i=l}else if($(u))i=u;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof u}`);let l={};i[c]=l,i=l}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(Fn(o,n))Gn(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Gn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Fn(s,i))Gn(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Fn(e,t){return $(e)&&$(t)}function Yc(e){let t={stack:[],root:void 0};for(let n of e)Qc(t,n);return Xc(t)}function Qc(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,Ci,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function Xc(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function Zc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!$(t))return;let{segments:a,tail:c,leafValue:u}=eu(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Li(m)))return;let l=tu(a),d=s?`${s}.${l}`:l;if(!n.includes(l)&&!(i&&i.has(d)))return{foldedKey:l,remainder:c,leafValue:u,segmentCount:a.length}}function eu(e,t,n){let r=[e],i=t;for(;r.length<n&&$(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!$(i)||ut(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function tu(e){return e.join(".")}function qe(e,t){return e===null?hc:typeof e=="boolean"||typeof e=="number"?String(e):nu(e,t)}function nu(e,t=W){return Hc(e,t)?e:`"${Pi(e)}"`}function Ve(e){return Wc(e)?e:`"${Pi(e)}"`}function Mi(e,t=W){return e.map(n=>qe(n,t)).join(t)}function De(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ve(n)),s+=`[${e}${i!==W?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*ru(e,t,n){if(Pe(e)){let r=qe(e,t.delimiter);r!==""&&(yield r);return}de(e)?yield*Mn(void 0,e,n,t):$(e)&&(yield*Je(e,n,t))}function*Je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*iu(c,u,t,n,o,r,i,a)}function*iu(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,u=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=Zc(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:b,leafValue:_,segmentCount:T}=d,v=Ve(m);if(b===void 0){if(Pe(_)){yield B(n,`${v}: ${qe(_,r.delimiter)}`,r.indent);return}else if(de(_)){yield*Mn(m,_,n,r);return}else if($(_)&&ut(_)){yield B(n,`${v}:`,r.indent);return}}if($(b)){yield B(n,`${v}:`,r.indent);let p=u-T,f=o?`${o}.${m}`:m;yield*Je(b,n+1,r,s,f,p);return}}}let l=Ve(e);Pe(t)?yield B(n,`${l}: ${qe(t,r.delimiter)}`,r.indent):de(t)?yield*Mn(e,t,n,r):$(t)&&(yield B(n,`${l}:`,r.indent),ut(t)||(yield*Je(t,n+1,r,s,c,u)))}function*Mn(e,t,n,r){if(t.length===0){yield B(n,e!=null?`${Ve(e)}: []`:"[]",r.indent);return}if(lt(t)){yield B(n,qt(t,r.delimiter,e),r.indent);return}if(Jc(t)&&t.every(i=>lt(i))){yield*su(e,t,n,r);return}if(Bi(t)){let i=ji(t);i?yield*ou(e,t,i,n,r):yield*Oi(e,t,n,r);return}yield*Oi(e,t,n,r)}function*su(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(lt(i)){let s=qt(i,r.delimiter);yield V(n+1,s,r.indent)}}function qt(e,t,n){let r=De(e.length,{key:n,delimiter:t}),i=Mi(e,t);return e.length===0?r:`${r} ${i}`}function*ou(e,t,n,r,i){yield B(r,De(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Ui(t,n,r+1,i)}function ji(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&au(e,n))return n}function au(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!Pe(n[r]))return!1}return!0}function*Ui(e,t,n,r){for(let i of e)yield B(n,Mi(t.map(s=>i[s]),r.delimiter),r.indent)}function*Oi(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Jn(i,n+1,r)}function*cu(e,t,n){if(ut(e)){yield B(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(de(s)&&Bi(s)){let c=ji(s);if(c){yield V(t,De(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Ui(s,c,t+2,n),o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n));return}}let a=Ve(i);if(Pe(s))yield V(t,`${a}: ${qe(s,n.delimiter)}`,n.indent);else if(de(s))if(s.length===0)yield V(t,`${a}: []`,n.indent);else if(lt(s))yield V(t,`${a}${qt(s,n.delimiter)}`,n.indent);else{yield V(t,`${a}${De(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Jn(c,t+2,n)}else $(s)&&(yield V(t,`${a}:`,n.indent),ut(s)||(yield*Je(s,t+2,n)));o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n))}function*Jn(e,t,n){if(Pe(e))yield V(t,qe(e,n.delimiter),n.indent);else if(de(e))if(lt(e))yield V(t,qt(e,n.delimiter),n.indent);else{yield V(t,De(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Jn(r,t+1,n)}else $(e)&&(yield*cu(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function V(e,t,n){return B(e,"- "+t,n)}function uu(e,t){let n=t("",e,[]);return n===void 0?Gt(e,t,[]):Gt(ee(n),t,[])}function Gt(e,t,n){return $(e)?lu(e,t,n):de(e)?du(e,t,n):e}function lu(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=Gt(ee(a),t,o))}return r}function du(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=ee(a);r.push(Gt(c,t,o))}return r}function P(e,t){return Array.from(Gi(e,t)).join(`
5
+ `)}function qn(e,t){return Fi(e.split(`
6
+ `),t)}function Gi(e,t){let n=ee(e),r=fu(t);return ru(r.replacer?uu(n,r.replacer):n,r,0)}function Fi(e,t){let n=mu(t),r=Yc(Bc(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ct(r,n.strict):r}function fu(e){return{indent:e?.indent??2,delimiter:e?.delimiter??W,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function mu(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var hc,Mt,W,U,wc,_c,Ec,Nc,qc,Vc,Ci,Ji=S(()=>{hc="null",Mt={comma:",",tab:" ",pipe:"|"},W=Mt.comma;U=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};wc=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;_c=/^(?:0|[1-9]\d*)$/;Ec=[","," ","|"];Nc=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};qc=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Vc=/^0\d+$/;Ci=Symbol("quotedKey")});var fe=S(()=>{"use strict";Ji()});function Wn(e,t,n=Vi){let r=Math.max(0,Math.floor(e)),i=n in Wi?n:Vi,s=Wi[i],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:Vn(r,s),dollars_saved_low_usd:o==null?null:Vn(o,s),dollars_saved_high_usd:a==null?null:Vn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:gu}}function Vn(e,t){return yu(Math.max(0,e)/1e6*t)}function dt(e){return`$${e.toFixed(6)}`}function yu(e){return Math.round(e*1e6)/1e6}var Vi,Wi,gu,Hn=S(()=>{"use strict";Vi="gpt-5",Wi={"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},gu="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as hu,readFileSync as fy}from"node:fs";import{dirname as wu,join as bu}from"node:path";function Hi(e,t){let n=e;for(let r=0;r<16;r++){let i=bu(n,t);if(hu(i))return i;let s=wu(n);if(s===n)break;n=s}return null}function _u(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Kn(e,t){let n=[];for(let r of e.split(`
7
+ `)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let u=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return _u(u)}}var Ki=S(()=>{});import{createConnection as Ru}from"node:net";async function He(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Ru(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
8
8
  `)}),s.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
9
- `);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(h){i(h)}}),s.end()}),s.on("error",l=>u(()=>i(l))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var Kn=v(()=>{});import{createHash as Ru,randomUUID as Qi}from"node:crypto";import{spawn as Xi}from"node:child_process";import{constants as zn}from"node:fs";import{readFileSync as Eu}from"node:fs";import{mkdir as Vt,open as ku,readFile as Zi,rename as Su,rm as z,stat as vu,writeFile as Tu}from"node:fs/promises";import{tmpdir as xu}from"node:os";import{dirname as pe,join as F,resolve as Ht}from"node:path";import{fileURLToPath as es}from"node:url";function ne(e){let t=Nu(e)??Ht(e),n=Au(t);return{rootDir:t,socketPath:F(n,"rsp.sock"),pidPath:F(n,"rsp.pid"),lockPath:F(n,"rsp.lock"),wakeLockPath:F(t,".red","tmp","rsp.wake.lock"),summaryPath:F(t,".red","tmp","rsp-status-summary.json"),registryPath:F(t,".red","tmp","rsp-resident.pid.json")}}async function Wt(e,t){if(await Vt(pe(e.socketPath),{recursive:!0,mode:448}),await zi(e.socketPath,t))return;await Ki(e,t);let n=await ss(e.lockPath);if(n)try{if(await zi(e.socketPath,t))return;await Ki(e,t),await Pu(e.socketPath);let r=Du(e,t);await Wi(e.socketPath,r);return}finally{await n.close(),await z(e.lockPath,{force:!0})}await Wi(e.socketPath)}async function re(e,t=200){try{return await ns(e,t)!=null}catch{return!1}}async function ns(e,t=200){let n=await We({socketPath:e,timeoutMs:t},{id:Qi(),op:"ping"});return n.ok?us(n.value)?{version:Mu(n.value.version)}:{}:null}async function Kt(e,t){if(await Vt(pe(e.socketPath),{recursive:!0,mode:448}),await re(e.socketPath,50))return!1;let n=await ss(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=as(t);return Xi(r,[...i,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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 rs(e,t){try{await Wt(e,t)}finally{await z(e.wakeLockPath,{force:!0})}}async function yt(e){try{let t=JSON.parse(await Zi(e,"utf8"));return ju(t)?t:null}catch{return null}}async function zt(e,t){let n={version:ts,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 Vt(pe(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Tu(r,`${JSON.stringify(n)}
10
- `,{encoding:"utf8",mode:384}),await Su(r,e)}async function Yt(e,t=process.pid){try{let n=await yt(e);if(n&&n.pid!==t)return;await z(e,{force:!0})}catch{}}async function pt(e){let t=await yt(e.registryPath);if(!t)try{return await Zi(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Ke(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await re(t.socket_path,100);return n&&await Iu(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function is(e){let t=await pt(e);return t.state==="registered-dead"||t.state==="invalid"?(await z(e.registryPath,{force:!0}),await pt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await os(t.entry.pid),await z(e.registryPath,{force:!0}),await z(t.entry.socket_path,{force:!0}),await pt(e)):t}async function Wi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await re(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function Pu(e){await z(e,{force:!0})}async function ss(e){await Vt(pe(e),{recursive:!0,mode:448});try{return await ku(e,zn.O_CREAT|zn.O_EXCL|zn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Du(e,t){let[n,r]=as(t),i=Xi(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}async function Ki(e,t){try{let n=await yt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Ke(n.pid)){await z(e.registryPath,{force:!0});return}if(await re(n.socket_path,100))return;if(cs(t.clientVersion,n.resident_version)&&(await $u(n.pid,1500),!Ke(n.pid))){await z(e.registryPath,{force:!0});return}await os(n.pid),await z(e.registryPath,{force:!0})}catch{}}function Ke(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function os(e){if(!Ke(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Ke(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function $u(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function Iu(e){if(!e.startsWith("file://"))return!1;try{return await vu(es(e)),!1}catch(t){return t.code==="ENOENT"}}function as(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Ht(process.argv[1]):es(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Au(e){let t=Ru("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=F(n,"red-skills",t);if(F(i,"rsp.sock").length<Ou)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return F(xu(),`red-skills-${r}`,t)}function Nu(e){let t=Ht(e);for(let n=0;n<32;n++){try{let i=Yn(F(t,".git"));if(i!=null)return Bu(t,i)??t;if(Yn(F(t,".git","HEAD"))!=null||Yn(F(t,".red","config.yaml"))!=null)return t}catch{}let r=pe(t);if(r===t)return null;t=r}return null}function Bu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ht(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?pe(pe(pe(r))):null}function Yn(e){try{return Eu(e,"utf8")}catch{return null}}async function zi(e,t){let n=await ns(e).catch(()=>null);return n?cs(t.clientVersion,n.version)?(await Lu(e,t.clientVersion),await Uu(e),!1):!0:!1}async function Lu(e,t){try{await We({socketPath:e,timeoutMs:200},{id:Qi(),op:"handover",clientVersion:t})}catch{}}function cs(e,t){return!e||!t?!1:Cu(e,t)>0}function Cu(e,t){let n=Yi(e),r=Yi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Yi(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 us(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mu(e){return typeof e=="string"&&e.length>0?e:void 0}function ju(e){return us(e)&&e.version===ts&&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 Uu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await re(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ou,ts,Qt=v(()=>{Kn();Ou=108,ts=1});var ys={};$(ys,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>se,DEFAULT_RSP_IDLE_MS:()=>nn,DEFAULT_RSP_STORE_PATH:()=>Zt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>fs,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>ms,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>oe,MIN_RSP_IDLE_MS:()=>ps,resolveRspConfig:()=>ge});import{readFileSync as Gu}from"node:fs";import{join as ls,resolve as ds}from"node:path";function ge(e,t,n){let r=Vi(ds(e),ls(".red","config.yaml")),i=r?Gu(r,"utf8"):"",s=Wn(i,"rsp.enabled")==="true",o=ye(ie(i,"rsp.ttlDays"),oe),a=ye(ie(i,"rsp.byteBudget"),ae),c=ye(ie(i,"rsp.telemetryTtlDays"),en),u=ye(ie(i,"rsp.telemetryByteBudget")??ie(i,"rsp.byteBudget"),tn),l=ye(Xt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ie(i,"rsp.telemetryDrainIntervalMs"),fs),d=ye(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ie(i,"rsp.telemetryDrainTimeoutMs"),ms),m=Fu(Xt(t.RSP_IDLE_MS)??ie(i,"rsp.idleMs"),nn,ps),h=ye(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ie(i,"rsp.heavyGitByteThreshold"),se),_=ne(e).rootDir,x=n??t.RSP_STORE_URI??`file://${ls(ds(_),Zt)}`;return{enabled:s,storeUri:x,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:h}}function ie(e,t){let n=Wn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ye(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Fu(e,t,n){let r=ye(e,t);return Math.max(r,n)}function Xt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var se,Zt,oe,ae,en,tn,fs,ms,nn,ps,Y=v(()=>{"use strict";Hi();Qt();se=8*1024,Zt=".red/tmp/red-skills.rdb",oe=7,ae=64*1024*1024,en=90,tn=4*1024*1024,fs=3e4,ms=2e3,nn=5*6e4,ps=5e3});var gs=v(()=>{"use strict";Kn()});var ze={};$(ze,{ResidentRspElisionStore:()=>gt,ensureResidentServer:()=>Wt,kickResidentServer:()=>Kt,pingResident:()=>re,readResidentRegistry:()=>yt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>pt,resolveResidentPaths:()=>ne,sweepResidentRegistry:()=>is,warmResidentServer:()=>rs,writeResidentRegistry:()=>zt});import{randomUUID as Ju}from"node:crypto";function hs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var gt,he=v(()=>{"use strict";gs();Qt();gt=class{constructor(t,n){this.paths=t;this.config=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let i=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!i?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return i}async get(t){let n=await this.request({op:"get",handle:t});return n?hs(n)&&n.status==="expired"?n:!hs(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}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,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){await Wt(this.paths,this.config);let n=await We(this.paths,{...t,id:Ju()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var tr={};$(tr,{RSP_WRAPPER_CAPABILITIES:()=>wt,formatCodexHookDecision:()=>Ss,formatHookDecision:()=>ks,hookDecisionFromClaudePreExecJson:()=>_s,hookDecisionFromCodexPreExecJson:()=>Rs,rewriteCommand:()=>bs,rewriteTableFromCapabilities:()=>ws,runClaudePreExecHook:()=>Ku,runCodexPreExecHook:()=>zu});import{readFileSync as rn}from"node:fs";import{existsSync as qu}from"node:fs";import{fileURLToPath as Vu}from"node:url";function ws(e){let t=new Map;for(let n of e)t.set(ht(n.command),["rsp",...n.wrapper]);return t}function bs(e){let t=nl(e);if(!t||t.length>0&&Ts(t[0]))return Xn(e);let n=Wu(t);if(n)return n;let r=Hu.get(ht(t));if(!r)return Xn(e);let i=wt.find(s=>ht(s.command)===ht(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??ht(t)}}function Wu(e){let t=e[0];return t==="cat"&&e.length===2&&Qn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Qn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Qn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Qn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function _s(e,t){return await Es(e,t)}async function Rs(e,t){return await Es(e,t)}async function Es(e,t){let n=dl(e),r=J(n,["cwd"])||J(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Yu)(r))return{kind:"passthrough",reason:"disabled"};let s=tl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??bs)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Qu)(r)?o:(await(t.wakeResident??Xu)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function ks(e){return e.kind==="rewrite"?{stdout:`${e.command}
11
- `,status:0}:{stdout:"",status:1}}function Ss(e){return e.kind!=="rewrite"?{stdout:"",status:0}:{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e.command}}})}
12
- `,status:0}}async function Ku(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await _s(t,{cwd:process.cwd()}),r=ks(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function zu(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await Rs(t,{cwd:process.cwd()}),r=Ss(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Yu(e){return ge(e,process.env).enabled}async function Qu(e){let t=ne(e);return await re(t.socketPath,50)}async function Xu(e){let t=ge(e,process.env);if(!t.enabled||!el(t))return;let n=ne(e);await Kt(n,Zu(t))}function Zu(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function el(e){if(!e.storeUri.startsWith("file://"))return!0;try{return qu(Vu(e.storeUri))}catch{return!1}}function tl(e){return J(e,["tool_input","command"])||J(e,["tool_input","cmd"])||J(e,["tool_input","args","command"])||J(e,["input","command"])||J(e,["input","cmd"])||J(e,["arguments","command"])||J(e,["arguments","cmd"])||J(e,["command"])||J(e,["cmd"])}function nl(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&Ts(r))?null:n}function Xn(e){let t=e.trim();return rl(t)?{kind:"rewrite",command:`rsp exec -- ${ll(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function rl(e){return!(!e||!sl(e)||!al(e)||ol(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||cl(e,"rsp")||vs(e,il)||ul(e))}function sl(e){return/&&|[;|]/.test(e)}function ol(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function al(e){return Zn(e).some(t=>{let n=er(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,i)=>i>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function vs(e,t){return Zn(e).some(n=>{let r=er(n)[0];return r?t.has(r):!1})}function cl(e,t){return vs(e,new Set([t]))}function ul(e){return Zn(e).some(t=>{let n=er(t);return n[0]==="grep"&&n.includes("-q")})}function Zn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function er(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ll(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ts(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ht(e){return e.join("\0")}function dl(e){try{let t=JSON.parse(e);return xs(t)?t:{}}catch{return{}}}function J(e,t){let n=e;for(let r of t){if(!xs(n))return"";n=n[r]}return typeof n=="string"?n:""}function xs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wt,Hu,il,sn=v(()=>{"use strict";Y();he();wt=[{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"]}],Hu=ws(wt);il=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var rr={};$(rr,{NORMALIZATION_ALLOWLIST:()=>Ls,NORMALIZE_ANSI:()=>Ds,NORMALIZE_BLANK_LINES:()=>As,NORMALIZE_CR_PROGRESS:()=>$s,NORMALIZE_JSON_TOON:()=>Bs,NORMALIZE_TRAILING_WHITESPACE:()=>Is,formatCodexNormalizeDecision:()=>Gs,formatNormalizeDecision:()=>Us,hookDecisionFromClaudePostExecJson:()=>Cs,hookDecisionFromCodexPostExecJson:()=>Ms,normalizeOutput:()=>Ye,renderGenericJsonLane:()=>bt,runClaudePostExecHook:()=>pl,runCodexPostExecHook:()=>yl,transcodeJsonToToon:()=>Ns});import{readFileSync as on}from"node:fs";function Ns(e,t){let n=t?.encode??P,r=t?.decode??Jn,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return nr(s,a)?o:e}async function bt(e,t={}){let n=bl(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:P(r),detected:!0,lossy:!1};let i=r.length,s=Ps(t.minTokens,fl),o=Ps(t.maxItems,ml);if(!(i>o&&Sl(e)>=s))return{output:P(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=_l(r,o),u={items:c},l=`items: ${c.length} of ${i} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`;return{output:[l,m,P(u)].filter(Boolean).join(`
13
- `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Ye(e){let t=e;for(let n of Ls)t=n.apply(t);return t}async function Cs(e,t){return await js(e,t)}async function Ms(e,t){return await js(e,t)}async function js(e,t){let n=wl(e),r=vl(n,["cwd"])||t.cwd;if(!await(t.isEnabled??hl)(r))return{kind:"passthrough",reason:"disabled"};let s=Tl(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??Ye)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Us(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Gs(e){return{stdout:"",status:0}}async function pl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await Cs(t,{cwd:process.cwd()}),r=Us(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function yl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await Ms(t,{cwd:process.cwd()}),r=Gs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function gl(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let i=e.charCodeAt(n+1);if(i===93){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s===7){n++;break}if(s===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(i===91){for(n+=2;n<e.length&&Os(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Os(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Os(e){return e>=32&&e<=63}function hl(e){return ge(e,process.env).enabled}function wl(e){try{let t=JSON.parse(e);return we(t)?t:{}}catch{return{}}}function bl(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return we(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function _l(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let s=0;s<r;s++)n.add(s),n.add(e.length-1-s);for(let s=0;s<e.length;s++)Rl(e[s])&&n.add(s);for(let s of El(e))n.add(s);for(let s of kl(e))n.add(s);let i=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let s=0;n.size<t&&s<i;s++)for(let o=s;n.size<t&&o<e.length;o+=i)n.add(o);return[...n].sort((s,o)=>s-o).slice(0,t).map(s=>e[s])}function Rl(e){if(!we(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function El(e){let t=new Map;e.forEach((r,i)=>{if(we(r))for(let[s,o]of Object.entries(r)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=t.get(s)??[];a.push({index:i,value:o}),t.set(s,a)}});let n=new Set;for(let r of t.values()){if(r.length<3)continue;let i=r.reduce((a,c)=>a+c.value,0)/r.length,s=r.reduce((a,c)=>a+Math.pow(c.value-i,2),0)/r.length,o=Math.sqrt(s);if(o!==0)for(let a of r)Math.abs(a.value-i)>o*2&&n.add(a.index)}return[...n]}function kl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!we(r)||!we(i)))for(let[s,o]of Object.entries(i)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=r[s];typeof a!="number"||!Number.isFinite(a)||(a===0?Math.abs(o)>10:Math.abs((o-a)/a)>=2)&&t.add(n)}}return[...t]}function Sl(e){return Math.ceil(e.length/4)}function Ps(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function vl(e,t){let n=e;for(let r of t){if(!we(n))return"";n=n[r]}return typeof n=="string"?n:""}function Tl(e,t){let n=e[t];return we(n)?n:null}function we(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(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)=>nr(a,o[c]))}let n=e,r=t,i=Object.keys(n),s=Object.keys(r);return i.length!==s.length?!1:i.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&nr(n[o],r[o]))}var Ds,$s,Is,As,Bs,fl,ml,Ls,_t=v(()=>{"use strict";me();Y();Ds={id:"ansi",apply:gl},$s={id:"cr-progress",apply:e=>e.split(`
9
+ `);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(b){i(b)}}),s.end()}),s.on("error",l=>u(()=>i(l))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var zn=S(()=>{});import{createHash as Eu,randomUUID as Zi}from"node:crypto";import{spawn as es}from"node:child_process";import{constants as Yn}from"node:fs";import{readFileSync as ku}from"node:fs";import{mkdir as Vt,open as Su,readFile as ts,rename as vu,rm as H,stat as Tu,writeFile as xu}from"node:fs/promises";import{tmpdir as Ou}from"node:os";import{dirname as me,join as G,resolve as Wt}from"node:path";import{fileURLToPath as ns}from"node:url";function te(e){let t=Bu(e)??Wt(e),n=Nu(t);return{rootDir:t,socketPath:G(n,"rsp.sock"),pidPath:G(n,"rsp.pid"),lockPath:G(n,"rsp.lock"),wakeLockPath:G(t,".red","tmp","rsp.wake.lock"),summaryPath:G(t,".red","tmp","rsp-status-summary.json"),registryPath:G(t,".red","tmp","rsp-resident.pid.json")}}async function Ht(e,t){if(await Vt(me(e.socketPath),{recursive:!0,mode:448}),await Qi(e.socketPath,t))return;await Yi(e,t);let n=await as(e.lockPath);if(n)try{if(await Qi(e.socketPath,t))return;await Yi(e,t),await Du(e.socketPath);let r=$u(e,t);await zi(e.socketPath,r);return}finally{await n.close(),await H(e.lockPath,{force:!0})}await zi(e.socketPath)}async function ne(e,t=200){try{return await is(e,t)!=null}catch{return!1}}async function is(e,t=200){let n=await He({socketPath:e,timeoutMs:t},{id:Zi(),op:"ping"});return n.ok?ds(n.value)?{version:ju(n.value.version)}:{}:null}async function Kt(e,t){if(await Vt(me(e.socketPath),{recursive:!0,mode:448}),await ne(e.socketPath,50))return!1;let n=await as(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=us(t);return es(r,[...i,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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 ss(e,t){try{await Ht(e,t)}finally{await H(e.wakeLockPath,{force:!0})}}async function mt(e){try{let t=JSON.parse(await ts(e,"utf8"));return Uu(t)?t:null}catch{return null}}async function zt(e,t){let n={version:rs,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 Vt(me(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await xu(r,`${JSON.stringify(n)}
10
+ `,{encoding:"utf8",mode:384}),await vu(r,e)}async function Yt(e,t=process.pid){try{let n=await mt(e);if(n&&n.pid!==t)return;await H(e,{force:!0})}catch{}}async function ft(e){let t=await mt(e.registryPath);if(!t)try{return await ts(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Ke(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await ne(t.socket_path,100);return n&&await Au(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function os(e){let t=await ft(e);return t.state==="registered-dead"||t.state==="invalid"?(await H(e.registryPath,{force:!0}),await ft(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await cs(t.entry.pid),await H(e.registryPath,{force:!0}),await H(t.entry.socket_path,{force:!0}),await ft(e)):t}async function zi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await ne(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function Du(e){await H(e,{force:!0})}async function as(e){await Vt(me(e),{recursive:!0,mode:448});try{return await Su(e,Yn.O_CREAT|Yn.O_EXCL|Yn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function $u(e,t){let[n,r]=us(t),i=es(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}async function Yi(e,t){try{let n=await mt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Ke(n.pid)){await H(e.registryPath,{force:!0});return}if(await ne(n.socket_path,100))return;if(ls(t.clientVersion,n.resident_version)&&(await Iu(n.pid,1500),!Ke(n.pid))){await H(e.registryPath,{force:!0});return}await cs(n.pid),await H(e.registryPath,{force:!0})}catch{}}function Ke(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function cs(e){if(!Ke(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Ke(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Iu(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function Au(e){if(!e.startsWith("file://"))return!1;try{return await Tu(ns(e)),!1}catch(t){return t.code==="ENOENT"}}function us(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Wt(process.argv[1]):ns(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Nu(e){let t=Eu("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=G(n,"red-skills",t);if(G(i,"rsp.sock").length<Pu)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return G(Ou(),`red-skills-${r}`,t)}function Bu(e){let t=Wt(e);for(let n=0;n<32;n++){try{let i=Qn(G(t,".git"));if(i!=null)return Lu(t,i)??t;if(Qn(G(t,".git","HEAD"))!=null||Qn(G(t,".red","config.yaml"))!=null)return t}catch{}let r=me(t);if(r===t)return null;t=r}return null}function Lu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Wt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?me(me(me(r))):null}function Qn(e){try{return ku(e,"utf8")}catch{return null}}async function Qi(e,t){let n=await is(e).catch(()=>null);return n?ls(t.clientVersion,n.version)?(await Cu(e,t.clientVersion),await Gu(e),!1):!0:!1}async function Cu(e,t){try{await He({socketPath:e,timeoutMs:200},{id:Zi(),op:"handover",clientVersion:t})}catch{}}function ls(e,t){return!e||!t?!1:Mu(e,t)>0}function Mu(e,t){let n=Xi(e),r=Xi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Xi(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 ds(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ju(e){return typeof e=="string"&&e.length>0?e:void 0}function Uu(e){return ds(e)&&e.version===rs&&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 Gu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await ne(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Pu,rs,Qt=S(()=>{zn();Pu=108,rs=1});var hs={};D(hs,{DEFAULT_RSP_BYTE_BUDGET:()=>oe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ie,DEFAULT_RSP_IDLE_MS:()=>nn,DEFAULT_RSP_STORE_PATH:()=>Zt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ps,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>gs,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>se,MIN_RSP_IDLE_MS:()=>ys,resolveRspConfig:()=>ge});import{readFileSync as Fu}from"node:fs";import{join as fs,resolve as ms}from"node:path";function ge(e,t,n){let r=Hi(ms(e),fs(".red","config.yaml")),i=r?Fu(r,"utf8"):"",s=Kn(i,"rsp.enabled")==="true",o=pe(re(i,"rsp.ttlDays"),se),a=pe(re(i,"rsp.byteBudget"),oe),c=pe(re(i,"rsp.telemetryTtlDays"),en),u=pe(re(i,"rsp.telemetryByteBudget")??re(i,"rsp.byteBudget"),tn),l=pe(Xt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??re(i,"rsp.telemetryDrainIntervalMs"),ps),d=pe(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??re(i,"rsp.telemetryDrainTimeoutMs"),gs),m=Ju(Xt(t.RSP_IDLE_MS)??re(i,"rsp.idleMs"),nn,ys),b=pe(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??re(i,"rsp.heavyGitByteThreshold"),ie),_=te(e).rootDir,T=n??t.RSP_STORE_URI??`file://${fs(ms(_),Zt)}`;return{enabled:s,storeUri:T,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:b}}function re(e,t){let n=Kn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function pe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ju(e,t,n){let r=pe(e,t);return Math.max(r,n)}function Xt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ie,Zt,se,oe,en,tn,ps,gs,nn,ys,K=S(()=>{"use strict";Ki();Qt();ie=8*1024,Zt=".red/tmp/red-skills.rdb",se=7,oe=64*1024*1024,en=90,tn=4*1024*1024,ps=3e4,gs=2e3,nn=5*6e4,ys=5e3});var ws=S(()=>{"use strict";zn()});var gt={};D(gt,{ResidentRspElisionStore:()=>pt,ensureResidentServer:()=>Ht,kickResidentServer:()=>Kt,pingResident:()=>ne,readResidentRegistry:()=>mt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>ft,resolveResidentPaths:()=>te,sweepResidentRegistry:()=>os,warmResidentServer:()=>ss,writeResidentRegistry:()=>zt});import{randomUUID as qu}from"node:crypto";function bs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pt,$e=S(()=>{"use strict";ws();Qt();pt=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let i=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!i?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return i}async get(t){let n=await this.request({op:"get",handle:t});return n?bs(n)&&n.status==="expired"?n:!bs(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}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,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Ht(this.paths,this.config);let n=await He(this.paths,{...t,id:qu()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var nr={};D(nr,{RSP_WRAPPER_CAPABILITIES:()=>ht,formatCodexHookDecision:()=>Ts,formatHookDecision:()=>vs,hookDecisionFromClaudePreExecJson:()=>Es,hookDecisionFromCodexPreExecJson:()=>ks,rewriteCommand:()=>Rs,rewriteTableFromCapabilities:()=>_s,runClaudePreExecHook:()=>zu,runCodexPreExecHook:()=>Yu});import{readFileSync as rn}from"node:fs";import{existsSync as Vu}from"node:fs";import{fileURLToPath as Wu}from"node:url";function _s(e){let t=new Map;for(let n of e)t.set(yt(n.command),["rsp",...n.wrapper]);return t}function Rs(e){let t=rl(e);if(!t||t.length>0&&Os(t[0]))return Zn(e);let n=Ku(t);if(n)return n;let r=Hu.get(yt(t));if(!r)return Zn(e);let i=ht.find(s=>yt(s.command)===yt(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??yt(t)}}function Ku(e){let t=e[0];return t==="cat"&&e.length===2&&Xn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Xn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Xn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Xn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function Es(e,t){return await Ss(e,t)}async function ks(e,t){return await Ss(e,t)}async function Ss(e,t){let n=fl(e),r=F(n,["cwd"])||F(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Qu)(r))return{kind:"passthrough",reason:"disabled"};let s=nl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Rs)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Xu)(r)?o:(await(t.wakeResident??Zu)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function vs(e){return e.kind==="rewrite"?{stdout:`${e.command}
11
+ `,status:0}:{stdout:"",status:1}}function Ts(e){return e.kind!=="rewrite"?{stdout:"",status:0}:{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e.command}}})}
12
+ `,status:0}}async function zu(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await Es(t,{cwd:process.cwd()}),r=vs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Yu(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await ks(t,{cwd:process.cwd()}),r=Ts(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Qu(e){return ge(e,process.env).enabled}async function Xu(e){let t=te(e);return await ne(t.socketPath,50)}async function Zu(e){let t=ge(e,process.env);if(!t.enabled||!tl(t))return;let n=te(e);await Kt(n,el(t))}function el(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function tl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Vu(Wu(e.storeUri))}catch{return!1}}function nl(e){return F(e,["tool_input","command"])||F(e,["tool_input","cmd"])||F(e,["tool_input","args","command"])||F(e,["input","command"])||F(e,["input","cmd"])||F(e,["arguments","command"])||F(e,["arguments","cmd"])||F(e,["command"])||F(e,["cmd"])}function rl(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&Os(r))?null:n}function Zn(e){let t=e.trim();return il(t)?{kind:"rewrite",command:`rsp exec -- ${dl(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function il(e){return!(!e||!ol(e)||!cl(e)||al(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||ul(e,"rsp")||xs(e,sl)||ll(e))}function ol(e){return/&&|[;|]/.test(e)}function al(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function cl(e){return er(e).some(t=>{let n=tr(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,i)=>i>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function xs(e,t){return er(e).some(n=>{let r=tr(n)[0];return r?t.has(r):!1})}function ul(e,t){return xs(e,new Set([t]))}function ll(e){return er(e).some(t=>{let n=tr(t);return n[0]==="grep"&&n.includes("-q")})}function er(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function tr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function dl(e){return`'${e.replace(/'/g,"'\\''")}'`}function Os(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function yt(e){return e.join("\0")}function fl(e){try{let t=JSON.parse(e);return Ps(t)?t:{}}catch{return{}}}function F(e,t){let n=e;for(let r of t){if(!Ps(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ps(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ht,Hu,sl,sn=S(()=>{"use strict";K();$e();ht=[{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"]}],Hu=_s(ht);sl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ir={};D(ir,{NORMALIZATION_ALLOWLIST:()=>Ms,NORMALIZE_ANSI:()=>Is,NORMALIZE_BLANK_LINES:()=>Bs,NORMALIZE_CR_PROGRESS:()=>As,NORMALIZE_JSON_TOON:()=>Cs,NORMALIZE_TRAILING_WHITESPACE:()=>Ns,formatCodexNormalizeDecision:()=>Js,formatNormalizeDecision:()=>Fs,hookDecisionFromClaudePostExecJson:()=>js,hookDecisionFromCodexPostExecJson:()=>Us,normalizeOutput:()=>ze,renderGenericJsonLane:()=>wt,runClaudePostExecHook:()=>gl,runCodexPostExecHook:()=>yl,transcodeJsonToToon:()=>Ls});import{readFileSync as on}from"node:fs";function Ls(e,t){let n=t?.encode??P,r=t?.decode??qn,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return rr(s,a)?o:e}async function wt(e,t={}){let n=_l(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:P(r),detected:!0,lossy:!1};let i=r.length,s=$s(t.minTokens,ml),o=$s(t.maxItems,pl);if(!(i>o&&vl(e)>=s))return{output:P(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=Rl(r,o),u={items:c},l=`items: ${c.length} of ${i} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`;return{output:[l,m,P(u)].filter(Boolean).join(`
13
+ `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function ze(e){let t=e;for(let n of Ms)t=n.apply(t);return t}async function js(e,t){return await Gs(e,t)}async function Us(e,t){return await Gs(e,t)}async function Gs(e,t){let n=bl(e),r=Tl(n,["cwd"])||t.cwd;if(!await(t.isEnabled??wl)(r))return{kind:"passthrough",reason:"disabled"};let s=xl(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??ze)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Fs(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Js(e){return{stdout:"",status:0}}async function gl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await js(t,{cwd:process.cwd()}),r=Fs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function yl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await Us(t,{cwd:process.cwd()}),r=Js(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function hl(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let i=e.charCodeAt(n+1);if(i===93){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s===7){n++;break}if(s===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(i===91){for(n+=2;n<e.length&&Ds(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Ds(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Ds(e){return e>=32&&e<=63}function wl(e){return ge(e,process.env).enabled}function bl(e){try{let t=JSON.parse(e);return ye(t)?t:{}}catch{return{}}}function _l(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return ye(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function Rl(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let s=0;s<r;s++)n.add(s),n.add(e.length-1-s);for(let s=0;s<e.length;s++)El(e[s])&&n.add(s);for(let s of kl(e))n.add(s);for(let s of Sl(e))n.add(s);let i=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let s=0;n.size<t&&s<i;s++)for(let o=s;n.size<t&&o<e.length;o+=i)n.add(o);return[...n].sort((s,o)=>s-o).slice(0,t).map(s=>e[s])}function El(e){if(!ye(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function kl(e){let t=new Map;e.forEach((r,i)=>{if(ye(r))for(let[s,o]of Object.entries(r)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=t.get(s)??[];a.push({index:i,value:o}),t.set(s,a)}});let n=new Set;for(let r of t.values()){if(r.length<3)continue;let i=r.reduce((a,c)=>a+c.value,0)/r.length,s=r.reduce((a,c)=>a+Math.pow(c.value-i,2),0)/r.length,o=Math.sqrt(s);if(o!==0)for(let a of r)Math.abs(a.value-i)>o*2&&n.add(a.index)}return[...n]}function Sl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!ye(r)||!ye(i)))for(let[s,o]of Object.entries(i)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=r[s];typeof a!="number"||!Number.isFinite(a)||(a===0?Math.abs(o)>10:Math.abs((o-a)/a)>=2)&&t.add(n)}}return[...t]}function vl(e){return Math.ceil(e.length/4)}function $s(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Tl(e,t){let n=e;for(let r of t){if(!ye(n))return"";n=n[r]}return typeof n=="string"?n:""}function xl(e,t){let n=e[t];return ye(n)?n:null}function ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rr(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)=>rr(a,o[c]))}let n=e,r=t,i=Object.keys(n),s=Object.keys(r);return i.length!==s.length?!1:i.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&rr(n[o],r[o]))}var Is,As,Ns,Bs,Cs,ml,pl,Ms,bt=S(()=>{"use strict";fe();K();Is={id:"ansi",apply:hl},As={id:"cr-progress",apply:e=>e.split(`
14
14
  `).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
15
- `)},Is={id:"trailing-whitespace",apply:e=>e.split(`
15
+ `)},Ns={id:"trailing-whitespace",apply:e=>e.split(`
16
16
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
17
- `)},As={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
17
+ `)},Bs={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
18
18
 
19
- `)};Bs={id:"json-to-toon",apply:e=>Ns(e)},fl=200,ml=15;Ls=[Ds,$s,Is,As,Bs]});async function Fs(e,t){return xl?Dl(e,t):Ol?Il(e,t):Pl(e,t)}async function Pl(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function Dl(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:$l(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*$l(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Il(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:Al(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Al(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var xl,Ol,Js=v(()=>{xl=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Ol=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Nl}from"node:fs";import{join as Bl}from"node:path";function qs(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let i=process.env?.[r];if(typeof i=="string"&&i!=="")return i;let s=Bl(n,"bin",t);if(Nl(s))return s;throw new Error(`reddb: binary "${t}" not found.
19
+ `)};Cs={id:"json-to-toon",apply:e=>Ls(e)},ml=200,pl=15;Ms=[Is,As,Ns,Bs,Cs]});async function qs(e,t){return Ol?$l(e,t):Pl?Al(e,t):Dl(e,t)}async function Dl(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function $l(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:Il(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Il(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Al(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:Nl(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Nl(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Ol,Pl,Vs=S(()=>{Ol=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Pl=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Bl}from"node:fs";import{join as Ll}from"node:path";function Ws(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let i=process.env?.[r];if(typeof i=="string"&&i!=="")return i;let s=Ll(n,"bin",t);if(Bl(s))return s;throw new Error(`reddb: binary "${t}" not found.
20
20
  expected at: ${s}
21
21
  override: set ${r}=/path/to/${t}
22
22
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
23
- or check the postinstall log for a download error.`)}var Vs=v(()=>{});import{fileURLToPath as Ll}from"node:url";import{dirname as Cl,resolve as Ml,join as jg}from"node:path";function Gl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Hs(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:qs({name:Gl(),packageRoot:Ul,envVar:"REDDB_BIN"})}var jl,Ul,Ws=v(()=>{Vs();jl=Cl(Ll(import.meta.url)),Ul=Ml(jl,"..")});var Fl,Jl,g,an,be=v(()=>{Fl=new TextEncoder,Jl=new TextDecoder("utf-8"),g=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},an=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new g("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Fl.encode(i+`
24
- `)).catch(a=>{this.pending.delete(r),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 n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let i=0;for(let s=0;s<t.length;s++)if(t[s]===10){let o=t.subarray(i,s);this.#n(Jl.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new g(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new g("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function sr(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:/"?ql(e):Vl(e)}function ql(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 n;try{n=new URL(t)}catch(l){throw new g("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=Hl(i),a=n.port?Number(n.port):ir(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Vl(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],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new g("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):ir(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new g("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):ir(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 g("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Hl(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 g("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function ir(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 or=v(()=>{be()});function Kl(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ks(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ks(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ks(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function zl(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var Wl,Rt,ar=v(()=>{be();Wl=new Set(["embedded"]),Rt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Wl.has(this._transport))throw new g("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:zl(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Kl(r);await this._client.call("cache.put",{namespace:t,key:n,value:s,...i})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function cr(e,t){return`${ur(e)}.${Yl(t)}`}function ur(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new g("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Yl(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Ql(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 zs(e){return`'${String(e).replace(/'/g,"''")}'`}var Qe,lr=v(()=>{be();Qe=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(zs).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${cr(i,t)} = ${Ql(n)}${o}${s}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${cr(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let i of t)r.push(await this.get(i,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`KV DELETE ${cr(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new g("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${ur(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:i.length>0?o.filter(c=>String(c.key).startsWith(i)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(zs).join(", ")}] FROM ${ur(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new g("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new g("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
23
+ or check the postinstall log for a download error.`)}var Hs=S(()=>{});import{fileURLToPath as Cl}from"node:url";import{dirname as Ml,resolve as jl,join as Yy}from"node:path";function Fl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ks(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Ws({name:Fl(),packageRoot:Gl,envVar:"REDDB_BIN"})}var Ul,Gl,zs=S(()=>{Hs();Ul=Ml(Cl(import.meta.url)),Gl=jl(Ul,"..")});var Jl,ql,h,an,he=S(()=>{Jl=new TextEncoder,ql=new TextDecoder("utf-8"),h=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},an=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new h("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Jl.encode(i+`
24
+ `)).catch(a=>{this.pending.delete(r),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 n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let i=0;for(let s=0;s<t.length;s++)if(t[s]===10){let o=t.subarray(i,s);this.#n(ql.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new h(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new h("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function or(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:/"?Vl(e):Wl(e)}function Vl(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 n;try{n=new URL(t)}catch(l){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=Hl(i),a=n.port?Number(n.port):sr(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Wl(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],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):sr(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):sr(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 h("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Hl(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 h("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function sr(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 ar=S(()=>{he()});function zl(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ys(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ys(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ys(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function Yl(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var Kl,_t,cr=S(()=>{he();Kl=new Set(["embedded"]),_t=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Kl.has(this._transport))throw new h("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:Yl(r.value)}async put(t,n,r,i={}){this._guard("put");let s=zl(r);await this._client.call("cache.put",{namespace:t,key:n,value:s,...i})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function ur(e,t){return`${lr(e)}.${Ql(t)}`}function lr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new h("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Ql(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Xl(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 Qs(e){return`'${String(e).replace(/'/g,"''")}'`}var Ye,dr=S(()=>{he();Ye=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Qs).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ur(i,t)} = ${Xl(n)}${o}${s}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${ur(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let i of t)r.push(await this.get(i,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`KV DELETE ${ur(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new h("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${lr(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:i.length>0?o.filter(c=>String(c.key).startsWith(i)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Qs).join(", ")}] FROM ${lr(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new h("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new h("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
25
25
 
26
26
  `)){let l=u.split(`
27
- `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Xl(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new g("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ce(e),a=ce(t),c=i!=null?` GROUP ${ce(i)}`:"",u=s!=null?fr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ce(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function fr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new g("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Zl(e){if(!Number.isInteger(e))throw new g("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ed(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new g("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Zl(e.priority)}`),e.key!=null&&(t+=` KEY ${mr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${mr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function td(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?mr(e):JSON.stringify(e)}function mr(e){return`'${String(e).replace(/'/g,"''")}'`}function dr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Et,pr=v(()=>{be();Et=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ce(t)}`})}push(t,n,r={}){let i=ed(r);return this.client.call("query",{sql:`QUEUE PUSH ${ce(t)} ${td(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ce(t)}${fr(n)}`});return dr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ce(t)}${fr(n)}`});return dr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ce(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ce(t)}`})}async readWait(t,n,r={}){let i=Xl(t,n,r),s=await this.client.call("query",{sql:i});return dr(s)}}});function Ys(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new g("INVALID_ARGUMENT",`${t} must be an object`)}function nd(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new g("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(Qs).join(".")}function Qs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function rd(e){return Xs(JSON.stringify(e))}function id(e){return JSON.stringify(e)}function sd(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?rd(e):Xs(e)}function Xs(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,yr=v(()=>{be();kt=class{constructor(t){this.db=t}async insert(t,n){Ys(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${id(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new g("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new g("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=nd(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${cn(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Ys(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new g("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new g("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Qs(c)} = ${sd(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new g("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${cn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function od(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${_e(n)}.${_e(r)})`}return cd(e)}function ad(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function _e(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 cd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zs(e)}function Zs(e){return`'${String(e).replace(/'/g,"''")}'`}var St,gr=v(()=>{St=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){ad(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Zs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${_e(i)} ${_e(t)} = ${od(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${_e(r)} ${_e(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${_e(r)} ${_e(t)}`})}}});function ud(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Xe(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 ld(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,hr=v(()=>{vt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ud(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(eo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Xe(i)}.${Xe(t)} = ${ld(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Xe(r)}.${Xe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Xe(r)}.${Xe(t)}`})}}});async function no(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(dd)}async function ro(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${md(t)}`)).rows??[]).some(r=>r.name===String(t))}function dd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function to(e){return String(e).split(".").map(fd).join(".")}function fd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function md(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,wr=v(()=>{be();Tt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new g("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(to).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${to(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function ao(e,t={}){let n=sr(e);if(kd(n),n.kind==="embedded"){let r=Ed(n,t.auth);if(r.token||r.username)throw new g("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Rd(n),s=t.binary??Hs(),o=await Fs(s,i),a=new an(o);return await a.call("version",{}),new _r(a,{transport:"embedded"})}}function so(e){return gd(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:wd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&_d(e)?{$uuid:e}:e}function gd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new g("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 g("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new g("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function hd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(so):e.map(so)}function wd(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 n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function bd(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function _d(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return bd(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 r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,i]of Object.entries(e))n[r]=un(i);return n}return e}function Rd(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ed(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;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");n.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");n.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");n.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");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function kd(e){if(e.kind!=="embedded")throw new g("EMBEDDED_ONLY",pd)}function Rr(){return new g(io,`${io}: nested transactions are not supported on one connection`)}function co(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Sd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new g("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${oo} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function vd(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new g("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${oo} 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 g("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var pd,yd,oo,io,ln,br,_r,uo=v(()=>{Js();Ws();be();or();ar();lr();pr();yr();gr();hr();wr();ar();lr();pr();yr();gr();hr();wr();or();pd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yd="1.0",oo="1.0.9",io="NESTED_TX_NOT_SUPPORTED";ln=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw Rr()}},br=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Rr();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 g("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 g("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 g("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new ln(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){co(n,r)}throw n}}},_r=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=yd,this.cache=new Rt(t,this.transport),this.queue=new Et(t),this.queues=this.queue,this.documents=new kt(this);let r=new Qe(t);this.kv=Object.assign((i="kv_default")=>new Qe(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new St(t,i),this.vault=(i="red.vault")=>new vt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new g("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=hd(n);return r==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:r}).then(un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Sd(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return vd(r,n.length)}tx(){return new br(this)}async transaction(t){if(this.inTransaction)throw Rr();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){co(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ro(this,t)}list(){return no(this)}from(t){return new Tt(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});var Tr={};$(Tr,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_TTL_DAYS:()=>oe,RSP_ELISION_COLLECTION:()=>M,RspElisionStore:()=>xt});import{createHash as po}from"node:crypto";import{existsSync as Td}from"node:fs";import{mkdir as xd,readFile as Sr,readdir as yo,rename as Od,writeFile as Pd}from"node:fs/promises";import{homedir as Dd}from"node:os";import{basename as vr,dirname as go,join as Ze}from"node:path";import{fileURLToPath as $d}from"node:url";function lo(e,t){return`el:${po("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 ue(e){return`record:${e.slice(3)}`}function Ae(e){return`expired:${e.slice(3)}`}function Er(){return"index:v1"}function Ot(e){return/^el:[a-f0-9]{12}$/.test(e)}function Id(e){if(!tt(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 n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:tt(e.scope)?e.scope:void 0,ranking:tt(e.ranking)?e.ranking:void 0}}}function Ad(e){if(!tt(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 n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Nd(e){return tt(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:dn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:dn(e.value)}:et(e)?{key:ue(e.handle),value:e}:fn(e)&&typeof e.handle=="string"&&Ot(e.handle)?{key:Ae(e.handle),value:e}:null:null}function dn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Bd(e,t,n){let r=[],i=new Set([".git","node_modules",".red",...n]);async function s(o){if(r.length>=t)return;let a=await yo(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Ze(o,c.name);c.isDirectory()?await s(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await s(e),r}function Ld(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=tt(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function fo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function et(e){return Re(e)?e.collection===M&&typeof e.handle=="string"&&Ot(e.handle)&&typeof e.original=="string"&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Cd(e.loss):!1}function kr(e){return!Re(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>Re(t)&&typeof t.handle=="string"&&Ot(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function fn(e){return Re(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Cd(e){return Re(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Md(e){try{let t=await Sr(e,"utf8");if(t.trim()==="")return mo();let n=JSON.parse(t);if(Jd(n))return n}catch(t){if(t.code==="ENOENT"){let n=mo();return await wo(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function jd(e){try{let t=await Sr(e);return ho(e)?e:Ud(t)?Gd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ud(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Gd(e){return vr(e)==="red.rdb"?Ze(go(e),"tmp","rsp-elisions.json"):`${e}.json`}function ho(e){return vr(e)==="red-skills.rdb"}async function Fd(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ze(Dd(),".cache","red-skills","bundles")),t=Ze(e,"reddb"),n;try{n=await yo(t)}catch{return}n.sort().reverse();for(let r of n){let i=Ze(t,r,process.platform==="win32"?"red.exe":"red");if(Td(i)){process.env.REDDB_BIN=i;return}}}async function wo(e,t){await xd(go(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Pd(n,`${JSON.stringify(t)}
28
- `,"utf8"),await Od(n,e)}function mo(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Jd(e){return Re(e)&&e.version===1&&Re(e.records)&&Object.values(e.records).every(et)&&Re(e.tombstones)&&Object.values(e.tombstones).every(fn)&&kr(e.index)}function qd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return $d(e)}var M,xt,mn=v(()=>{"use strict";uo();Y();M="rsp_elisions_v1",xt=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;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 n=qd(t.uri),r=await jd(n),i=new e(r,{uri:t.uri,ttlDays:fo(t.ttlDays,oe),byteBudget:fo(t.byteBudget,ae),now:t.now??(()=>new Date)});return ho(r)?(await Fd(),i.db=await ao(`file://${r}`),await i.ensureRedDbCollections(),await i.ensureRedDbStore()):i.document=await Md(i.path),i}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,n){if(this.db)return await this.mintRedDb(t,n);let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=lo(r,n),c=ue(a),u={collection:M,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};return delete this.document.tombstones[Ae(a)],this.document.records[c]=u,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!Ot(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[ue(t)];if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:ue(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),await this.flush(),s}let i=this.readOriginal(r);return i?{collection:M,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(i=>i.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r})}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ae(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ae(t)];return fn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await wo(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(M)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}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===M);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${M}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${M}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${M}`),await this.db.query(`CREATE KV IF NOT EXISTS ${M}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${M}`),n=[];for(let r of t.rows){let i=Nd(r);i&&n.push(i)}return n}async ensureMigratedRedDbIndex(t){if(t.some(i=>i.key===Er()&&kr(dn(i.value))))return;let r=t.map(i=>{let s=dn(i.value);return et(s)?{handle:s.handle,key:ue(s.handle),bytes:s.original_bytes,command:s.command,created_at:s.created_at,expires_at:s.expires_at}:null}).filter(i=>i!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=lo(r,n),c=ue(a),u={collection:M,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.kv().delete(Ae(a)),await this.kv().put(c,u);let d=(await this.readRedDbIndex()).records.filter(m=>m.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!Ot(t))return null;let n=await this.kvGet(Ae(t));if(fn(n))return n;let r=await this.kvGet(ue(t));if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:ue(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=this.readOriginal(r);return i?{collection:M,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:t.records.reduce((n,r)=>n+r.bytes,0),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget}}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=Id(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Ad(n);return await this.memoryIngestRedDb(r)}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 n=await Bd(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await Sr(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=vr(i),c=po("sha256").update("resident-memory-v1\0").update(i).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:i,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:[i],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),m=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(m)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,m),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),i=t.toLowerCase().split(/\s+/).filter(Boolean),s=r.rows.map(o=>Ld(o,i)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:s,context_md:s.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
29
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Er());return kr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Er(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ae(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(ue(t));if(!et(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let s=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!s||s.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var To={};$(To,{REPO_STORE_PATH:()=>Or,mergeRspBlock:()=>ko,provisionRspRepoStore:()=>Xd});import{constants as Vd}from"node:fs";import{access as Hd,copyFile as Wd,mkdir as bo,readFile as Kd,writeFile as _o}from"node:fs/promises";import{dirname as zd,join as pn,resolve as Yd}from"node:path";async function Xd(e,t={}){let n=Yd(e),r=pn(n,".red"),i=pn(r,"config.yaml"),s=pn(n,Or);await bo(r,{recursive:!0}),await bo(zd(s),{recursive:!0});let o="";try{o=await Kd(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=ko(o,{enabled:!0,ttlDays:t.ttlDays??oe,byteBudget:t.byteBudget??ae,heavyGitByteThreshold:t.heavyGitByteThreshold??se}),c=a!==o;c&&await _o(i,a,"utf8");let u=!await Eo(s),l=!1;if(u){let m=pn(n,Qd);if(await Eo(m))await Wd(m,s),l=!0;else{let{RspElisionStore:h}=await Promise.resolve().then(()=>(mn(),Tr)),_=process.env.REDDB_BIN;try{await(await h.open({uri:`file://${s}`,ttlDays:t.ttlDays??oe,byteBudget:t.byteBudget??ae,allowResidentOpen:!0})).close()}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=Zd(a,Or);return d!==a&&await _o(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function ko(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${xr(t.ttlDays,oe)}`,` byteBudget: ${xr(t.byteBudget,ae)}`,` heavyGitByteThreshold: ${xr(t.heavyGitByteThreshold,se)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
30
- `),i=So(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
27
+ `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Zl(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ae(e),a=ae(t),c=i!=null?` GROUP ${ae(i)}`:"",u=s!=null?mr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ae(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function mr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ed(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function td(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new h("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ed(e.priority)}`),e.key!=null&&(t+=` KEY ${pr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${pr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function nd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?pr(e):JSON.stringify(e)}function pr(e){return`'${String(e).replace(/'/g,"''")}'`}function fr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Rt,gr=S(()=>{he();Rt=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ae(t)}`})}push(t,n,r={}){let i=td(r);return this.client.call("query",{sql:`QUEUE PUSH ${ae(t)} ${nd(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ae(t)}${mr(n)}`});return fr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ae(t)}${mr(n)}`});return fr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ae(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ae(t)}`})}async readWait(t,n,r={}){let i=Zl(t,n,r),s=await this.client.call("query",{sql:i});return fr(s)}}});function Xs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function rd(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(Zs).join(".")}function Zs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function id(e){return eo(JSON.stringify(e))}function sd(e){return JSON.stringify(e)}function od(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?id(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var Et,yr=S(()=>{he();Et=class{constructor(t){this.db=t}async insert(t,n){Xs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${sd(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new h("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=rd(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${cn(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Xs(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Zs(c)} = ${od(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${cn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function ad(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${we(n)}.${we(r)})`}return ud(e)}function cd(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function we(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 ud(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):to(e)}function to(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,hr=S(()=>{kt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){cd(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(to).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${we(i)} ${we(t)} = ${ad(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${we(r)} ${we(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${we(r)} ${we(t)}`})}}});function ld(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Qe(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 dd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):no(e)}function no(e){return`'${String(e).replace(/'/g,"''")}'`}var St,wr=S(()=>{St=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ld(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(no).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Qe(i)}.${Qe(t)} = ${dd(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Qe(r)}.${Qe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Qe(r)}.${Qe(t)}`})}}});async function io(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fd)}async function so(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${pd(t)}`)).rows??[]).some(r=>r.name===String(t))}function fd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ro(e){return String(e).split(".").map(md).join(".")}function md(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function pd(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,br=S(()=>{he();vt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new h("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(ro).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ro(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function uo(e,t={}){let n=or(e);if(Sd(n),n.kind==="embedded"){let r=kd(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Ed(n),s=t.binary??Ks(),o=await qs(s,i),a=new an(o);return await a.call("version",{}),new Rr(a,{transport:"embedded"})}}function ao(e){return hd(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:bd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Rd(e)?{$uuid:e}:e}function hd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new h("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 h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function wd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ao):e.map(ao)}function bd(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 n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function _d(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function Rd(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return _d(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 r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,i]of Object.entries(e))n[r]=un(i);return n}return e}function Ed(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function kd(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;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");n.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");n.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");n.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");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function Sd(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",gd)}function Er(){return new h(oo,`${oo}: nested transactions are not supported on one connection`)}function lo(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${co} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Td(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${co} 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 h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var gd,yd,co,oo,ln,_r,Rr,fo=S(()=>{Vs();zs();he();ar();cr();dr();gr();yr();hr();wr();br();cr();dr();gr();yr();hr();wr();br();ar();gd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yd="1.0",co="1.0.9",oo="NESTED_TX_NOT_SUPPORTED";ln=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw Er()}},_r=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Er();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 h("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 h("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 h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new ln(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){lo(n,r)}throw n}}},Rr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=yd,this.cache=new _t(t,this.transport),this.queue=new Rt(t),this.queues=this.queue,this.documents=new Et(this);let r=new Ye(t);this.kv=Object.assign((i="kv_default")=>new Ye(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new kt(t,i),this.vault=(i="red.vault")=>new St(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=wd(n);return r==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:r}).then(un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return vd(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return Td(r,n.length)}tx(){return new _r(this)}async transaction(t){if(this.inTransaction)throw Er();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){lo(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return so(this,t)}list(){return io(this)}from(t){return new vt(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});var xr={};D(xr,{DEFAULT_RSP_BYTE_BUDGET:()=>oe,DEFAULT_RSP_TTL_DAYS:()=>se,RSP_ELISION_COLLECTION:()=>L,RspElisionStore:()=>Tt});import{createHash as yo}from"node:crypto";import{existsSync as xd}from"node:fs";import{mkdir as Od,readFile as vr,readdir as ho,rename as Pd,writeFile as Dd}from"node:fs/promises";import{homedir as $d}from"node:os";import{basename as Tr,dirname as wo,join as Xe}from"node:path";import{fileURLToPath as Id}from"node:url";function mo(e,t){return`el:${yo("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 ce(e){return`record:${e.slice(3)}`}function Ie(e){return`expired:${e.slice(3)}`}function kr(){return"index:v1"}function xt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ad(e){if(!et(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 n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:et(e.scope)?e.scope:void 0,ranking:et(e.ranking)?e.ranking:void 0}}}function Nd(e){if(!et(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 n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bd(e){return et(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:dn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:dn(e.value)}:Ze(e)?{key:ce(e.handle),value:e}:fn(e)&&typeof e.handle=="string"&&xt(e.handle)?{key:Ie(e.handle),value:e}:null:null}function dn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Ld(e,t,n){let r=[],i=new Set([".git","node_modules",".red",...n]);async function s(o){if(r.length>=t)return;let a=await ho(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Xe(o,c.name);c.isDirectory()?await s(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await s(e),r}function Cd(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=et(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function po(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ze(e){return be(e)?e.collection===L&&typeof e.handle=="string"&&xt(e.handle)&&typeof e.original=="string"&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Md(e.loss):!1}function Sr(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>be(t)&&typeof t.handle=="string"&&xt(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function fn(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Md(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function jd(e){try{let t=await vr(e,"utf8");if(t.trim()==="")return go();let n=JSON.parse(t);if(qd(n))return n}catch(t){if(t.code==="ENOENT"){let n=go();return await _o(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Ud(e){try{let t=await vr(e);return bo(e)?e:Gd(t)?Fd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Gd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Fd(e){return Tr(e)==="red.rdb"?Xe(wo(e),"tmp","rsp-elisions.json"):`${e}.json`}function bo(e){return Tr(e)==="red-skills.rdb"}async function Jd(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Xe(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Xe($d(),".cache","red-skills","bundles")),t=Xe(e,"reddb"),n;try{n=await ho(t)}catch{return}n.sort().reverse();for(let r of n){let i=Xe(t,r,process.platform==="win32"?"red.exe":"red");if(xd(i)){process.env.REDDB_BIN=i;return}}}async function _o(e,t){await Od(wo(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Dd(n,`${JSON.stringify(t)}
28
+ `,"utf8"),await Pd(n,e)}function go(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function qd(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(Ze)&&be(e.tombstones)&&Object.values(e.tombstones).every(fn)&&Sr(e.index)}function Vd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Id(e)}var L,Tt,mn=S(()=>{"use strict";fo();K();L="rsp_elisions_v1",Tt=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;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 n=Vd(t.uri),r=await Ud(n),i=new e(r,{uri:t.uri,ttlDays:po(t.ttlDays,se),byteBudget:po(t.byteBudget,oe),now:t.now??(()=>new Date)});return bo(r)?(await Jd(),i.db=await uo(`file://${r}`),await i.ensureRedDbCollections(),await i.ensureRedDbStore()):i.document=await jd(i.path),i}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,n){if(this.db)return await this.mintRedDb(t,n);let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=mo(r,n),c=ce(a),u={collection:L,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};return delete this.document.tombstones[Ie(a)],this.document.records[c]=u,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!xt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[ce(t)];if(!Ze(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:ce(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),await this.flush(),s}let i=this.readOriginal(r);return i?{collection:L,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(i=>i.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r})}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ie(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ie(t)];return fn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await _o(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(L)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}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===L);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${L}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${L}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${L}`),await this.db.query(`CREATE KV IF NOT EXISTS ${L}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${L}`),n=[];for(let r of t.rows){let i=Bd(r);i&&n.push(i)}return n}async ensureMigratedRedDbIndex(t){if(t.some(i=>i.key===kr()&&Sr(dn(i.value))))return;let r=t.map(i=>{let s=dn(i.value);return Ze(s)?{handle:s.handle,key:ce(s.handle),bytes:s.original_bytes,command:s.command,created_at:s.created_at,expires_at:s.expires_at}:null}).filter(i=>i!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=mo(r,n),c=ce(a),u={collection:L,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.kv().delete(Ie(a)),await this.kv().put(c,u);let d=(await this.readRedDbIndex()).records.filter(m=>m.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!xt(t))return null;let n=await this.kvGet(Ie(t));if(fn(n))return n;let r=await this.kvGet(ce(t));if(!Ze(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:ce(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=this.readOriginal(r);return i?{collection:L,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:t.records.reduce((n,r)=>n+r.bytes,0),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget}}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=Ad(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Nd(n);return await this.memoryIngestRedDb(r)}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 n=await Ld(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await vr(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Tr(i),c=yo("sha256").update("resident-memory-v1\0").update(i).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:i,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:[i],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),m=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(m)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,m),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),i=t.toLowerCase().split(/\s+/).filter(Boolean),s=r.rows.map(o=>Cd(o,i)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:s,context_md:s.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
29
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(kr());return Sr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(kr(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ie(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(ce(t));if(!Ze(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let s=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!s||s.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Oo={};D(Oo,{REPO_STORE_PATH:()=>Pr,mergeRspBlock:()=>vo,provisionRspRepoStore:()=>Zd});import{constants as Wd}from"node:fs";import{access as Hd,copyFile as Kd,mkdir as Ro,readFile as zd,writeFile as Eo}from"node:fs/promises";import{dirname as Yd,join as pn,resolve as Qd}from"node:path";async function Zd(e,t={}){let n=Qd(e),r=pn(n,".red"),i=pn(r,"config.yaml"),s=pn(n,Pr);await Ro(r,{recursive:!0}),await Ro(Yd(s),{recursive:!0});let o="";try{o=await zd(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=vo(o,{enabled:!0,ttlDays:t.ttlDays??se,byteBudget:t.byteBudget??oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ie}),c=a!==o;c&&await Eo(i,a,"utf8");let u=!await So(s),l=!1;if(u){let m=pn(n,Xd);if(await So(m))await Kd(m,s),l=!0;else{let{RspElisionStore:b}=await Promise.resolve().then(()=>(mn(),xr)),_=process.env.REDDB_BIN;try{await(await b.open({uri:`file://${s}`,ttlDays:t.ttlDays??se,byteBudget:t.byteBudget??oe,allowResidentOpen:!0})).close()}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=ef(a,Pr);return d!==a&&await Eo(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function vo(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Or(t.ttlDays,se)}`,` byteBudget: ${Or(t.byteBudget,oe)}`,` heavyGitByteThreshold: ${Or(t.heavyGitByteThreshold,ie)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
30
+ `),i=To(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
31
31
  `)}
32
- `}let s=Pr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
32
+ `}let s=Dr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
33
33
  `)}
34
- `}function So(e,t){for(let n=0;n<e.length;n++){let r=e[n];if($r(r)&&Dr(r)===0&&vo(r)===t)return n}return-1}function Pr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if($r(e[i])&&Dr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Dr(e){return(e.match(/^ */)?.[0]??"").length}function $r(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function vo(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function xr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Zd(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
35
- `),r=So(n,"plugins");if(r===-1)return e;let i=Pr(n,r,0),s=Ro(n,"memory",r+1,i,2);if(s===-1)return e;let o=Pr(n,s,2),a=[...n],c=Ro(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
34
+ `}function To(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Ir(r)&&$r(r)===0&&xo(r)===t)return n}return-1}function Dr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Ir(e[i])&&$r(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function $r(e){return(e.match(/^ */)?.[0]??"").length}function Ir(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function xo(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Or(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ef(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
35
+ `),r=To(n,"plugins");if(r===-1)return e;let i=Dr(n,r,0),s=ko(n,"memory",r+1,i,2);if(s===-1)return e;let o=Dr(n,s,2),a=[...n],c=ko(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
36
36
  `)}
37
- `}function Ro(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if($r(o)&&Dr(o)===i&&vo(o)===t)return s}return-1}async function Eo(e){try{return await Hd(e,Vd.F_OK),!0}catch{return!1}}var Or,Qd,xo=v(()=>{"use strict";Y();Or=Zt,Qd=".red/memory/graph.rdb"});var Ao={};$(Ao,{runRspMcpServer:()=>tf});import{createInterface as ef}from"node:readline";async function tf(){let e=ge(process.cwd(),process.env),t=ef({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let i=await nf(r,e);$o({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){$o({jsonrpc:"2.0",id:typeof Io(n)?.id>"u"?null:Io(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function nf(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 elision store 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 n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Do(t)}]};if(!t.enabled)return{content:[{type:"text",text:Do(t)}],isError:!0};let r=uf(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await rf(n.arguments,r)}]}}return{}}async function rf(e,t){let n=sf(e?.payload),r=of(e?.level),i=await bt(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return Oo(i.output);let s=Ye(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return Oo(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return af(s,o.length,a,r)}function sf(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function of(e){return e==="terse"?"terse":"brief"}function af(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=Po(s.subarray(0,o)),c=Po(s.subarray(Math.max(0,s.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${cf(s)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
37
+ `}function ko(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Ir(o)&&$r(o)===i&&xo(o)===t)return s}return-1}async function So(e){try{return await Hd(e,Wd.F_OK),!0}catch{return!1}}var Pr,Xd,Po=S(()=>{"use strict";K();Pr=Zt,Xd=".red/memory/graph.rdb"});var Bo={};D(Bo,{runRspMcpServer:()=>nf});import{createInterface as tf}from"node:readline";async function nf(){let e=ge(process.cwd(),process.env),t=tf({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let i=await rf(r,e);Ao({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Ao({jsonrpc:"2.0",id:typeof No(n)?.id>"u"?null:No(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function rf(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 elision store 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 n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Io(t)}]};if(!t.enabled)return{content:[{type:"text",text:Io(t)}],isError:!0};let r=lf(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await sf(n.arguments,r)}]}}return{}}async function sf(e,t){let n=of(e?.payload),r=af(e?.level),i=await wt(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return Do(i.output);let s=ze(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return Do(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return cf(s,o.length,a,r)}function of(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function af(e){return e==="terse"?"terse":"brief"}function cf(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=$o(s.subarray(0,o)),c=$o(s.subarray(Math.max(0,s.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${uf(s)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
38
38
  `)}
39
- `}function Oo(e){return e.endsWith(`
39
+ `}function Do(e){return e.endsWith(`
40
40
  `)?e:`${e}
41
- `}function Po(e){return e.toString("utf8").replace(/�$/g,"")}function cf(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function uf(e){return new gt(ne(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Do(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function $o(e){process.stdout.write(`${JSON.stringify(e)}
42
- `)}function Io(e){try{return JSON.parse(e)}catch{return null}}var No=v(()=>{"use strict";Y();_t();he()});var Uo={};$(Uo,{renderWaitHelp:()=>Br,runWait:()=>yf});import{spawn as Cr}from"node:child_process";import{existsSync as Nr}from"node:fs";import{mkdir as lf,readdir as df,readFile as ff,rm as Co,writeFile as Mo}from"node:fs/promises";import{join as Dt,resolve as Ir}from"node:path";import{randomUUID as mf}from"node:crypto";async function yf(e,t=process.cwd()){let n=hf(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Br()),0;if(n.kind==="ls")return process.stdout.write(`${P({waits:await Sf(t)})}
43
- `),0;if(!gf(n.kind))return process.stdout.write(Br()),2;let r=n.kind,i={id:mf(),target:Of(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:pf[n.kind],status:"running"},s=Dt(await Lr(t),`${i.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await lf(await Lr(t),{recursive:!0}),await Mo(s,JSON.stringify(i,null,2),"utf8"),o=await wf({...n,kind:r},t,s,i),process.stdout.write(`${P(xf(r,i,o))}
44
- `),await Tf(n.options),o.exitCode}finally{await Co(s,{force:!0})}}function gf(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Br(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
45
- `)}function hf(e){let t=e[1],n={timeoutMs:Bo.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Bo[t];let i=e.indexOf("--"),s=i>=0?i:e.length;for(let o=2;o<s;o++){let a=e[o];a==="--timeout"?n.timeoutMs=Df(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=$f(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=i>=0?e.slice(i+1).join(" "):""),r}async function wf(e,t,n,r){switch(e.kind){case"cmd":return await bf(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ar(()=>_f(e.target??"",t),e.options.timeoutMs,15e3,n,r);case"run":return await Ar(()=>Rf(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ar(()=>kf(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function bf(e,t,n,r,i){return e.trim()?await new Promise(s=>{let o=!1,a=l=>{o||(o=!0,s(l))},c=Cr(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Pt(r,i,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${jo(t)}`})},t);c.once("error",l=>{clearTimeout(u),Pt(r,i,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let m=l===0;Pt(r,i,m?"success":"failure"),a({status:m?"success":"failure",exitCode:m?0:1,summary:m?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Ar(e,t,n,r,i){let s=Date.now()+t,o=0;for(;Date.now()<s;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await Pt(r,i,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Nf(Math.min(c,Math.max(0,s-Date.now())))}return await Pt(r,i,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${jo(t)}`}}async function _f(e,t){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let n=await yn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh pr view failed"};let r=Mr(n.stdout),i=Array.isArray(r.statusCheckRollup)?r.statusCheckRollup:[],s=i.map(Pf),o=s.filter(c=>c==="failure").length,a=s.filter(c=>c==="pending").length;return String(r.state)!=="OPEN"?nt("failure",`PR #${e} is ${String(r.state).toLowerCase()}`,{mergeable:String(r.mergeable??"")}):o>0?nt("failure",`PR #${e} has failing checks`,{failing:o,pending:a,mergeable:String(r.mergeable??"")}):a>0?{status:"running",exitCode:2,summary:`PR #${e} has ${a} pending checks`}:nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:String(r.mergeable??"")})}async function Rf(e,t){let n=e.target??(e.latest&&e.branch?await Ef(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await yn(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let i=Mr(r.stdout),s=String(i.status??"").toLowerCase(),o=String(i.conclusion??"").toLowerCase();return s!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${s||"pending"}`}:o==="success"?nt("success",`run ${n} succeeded`,Lo(i)):nt("failure",`run ${n} concluded ${o||"unknown"}`,Lo(i))}async function Ef(e,t){let n=await yn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),i=Array.isArray(r)?r[0]:void 0;return gn(i)&&i.databaseId!=null?String(i.databaseId):""}async function kf(e,t,n){let r=await yn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let i=JSON.parse(r.stdout),o=(Array.isArray(i)?i.filter(gn):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||If(e,c))&&u>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function yn(e,t){return await new Promise(n=>{let r=Cr("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],s=[];r.stdout.on("data",o=>i.push(Buffer.from(o))),r.stderr.on("data",o=>s.push(Buffer.from(o))),r.once("error",o=>n({status:1,stdout:"",stderr:o.message})),r.once("close",o=>{n({status:o??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(s).toString("utf8").trim()})})})}async function Sf(e){let t=await Lr(e);if(!Nr(t))return[];let n=await df(t).catch(()=>[]),r=[];for(let i of n.filter(s=>s.endsWith(".json"))){let s=Dt(t,i),o=Mr(await ff(s,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Af(a)){await Co(s,{force:!0});continue}r.push(o)}return r}async function Lr(e){return Dt(await vf(e),".red","tmp","waits")}async function vf(e){let t=Ir(e);for(;;){if(Nr(Dt(t,".red"))||Nr(Dt(t,".git")))return t;let n=Ir(t,"..");if(n===t)return Ir(e);t=n}}async function Pt(e,t,n){await Mo(e,JSON.stringify({...t,status:n},null,2),"utf8").catch(()=>{})}async function Tf(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=Cr(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function xf(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function nt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Of(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function Pf(e){let t=gn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Lo(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 Mr(e){let t=JSON.parse(e);if(!gn(t))throw new Error("expected JSON object");return t}function gn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Df(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function $f(e){return e.startsWith("SIG")?e:`SIG${e}`}function jo(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function If(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Af(e){try{return process.kill(e,0),!0}catch{return!1}}async function Nf(e){await new Promise(t=>setTimeout(t,e))}var Bo,pf,Go=v(()=>{"use strict";me();Bo={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},pf={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Jo={};$(Jo,{renderShellInit:()=>Bf});function Bf(e,t=wt){if(e==="fish")return Lf(t);if(e==="bash"||e==="zsh")return Cf(e,t);throw new Error(`unsupported shell: ${e}`)}function Lf(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(n=>n.command[0]).filter(wn))].map(n=>` abbr --add --position command -- ${n} '${Gf(`rsp ${n}`)}'`)," 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(`
46
- `)}function Cf(e,t){let n=jf(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...hn("git",n.get("git")??[]),...hn("gh",n.get("gh")??[]),...hn("vitest",n.get("vitest")??[]),...hn("cargo",n.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(`
47
- `)}function hn(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(wn),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(wn)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>Fo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of Mf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Uf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${Fo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function Mf(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function jf(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!wn(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function wn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Fo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Uf(e){return e.replace(/'/g,"'\\''")}function Gf(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var qo=v(()=>{"use strict";sn()});function jr(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"&&Ff(t.chosenOption)&&Jf(t.outcome)&&qf(t.cost)}function Ff(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Jf(e){return e==="success"||e==="failure"||e==="escalated"}function qf(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 Vo=v(()=>{});import{createHash as Vf}from"node:crypto";function ra(e,t){return new Gr(e,t)}function Ho(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES),r=ia(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let i=String(n.id??e.label??e.LABEL??t),s=String(n.title??e.label??e.LABEL??i),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??i),kind:r,properties:{...n,id:i,title:s,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function Wo(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),i=sa(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:i,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Fr(e.properties??e.PROPERTIES)}}function Kf(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!jr(n)?null:{rid:t,event:n}}function Fr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function ia(e){let t=e==="contact"?"person":e;if(Hf.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function sa(e){if(Wf.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zf(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Ko(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Be(e){return bn(e)?e:{}}function zo(e,t){return Be(e)[t]}function Yo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Qo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Xo(e){let t=Be(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function B(e){return typeof e=="string"&&e.length>0?e:void 0}function bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ur(e){return e!=null}function Yf(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Qf(e){return Vf("sha256").update(JSON.stringify(e)).digest("hex")}function Xf(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Zo(e){return`artifact-hash:${e}`}function ea(e,t,n){return`connection:${e}:${t}:${n}`}function ta(){return"model-tier-bandit:v1"}function Zf(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function na(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function oa(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),i=e.properties.tags.map(o=>o.toLowerCase()),s=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+na(n,a)*3+na(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function em(e,t,n,r){let i=0;for(let s of n){let o=s.from_rid===e.rid?s.to_rid:s.to_rid===e.rid?s.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=aa({...oa(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ne(i)}function aa(e){return{...e,lexical:Ne(e.lexical),tags:Ne(e.tags),kind:Ne(e.kind),connections:Ne(e.connections),vector:Ne(e.vector),total:Ne(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ne(e){return Math.round(e*1e3)/1e3}function tm(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(s=>n.indexOf(s)).filter(s=>s>=0).sort((s,o)=>s-o)[0]??0,i=Math.max(0,r-80);return`${i>0?"...":""}${e.slice(i,i+220)}${i+220<e.length?"...":""}`}function nm(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=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((i,s)=>({ref:`B${s+1}`,rid:i.artifact.rid,id:i.artifact.properties.id,title:i.artifact.properties.title,kind:i.artifact.kind,score:i.score,score_breakdown:i.score_breakdown,excerpt:i.excerpt})),confidence:n,missing_evidence:r}}function rm(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var Q,Hf,Wf,Gr,ca=v(()=>{"use strict";Vo();Q={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Hf=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Wf=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Be(n));if(t==="getArtifact")return await this.getArtifact(zo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Be(n);return await this.search(Yo(r,"query"),Qo(r,"limit")??10,Xo(r.options))}if(t==="think"){let r=Be(n);return await this.think(Yo(r,"query"),Qo(r,"limit")??8,Xo(r.options))}if(t==="link")return await this.link(Be(n));if(t==="backlinks")return await this.backlinks(zo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Be(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);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 ${Q.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Q.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Q.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:rm(t.map(r=>r.kind))}}async capture(t){let n=B(t.title)||"Untitled artifact",r=B(t.content);if(!r)throw new Error("brain capture requires content");let i=ia(B(t.kind)||"note"),s=Yf(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Qf([i,n,r,s,B(t.sourcePath),B(t.sourceSession)]),c=await this.kv().get(Zo(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let u=`${Xf(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:B(t.sourceAgent),source_runner:B(t.sourceRunner),source_session:B(t.sourceSession),source_path:B(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:bn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${Q.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let h=Ho(m);if(!h)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Zo(a),h.rid),await this.materializeTagConnections(h),h}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Q.artifacts}`)).rows.map(Ho).filter(Ur)}async search(t,n,r={}){let i=Zf(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!s.has(u.rid)).map(u=>{let l=oa(u,i),d=aa({...l,connections:em(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:tm(u.properties.content,i)}}).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,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return nm(t,i)}async link(t){let n=await this.getArtifact(Ko(t.from)),r=await this.getArtifact(Ko(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let i=sa(B(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let l=(await this.listConnections()).find(d=>d.rid===s);if(l)return l}let o={reason:B(t.reason),confidence:B(t.confidence)||"explicit",created_at:Date.now(),metadata:bn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Q.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Wo(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ea(n.rid,r.rid,i),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${Q.connections}`)).rows.map(Wo).filter(Ur)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=zf(B(t.interval)||"day"),i=B(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!jr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Q.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 ${Q.outcomeEvents}`)).rows.map(Kf).filter(Ur).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ta());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ta(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let i=await this.kv().get(ea(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(Q.kv)}}});var Kr={};$(Kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_INDEX_COLLECTION:()=>At,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_SPOOL:()=>ga,appendTelemetryEvent:()=>um,drainTelemetrySpool:()=>Vr,parseTelemetryEvent:()=>Hr,readTelemetryGainsReport:()=>Wr,readTelemetryStats:()=>kn,takeTelemetrySpool:()=>dm,telemetrySpoolPath:()=>En});import{appendFileSync as im,mkdirSync as sm,readFileSync as om}from"node:fs";import{mkdir as fa,readFile as am,rename as ma,rm as pa,writeFile as Jr}from"node:fs/promises";import{dirname as qr,join as ya}from"node:path";function En(e){return ya(e,ga)}async function um(e,t){try{let n=En(e);sm(qr(n),{recursive:!0}),im(n,`${JSON.stringify(lm(t))}
48
- `,{encoding:"utf8",mode:384})}catch{}}function lm(e){return ua(ua(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function ua(e,t,n){let r=e[t];if(typeof r!="string")return e;let i=Buffer.byteLength(r,"utf8");if(i<=cm)return e;let s={...e};return delete s[t],q(s[n])===0&&(s[n]=i),s.estimated=!0,s}async function dm(e){let t=En(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await fa(qr(t),{recursive:!0}),await ma(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Jr(t,"",{flag:"wx"}).catch(()=>{}),(await ha(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await pa(n,{force:!0})}}async function Vr(e,t){let n=En(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await fa(qr(n),{recursive:!0}),await ma(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await Jr(n,"",{flag:"wx"}).catch(()=>{});let o=(await ha(r)).split(/\r?\n/).filter(a=>a.trim()!=="");for(let a of o){try{if(await t(a))continue}catch{}i.push(a)}}finally{if(i.length>0){let s=fm(n);await Jr(n,`${i.join(`
41
+ `}function $o(e){return e.toString("utf8").replace(/�$/g,"")}function uf(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function lf(e){return new pt(te(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Io(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Ao(e){process.stdout.write(`${JSON.stringify(e)}
42
+ `)}function No(e){try{return JSON.parse(e)}catch{return null}}var Lo=S(()=>{"use strict";K();bt();$e()});var Fo={};D(Fo,{renderWaitHelp:()=>Lr,runWait:()=>yf});import{spawn as Mr}from"node:child_process";import{existsSync as Br}from"node:fs";import{mkdir as df,readdir as ff,readFile as mf,rm as jo,writeFile as Uo}from"node:fs/promises";import{join as Pt,resolve as Ar}from"node:path";import{randomUUID as pf}from"node:crypto";async function yf(e,t=process.cwd()){let n=wf(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Lr()),0;if(n.kind==="ls")return process.stdout.write(`${P({waits:await vf(t)})}
43
+ `),0;if(!hf(n.kind))return process.stdout.write(Lr()),2;let r=n.kind,i={id:pf(),target:Pf(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:gf[n.kind],status:"running"},s=Pt(await Cr(t),`${i.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await df(await Cr(t),{recursive:!0}),await Uo(s,JSON.stringify(i,null,2),"utf8"),o=await bf({...n,kind:r},t,s,i),process.stdout.write(`${P(Of(r,i,o))}
44
+ `),await xf(n.options),o.exitCode}finally{await jo(s,{force:!0})}}function hf(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Lr(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
45
+ `)}function wf(e){let t=e[1],n={timeoutMs:Co.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Co[t];let i=e.indexOf("--"),s=i>=0?i:e.length;for(let o=2;o<s;o++){let a=e[o];a==="--timeout"?n.timeoutMs=$f(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=If(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=i>=0?e.slice(i+1).join(" "):""),r}async function bf(e,t,n,r){switch(e.kind){case"cmd":return await _f(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Nr(()=>Rf(e.target??"",t),e.options.timeoutMs,15e3,n,r);case"run":return await Nr(()=>Ef(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Nr(()=>Sf(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function _f(e,t,n,r,i){return e.trim()?await new Promise(s=>{let o=!1,a=l=>{o||(o=!0,s(l))},c=Mr(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Ot(r,i,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Go(t)}`})},t);c.once("error",l=>{clearTimeout(u),Ot(r,i,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let m=l===0;Ot(r,i,m?"success":"failure"),a({status:m?"success":"failure",exitCode:m?0:1,summary:m?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Nr(e,t,n,r,i){let s=Date.now()+t,o=0;for(;Date.now()<s;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await Ot(r,i,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Bf(Math.min(c,Math.max(0,s-Date.now())))}return await Ot(r,i,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Go(t)}`}}async function Rf(e,t){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let n=await gn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh pr view failed"};let r=jr(n.stdout),i=Array.isArray(r.statusCheckRollup)?r.statusCheckRollup:[],s=i.map(Df),o=s.filter(c=>c==="failure").length,a=s.filter(c=>c==="pending").length;return String(r.state)!=="OPEN"?tt("failure",`PR #${e} is ${String(r.state).toLowerCase()}`,{mergeable:String(r.mergeable??"")}):o>0?tt("failure",`PR #${e} has failing checks`,{failing:o,pending:a,mergeable:String(r.mergeable??"")}):a>0?{status:"running",exitCode:2,summary:`PR #${e} has ${a} pending checks`}:tt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:String(r.mergeable??"")})}async function Ef(e,t){let n=e.target??(e.latest&&e.branch?await kf(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await gn(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let i=jr(r.stdout),s=String(i.status??"").toLowerCase(),o=String(i.conclusion??"").toLowerCase();return s!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${s||"pending"}`}:o==="success"?tt("success",`run ${n} succeeded`,Mo(i)):tt("failure",`run ${n} concluded ${o||"unknown"}`,Mo(i))}async function kf(e,t){let n=await gn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),i=Array.isArray(r)?r[0]:void 0;return yn(i)&&i.databaseId!=null?String(i.databaseId):""}async function Sf(e,t,n){let r=await gn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let i=JSON.parse(r.stdout),o=(Array.isArray(i)?i.filter(yn):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Af(e,c))&&u>=t});return o?tt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function gn(e,t){return await new Promise(n=>{let r=Mr("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],s=[];r.stdout.on("data",o=>i.push(Buffer.from(o))),r.stderr.on("data",o=>s.push(Buffer.from(o))),r.once("error",o=>n({status:1,stdout:"",stderr:o.message})),r.once("close",o=>{n({status:o??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(s).toString("utf8").trim()})})})}async function vf(e){let t=await Cr(e);if(!Br(t))return[];let n=await ff(t).catch(()=>[]),r=[];for(let i of n.filter(s=>s.endsWith(".json"))){let s=Pt(t,i),o=jr(await mf(s,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Nf(a)){await jo(s,{force:!0});continue}r.push(o)}return r}async function Cr(e){return Pt(await Tf(e),".red","tmp","waits")}async function Tf(e){let t=Ar(e);for(;;){if(Br(Pt(t,".red"))||Br(Pt(t,".git")))return t;let n=Ar(t,"..");if(n===t)return Ar(e);t=n}}async function Ot(e,t,n){await Uo(e,JSON.stringify({...t,status:n},null,2),"utf8").catch(()=>{})}async function xf(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=Mr(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function Of(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function tt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Pf(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function Df(e){let t=yn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Mo(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 jr(e){let t=JSON.parse(e);if(!yn(t))throw new Error("expected JSON object");return t}function yn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $f(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function If(e){return e.startsWith("SIG")?e:`SIG${e}`}function Go(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Af(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Nf(e){try{return process.kill(e,0),!0}catch{return!1}}async function Bf(e){await new Promise(t=>setTimeout(t,e))}var Co,gf,Jo=S(()=>{"use strict";fe();Co={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},gf={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Vo={};D(Vo,{renderShellInit:()=>Lf});function Lf(e,t=ht){if(e==="fish")return Cf(t);if(e==="bash"||e==="zsh")return Mf(e,t);throw new Error(`unsupported shell: ${e}`)}function Cf(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(n=>n.command[0]).filter(wn))].map(n=>` abbr --add --position command -- ${n} '${Ff(`rsp ${n}`)}'`)," 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(`
46
+ `)}function Mf(e,t){let n=Uf(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...hn("git",n.get("git")??[]),...hn("gh",n.get("gh")??[]),...hn("vitest",n.get("vitest")??[]),...hn("cargo",n.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(`
47
+ `)}function hn(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(wn),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(wn)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>qo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of jf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Gf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${qo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function jf(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function Uf(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!wn(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function wn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function qo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Gf(e){return e.replace(/'/g,"'\\''")}function Ff(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Wo=S(()=>{"use strict";sn()});function Ur(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"&&Jf(t.chosenOption)&&qf(t.outcome)&&Vf(t.cost)}function Jf(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function qf(e){return e==="success"||e==="failure"||e==="escalated"}function Vf(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 Ho=S(()=>{});import{createHash as Wf}from"node:crypto";function sa(e,t){return new Fr(e,t)}function Ko(e){let t=Number(e.red_entity_id??e.rid),n=Jr(e.properties??e.PROPERTIES),r=oa(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let i=String(n.id??e.label??e.LABEL??t),s=String(n.title??e.label??e.LABEL??i),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??i),kind:r,properties:{...n,id:i,title:s,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function zo(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),i=aa(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:i,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Jr(e.properties??e.PROPERTIES)}}function zf(e){let t=Number(e.red_entity_id??e.rid),n=Jr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ur(n)?null:{rid:t,event:n}}function Jr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function oa(e){let t=e==="contact"?"person":e;if(Hf.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function aa(e){if(Kf.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Yf(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Yo(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ne(e){return bn(e)?e:{}}function Qo(e,t){return Ne(e)[t]}function Xo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Zo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function ea(e){let t=Ne(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function A(e){return typeof e=="string"&&e.length>0?e:void 0}function bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gr(e){return e!=null}function Qf(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Xf(e){return Wf("sha256").update(JSON.stringify(e)).digest("hex")}function Zf(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ta(e){return`artifact-hash:${e}`}function na(e,t,n){return`connection:${e}:${t}:${n}`}function ra(){return"model-tier-bandit:v1"}function em(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ia(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function ca(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),i=e.properties.tags.map(o=>o.toLowerCase()),s=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+ia(n,a)*3+ia(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function tm(e,t,n,r){let i=0;for(let s of n){let o=s.from_rid===e.rid?s.to_rid:s.to_rid===e.rid?s.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=ua({...ca(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ae(i)}function ua(e){return{...e,lexical:Ae(e.lexical),tags:Ae(e.tags),kind:Ae(e.kind),connections:Ae(e.connections),vector:Ae(e.vector),total:Ae(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ae(e){return Math.round(e*1e3)/1e3}function nm(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(s=>n.indexOf(s)).filter(s=>s>=0).sort((s,o)=>s-o)[0]??0,i=Math.max(0,r-80);return`${i>0?"...":""}${e.slice(i,i+220)}${i+220<e.length?"...":""}`}function rm(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=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((i,s)=>({ref:`B${s+1}`,rid:i.artifact.rid,id:i.artifact.properties.id,title:i.artifact.properties.title,kind:i.artifact.kind,score:i.score,score_breakdown:i.score_breakdown,excerpt:i.excerpt})),confidence:n,missing_evidence:r}}function im(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var z,Hf,Kf,Fr,la=S(()=>{"use strict";Ho();z={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Hf=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Kf=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Ne(n));if(t==="getArtifact")return await this.getArtifact(Qo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ne(n);return await this.search(Xo(r,"query"),Zo(r,"limit")??10,ea(r.options))}if(t==="think"){let r=Ne(n);return await this.think(Xo(r,"query"),Zo(r,"limit")??8,ea(r.options))}if(t==="link")return await this.link(Ne(n));if(t==="backlinks")return await this.backlinks(Qo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ne(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);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 ${z.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:im(t.map(r=>r.kind))}}async capture(t){let n=A(t.title)||"Untitled artifact",r=A(t.content);if(!r)throw new Error("brain capture requires content");let i=oa(A(t.kind)||"note"),s=Qf(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Xf([i,n,r,s,A(t.sourcePath),A(t.sourceSession)]),c=await this.kv().get(ta(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let u=`${Zf(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:A(t.sourceAgent),source_runner:A(t.sourceRunner),source_session:A(t.sourceSession),source_path:A(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:bn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${z.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let b=Ko(m);if(!b)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ta(a),b.rid),await this.materializeTagConnections(b),b}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${z.artifacts}`)).rows.map(Ko).filter(Gr)}async search(t,n,r={}){let i=em(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!s.has(u.rid)).map(u=>{let l=ca(u,i),d=ua({...l,connections:tm(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:nm(u.properties.content,i)}}).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,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return rm(t,i)}async link(t){let n=await this.getArtifact(Yo(t.from)),r=await this.getArtifact(Yo(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let i=aa(A(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let l=(await this.listConnections()).find(d=>d.rid===s);if(l)return l}let o={reason:A(t.reason),confidence:A(t.confidence)||"explicit",created_at:Date.now(),metadata:bn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${z.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=zo(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(na(n.rid,r.rid,i),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${z.connections}`)).rows.map(zo).filter(Gr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Yf(A(t.interval)||"day"),i=A(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Ur(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${z.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 ${z.outcomeEvents}`)).rows.map(zf).filter(Gr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ra());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ra(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let i=await this.kv().get(na(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(z.kv)}}});var zr={};D(zr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_INDEX_COLLECTION:()=>It,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Re,RSP_TELEMETRY_SPOOL:()=>wa,appendTelemetryEvent:()=>fm,drainTelemetrySpool:()=>Wr,parseTelemetryEvent:()=>Hr,readTelemetryGainsReport:()=>Kr,readTelemetryStats:()=>Sn,takeTelemetrySpool:()=>pm,telemetrySpoolPath:()=>kn});import{appendFileSync as sm,mkdirSync as om,readFileSync as am}from"node:fs";import{mkdir as ga,readdir as cm,readFile as um,rename as ya,rm as ha,writeFile as qr}from"node:fs/promises";import{basename as lm,dirname as En,join as Vr}from"node:path";function kn(e){return Vr(e,wa)}async function fm(e,t){try{let n=kn(e);om(En(n),{recursive:!0}),sm(n,`${JSON.stringify(mm(t))}
48
+ `,{encoding:"utf8",mode:384})}catch{}}function mm(e){return da(da(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function da(e,t,n){let r=e[t];if(typeof r!="string")return e;let i=Buffer.byteLength(r,"utf8");if(i<=dm)return e;let s={...e};return delete s[t],J(s[n])===0&&(s[n]=i),s.estimated=!0,s}async function pm(e){let t=kn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await ga(En(t),{recursive:!0}),await ya(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await qr(t,"",{flag:"wx"}).catch(()=>{}),(await ba(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await ha(n,{force:!0})}}async function Wr(e,t){let n=kn(e);await ga(En(n),{recursive:!0}).catch(()=>{});for(let i of await gm(n))await fa(n,i,t);let r=`${n}.${process.pid}.${Date.now()}.drain`;try{await ya(n,r)}catch{return}await qr(n,"",{flag:"wx"}).catch(()=>{}),await fa(n,r,t)}async function gm(e){let t=En(e),n=`${lm(e)}.`;return(await cm(t).catch(()=>[])).filter(i=>i.startsWith(n)&&i.endsWith(".drain")).filter(i=>{let s=Number(i.slice(n.length).split(".")[0]);return!(Number.isInteger(s)&&s!==process.pid&&ym(s))}).sort().map(i=>Vr(t,i))}function ym(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function fa(e,t,n){let r=[];try{let s=(await ba(t)).split(/\r?\n/).filter(o=>o.trim()!=="");for(let o of s){try{if(await n(o))continue}catch{}r.push(o)}}finally{if(r.length>0){let i=hm(e);await qr(e,`${r.join(`
49
49
  `)}
50
- ${s}`,"utf8")}await pa(r,{force:!0})}}function fm(e){try{return om(e,"utf8")}catch{return""}}async function ha(e){let t="";for(let n=0;n<5;n++){let r=await am(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Hr(e){try{let t=JSON.parse(e);return!wa(t)||t.collection!==ke&&t.collection!==Se?null:t}catch{return null}}async function kn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await _n(e,ke)).filter(R=>$t(R)>=i),o=(await _n(e,Se)).filter(R=>$t(R)>=i),a=0,c=0,u=0,l=0,d=!1,m=new Map,h=new Map,_=[],x=0,k=0,p=0;for(let R of s){R.elided===!0&&a++;let E=q(R.raw_bytes),D=q(R.emitted_bytes),le=Math.max(0,E-D),H=Math.max(0,q(R.tokens_raw)-q(R.tokens_emitted));d||=R.estimated===!0&&H>0,c+=E,u+=D,l+=H;let De=It(R).slice(0,10);De&&m.set(De,(m.get(De)??0)+H);let y=Ee(R.command)||"unknown",S=h.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};S.invocations++,S.bytes_saved+=le,S.tokens_saved+=H,h.set(y,S);let je=Rn(R.wrapper_ms);je!=null&&_.push(je),x+=q(R.store_open_count);let Ue=Rn(R.store_elapsed_ms);Ue!=null&&(k+=Ue,p++)}let f=new Map,b=null;for(let R of o){let E=Ee(R.reason)||"unknown";f.set(E,(f.get(E)??0)+1);let D=It(R);(!b||D>b.timestamp)&&(b={timestamp:D,reason:E,command:Ee(R.command)||"unknown"})}let w=s.length+o.length,T=Vn(l,d);return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:u,bytes_saved:Math.max(0,c-u),tokens_saved:l,tokens_saved_estimated:T.tokens_saved_estimated,token_estimate_range_pct:T.token_estimate_range_pct,tokens_saved_low:T.tokens_saved_low,tokens_saved_high:T.tokens_saved_high,dollars_saved_estimate_usd:T.dollars_saved_estimate_usd,dollars_saved_low_usd:T.dollars_saved_low_usd,dollars_saved_high_usd:T.dollars_saved_high_usd,pricing_model_family:T.pricing_model_family,pricing_input_usd_per_million_tokens:T.pricing_input_usd_per_million_tokens,pricing_note:T.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[E])=>R.localeCompare(E)).map(([R,E])=>({date:R,tokens_saved:E})),top_commands:[...h.values()].sort((R,E)=>E.bytes_saved-R.bytes_saved||E.tokens_saved-R.tokens_saved||R.command.localeCompare(E.command))},health:{degradations:o.length,degradation_rate:w===0?0:o.length/w,by_reason:[...f.entries()].sort((R,E)=>E[1]-R[1]||R[0].localeCompare(E[0])).map(([R,E])=>({reason:R,count:E})),most_recent:b},latency:{wrapper_ms_p50:rt(_,.5),wrapper_ms_p95:rt(_,.95),store_open_count_sum:x,store_elapsed_ms_sum:it(k),store_elapsed_ms_avg:p===0?null:it(k/p)}}}async function Wr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,i=n.toISOString(),s=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(s),a=(await _n(e,ke)).filter(y=>$t(y)>=o),c=(await _n(e,Se)).filter(y=>$t(y)>=o),u=[...a,...c].map($t).filter(y=>Number.isFinite(y)&&y>0),l=u.length===0?null:Math.min(...u),d=l==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-l)/bm()))),m=[],h=new Map,_=new Map,x=new Map,k=new Map,p=new Map,f=new Map,b=0,w=!1,T=0,R=null,E=0,D=0;for(let y of a){let S=It(y),je=S.slice(0,10),Ue=S.slice(0,16),Ge=da(Ee(y.command)),de=Math.max(0,q(y.tokens_raw)-q(y.tokens_emitted));b+=de,w||=y.estimated===!0&&de>0;let In=Math.max(0,q(y.raw_bytes)-q(y.emitted_bytes)),An=Rn(y.wrapper_ms);if(An!=null){m.push(An);let Ri=h.get(Ge)??[];Ri.push(An),h.set(Ge,Ri)}je&&_.set(je,(_.get(je)??0)+1),Ue&&x.set(Ue,(x.get(Ue)??0)+1);let Nn=pm(S);Nn&&k.set(Nn,(k.get(Nn)??0)+1);let Bn=hm(S);Bn&&p.set(Bn,(p.get(Bn)??0)+de);let Lt=f.get(Ge)??{command_family:Ge,invocations:0,tokens_saved:0,bytes_saved:0};Lt.invocations++,Lt.tokens_saved+=de,Lt.bytes_saved+=In,f.set(Ge,Lt),y.elided===!0&&T++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(E++,q(y.store_open_count)>0&&D++),de>0&&(!R||de>R.tokens_saved||de===R.tokens_saved&&In>R.bytes_saved)&&(R={timestamp:S,command_family:Ge,tokens_saved:de,bytes_saved:In})}let le=c.map(y=>({timestamp:It(y),command_family:da(Ee(y.command)),reason:Ee(y.reason)||"unknown"})).sort((y,S)=>y.timestamp.localeCompare(S.timestamp)),H=new Map;for(let y of le)H.set(y.reason,(H.get(y.reason)??0)+1);let De=[...x.entries()].sort((y,S)=>S[1]-y[1]||y[0].localeCompare(S[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:d,since:s,until:i,label:`window: ${r}d, data: ${d}d`,empty:a.length===0&&c.length===0,invocations:a.length,degradations:c.length},latency:{global:la(m),by_command_family:[...h.entries()].sort((y,S)=>S[1].length-y[1].length||y[0].localeCompare(S[0])).map(([y,S])=>({command_family:y,count:S.length,...la(S)}))},throughput:{requests_per_day:[..._.entries()].sort(([y],[S])=>y.localeCompare(S)).map(([y,S])=>({date:y,requests:S})),active_minute_avg:x.size===0?null:it([...x.values()].reduce((y,S)=>y+S,0)/x.size),peak_minute:De?{minute:De[0],requests:De[1]}:null,hour_weekday_heatmap:ym(k)},savings:{tokens:Vn(b,w),weekly_tokens_saved:wm(p),elision_rate:a.length===0?0:it(T/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,S)=>S.tokens_saved-y.tokens_saved||S.bytes_saved-y.bytes_saved||y.command_family.localeCompare(S.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,S)=>S.invocations-y.invocations||S.tokens_saved-y.tokens_saved||y.command_family.localeCompare(S.command_family)).slice(0,10),single_biggest_elision:R},health:{degradation_timeline:le,degradations_by_reason:[...H.entries()].sort((y,S)=>S[1]-y[1]||y[0].localeCompare(S[0])).map(([y,S])=>({reason:y,count:S})),cold_boots:E===0?null:D,warm_hits:E===0?null:Math.max(0,E-D)}}}async function _n(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>mm(r.value)).filter(r=>wa(r))}function mm(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function $t(e){let t=Date.parse(It(e));return Number.isFinite(t)?t:0}function It(e){return Ee(e.created_at)||Ee(e.ts)||""}function Ee(e){return typeof e=="string"?e:""}function q(e){return Rn(e)??0}function Rn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function rt(e,t){if(e.length===0)return null;let n=[...e].sort((i,s)=>i-s),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return it(n[r])}function la(e){return{wrapper_ms_p50:rt(e,.5),wrapper_ms_p90:rt(e,.9),wrapper_ms_p95:rt(e,.95),wrapper_ms_p99:rt(e,.99)}}function it(e){return Math.round(e*100)/100}function da(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 pm(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${gm(t.getUTCDay())}:${t.getUTCHours()}`:null}function ym(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let i=e.get(`${n}:${r}`)??0;i>0&&t.push({weekday:n,hour:r,requests:i})}return t}function gm(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function hm(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function wm(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:it((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function bm(){return 24*60*60*1e3}function wa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ga,ke,Se,At,cm,Sn=v(()=>{"use strict";Hn();ga=ya(".red","tmp","rsp-telemetry.spool.jsonl"),ke="rsp_telemetry_invocations_v1",Se="rsp_telemetry_degradations_v1",At="rsp_telemetry_index_v1",cm=64*1024});var $a={};$($a,{runResidentServer:()=>xm});import{randomUUID as Qr}from"node:crypto";import{execFileSync as _m,spawn as Rm}from"node:child_process";import{existsSync as Em}from"node:fs";import{mkdir as va,rename as km,rm as ba,writeFile as Ta}from"node:fs/promises";import{createServer as Sm}from"node:net";import{dirname as Zr,join as Nt}from"node:path";import{fileURLToPath as vm,pathToFileURL as Tm}from"node:url";async function xm(e){await va(Zr(e.socketPath),{recursive:!0});let t=jm();Mm();let n=process.hrtime.bigint(),r=await xt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),i=Number(process.hrtime.bigint()-n)/1e6,s=1,o=r.redDb()?await Oa(r.redDb()):[],a=new Xr(r,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??en,byteBudget:e.telemetryByteBudget??e.byteBudget??tn,bootHeals:o}),c=e.telemetryDrainTimeoutMs??xa;await zr(a,c);let u=e.idleMs??nn,l,d,m=!1,h=new Set,_=e.telemetryDrainIntervalMs??3e4,x=setInterval(()=>{zr(a,c)},_);x.unref();let k=Sm(E=>{h.add(E),E.once("close",()=>h.delete(E)),f(),Hm(E,async D=>{f();let le=await Wm(r,D,e.storeUri,e.residentVersion??"0.0.0-dev"),H={id:D.id,ok:!0,value:le,storeOpenCount:s,storeElapsedMs:i};E.write(`${JSON.stringify(H)}
51
- `),D.op==="handover"&&setImmediate(()=>p())})});function p(){m=!0,d=Cm(d),k.close();for(let E of h)E.destroy()}function f(){l&&clearTimeout(l),l=setTimeout(()=>{p()},u),l.unref()}let w=["SIGINT","SIGTERM"].map(E=>{let D=()=>{vn(),k.close();for(let le of h)le.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(E,D),{signal:E,handler:D}});await new Promise((E,D)=>{k.once("error",D),k.listen(e.socketPath,()=>{k.off("error",D),E()})}),e.pidPath&&await Ta(e.pidPath,`${process.pid}
52
- `,{encoding:"utf8",mode:384});let T=e.residentVersion??"0.0.0-dev",R=e.registryPath??Nt(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await zt(R,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:T})}catch{}f(),await new Promise(E=>k.once("close",E)),s=0,l&&clearTimeout(l),clearInterval(x),await ba(e.socketPath,{force:!0}),await zr(a,c,m),await r.close(),d&&clearTimeout(d);for(let{signal:E,handler:D}of w)process.off(E,D);t?.kill("SIGTERM"),vn(),e.pidPath&&await ba(e.pidPath,{force:!0}),await Yt(R)}async function Am(e,t,n=new Date){let r=await kn(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(u=>u.date===i)?.tokens_saved??0,o=r.savings.tokens_saved>0?s/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Nt(t,$m),c=`${a}.${process.pid}.${Date.now()}.tmp`;await va(Zr(a),{recursive:!0}),await Ta(c,JSON.stringify({version:1,tokens_saved_today:s,dollars_saved_today_usd:Math.round(o*1e6)/1e6,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await km(c,a)}async function zr(e,t=xa,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Da(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
53
- `)}}async function Oa(e){let t=[];for(let n of Im){let r=await Nm(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Bm(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Pa(n)}`))}return t}async function Nm(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let i=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(i?.[1])return{ok:!1,previousModel:i[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let s=(await e.list()).find(o=>o.name===t);if(s&&s.model!=="kv")return{ok:!1,previousModel:s.model};throw n}}async function Bm(e,t,n){let r=Lm(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Pa(t)}`)}function Lm(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 Pa(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Cm(e){return e&&clearTimeout(e),setTimeout(()=>{vn(),process.exit(0)},Dm)}function Mm(){_a||(_a=!0,process.on("exit",()=>vn()))}function jm(){if(process.platform==="win32")return;let t=Rm(process.execPath,["-e",`
50
+ ${i}`,"utf8")}await ha(t,{force:!0})}}function hm(e){try{return am(e,"utf8")}catch{return""}}async function ba(e){let t="";for(let n=0;n<5;n++){let r=await um(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Hr(e){try{let t=JSON.parse(e);return!_a(t)||t.collection!==Re&&t.collection!==Ee?null:t}catch{return null}}async function Sn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await _n(e,Re)).filter(R=>Dt(R)>=i),o=(await _n(e,Ee)).filter(R=>Dt(R)>=i),a=0,c=0,u=0,l=0,d=!1,m=new Map,b=new Map,_=[],T=0,v=0,p=0;for(let R of s){R.elided===!0&&a++;let x=J(R.raw_bytes),M=J(R.emitted_bytes),Bt=Math.max(0,x-M),ue=Math.max(0,J(R.tokens_raw)-J(R.tokens_emitted));d||=R.estimated===!0&&ue>0,c+=x,u+=M,l+=ue;let Oe=$t(R).slice(0,10);Oe&&m.set(Oe,(m.get(Oe)??0)+ue);let y=_e(R.command)||"unknown",k=b.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};k.invocations++,k.bytes_saved+=Bt,k.tokens_saved+=ue,b.set(y,k);let je=Rn(R.wrapper_ms);je!=null&&_.push(je),T+=J(R.store_open_count);let Ue=Rn(R.store_elapsed_ms);Ue!=null&&(v+=Ue,p++)}let f=new Map,w=null;for(let R of o){let x=_e(R.reason)||"unknown";f.set(x,(f.get(x)??0)+1);let M=$t(R);(!w||M>w.timestamp)&&(w={timestamp:M,reason:x,command:_e(R.command)||"unknown"})}let g=s.length+o.length,E=Wn(l,d);return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:u,bytes_saved:Math.max(0,c-u),tokens_saved:l,tokens_saved_estimated:E.tokens_saved_estimated,token_estimate_range_pct:E.token_estimate_range_pct,tokens_saved_low:E.tokens_saved_low,tokens_saved_high:E.tokens_saved_high,dollars_saved_estimate_usd:E.dollars_saved_estimate_usd,dollars_saved_low_usd:E.dollars_saved_low_usd,dollars_saved_high_usd:E.dollars_saved_high_usd,pricing_model_family:E.pricing_model_family,pricing_input_usd_per_million_tokens:E.pricing_input_usd_per_million_tokens,pricing_note:E.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[x])=>R.localeCompare(x)).map(([R,x])=>({date:R,tokens_saved:x})),top_commands:[...b.values()].sort((R,x)=>x.bytes_saved-R.bytes_saved||x.tokens_saved-R.tokens_saved||R.command.localeCompare(x.command))},health:{degradations:o.length,degradation_rate:g===0?0:o.length/g,by_reason:[...f.entries()].sort((R,x)=>x[1]-R[1]||R[0].localeCompare(x[0])).map(([R,x])=>({reason:R,count:x})),most_recent:w},latency:{wrapper_ms_p50:nt(_,.5),wrapper_ms_p95:nt(_,.95),store_open_count_sum:T,store_elapsed_ms_sum:rt(v),store_elapsed_ms_avg:p===0?null:rt(v/p)}}}async function Kr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,i=n.toISOString(),s=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(s),a=(await _n(e,Re)).filter(y=>Dt(y)>=o),c=(await _n(e,Ee)).filter(y=>Dt(y)>=o),u=[...a,...c].map(Dt).filter(y=>Number.isFinite(y)&&y>0),l=u.length===0?null:Math.min(...u),d=l==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-l)/Sm()))),m=[],b=new Map,_=new Map,T=new Map,v=new Map,p=new Map,f=new Map,w=0,g=!1,E=0,R=null,x=0,M=0;for(let y of a){let k=$t(y),je=k.slice(0,10),Ue=k.slice(0,16),Ge=pa(_e(y.command)),le=Math.max(0,J(y.tokens_raw)-J(y.tokens_emitted));w+=le,g||=y.estimated===!0&&le>0;let An=Math.max(0,J(y.raw_bytes)-J(y.emitted_bytes)),Nn=Rn(y.wrapper_ms);if(Nn!=null){m.push(Nn);let ki=b.get(Ge)??[];ki.push(Nn),b.set(Ge,ki)}je&&_.set(je,(_.get(je)??0)+1),Ue&&T.set(Ue,(T.get(Ue)??0)+1);let Bn=bm(k);Bn&&v.set(Bn,(v.get(Bn)??0)+1);let Ln=Em(k);Ln&&p.set(Ln,(p.get(Ln)??0)+le);let Lt=f.get(Ge)??{command_family:Ge,invocations:0,tokens_saved:0,bytes_saved:0};Lt.invocations++,Lt.tokens_saved+=le,Lt.bytes_saved+=An,f.set(Ge,Lt),y.elided===!0&&E++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(x++,J(y.store_open_count)>0&&M++),le>0&&(!R||le>R.tokens_saved||le===R.tokens_saved&&An>R.bytes_saved)&&(R={timestamp:k,command_family:Ge,tokens_saved:le,bytes_saved:An})}let Bt=c.map(y=>({timestamp:$t(y),command_family:pa(_e(y.command)),reason:_e(y.reason)||"unknown"})).sort((y,k)=>y.timestamp.localeCompare(k.timestamp)),ue=new Map;for(let y of Bt)ue.set(y.reason,(ue.get(y.reason)??0)+1);let Oe=[...T.entries()].sort((y,k)=>k[1]-y[1]||y[0].localeCompare(k[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:d,since:s,until:i,label:`window: ${r}d, data: ${d}d`,empty:a.length===0&&c.length===0,invocations:a.length,degradations:c.length},latency:{global:ma(m),by_command_family:[...b.entries()].sort((y,k)=>k[1].length-y[1].length||y[0].localeCompare(k[0])).map(([y,k])=>({command_family:y,count:k.length,...ma(k)}))},throughput:{requests_per_day:[..._.entries()].sort(([y],[k])=>y.localeCompare(k)).map(([y,k])=>({date:y,requests:k})),active_minute_avg:T.size===0?null:rt([...T.values()].reduce((y,k)=>y+k,0)/T.size),peak_minute:Oe?{minute:Oe[0],requests:Oe[1]}:null,hour_weekday_heatmap:_m(v)},savings:{tokens:Wn(w,g),weekly_tokens_saved:km(p),elision_rate:a.length===0?0:rt(E/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,k)=>k.tokens_saved-y.tokens_saved||k.bytes_saved-y.bytes_saved||y.command_family.localeCompare(k.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,k)=>k.invocations-y.invocations||k.tokens_saved-y.tokens_saved||y.command_family.localeCompare(k.command_family)).slice(0,10),single_biggest_elision:R},health:{degradation_timeline:Bt,degradations_by_reason:[...ue.entries()].sort((y,k)=>k[1]-y[1]||y[0].localeCompare(k[0])).map(([y,k])=>({reason:y,count:k})),cold_boots:x===0?null:M,warm_hits:x===0?null:Math.max(0,x-M)}}}async function _n(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>wm(r.value)).filter(r=>_a(r))}function wm(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dt(e){let t=Date.parse($t(e));return Number.isFinite(t)?t:0}function $t(e){return _e(e.created_at)||_e(e.ts)||""}function _e(e){return typeof e=="string"?e:""}function J(e){return Rn(e)??0}function Rn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function nt(e,t){if(e.length===0)return null;let n=[...e].sort((i,s)=>i-s),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return rt(n[r])}function ma(e){return{wrapper_ms_p50:nt(e,.5),wrapper_ms_p90:nt(e,.9),wrapper_ms_p95:nt(e,.95),wrapper_ms_p99:nt(e,.99)}}function rt(e){return Math.round(e*100)/100}function pa(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 bm(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Rm(t.getUTCDay())}:${t.getUTCHours()}`:null}function _m(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let i=e.get(`${n}:${r}`)??0;i>0&&t.push({weekday:n,hour:r,requests:i})}return t}function Rm(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Em(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function km(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:rt((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Sm(){return 24*60*60*1e3}function _a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wa,Re,Ee,It,dm,vn=S(()=>{"use strict";Hn();wa=Vr(".red","tmp","rsp-telemetry.spool.jsonl"),Re="rsp_telemetry_invocations_v1",Ee="rsp_telemetry_degradations_v1",It="rsp_telemetry_index_v1",dm=64*1024});var Aa={};D(Aa,{runResidentServer:()=>Im});import{randomUUID as Xr}from"node:crypto";import{execFileSync as vm,spawn as Tm}from"node:child_process";import{existsSync as xm}from"node:fs";import{mkdir as xa,rename as Om,rm as Ra,writeFile as Oa}from"node:fs/promises";import{createServer as Pm}from"node:net";import{dirname as ei,join as At}from"node:path";import{fileURLToPath as Dm,pathToFileURL as $m}from"node:url";async function Im(e){await xa(ei(e.socketPath),{recursive:!0});let t=Vm();qm();let n=e.telemetryDrainTimeoutMs??Pa,r={kind:"opening",startedAt:process.hrtime.bigint()},i,s=!1,o=e.idleMs??nn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,m=Pm(g=>{l.add(g),g.once("close",()=>l.delete(g)),_(),Xm(g,async E=>{_();let R=await Zm(r,E,e.storeUri,e.residentVersion??"0.0.0-dev"),x={id:E.id,ok:!0,value:R,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Ia(g,x),E.op==="handover"&&setImmediate(()=>b())})});function b(){s=!0,u=!0,c=Jm(c),m.close();for(let g of l)g.destroy()}function _(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{b()},o),a.unref())}let v=["SIGINT","SIGTERM"].map(g=>{let E=()=>{Tn(),m.close();for(let R of l)R.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(g,E),{signal:g,handler:E}});await new Promise((g,E)=>{m.once("error",E),m.listen(e.socketPath,()=>{m.off("error",E),g()})}),(async()=>{let g=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let E=await Tt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),R=Number(process.hrtime.bigint()-g)/1e6,x=new Zr(E,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??en,byteBudget:e.telemetryByteBudget??e.byteBudget??tn});if(s){await E.close();return}if(await Yr(x,n),s){await E.close();return}r={kind:"ready",store:E,telemetry:x,storeOpenCount:1,storeElapsedMs:R},i=setInterval(()=>{let M=r.kind==="ready"?r:void 0;M&&Yr(M.telemetry,n)},d),i.unref(),_()})().catch(g=>{r={kind:"failed",error:g instanceof Error?g:new Error(String(g))},_()}),e.pidPath&&await Oa(e.pidPath,`${process.pid}
51
+ `,{encoding:"utf8",mode:384});let p=e.residentVersion??"0.0.0-dev",f=e.registryPath??At(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await zt(f,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:p})}catch{}await new Promise(g=>m.once("close",g)),a&&clearTimeout(a),i&&clearInterval(i),await Ra(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Yr(w.telemetry,n,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:g,handler:E}of v)process.off(g,E);t?.kill("SIGTERM"),Tn(),e.pidPath&&await Ra(e.pidPath,{force:!0}),await Yt(f)}async function Mm(e,t,n=new Date){let r=await Sn(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(u=>u.date===i)?.tokens_saved??0,o=r.savings.tokens_saved>0?s/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=At(t,Lm),c=`${a}.${process.pid}.${Date.now()}.tmp`;await xa(ei(a),{recursive:!0}),await Oa(c,JSON.stringify({version:1,tokens_saved_today:s,dollars_saved_today_usd:Math.round(o*1e6)/1e6,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await Om(c,a)}async function Yr(e,t=Pa,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await $a(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
52
+ `)}}async function jm(e){let t=[];for(let n of Cm){let r=await Um(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Gm(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Da(n)}`))}return t}async function Um(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let i=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(i?.[1])return{ok:!1,previousModel:i[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let s=(await e.list()).find(o=>o.name===t);if(s&&s.model!=="kv")return{ok:!1,previousModel:s.model};throw n}}async function Gm(e,t,n){let r=Fm(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Da(t)}`)}function Fm(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 Da(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Jm(e){return e&&clearTimeout(e),setTimeout(()=>{Tn(),process.exit(0)},Bm)}function qm(){Ea||(Ea=!0,process.on("exit",()=>Tn()))}function Vm(){if(process.platform==="win32")return;let t=Tm(process.execPath,["-e",`
54
53
  const { execFileSync } = require("node:child_process");
55
54
  const parentPid = Number(process.argv[1]);
56
55
  const known = new Set();
@@ -91,62 +90,62 @@ const timer = setInterval(() => {
91
90
  clearInterval(timer);
92
91
  process.exit(0);
93
92
  }, 500);
94
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function vn(){for(let e of Um())try{process.kill(e,"SIGTERM")}catch{}}function Um(){if(process.platform==="win32")return[];let e="";try{e=_m("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let i=Number(r[1]),s=Number(r[2]),o=r[3]??"";s===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(i)}return t}async function Gm(e){if(e.collection!==ke)return e;let t=await Ra(e.raw_text,ka(e.raw_bytes)),n=await Ra(e.emitted_text,ka(e.emitted_bytes)),{raw_text:r,emitted_text:i,...s}=e;return{...s,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Ra(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Om)try{return await Da((async()=>({tokens:(await Fm())("cl100k_base").encode(e).length,estimated:!1}))(),Pm,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function Fm(){return Ea??=import(Tm(Jm()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Ea}function Jm(){let e=Zr(vm(import.meta.url)),n=[Nt(e,"..","node_modules","js-tiktoken","dist","index.js"),Nt(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Em(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function ka(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Yr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function Da(e,t,n){let r;try{return await Promise.race([e,new Promise((i,s)=>{r=setTimeout(()=>s(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function qm(e){try{return JSON.parse(e)}catch{return e}}function Vm(e){return Sa(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Sa(t)&&(t.collection===ke||t.collection===Se)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Sa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hm(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
95
- `);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let u={id:o?.id??Qr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(u)}
96
- `)}finally{e.end()}})()})}async function Wm(e,t,n,r){if(t.op==="ping")return{pong:!0,version:r};if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(t.op==="stats")return await e.stats();if(t.op==="telemetry-stats"){let i=e.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await kn(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=e.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await Wr(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return zm(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await Km(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Km(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await ra(i,t).request(n,r)}function zm(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Om,Pm,xa,Dm,$m,Im,Xr,_a,Ea,Ia=v(()=>{"use strict";Qt();mn();ca();Sn();Y();Om=256*1024,Pm=500,xa=2e3,Dm=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),$m=Nt(".red","tmp","rsp-status-summary.json"),Im=[ke,Se,At],Xr=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pendingHeals;async drainAndSweep(){this.running??=this.drainAndSweepOnce().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await Oa(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let i=[...(await this.readIndex(t)).records];for(let s of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:s.collection,error:`expected kv, got ${s.previousModel}`,bytes:0}));await Vr(this.opts.rootDir,async s=>{let o=Hr(s);if(!o){let a=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(s,"utf8")});return i.push(a),!0}try{let a=await this.writeEvent(t,o);return i.push(a),!0}catch(a){let c=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Yr(o.command)||"unknown",source_id:Yr(o.id),source_collection:Yr(o.collection),error:a instanceof Error?a.message:String(a),bytes:Buffer.byteLength(s,"utf8")});return i.push(c),!0}}),await this.prune(t,{version:1,records:i}),await Am(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,i=typeof n.created_at=="string"?n.created_at:r.toISOString(),s=new Date(Date.parse(i)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:Qr(),a={...await Gm(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeDrainDegradation(t,n){return await this.writeEvent(t,{collection:Se,id:Qr(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error})}async readIndex(t){let n=await t.kv(At).get("index:v1"),r=typeof n=="string"?qm(n):n;return Vm(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(At).put("index:v1",n)}async prune(t,n){let r=Date.now(),i=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:i})}};_a=!1});function ve(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function Aa(e,t){if(!t)return!0;let n=ei(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function A(e,t){return t?e.filter(n=>Aa(n,t)):[...e]}function st(e,t){if(!t)return e;let r=e.split(`
97
- `).filter(i=>i&&Aa(i,t));return r.length>0?`${r.join(`
93
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Tn(){for(let e of Wm())try{process.kill(e,"SIGTERM")}catch{}}function Wm(){if(process.platform==="win32")return[];let e="";try{e=vm("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let i=Number(r[1]),s=Number(r[2]),o=r[3]??"";s===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(i)}return t}async function Hm(e){if(e.collection!==Re)return e;let t=await ka(e.raw_text,va(e.raw_bytes)),n=await ka(e.emitted_text,va(e.emitted_bytes)),{raw_text:r,emitted_text:i,...s}=e;return{...s,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function ka(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Am)try{return await $a((async()=>({tokens:(await Km())("cl100k_base").encode(e).length,estimated:!1}))(),Nm,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function Km(){return Sa??=import($m(zm()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Sa}function zm(){let e=ei(Dm(import.meta.url)),n=[At(e,"..","node_modules","js-tiktoken","dist","index.js"),At(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>xm(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function va(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Qr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function $a(e,t,n){let r;try{return await Promise.race([e,new Promise((i,s)=>{r=setTimeout(()=>s(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function Ym(e){try{return JSON.parse(e)}catch{return e}}function Qm(e){return Ta(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Ta(t)&&(t.collection===Re||t.collection===Ee)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Ta(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xm(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let i=n.indexOf(`
94
+ `);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let u={id:o?.id??Xr(),ok:!1,error:a instanceof Error?a.message:String(a)};Ia(e,u)}finally{e.end()}})()})}function Ia(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
95
+ `)}catch{}}async function Zm(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,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 i=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await i.stats();if(t.op==="telemetry-stats"){let s=i.redDb();if(!s)throw new Error("rsp telemetry stats require the shared RedDB store");return await Sn(s,t.sinceDays)}if(t.op==="telemetry-gains"){let s=i.redDb();if(!s)throw new Error("rsp telemetry gains require the shared RedDB store");return await Kr(s,t.sinceDays)}if(t.op==="mint")return{handle:await i.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return tp(await i.get(t.handle));if(t.op==="memory")return await i.memory(t.action,t.payload);if(t.op==="brain")return await ep(i,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function ep(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await sa(i,t).request(n,r)}function tp(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Am,Nm,Pa,Bm,Lm,Cm,Zr,Ea,Sa,Na=S(()=>{"use strict";Qt();mn();la();vn();K();Am=256*1024,Nm=500,Pa=2e3,Bm=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Lm=At(".red","tmp","rsp-status-summary.json"),Cm=[Re,Ee,It],Zr=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.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 n=await jm(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let i=[...(await this.readIndex(t)).records];for(let s of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:s.collection,error:`expected kv, got ${s.previousModel}`,bytes:0}));await Wr(this.opts.rootDir,async s=>{let o=Hr(s);if(!o){let a=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(s,"utf8")});return i.push(a),!0}try{let a=await this.writeEvent(t,o);return i.push(a),!0}catch(a){let c=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Qr(o.command)||"unknown",source_id:Qr(o.id),source_collection:Qr(o.collection),error:a instanceof Error?a.message:String(a),bytes:Buffer.byteLength(s,"utf8")});return i.push(c),!0}}),await this.prune(t,{version:1,records:i}),await Mm(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,i=typeof n.created_at=="string"?n.created_at:r.toISOString(),s=new Date(Date.parse(i)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:Xr(),a={...await Hm(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeDrainDegradation(t,n){return await this.writeEvent(t,{collection:Ee,id:Xr(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error})}async readIndex(t){let n=await t.kv(It).get("index:v1"),r=typeof n=="string"?Ym(n):n;return Qm(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(It).put("index:v1",n)}async prune(t,n){let r=Date.now(),i=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:i})}};Ea=!1});function ke(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function Ba(e,t){if(!t)return!0;let n=ti(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>Ba(n,t)):[...e]}function it(e,t){if(!t)return e;let r=e.split(`
96
+ `).filter(i=>i&&Ba(i,t));return r.length>0?`${r.join(`
98
97
  `)}
99
- `:""}function Te(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function ei(e){return Array.isArray(e)?e.map(ei).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ei).join(" "):String(e??"")}var Tn=v(()=>{"use strict"});var ti={};$(ti,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>se,GIT_LOG_MACHINE_FIELDS:()=>Na,recoveryInstruction:()=>V,renderGitContract:()=>Ba,runGitWrapper:()=>Qm});import{spawn as Ym}from"node:child_process";async function Qm(e,t){let n=La(e),r=Ca(n.argv),i=await tp(r,n.argv.slice(1));return Ba(e,i,t)}async function Ba(e,t,n){let r=La(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(st(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Ca(r.argv),s=np(i,r.argv,t.stdout,r.query);if(s===`git empty
100
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(Xm(i,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let a=mp(s);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Buffer.byteLength(o),u=await n.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 ${V(u)}
98
+ `:""}function Se(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function ti(e){return Array.isArray(e)?e.map(ti).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ti).join(" "):String(e??"")}var xn=S(()=>{"use strict"});var ni={};D(ni,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ie,GIT_LOG_MACHINE_FIELDS:()=>La,recoveryInstruction:()=>q,renderGitContract:()=>Ca,runGitWrapper:()=>rp});import{spawn as np}from"node:child_process";async function rp(e,t){let n=Ma(e),r=ja(n.argv),i=await ap(r,n.argv.slice(1));return Ca(e,i,t)}async function Ca(e,t,n){let r=Ma(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=ja(r.argv),s=cp(i,r.argv,t.stdout,r.query);if(s===`git empty
99
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(ip(i,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let a=bp(s);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Buffer.byteLength(o),u=await n.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 ${q(u)}
101
100
  `;return{stdout:Buffer.from(`${P(a.payload)}
102
- ${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 V(e){return e.startsWith("el:")?`rsp show ${e}`:e}function La(e){let t=ve(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function Xm(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Zm(e)||r.level!=="lossless")return!0;let i=fp(r.heavyGitByteThreshold,se);return Buffer.byteLength(t)<=i}function Zm(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ca(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 ep(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Na.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function tp(e,t){let n=Ym("git",ep(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function np(e,t,n,r){switch(e){case"status":return rp(t,n,r);case"log":return ip(t,n,r);case"diff":return sp(t,n,r);case"commit":return xe(op(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return xe(ap(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return cp(t,n,r);case"branch":return up(t,n,r);case"show":return lp(t,n,r)}}function rp(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");i.push({path:l,index:u[0]??".",worktree:u[1]??".",state:dp(u)})}if(i.length===0)return`git empty
103
- `;let s=A(i,n),o=Ma(s,"state");return xe({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function ip(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=A(r,n);return xe({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function sp(e,t,n){let i=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)}}),s=A(i,n),o=s.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 xe({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function op(e,t){let n=t.split(`
104
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(i?.[1]??0),l=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function ap(e,t){let n=t.split(`
105
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[m,h]=(l??"").split(":");return{flag:u??"",from:m??"",to:h??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function cp(e,t,n){let r=t.split(`
106
- `),i=[],s=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){s={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=i.at(-1),d=s.commit.slice(0,12);l&&l.commit===d&&l.author===s.author&&l.path===s.path&&l.line_end+1===s.finalLine?l.line_end=s.finalLine:i.push({line_start:s.finalLine,line_end:s.finalLine,author:s.author,commit:d,path:s.path}),s=null}let o=A(i,n),a=Ma(o,"author");return xe({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${i.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function up(e,t,n){let r=t.split(`
107
- `).filter(Boolean).map(o=>{let[a,c,u,l,d,m]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:m??""}}),i=A(r,n),s=i.find(o=>o.current)?.name??"";return xe({command:e.join(" "),branches:i,summary:`${n?`${i.length}/${r.length}`:i.length} branches${s?`, current ${s}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function lp(e,t,n){let r=t.indexOf(""),i=r>=0?t.indexOf("",r+1):-1,s=r>=0&&i>=0?t.slice(r+1,i):"",o=i>=0?t.slice(i+1):t,[a,c,u,l,d,m=""]=s.split(""),h=[];for(let f of o.split(`
108
- `)){let b=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!b)continue;let w=b[3]??"";h.push({path:(b[1]??"").trim(),changed:Number(b[2]??0),added:[...w].filter(T=>T==="+").length,deleted:[...w].filter(T=>T==="-").length,binary:w.startsWith("Bin")})}let _=A(h,n),x=0,k=0,p=0;for(let f of _)x+=typeof f.changed=="number"?f.changed:0,k+=typeof f.added=="number"?f.added:0,p+=typeof f.deleted=="number"?f.deleted:0;return xe({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
109
- `).length:0,files:_,summary:`${n?`${_.length}/${h.length}`:_.length} files, ${x} changed, +${k} -${p}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function xe(e,t,n){return t?Te(e,n):e}function dp(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ma(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function fp(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mp(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var Na,Le=v(()=>{"use strict";me();Y();Tn();Y();Na=["%h","%an","%as","%s"]});var si={};$(si,{renderGhContract:()=>Ga,runGhWrapper:()=>hp});import{spawn as Ua}from"node:child_process";async function hp(e,t){let n=Fa(e),r=await bp(n);return Ga(e,r,t)}async function Ga(e,t,n){let r=ve(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(st(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Fa(e),s=xn(t.stdout),o=Rp(i,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=Op(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let _=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=_}let c=a?.target.truncated.handle||void 0,u=P(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Pp(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),m=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!m)throw new Error("terse gh output requires an elision store");let h=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${V(m)}
101
+ ${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 q(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ma(e){let t=ke(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function ip(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!sp(e)||r.level!=="lossless")return!0;let i=wp(r.heavyGitByteThreshold,ie);return Buffer.byteLength(t)<=i}function sp(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function ja(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 op(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${La.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function ap(e,t){let n=np("git",op(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function cp(e,t,n,r){switch(e){case"status":return up(t,n,r);case"log":return lp(t,n,r);case"diff":return dp(t,n,r);case"commit":return ve(fp(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ve(mp(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return pp(t,n,r);case"branch":return gp(t,n,r);case"show":return yp(t,n,r)}}function up(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");i.push({path:l,index:u[0]??".",worktree:u[1]??".",state:hp(u)})}if(i.length===0)return`git empty
102
+ `;let s=I(i,n),o=Ua(s,"state");return ve({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function lp(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=I(r,n);return ve({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function dp(e,t,n){let i=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)}}),s=I(i,n),o=s.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 ve({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function fp(e,t){let n=t.split(`
103
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(i?.[1]??0),l=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function mp(e,t){let n=t.split(`
104
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[m,b]=(l??"").split(":");return{flag:u??"",from:m??"",to:b??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function pp(e,t,n){let r=t.split(`
105
+ `),i=[],s=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){s={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=i.at(-1),d=s.commit.slice(0,12);l&&l.commit===d&&l.author===s.author&&l.path===s.path&&l.line_end+1===s.finalLine?l.line_end=s.finalLine:i.push({line_start:s.finalLine,line_end:s.finalLine,author:s.author,commit:d,path:s.path}),s=null}let o=I(i,n),a=Ua(o,"author");return ve({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${i.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function gp(e,t,n){let r=t.split(`
106
+ `).filter(Boolean).map(o=>{let[a,c,u,l,d,m]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:m??""}}),i=I(r,n),s=i.find(o=>o.current)?.name??"";return ve({command:e.join(" "),branches:i,summary:`${n?`${i.length}/${r.length}`:i.length} branches${s?`, current ${s}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function yp(e,t,n){let r=t.indexOf(""),i=r>=0?t.indexOf("",r+1):-1,s=r>=0&&i>=0?t.slice(r+1,i):"",o=i>=0?t.slice(i+1):t,[a,c,u,l,d,m=""]=s.split(""),b=[];for(let f of o.split(`
107
+ `)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!w)continue;let g=w[3]??"";b.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...g].filter(E=>E==="+").length,deleted:[...g].filter(E=>E==="-").length,binary:g.startsWith("Bin")})}let _=I(b,n),T=0,v=0,p=0;for(let f of _)T+=typeof f.changed=="number"?f.changed:0,v+=typeof f.added=="number"?f.added:0,p+=typeof f.deleted=="number"?f.deleted:0;return ve({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
108
+ `).length:0,files:_,summary:`${n?`${_.length}/${b.length}`:_.length} files, ${T} changed, +${v} -${p}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ve(e,t,n){return t?Se(e,n):e}function hp(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ua(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function wp(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function bp(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var La,Be=S(()=>{"use strict";fe();K();xn();K();La=["%h","%an","%as","%s"]});var oi={};D(oi,{renderGhContract:()=>Ja,runGhWrapper:()=>kp});import{spawn as Fa}from"node:child_process";async function kp(e,t){let n=qa(e),r=await vp(n);return Ja(e,r,t)}async function Ja(e,t,n){let r=ke(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=qa(e),s=On(t.stdout),o=xp(i,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=Np(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let _=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=_}let c=a?.target.truncated.handle||void 0,u=P(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Bp(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),m=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!m)throw new Error("terse gh output requires an elision store");let b=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${q(m)}
110
109
  `;return{stdout:Buffer.from(`${P(l.payload)}
111
- ${h}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:m,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function Fa(e){let t=ve(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:s.push(u);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function wp(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?yp[t]:pp[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function bp(e){if(e.action==="combined")return await _p(e);let t=Ua("gh",wp(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function _p(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([ni(["pr","view",t,"--json",n.join(",")]),ni(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),ni(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:xn(i.stdout),checks:xn(s.stdout),comments:xn(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function ni(e){let t=Ua("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function Rp(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return vp(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=at(n).map(o=>Ja(o,e.wide)),s=A(i,e.query);return ot({...r,prs:s,summary:`${ri(s.length,i.length,e.query)} ${ja(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ot({...r,pr:qa(X(n),e),summary:`PR #${Ce(X(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Ep(e,t,X(n));case"issue:list":{let i=at(n).map(o=>Va(o,e.wide)),s=A(i,e.query);return ot({...r,issues:s,summary:`${ri(s.length,i.length,e.query)} ${ja(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ot({...r,issue:Tp(X(n),e),summary:`issue #${Ce(X(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=at(n).map(o=>Ha(o,e.wide)),s=A(i,e.query);return ot({...r,runs:s,summary:`${ri(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return ot({...r,run:xp(X(n),e),summary:`run ${Ce(X(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Ep(e,t,n){let r=qa(X(n.view),{...e,action:"view",wide:!0}),i=A(at(n.checks).map(kp),e.query),s=X(n.comments).comments,o=A(at(s).map(Sp).slice(-3),e.query);return Te({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Ce(X(n.view),"number")}: ${i.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 kp(e){return{name:O(e,"name"),state:Bt(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function Sp(e){return{author:za(e.author),body:On(e,"body",ii,!1),created:O(e,"createdAt")}}function vp(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
110
+ ${b}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:m,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function qa(e){let t=ke(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:s.push(u);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function Sp(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Rp[t]:_p[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function vp(e){if(e.action==="combined")return await Tp(e);let t=Fa("gh",Sp(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function Tp(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([ri(["pr","view",t,"--json",n.join(",")]),ri(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),ri(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:On(i.stdout),checks:On(s.stdout),comments:On(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function ri(e){let t=Fa("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function xp(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return $p(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ot(n).map(o=>Va(o,e.wide)),s=I(i,e.query);return st({...r,prs:s,summary:`${ii(s.length,i.length,e.query)} ${Ga(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return st({...r,pr:Wa(Y(n),e),summary:`PR #${Le(Y(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Op(e,t,Y(n));case"issue:list":{let i=ot(n).map(o=>Ha(o,e.wide)),s=I(i,e.query);return st({...r,issues:s,summary:`${ii(s.length,i.length,e.query)} ${Ga(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return st({...r,issue:Ip(Y(n),e),summary:`issue #${Le(Y(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ot(n).map(o=>Ka(o,e.wide)),s=I(i,e.query);return st({...r,runs:s,summary:`${ii(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return st({...r,run:Ap(Y(n),e),summary:`run ${Le(Y(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Op(e,t,n){let r=Wa(Y(n.view),{...e,action:"view",wide:!0}),i=I(ot(n.checks).map(Pp),e.query),s=Y(n.comments).comments,o=I(ot(s).map(Dp).slice(-3),e.query);return Se({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Le(Y(n.view),"number")}: ${i.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 Pp(e){return{name:O(e,"name"),state:Nt(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function Dp(e){return{author:Qa(e.author),body:Pn(e,"body",si,!1),created:O(e,"createdAt")}}function $p(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
112
111
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
113
112
  `:`0 runs \u2014 try: rsp gh run list --limit 20
114
- `}function Ja(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:Bt(e),draft:!!e.isDraft};return t&&Object.assign(n,Wa(e)),n}function qa(e,t){let n=Ja(e,t.wide);return n.body=On(e,"body",ii,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Va(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:Bt(e),labels:Ka(e.labels)};return t&&Object.assign(n,Wa(e)),n}function Tp(e,t){let n=Va(e,t.wide);return n.body=On(e,"body",ii,t.full),n}function Ha(e,t){let n={id:Ce(e,"databaseId"),name:O(e,"name"),status:Bt(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function xp(e,t){let n=Ha(e,t.wide),r=at(e.jobs).map(i=>({name:O(i,"name"),status:Bt(i),conclusion:O(i,"conclusion"),log:On(i,"log",gp,t.full)}));return n.jobs=r,n}function On(e,t,n,r){let i=O(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Op(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(ct(n)){if(ct(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function Pp(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function ja(e,t){return e.every(n=>n.state===t)?t:"returned"}function ri(e,t,n){return n?`${e}/${t}`:String(e)}function ot(e,t,n){return t.query?Te(e,n):e}function Bt(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function Wa(e){return{author:za(e.author),labels:Ka(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function Ka(e){return Array.isArray(e)?e.map(t=>ct(t)?O(t,"name"):String(t)).filter(Boolean):[]}function za(e){return ct(e)?O(e,"login"):""}function xn(e){return e.trim()?JSON.parse(e):null}function at(e){return Array.isArray(e)?e.filter(ct):[]}function X(e){return ct(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Ce(e,t){let n=e[t];return typeof n=="number"?n:0}function ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pp,yp,ii,gp,oi=v(()=>{"use strict";me();Le();Tn();pp={"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"]},yp={"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"]},ii=160,gp=160});var ci={};$(ci,{renderTestContract:()=>Ya,runTestWrapper:()=>Np});import{spawn as Dp}from"node:child_process";async function Np(e,t){let n=ve(e),r=await jp(n.argv);return await Ya(e,r,t)}async function Ya(e,t,n){let r=ve(e),s=Qa(r.argv)==="vitest"?Up(t.stdout):Gp(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(st(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${qp(s.durationSeconds)}`,c=A(s.failures,r.query);if(n.level==="terse")return await Bp(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let _ of c){let x=await Fp(_.excerpt,r.argv.join(" "),n.store);u.push({suite:_.suite,name:_.name,excerpt:x.text}),l??=x.handle,d+=x.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};u.length>0&&(m.failures=u);let h=r.query?Te(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(P(h)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:h,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Bp(e,t,n,r,i,s,o){let a=Lp(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let u=o?Te(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=P(u),d=Math.max(0,n.failures.length-a.length),m=a.some((b,w)=>b.excerpt!==n.failures[w].excerpt);if(d===0&&!m)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let h={exit_code:r,summary:i};n.failures.length>0&&(h.failures=n.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let _=P(h),x=Buffer.byteLength(_),k=await s.store?.mint(Buffer.from(_),{command:e.join(" "),loss:{level:"terse",bytes_elided:x}});if(!k)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${x}) \u2014 ${V(k)}`;return{stdout:Buffer.from(`${l}
115
- ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:k,bytesElided:x,rowsElided:d,rawOutput:Buffer.from(_)}}function Lp(e){let t=[],n=Ip;for(let r of e.slice(0,Ap)){let i=Cp(r.excerpt,Math.min($p,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Cp(e,t){if(t<=0)return"";let n=e.split(`
113
+ `}function Va(e,t){let n={number:Le(e,"number"),title:O(e,"title"),state:Nt(e),draft:!!e.isDraft};return t&&Object.assign(n,za(e)),n}function Wa(e,t){let n=Va(e,t.wide);return n.body=Pn(e,"body",si,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Ha(e,t){let n={number:Le(e,"number"),title:O(e,"title"),state:Nt(e),labels:Ya(e.labels)};return t&&Object.assign(n,za(e)),n}function Ip(e,t){let n=Ha(e,t.wide);return n.body=Pn(e,"body",si,t.full),n}function Ka(e,t){let n={id:Le(e,"databaseId"),name:O(e,"name"),status:Nt(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function Ap(e,t){let n=Ka(e,t.wide),r=ot(e.jobs).map(i=>({name:O(i,"name"),status:Nt(i),conclusion:O(i,"conclusion"),log:Pn(i,"log",Ep,t.full)}));return n.jobs=r,n}function Pn(e,t,n,r){let i=O(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Np(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(at(n)){if(at(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function Bp(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function Ga(e,t){return e.every(n=>n.state===t)?t:"returned"}function ii(e,t,n){return n?`${e}/${t}`:String(e)}function st(e,t,n){return t.query?Se(e,n):e}function Nt(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function za(e){return{author:Qa(e.author),labels:Ya(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function Ya(e){return Array.isArray(e)?e.map(t=>at(t)?O(t,"name"):String(t)).filter(Boolean):[]}function Qa(e){return at(e)?O(e,"login"):""}function On(e){return e.trim()?JSON.parse(e):null}function ot(e){return Array.isArray(e)?e.filter(at):[]}function Y(e){return at(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Le(e,t){let n=e[t];return typeof n=="number"?n:0}function at(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var _p,Rp,si,Ep,ai=S(()=>{"use strict";fe();Be();xn();_p={"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"]},Rp={"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"]},si=160,Ep=160});var ui={};D(ui,{renderTestContract:()=>Xa,runTestWrapper:()=>Up});import{spawn as Lp}from"node:child_process";async function Up(e,t){let n=ke(e),r=await Vp(n.argv);return await Xa(e,r,t)}async function Xa(e,t,n){let r=ke(e),s=Za(r.argv)==="vitest"?Wp(t.stdout):Hp(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${Yp(s.durationSeconds)}`,c=I(s.failures,r.query);if(n.level==="terse")return await Gp(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let _ of c){let T=await Kp(_.excerpt,r.argv.join(" "),n.store);u.push({suite:_.suite,name:_.name,excerpt:T.text}),l??=T.handle,d+=T.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};u.length>0&&(m.failures=u);let b=r.query?Se(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(P(b)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:b,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Gp(e,t,n,r,i,s,o){let a=Fp(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let u=o?Se(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=P(u),d=Math.max(0,n.failures.length-a.length),m=a.some((w,g)=>w.excerpt!==n.failures[g].excerpt);if(d===0&&!m)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let b={exit_code:r,summary:i};n.failures.length>0&&(b.failures=n.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let _=P(b),T=Buffer.byteLength(_),v=await s.store?.mint(Buffer.from(_),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!v)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${T}) \u2014 ${q(v)}`;return{stdout:Buffer.from(`${l}
114
+ ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:v,bytesElided:T,rowsElided:d,rawOutput:Buffer.from(_)}}function Fp(e){let t=[],n=Mp;for(let r of e.slice(0,jp)){let i=Jp(r.excerpt,Math.min(Cp,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Jp(e,t){if(t<=0)return"";let n=e.split(`
116
115
  `),r=n.length<=2?e:`${n[0]}
117
116
  \u2026
118
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Qa(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 Mp(e){if(Qa(e)==="vitest"){let i=e.slice(1);return{executable:"vitest",args:i.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?i:["run","--reporter=json",...i]}}let n=e.slice(1);return{executable:"cargo",args:n.some(i=>i==="--message-format=json"||i.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function jp(e){let t=Mp(e),n=Dp(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Up(e){let t=Xa(e);if(!Oe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=Pe(t.numTotalTests),s=Pe(t.numFailedTests),o=Vp(Pe(t.startTime),Pe(t.endTime));for(let a of n){if(!Oe(a))continue;let c=Z(a.name)||Z(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Oe(l)&&l.status==="failed"&&r.push({suite:c,name:Z(l.fullName)||Z(l.title)||Z(l.name),excerpt:Jp(l.failureMessages)||Z(l.failureMessage)})}return i||=n.reduce((a,c)=>!Oe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>Oe(c)?a+Pe(c.perfStats&&Oe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Gp(e){let t=e.split(`
119
- `).filter(Boolean).map(c=>Xa(c)).filter(Oe);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=Pe(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=Pe(c.failed),o+=Pe(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Z(c.name).split("::").slice(0,-1).join("::"),name:Z(c.name),excerpt:Z(c.stdout)});continue}if(c.reason==="compiler-message"&&Oe(c.message)){let u=Z(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
120
- `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function Fp(e,t,n){let r=Buffer.from(e);if(r.length<=ai)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,ai).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
121
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${V(i)}`,handle:i,bytesElided:r.length}}function Xa(e){try{return JSON.parse(e)}catch{return null}}function Jp(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
122
- `):""}function qp(e){return`${Number(e.toFixed(1))}s`}function Vp(e,t){return e>0&&t>e?(t-e)/1e3:0}function Pe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Z(e){return typeof e=="string"?e:""}function Oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ai,$p,Ip,Ap,ui=v(()=>{"use strict";me();Le();Tn();ai=320,$p=160,Ip=ai,Ap=3});var fi={};$(fi,{parseCatCommand:()=>di,renderCatContract:()=>Zp,runCatWrapper:()=>Xp});import{isUtf8 as Hp}from"node:buffer";import{readFile as Wp}from"node:fs/promises";import{extname as Kp}from"node:path";async function Xp(e,t){let n=di(e),r=await Wp(n.file);return ic(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await rc(e,n,r,t)}async function Zp(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=di(e),i=Buffer.from(t.stdout,"utf8");return ic(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await rc(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function di(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=nc(t[++s],li);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=nc(c,li);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function rc(e,t,n,r){let i=n.toString("utf8"),s=ny(i,t),o=r.level!=="lossless"||n.length>tc(r.heavyByteThreshold,Za)||s.truncated;if(!ec(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ec(t.file)?ey(e,t.file,n,i,r.level,s):ty(e,t.file,n,i,s),c=`${P(a)}
123
- `;if(!o&&Buffer.byteLength(c)<=tc(r.heavyByteThreshold,Za))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${V(u)}
124
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function ey(e,t,n,r,i,s){let o=Pn(r),a=i==="terse"?Yp:zp,c=Pn(s.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:n.length,lines:o.length,symbols:ry(o),content:{head:u,tail:l,truncated:s.truncated||u.length+l.length<o.length}}}function ty(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Pn(r).length,content:Pn(i.text),truncated:i.truncated}}function ny(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
125
- `),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??li,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
117
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Za(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 qp(e){if(Za(e)==="vitest"){let i=e.slice(1);return{executable:"vitest",args:i.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?i:["run","--reporter=json",...i]}}let n=e.slice(1);return{executable:"cargo",args:n.some(i=>i==="--message-format=json"||i.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function Vp(e){let t=qp(e),n=Lp(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Wp(e){let t=ec(e);if(!Te(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=xe(t.numTotalTests),s=xe(t.numFailedTests),o=Qp(xe(t.startTime),xe(t.endTime));for(let a of n){if(!Te(a))continue;let c=Q(a.name)||Q(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Te(l)&&l.status==="failed"&&r.push({suite:c,name:Q(l.fullName)||Q(l.title)||Q(l.name),excerpt:zp(l.failureMessages)||Q(l.failureMessage)})}return i||=n.reduce((a,c)=>!Te(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>Te(c)?a+xe(c.perfStats&&Te(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Hp(e){let t=e.split(`
118
+ `).filter(Boolean).map(c=>ec(c)).filter(Te);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=xe(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=xe(c.failed),o+=xe(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Q(c.name).split("::").slice(0,-1).join("::"),name:Q(c.name),excerpt:Q(c.stdout)});continue}if(c.reason==="compiler-message"&&Te(c.message)){let u=Q(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
119
+ `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function Kp(e,t,n){let r=Buffer.from(e);if(r.length<=ci)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,ci).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
120
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${q(i)}`,handle:i,bytesElided:r.length}}function ec(e){try{return JSON.parse(e)}catch{return null}}function zp(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
121
+ `):""}function Yp(e){return`${Number(e.toFixed(1))}s`}function Qp(e,t){return e>0&&t>e?(t-e)/1e3:0}function xe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Q(e){return typeof e=="string"?e:""}function Te(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ci,Cp,Mp,jp,li=S(()=>{"use strict";fe();Be();xn();ci=320,Cp=160,Mp=ci,jp=3});var mi={};D(mi,{parseCatCommand:()=>fi,renderCatContract:()=>sg,runCatWrapper:()=>ig});import{isUtf8 as Xp}from"node:buffer";import{readFile as Zp}from"node:fs/promises";import{extname as eg}from"node:path";async function ig(e,t){let n=fi(e),r=await Zp(n.file);return oc(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await sc(e,n,r,t)}async function sg(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=fi(e),i=Buffer.from(t.stdout,"utf8");return oc(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await sc(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function fi(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=ic(t[++s],di);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=ic(c,di);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function sc(e,t,n,r){let i=n.toString("utf8"),s=cg(i,t),o=r.level!=="lossless"||n.length>rc(r.heavyByteThreshold,tc)||s.truncated;if(!nc(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=nc(t.file)?og(e,t.file,n,i,r.level,s):ag(e,t.file,n,i,s),c=`${P(a)}
122
+ `;if(!o&&Buffer.byteLength(c)<=rc(r.heavyByteThreshold,tc))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${q(u)}
123
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function og(e,t,n,r,i,s){let o=Dn(r),a=i==="terse"?ng:tg,c=Dn(s.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:n.length,lines:o.length,symbols:ug(o),content:{head:u,tail:l,truncated:s.truncated||u.length+l.length<o.length}}}function ag(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Dn(r).length,content:Dn(i.text),truncated:i.truncated}}function cg(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
124
+ `),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??di,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
126
125
  `)}${r&&o.length>0?`
127
- `:""}`,truncated:o.length<i.length}}function ry(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!iy(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function Pn(e){let t=e.split(`
128
- `);return t.at(-1)===""?t.slice(0,-1):t}function ic(e){return e.includes(0)||!Hp(e)}function ec(e){return Qp.has(Kp(e).toLowerCase())}function iy(e){return["for","if","switch","while"].includes(e)}function tc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function nc(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Za,li,zp,Yp,Qp,mi=v(()=>{"use strict";me();Le();Za=8*1024,li=10,zp=8,Yp=2,Qp=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Dn={};$(Dn,{parseExecCommandLine:()=>ac,renderExecContract:()=>oc,runExecWrapper:()=>ly});import{isUtf8 as sy}from"node:buffer";import{spawn as oy}from"node:child_process";async function ly(e,t){let n=ac(e),r=await dy(n);return await oc(n,r,t)}async function oc(e,t,n){let r=Buffer.from(t.stdout,"binary"),i=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let s=fy(r);if(s.kind==="text"){let d=await bt(s.text,{level:n.level,command:e,store:n.store?{mint:async(...m)=>await n.store.mint(...m)}:void 0});if(d.detected)return{stdout:Buffer.from(d.output),stderr:i,status:t.status,signal:t.signal,mintedHandle:d.handle,bytesElided:d.lossy?r.length:void 0,rawOutput:r}}let o=s.kind==="text"?Buffer.from(s.text):r,a=yy(n.heavyByteThreshold,ay);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(my(o,r.length,l,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function ac(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function dy(e){let t=oy(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function fy(e){return sy(e)?{kind:"text",text:Ye(e.toString("utf8"))}:{kind:"bytes"}}function my(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?uy:cy)/2)),o=sc(e.subarray(0,s)),a=sc(e.subarray(Math.max(0,e.length-s))),c=py(e),u=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&u.push("tail:",a),u.push(`\u2026 elided stdout (+${t}) \u2014 ${V(n)}`),`${u.join(`
126
+ `:""}`,truncated:o.length<i.length}}function ug(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!lg(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function Dn(e){let t=e.split(`
127
+ `);return t.at(-1)===""?t.slice(0,-1):t}function oc(e){return e.includes(0)||!Xp(e)}function nc(e){return rg.has(eg(e).toLowerCase())}function lg(e){return["for","if","switch","while"].includes(e)}function rc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ic(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var tc,di,tg,ng,rg,pi=S(()=>{"use strict";fe();Be();tc=8*1024,di=10,tg=8,ng=2,rg=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var $n={};D($n,{parseExecCommandLine:()=>uc,renderExecContract:()=>cc,runExecWrapper:()=>yg});import{isUtf8 as dg}from"node:buffer";import{spawn as fg}from"node:child_process";async function yg(e,t){let n=uc(e),r=await hg(n);return await cc(n,r,t)}async function cc(e,t,n){let r=Buffer.from(t.stdout,"binary"),i=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let s=wg(r);if(s.kind==="text"){let d=await wt(s.text,{level:n.level,command:e,store:n.store?{mint:async(...m)=>await n.store.mint(...m)}:void 0});if(d.detected)return{stdout:Buffer.from(d.output),stderr:i,status:t.status,signal:t.signal,mintedHandle:d.handle,bytesElided:d.lossy?r.length:void 0,rawOutput:r}}let o=s.kind==="text"?Buffer.from(s.text):r,a=Rg(n.heavyByteThreshold,mg);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(bg(o,r.length,l,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function uc(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function hg(e){let t=fg(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function wg(e){return dg(e)?{kind:"text",text:ze(e.toString("utf8"))}:{kind:"bytes"}}function bg(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?gg:pg)/2)),o=ac(e.subarray(0,s)),a=ac(e.subarray(Math.max(0,e.length-s))),c=_g(e),u=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&u.push("tail:",a),u.push(`\u2026 elided stdout (+${t}) \u2014 ${q(n)}`),`${u.join(`
129
128
  `)}
130
- `}function sc(e){return e.toString("utf8").replace(/�$/g,"")}function py(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function yy(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var ay,cy,uy,$n=v(()=>{"use strict";Le();_t();ay=8*1024,cy=2*1024,uy=1024});me();import{appendFileSync as cc,existsSync as uc,mkdirSync as gy,readFileSync as hy,readdirSync as wy,statSync as by}from"node:fs";import{dirname as _y,join as lc}from"node:path";function Fi(e){let t={app:e,version:mu(He("__RED_BUILD_VERSION__",()=>"2.55.0")??"0.0.0-dev"),gitSha:He("__RED_BUILD_GIT_SHA__",()=>"9dc21e6b45f4e6f32cc93f082906207fae603dcd")??"unknown",buildTime:He("__RED_BUILD_TIME__",()=>"2026-07-13T19:53:04-03:00")??"unknown",bundleAsset:He("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=He("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=He("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function mu(e){return e.startsWith("v")?e.slice(1):e}function He(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Hn();async function Ry(e=process.argv.slice(2)){let t=Fi("rsp"),n=Ay(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(sn(),tr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(sn(),tr));return await p()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(_t(),rr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(_t(),rr));return await p()}if(n.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(xo(),To)),f=await p(process.cwd());return process.stdout.write(Jy(f)),0}if(n.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(No(),Ao));return await p(),0}if(n.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Go(),Uo));return await p(n.positional)}if(n.command==="shell-init"){let p=n.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
131
- `),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(qo(),Jo));return process.stdout.write(f(p)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Y(),ys)),i=r(process.cwd(),process.env,n.storeUri),s=$y(n.command);if(!i.enabled)return s?await Dy(n.positional):(process.stdout.write(`${_i()}
132
- `),0);if(n.command==="git"&&gi(n.positional)){let p=process.hrtime.bigint();return await j(n,await hi(),p,void 0,await Ey(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(he(),ze));if(n.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(Ia(),$a)),f=o(process.cwd()),b=ee(n.positional,"--socket")??f.socketPath,w=r(process.cwd(),process.env,n.storeUri??ee(n.positional,"--store-uri"));return w.enabled?(await p({socketPath:b,pidPath:ee(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:f.rootDir,storeUri:w.storeUri,ttlDays:L(n.positional,"--ttl-days")??w.ttlDays,byteBudget:L(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??w.idleMs,residentVersion:ee(n.positional,"--resident-version")??t.version,registryPath:ee(n.positional,"--registry")??f.registryPath}),0):(process.stdout.write(`${_i()}
133
- `),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),f=ee(n.positional,"--socket")??p.socketPath,b=ee(n.positional,"--wake-lock")??p.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??ee(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(he(),ze));return await T({...p,socketPath:f,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:L(n.positional,"--ttl-days")??w.ttlDays,byteBudget:L(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),d=o(process.cwd());if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:f}=await Promise.resolve().then(()=>(he(),ze)),b=n.command==="sweep"?await f(d):await p(d);return process.stdout.write(`${P(b)}
134
- `),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await ut(n,i,d.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
135
- `),1);let m=()=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version})),h=()=>c(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),_=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(mn(),Tr));return await p.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},x=()=>i.storeUri.endsWith("/red-skills.rdb")?m():_(),k;try{if(!n.command||n.command==="stats"){let p=await x();k=()=>p.close();let f=await p.stats(),b=Sy(p)?await p.telemetryStats(pi(n.positional,30)):pc(pi(n.positional,30));return process.stdout.write(By(f,b,Ny(n.positional))),0}if(n.command==="gains"){let p=await x();if(k=()=>p.close(),!vy(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
136
- `),1;let f=await p.telemetryGains(pi(n.positional,28));return process.stdout.write(Ly(f)),0}if(n.command==="git"){try{await N(h)}catch(T){return await ut(n,i,d.rootDir,T)}if(gi(n.positional)){let T=process.hrtime.bigint();return await j(n,await hi(),T,void 0,d.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Le(),ti)),f=new Me(()=>N(m));k=()=>f.close();let b=process.hrtime.bigint(),w=await N(()=>p(n.positional,{level:n.level,store:f,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await j(n,w,b,f,d.rootDir)}if(n.command==="gh"){try{await N(h)}catch(T){return await ut(n,i,d.rootDir,T)}let{runGhWrapper:p}=await Promise.resolve().then(()=>(oi(),si)),f=new Me(()=>N(m));k=()=>f.close();let b=process.hrtime.bigint(),w=await N(()=>p(n.positional,{level:n.level,store:f}));return await j(n,w,b,f,d.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await N(h)}catch(T){return await ut(n,i,d.rootDir,T)}let{runTestWrapper:p}=await Promise.resolve().then(()=>(ui(),ci)),f=new Me(()=>N(m));k=()=>f.close();let b=process.hrtime.bigint(),w=await N(()=>p(n.positional,{level:n.level,store:f}));return await j(n,w,b,f,d.rootDir)}if(n.command==="cat"){try{await N(h)}catch(T){return await ut(n,i,d.rootDir,T)}let{runCatWrapper:p}=await Promise.resolve().then(()=>(mi(),fi)),f=new Me(()=>N(m));k=()=>f.close();let b=process.hrtime.bigint(),w=await N(()=>p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold}));return await j(n,w,b,f,d.rootDir)}if(n.command==="exec"){try{await N(h)}catch(T){return await ut(n,i,d.rootDir,T)}let{runExecWrapper:p}=await Promise.resolve().then(()=>($n(),Dn)),f=new Me(()=>N(m));k=()=>f.close();let b=process.hrtime.bigint(),w=await N(()=>p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold}));return await j(n,w,b,f)}if(n.command==="show"&&n.handle){let p=await x();k=()=>p.close();let f=await p.get(n.handle);return f&&"original"in f&&f.original?(process.stdout.write(f.original),0):f?.status==="expired"?(process.stdout.write(`expired ${f.expired_at} \u2014 re-run: ${f.command}
129
+ `}function ac(e){return e.toString("utf8").replace(/�$/g,"")}function _g(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function Rg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var mg,pg,gg,In=S(()=>{"use strict";Be();bt();mg=8*1024,pg=2*1024,gg=1024});fe();import{spawn as Eg}from"node:child_process";import{createHash as kg}from"node:crypto";import{appendFileSync as lc,existsSync as hi,mkdirSync as Sg,readFileSync as vg,readdirSync as Tg,statSync as xg}from"node:fs";import{tmpdir as Og}from"node:os";import{dirname as dc,join as Z}from"node:path";function qi(e){let t={app:e,version:pu(We("__RED_BUILD_VERSION__",()=>"2.55.2")??"0.0.0-dev"),gitSha:We("__RED_BUILD_GIT_SHA__",()=>"c2bbfd6d644ae033e4d5d012f98a7e0a9407a76c")??"unknown",buildTime:We("__RED_BUILD_TIME__",()=>"2026-07-13T23:33:42-03:00")??"unknown",bundleAsset:We("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=We("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=We("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function pu(e){return e.startsWith("v")?e.slice(1):e}function We(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Hn();async function Pg(e=process.argv.slice(2)){let t=qi("rsp"),n=qg(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(sn(),nr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(sn(),nr));return await p()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(bt(),ir));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(bt(),ir));return await p()}if(n.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Po(),Oo)),f=await p(process.cwd());return process.stdout.write(ey(f)),0}if(n.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Lo(),Bo));return await p(),0}if(n.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Jo(),Fo));return await p(n.positional)}if(n.command==="shell-init"){let p=n.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
130
+ `),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(Wo(),Vo));return process.stdout.write(f(p)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(K(),hs)),i=r(process.cwd(),process.env,n.storeUri),s=Fg(n.command);if(!i.enabled)return s?await Gg(n.positional):(process.stdout.write(`${Ei()}
131
+ `),0);if(n.command==="git"&&wi(n.positional)){let p=process.hrtime.bigint();return await C(n,await bi(),p,void 0,await Dg(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>($e(),gt));if(n.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(Na(),Aa)),f=o(process.cwd()),w=X(n.positional,"--socket")??f.socketPath,g=r(process.cwd(),process.env,n.storeUri??X(n.positional,"--store-uri"));return g.enabled?(await p({socketPath:w,pidPath:X(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:f.rootDir,storeUri:g.storeUri,ttlDays:N(n.positional,"--ttl-days")??g.ttlDays,byteBudget:N(n.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??g.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??g.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??g.idleMs,residentVersion:X(n.positional,"--resident-version")??t.version,registryPath:X(n.positional,"--registry")??f.registryPath}),0):(process.stdout.write(`${Ei()}
132
+ `),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),f=X(n.positional,"--socket")??p.socketPath,w=X(n.positional,"--wake-lock")??p.wakeLockPath,g=r(process.cwd(),process.env,n.storeUri??X(n.positional,"--store-uri"));if(!g.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>($e(),gt));return await E({...p,socketPath:f,wakeLockPath:w},{storeUri:g.storeUri,ttlDays:N(n.positional,"--ttl-days")??g.ttlDays,byteBudget:N(n.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??g.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??g.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??g.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),d=o(process.cwd());if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:f}=await Promise.resolve().then(()=>($e(),gt)),w=n.command==="sweep"?await f(d):await p(d);return process.stdout.write(`${P(w)}
133
+ `),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await Ng(n,i,d.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
134
+ `),1);let m=(p=!0)=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version},{ensureResident:p})),b=()=>c(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),_=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(mn(),xr));return await p.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},T=()=>i.storeUri.endsWith("/red-skills.rdb")?m():_(),v;try{if(!n.command||n.command==="stats"){let p=await T();v=()=>p.close();let f=await p.stats(),w=Ig(p)?await p.telemetryStats(gi(n.positional,30)):gc(gi(n.positional,30));return process.stdout.write(Wg(f,w,Vg(n.positional))),0}if(n.command==="gains"){let p=await T();if(v=()=>p.close(),!Ag(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
135
+ `),1;let f=await p.telemetryGains(gi(n.positional,28));return process.stdout.write(Hg(f)),0}if(n.command==="git"){if(Me(b()),wi(n.positional)){let E=process.hrtime.bigint();return await C(n,await bi(),E,void 0,d.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Be(),ni)),f=new Ce(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyGitByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="gh"){Me(b());let{runGhWrapper:p}=await Promise.resolve().then(()=>(ai(),oi)),f=new Ce(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f});return await C(n,g,w,f,d.rootDir)}if(n.command==="vitest"||n.command==="cargo"){Me(b());let{runTestWrapper:p}=await Promise.resolve().then(()=>(li(),ui)),f=new Ce(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f});return await C(n,g,w,f,d.rootDir)}if(n.command==="cat"){Me(b());let{runCatWrapper:p}=await Promise.resolve().then(()=>(pi(),mi)),f=new Ce(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="exec"){Me(b());let{runExecWrapper:p}=await Promise.resolve().then(()=>(In(),$n)),f=new Ce(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="show"&&n.handle){let p=await T();v=()=>p.close();let f=await p.get(n.handle);return f&&"original"in f&&f.original?(process.stdout.write(f.original),0):f?.status==="expired"?(process.stdout.write(`expired ${f.expired_at} \u2014 re-run: ${f.command}
137
136
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
138
137
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
139
- `),2}catch(p){if(s)return await bi("wrapper failed",n.positional,p,d.rootDir);throw p}finally{await k?.()}}function ee(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function L(e,t){let n=ee(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function gi(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function hi(){if(ky(process.cwd()))return{stdout:Buffer.from(`git empty
138
+ `),2}catch(p){if(s)return await Ri("wrapper failed",n.positional,p,d.rootDir);throw p}finally{await v?.()}}function X(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function N(e,t){let n=X(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function wi(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function bi(){if($g(process.cwd()))return{stdout:Buffer.from(`git empty
140
139
  `),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Buffer.from(`git empty
141
140
  `),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?Buffer.from(`git empty
142
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Ey(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(he(),ze));return t(e).rootDir}catch{return e}}function ky(e){try{return!uc(`${e}/.git`)||uc(`${e}/.git/index`)?!1:wy(e).every(t=>t===".git")}catch{return!1}}function Sy(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function vy(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Me=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}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}},wi=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function ut(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new wi,s=process.hrtime.bigint();try{if(e.command==="git"){if(gi(e.positional))return await j(e,await hi(),s,i,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Le(),ti)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(oi(),si)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(ui(),ci)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(mi(),fi)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>($n(),Dn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i)}}catch(o){return await bi("wrapper failed",e.positional,o,n)}finally{await i.close()}return await bi("wrapper failed",e.positional,r,n)}async function j(e,t,n,r,i=process.cwd(),s){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(await Oy(i,e,t,o,r.lastResponseMetrics()),s&&await Ty(i,s)):Py(i,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Ty(e,t){try{let n=lc(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=by(n),i=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!xy(n,Date.now()-i))return;let{kickResidentServer:s,resolveResidentPaths:o}=await Promise.resolve().then(()=>(he(),ze));await s(o(e),{storeUri:t.storeUri,ttlDays:t.ttlDays,byteBudget:t.byteBudget,telemetryTtlDays:t.telemetryTtlDays,telemetryByteBudget:t.telemetryByteBudget,telemetryDrainIntervalMs:t.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:t.telemetryDrainTimeoutMs,idleMs:t.idleMs})}catch{}}function xy(e,t){try{let n=hy(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let i=JSON.parse(r),s=typeof i.created_at=="string"?i.created_at:i.ts;if(typeof s=="string"){let o=Date.parse(s);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function Oy(e,t,n,r,i){let s=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Sn(),Kr));await a(e,{collection:c,ts:new Date().toISOString(),command:fc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,raw_text:o.toString("utf8"),emitted_text:s.toString("utf8"),wrapper_ms:r,store_open_count:i?.storeOpenCount,store_elapsed_ms:i?.storeElapsedMs})}function Py(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=lc(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:fc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
143
- `;try{cc(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;gy(_y(o),{recursive:!0}),cc(o,a,{encoding:"utf8",mode:384})}}catch{}}async function bi(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
144
- `);let i=await dc(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Sn(),Kr));await s(r,{collection:o,ts:new Date().toISOString(),command:mc(t),reason:e})}return i}async function Dy(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${_i()}, passing through
145
- `),await dc(e)}function _i(){return"rsp is not enabled in this directory; run /red-setup"}async function N(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function $y(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function dc(e){if(e[0]==="exec")return await Iy(e);let t=e[0];if(!t)return 2;let{spawn:n}=await import("node:child_process"),r=n(t,e.slice(1),{stdio:"inherit"});return await new Promise(i=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
146
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Iy(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>($n(),Dn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
141
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Dg(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>($e(),gt));return t(e).rootDir}catch{return e}}function $g(e){try{return!hi(`${e}/.git`)||hi(`${e}/.git/index`)?!1:Tg(e).every(t=>t===".git")}catch{return!1}}function Ig(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function Ag(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Ce=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}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}},_i=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Ng(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new _i,s=process.hrtime.bigint();try{if(e.command==="git"){if(wi(e.positional))return await C(e,await bi(),s,i,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Be(),ni)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(ai(),oi)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(li(),ui)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(pi(),mi)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(In(),$n)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i)}}catch(o){return await Ri("wrapper failed",e.positional,o,n)}finally{await i.close()}return await Ri("wrapper failed",e.positional,r,n)}async function C(e,t,n,r,i=process.cwd(),s){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(Me(jg(i,e,t,o,r.lastResponseMetrics())),s&&Bg(i,s)):Ug(i,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Bg(e,t){try{let n=Z(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=xg(n),i=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Mg(n,Date.now()-i))return;let s=Lg(e),o=Cg(s),a=Z(o,"rsp.sock"),c=Z(o,"rsp.pid"),u=Z(s,".red","tmp","rsp-resident.pid.json"),l=Z(s,".red","tmp","rsp.wake.lock");Eg(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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:s,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Lg(e){let t=e;for(;;){if(hi(Z(t,".git")))return t;let n=dc(t);if(n===t)return e;t=n}}function Cg(e){let t=kg("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=Z(n,"red-skills",t);if(Z(i,"rsp.sock").length<108)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Z(Og(),`red-skills-${r}`,t)}function Mg(e,t){try{let n=vg(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let i=JSON.parse(r),s=typeof i.created_at=="string"?i.created_at:i.ts;if(typeof s=="string"){let o=Date.parse(s);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function jg(e,t,n,r,i){let s=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(vn(),zr));await a(e,{collection:c,ts:new Date().toISOString(),command:mc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,raw_text:o.toString("utf8"),emitted_text:s.toString("utf8"),wrapper_ms:r,store_open_count:i?.storeOpenCount,store_elapsed_ms:i?.storeElapsedMs})}function Ug(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Z(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:mc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
142
+ `;try{lc(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;Sg(dc(o),{recursive:!0}),lc(o,a,{encoding:"utf8",mode:384})}}catch{}}async function Ri(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
143
+ `);let i=await fc(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(vn(),zr));Me(s(r,{collection:o,ts:new Date().toISOString(),command:pc(t),reason:e}))}return i}function Me(e){e.catch(()=>{})}async function Gg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ei()}, passing through
144
+ `),await fc(e)}function Ei(){return"rsp is not enabled in this directory; run /red-setup"}function Fg(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function fc(e){if(e[0]==="exec")return await Jg(e);let t=e[0];if(!t)return 2;let{spawn:n}=await import("node:child_process"),r=n(t,e.slice(1),{stdio:"inherit"});return await new Promise(i=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
145
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Jg(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(In(),$n));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
147
146
  `),2}let{spawn:n}=await import("node:child_process"),r=n(t,{shell:!0,stdio:"inherit"});return await new Promise(i=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
148
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function fc(e){return mc(e.positional)}function mc(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function Ay(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function pi(e,t){let n=ee(e,"--since")??e.find(s=>s.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let i=Number(r[1]);return Number.isFinite(i)&&i>0?i:t}function Ny(e){return e.includes("--full")}function By(e,t=pc(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),i=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${Cy(t.savings)}`,` dollars_saved_estimate_usd: ${My(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...jy(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...Uy(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Fy(t.health.degradation_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...Gy(t.health.by_reason),"latency:",` wrapper_ms_p50: ${yi(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${yi(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${yi(t.latency.store_elapsed_ms_avg)}`,""].join(`
149
- `)}function Ly(e){return`${P(e)}
150
- `}function Cy(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 My(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?mt(e.dollars_saved_estimate_usd):`${mt(e.dollars_saved_low_usd)}-${mt(e.dollars_saved_high_usd)} (estimate_midpoint: ${mt(e.dollars_saved_estimate_usd)})`}function jy(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Uy(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function Gy(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function yi(e){return e==null?"none":String(e)}function Fy(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function pc(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,by_reason:[],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}}}function Jy(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
151
- `)}import.meta.url===`file://${process.argv[1]}`&&Ry().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
152
- `),process.exit(1)});export{Ry as main,Jy as renderSetupResult,By as renderStats};
147
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function mc(e){return pc(e.positional)}function pc(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function qg(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function gi(e,t){let n=X(e,"--since")??e.find(s=>s.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let i=Number(r[1]);return Number.isFinite(i)&&i>0?i:t}function Vg(e){return e.includes("--full")}function Wg(e,t=gc(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),i=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${Kg(t.savings)}`,` dollars_saved_estimate_usd: ${zg(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...Yg(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...Qg(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Zg(t.health.degradation_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...Xg(t.health.by_reason),"latency:",` wrapper_ms_p50: ${yi(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${yi(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${yi(t.latency.store_elapsed_ms_avg)}`,""].join(`
148
+ `)}function Hg(e){return`${P(e)}
149
+ `}function Kg(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 zg(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?dt(e.dollars_saved_estimate_usd):`${dt(e.dollars_saved_low_usd)}-${dt(e.dollars_saved_high_usd)} (estimate_midpoint: ${dt(e.dollars_saved_estimate_usd)})`}function Yg(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Qg(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function Xg(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function yi(e){return e==null?"none":String(e)}function Zg(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function gc(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,by_reason:[],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}}}function ey(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
150
+ `)}import.meta.url===`file://${process.argv[1]}`&&Pg().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
151
+ `),process.exit(1)});export{Pg as main,ey as renderSetupResult,Wg as renderStats};