@reddb-io/red-skills 2.47.0 → 2.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,90 +1,93 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Wo=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var $=(e,t)=>{for(var n in t)Wo(e,n,{get:t[n],enumerable:!0})};function Gr(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 Fr(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 kt(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 dn(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 N(e,t){try{return t()}catch(n){throw n instanceof L?n:n instanceof Error?new L(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Jr(e){return e==="true"||e==="false"||e==="null"}function Qo(e){if(!e||!zo.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function Rt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=kt(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let y=e.length-r.length+f+1;i=e.indexOf("[",y)}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 p=f.trim();throw new SyntaxError(p===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${p}" between bracket and fields segment`)}return}let y=e.indexOf("}",c);y!==-1&&(a=y+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('"')?un(f):f}let m=e.slice(o+1).trim(),h=e.slice(i+1,s),w;try{w=Zo(h,t)}catch(f){if(n)throw f;return}let{length:k,delimiter:S}=w,T;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let y=e.slice(c+1,f),p=ta(y,S);if(p!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Cr(S)}" but fields segment contains unquoted "${Cr(p)}"`);return}T=fn(y,S).map(R=>un(R.trim()))}}return{header:{key:d,length:k,delimiter:S,fields:T},inlineValues:m||void 0}}function Zo(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=bt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=bt.pipe,n=n.slice(0,-1)),!Xo.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 ta(e,t){for(let n of ea)if(n!==t&&dn(e,n)!==-1)return n}function Cr(e){return e===" "?"\\t":e}function fn(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 Vr(e){return e.map(t=>St(t))}function St(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return un(t);if(Jr(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Qo(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function un(e){let t=e.trim();if(t.startsWith('"')){let n=kt(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 Fr(t.slice(1,n))}return t}function na(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 ra(e,t){let n=kt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Fr(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 ia(e,t){let n=e[t]==='"';return{...n?ra(e,t):na(e,t),isQuoted:n}}function Hr(e){return e.trim().startsWith("[")&&dn(e,":")!==-1}function sa(e){return dn(e,":")!==-1}function oa(){return{lineNumber:0,blankLines:[]}}function aa(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=Mr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Mr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new L("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new L(`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*ca(e,t,n,r){for(let i of e){let s=aa(i,r,t,n);s!==void 0&&(yield s)}}function Mr(e,t){return Math.floor(e/t)}function Ze(e,t,n,r,i){if(r.strict&&e!==t)throw new L(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function ua(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new L(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function la(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&da(e.content,n.delimiter))throw new L(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Kr(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new L(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function da(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*ma(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=oa(),i=new fa(ca(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(Hr(s.content)){let a=N(s,()=>Rt(s.content,q,n.strict));if(a){i.advanceSync(),yield*_t(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Ur(s)){yield{type:"primitive",value:N(s,()=>St(s.content.trim()))};return}if(!Ur(s)&&i.peekSync()?.depth===0)throw new L("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*$e(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*$e(a,i,0,n,o)}yield{type:"endObject"}}function jr(e,t,n){if(n){if(n.has(e))throw new L(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*$e(e,t,n,r,i){let s=e.content,o=N(e,()=>Rt(s,q,r.strict));if(o&&o.header.key!==void 0){jr(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*_t(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=N(e,()=>ia(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(jr(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*pa(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:N(e,()=>St(l))}}function*pa(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*$e(s,e,r,n,i);else break}}function*_t(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*ya(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*ga(e,n,r,i,s),yield{type:"endArray"};return}yield*ha(e,n,r,i,s),yield{type:"endArray"}}function*ya(e,t,n,r){if(!t.trim()){Ze(0,e.length,"inline array items",n,r);return}let i=N(r,()=>fn(t,e.delimiter)),s=N(r,()=>Vr(i));Ze(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*ga(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=N(l,()=>fn(l.content,e.delimiter));Ze(d.length,e.fields.length,"tabular row values",r,l);let m=N(l,()=>Vr(d));yield*ba(e.fields,m),o++}else break}Ze(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Kr(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&la(t.peekSync(),s,e)}function*ha(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*wa(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}Ze(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Kr(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&ua(t.peekSync(),s,e.length)}function*wa(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 L('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(Hr(i)){let a=N(s,()=>Rt(i,q,n.strict));if(a){yield*_t(a.header,a.inlineValues,e,t,n,s);return}}let o=N(s,()=>Rt(i,q,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*_t(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*$e(l,e,u,n,c);else break}yield{type:"endObject"};return}if(sa(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*$e(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*$e(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:N(s,()=>St(i))}}function Ur(e){let t=e.content;if(t.startsWith('"')){let n=kt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*ba(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 W(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 W(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(W);if(e instanceof Set)return Array.from(e).map(W);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),W(n)]));if(Ra(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=W(e[n]));return t}return null}function we(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function ne(e){return Array.isArray(e)}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function et(e){return Object.keys(e).length===0}function Ra(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function tt(e){return e.length===0||e.every(t=>we(t))}function _a(e){return e.length===0||e.every(t=>ne(t))}function Wr(e){return e.length===0||e.every(t=>D(t))}function Sa(e){return/^[A-Z_][\w.]*$/i.test(e)}function Yr(e){return/^[A-Z_]\w*$/i.test(e)}function Ta(e,t=q){return!(!e||e!==e.trim()||Jr(e)||xa(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function xa(e){return Ea.test(e)||ka.test(e)}function wt(e,t){if(Array.isArray(e))return e.map(n=>wt(n,t));if(D(e)){let n={},r=e[zr];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=>Yr(u))){va(n,c,wt(s,t),t);continue}}let a=wt(s,t);if(i in n){let c=n[i];if(pn(c,a))mn(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 va(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(D(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(pn(o,n))mn(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 mn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(pn(s,i))mn(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 pn(e,t){return D(e)&&D(t)}function Oa(e){let t={stack:[],root:void 0};for(let n of e)Da(t,n);return Aa(t)}function Da(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,zr,{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 Aa(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 Ia(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!D(t))return;let{segments:a,tail:c,leafValue:u}=Pa(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Yr(m)))return;let l=$a(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 Pa(e,t,n){let r=[e],i=t;for(;r.length<n&&D(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!D(i)||et(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function $a(e){return e.join(".")}function Ne(e,t){return e===null?Yo:typeof e=="boolean"||typeof e=="number"?String(e):Ba(e,t)}function Ba(e,t=q){return Ta(e,t)?e:`"${Gr(e)}"`}function Le(e){return Sa(e)?e:`"${Gr(e)}"`}function Qr(e,t=q){return e.map(n=>Ne(n,t)).join(t)}function be(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Le(n)),s+=`[${e}${i!==q?i:""}]`,r){let o=r.map(a=>Le(a));s+=`{${o.join(i)}}`}return s+=":",s}function*Na(e,t,n){if(we(e)){let r=Ne(e,t.delimiter);r!==""&&(yield r);return}ne(e)?yield*ln(void 0,e,n,t):D(e)&&(yield*Be(e,n,t))}function*Be(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*La(c,u,t,n,o,r,i,a)}function*La(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=Ia(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:h,leafValue:w,segmentCount:k}=d,S=Le(m);if(h===void 0){if(we(w)){yield B(n,`${S}: ${Ne(w,r.delimiter)}`,r.indent);return}else if(ne(w)){yield*ln(m,w,n,r);return}else if(D(w)&&et(w)){yield B(n,`${S}:`,r.indent);return}}if(D(h)){yield B(n,`${S}:`,r.indent);let T=u-k,f=o?`${o}.${m}`:m;yield*Be(h,n+1,r,s,f,T);return}}}let l=Le(e);we(t)?yield B(n,`${l}: ${Ne(t,r.delimiter)}`,r.indent):ne(t)?yield*ln(e,t,n,r):D(t)&&(yield B(n,`${l}:`,r.indent),et(t)||(yield*Be(t,n+1,r,s,c,u)))}function*ln(e,t,n,r){if(t.length===0){yield B(n,e!=null?`${Le(e)}: []`:"[]",r.indent);return}if(tt(t)){yield B(n,Tt(t,r.delimiter,e),r.indent);return}if(_a(t)&&t.every(i=>tt(i))){yield*Ca(e,t,n,r);return}if(Wr(t)){let i=Xr(t);i?yield*Ma(e,t,i,n,r):yield*qr(e,t,n,r);return}yield*qr(e,t,n,r)}function*Ca(e,t,n,r){yield B(n,be(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(tt(i)){let s=Tt(i,r.delimiter);yield U(n+1,s,r.indent)}}function Tt(e,t,n){let r=be(e.length,{key:n,delimiter:t}),i=Qr(e,t);return e.length===0?r:`${r} ${i}`}function*Ma(e,t,n,r,i){yield B(r,be(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Zr(t,n,r+1,i)}function Xr(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&ja(e,n))return n}function ja(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)||!we(n[r]))return!1}return!0}function*Zr(e,t,n,r){for(let i of e)yield B(n,Qr(t.map(s=>i[s]),r.delimiter),r.indent)}function*qr(e,t,n,r){yield B(n,be(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*yn(i,n+1,r)}function*Ua(e,t,n){if(et(e)){yield B(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(ne(s)&&Wr(s)){let c=Xr(s);if(c){yield U(t,be(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Zr(s,c,t+2,n),o.length>0&&(yield*Be(Object.fromEntries(o),t+1,n));return}}let a=Le(i);if(we(s))yield U(t,`${a}: ${Ne(s,n.delimiter)}`,n.indent);else if(ne(s))if(s.length===0)yield U(t,`${a}: []`,n.indent);else if(tt(s))yield U(t,`${a}${Tt(s,n.delimiter)}`,n.indent);else{yield U(t,`${a}${be(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*yn(c,t+2,n)}else D(s)&&(yield U(t,`${a}:`,n.indent),et(s)||(yield*Be(s,t+2,n)));o.length>0&&(yield*Be(Object.fromEntries(o),t+1,n))}function*yn(e,t,n){if(we(e))yield U(t,Ne(e,n.delimiter),n.indent);else if(ne(e))if(tt(e))yield U(t,Tt(e,n.delimiter),n.indent);else{yield U(t,be(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*yn(r,t+1,n)}else D(e)&&(yield*Ua(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function U(e,t,n){return B(e,"- "+t,n)}function qa(e,t){let n=t("",e,[]);return n===void 0?Et(e,t,[]):Et(W(n),t,[])}function Et(e,t,n){return D(e)?Ga(e,t,n):ne(e)?Fa(e,t,n):e}function Ga(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]=Et(W(a),t,o))}return r}function Fa(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=W(a);r.push(Et(c,t,o))}return r}function O(e,t){return Array.from(ei(e,t)).join(`
5
- `)}function gn(e,t){return ti(e.split(`
6
- `),t)}function ei(e,t){let n=W(e),r=Ja(t);return Na(r.replacer?qa(n,r.replacer):n,r,0)}function ti(e,t){let n=Va(t),r=Oa(ma(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?wt(r,n.strict):r}function Ja(e){return{indent:e?.indent??2,delimiter:e?.delimiter??q,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function Va(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Yo,bt,q,L,zo,Xo,ea,fa,Ea,ka,zr,ni=E(()=>{Yo="null",bt={comma:",",tab:" ",pipe:"|"},q=bt.comma;L=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}};zo=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;Xo=/^(?:0|[1-9]\d*)$/;ea=[","," ","|"];fa=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}};Ea=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,ka=/^0\d+$/;zr=Symbol("quotedKey")});var Ce=E(()=>{"use strict";ni()});import{existsSync as Ka,readFileSync as fm}from"node:fs";import{dirname as Wa,join as Ya}from"node:path";function ii(e,t){let n=e;for(let r=0;r<16;r++){let i=Ya(n,t);if(Ka(i))return i;let s=Wa(n);if(s===n)break;n=s}return null}function za(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function hn(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 za(u)}}var si=E(()=>{});import{createConnection as Qa}from"node:net";async function je(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Qa(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 aa=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var I=(e,t)=>{for(var n in t)aa(e,n,{get:t[n],enumerable:!0})};function Qr(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 Xr(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 xt(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 hn(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 L(e,t){try{return t()}catch(n){throw n instanceof C?n:n instanceof Error?new C(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Zr(e){return e==="true"||e==="false"||e==="null"}function la(e){if(!e||!ua.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function St(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=xt(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let p=e.length-r.length+f+1;i=e.indexOf("[",p)}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 R=f.trim();throw new SyntaxError(R===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${R}" between bracket and fields segment`)}return}let p=e.indexOf("}",c);p!==-1&&(a=p+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('"')?yn(f):f}let m=e.slice(o+1).trim(),h=e.slice(i+1,s),g;try{g=fa(h,t)}catch(f){if(n)throw f;return}let{length:S,delimiter:v}=g,T;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let p=e.slice(c+1,f),R=pa(p,v);if(R!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Hr(v)}" but fields segment contains unquoted "${Hr(R)}"`);return}T=wn(p,v).map(E=>yn(E.trim()))}}return{header:{key:d,length:S,delimiter:v,fields:T},inlineValues:m||void 0}}function fa(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=kt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=kt.pipe,n=n.slice(0,-1)),!da.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 pa(e,t){for(let n of ma)if(n!==t&&hn(e,n)!==-1)return n}function Hr(e){return e===" "?"\\t":e}function wn(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 ei(e){return e.map(t=>Ot(t))}function Ot(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return yn(t);if(Zr(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(la(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function yn(e){let t=e.trim();if(t.startsWith('"')){let n=xt(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 Xr(t.slice(1,n))}return t}function ya(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 ga(e,t){let n=xt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Xr(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 ha(e,t){let n=e[t]==='"';return{...n?ga(e,t):ya(e,t),isQuoted:n}}function ti(e){return e.trim().startsWith("[")&&hn(e,":")!==-1}function wa(e){return hn(e,":")!==-1}function ba(){return{lineNumber:0,blankLines:[]}}function _a(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=Wr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Wr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new C("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new C(`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*Ra(e,t,n,r){for(let i of e){let s=_a(i,r,t,n);s!==void 0&&(yield s)}}function Wr(e,t){return Math.floor(e/t)}function tt(e,t,n,r,i){if(r.strict&&e!==t)throw new C(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Ea(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new C(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function ka(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Sa(e.content,n.delimiter))throw new C(`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 C(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Sa(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Ta(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=ba(),i=new va(Ra(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(ti(s.content)){let a=L(s,()=>St(s.content,G,n.strict));if(a){i.advanceSync(),yield*vt(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Yr(s)){yield{type:"primitive",value:L(s,()=>Ot(s.content.trim()))};return}if(!Yr(s)&&i.peekSync()?.depth===0)throw new C("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*Be(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Be(a,i,0,n,o)}yield{type:"endObject"}}function Kr(e,t,n){if(n){if(n.has(e))throw new C(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Be(e,t,n,r,i){let s=e.content,o=L(e,()=>St(s,G,r.strict));if(o&&o.header.key!==void 0){Kr(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*vt(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=L(e,()=>ha(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Kr(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*xa(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:L(e,()=>Ot(l))}}function*xa(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*Be(s,e,r,n,i);else break}}function*vt(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Oa(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Aa(e,n,r,i,s),yield{type:"endArray"};return}yield*Da(e,n,r,i,s),yield{type:"endArray"}}function*Oa(e,t,n,r){if(!t.trim()){tt(0,e.length,"inline array items",n,r);return}let i=L(r,()=>wn(t,e.delimiter)),s=L(r,()=>ei(i));tt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Aa(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=L(l,()=>wn(l.content,e.delimiter));tt(d.length,e.fields.length,"tabular row values",r,l);let m=L(l,()=>ei(d));yield*Ia(e.fields,m),o++}else break}tt(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&&ka(t.peekSync(),s,e)}function*Da(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*$a(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}tt(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&&Ea(t.peekSync(),s,e.length)}function*$a(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 C('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(ti(i)){let a=L(s,()=>St(i,G,n.strict));if(a){yield*vt(a.header,a.inlineValues,e,t,n,s);return}}let o=L(s,()=>St(i,G,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*vt(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*Be(l,e,u,n,c);else break}yield{type:"endObject"};return}if(wa(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Be(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*Be(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:L(s,()=>Ot(i))}}function Yr(e){let t=e.content;if(t.startsWith('"')){let n=xt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Ia(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 z(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 z(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(z);if(e instanceof Set)return Array.from(e).map(z);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),z(n)]));if(Pa(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=z(e[n]));return t}return null}function Re(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function oe(e){return Array.isArray(e)}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function nt(e){return Object.keys(e).length===0}function Pa(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function rt(e){return e.length===0||e.every(t=>Re(t))}function Na(e){return e.length===0||e.every(t=>oe(t))}function ri(e){return e.length===0||e.every(t=>D(t))}function Ca(e){return/^[A-Z_][\w.]*$/i.test(e)}function ii(e){return/^[A-Z_]\w*$/i.test(e)}function Ma(e,t=G){return!(!e||e!==e.trim()||Zr(e)||ja(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function ja(e){return Ba.test(e)||La.test(e)}function Et(e,t){if(Array.isArray(e))return e.map(n=>Et(n,t));if(D(e)){let n={},r=e[si];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=>ii(u))){Ua(n,c,Et(s,t),t);continue}}let a=Et(s,t);if(i in n){let c=n[i];if(_n(c,a))bn(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 Ua(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(D(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(_n(o,n))bn(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 bn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(_n(s,i))bn(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 _n(e,t){return D(e)&&D(t)}function qa(e){let t={stack:[],root:void 0};for(let n of e)Ga(t,n);return Fa(t)}function Ga(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,si,{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 Fa(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 Ja(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!D(t))return;let{segments:a,tail:c,leafValue:u}=Va(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>ii(m)))return;let l=Ha(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 Va(e,t,n){let r=[e],i=t;for(;r.length<n&&D(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!D(i)||nt(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function Ha(e){return e.join(".")}function Ce(e,t){return e===null?ca:typeof e=="boolean"||typeof e=="number"?String(e):Wa(e,t)}function Wa(e,t=G){return Ma(e,t)?e:`"${Qr(e)}"`}function Me(e){return Ca(e)?e:`"${Qr(e)}"`}function oi(e,t=G){return e.map(n=>Ce(n,t)).join(t)}function Ee(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Me(n)),s+=`[${e}${i!==G?i:""}]`,r){let o=r.map(a=>Me(a));s+=`{${o.join(i)}}`}return s+=":",s}function*Ka(e,t,n){if(Re(e)){let r=Ce(e,t.delimiter);r!==""&&(yield r);return}oe(e)?yield*gn(void 0,e,n,t):D(e)&&(yield*Le(e,n,t))}function*Le(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*Ya(c,u,t,n,o,r,i,a)}function*Ya(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=Ja(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:h,leafValue:g,segmentCount:S}=d,v=Me(m);if(h===void 0){if(Re(g)){yield B(n,`${v}: ${Ce(g,r.delimiter)}`,r.indent);return}else if(oe(g)){yield*gn(m,g,n,r);return}else if(D(g)&&nt(g)){yield B(n,`${v}:`,r.indent);return}}if(D(h)){yield B(n,`${v}:`,r.indent);let T=u-S,f=o?`${o}.${m}`:m;yield*Le(h,n+1,r,s,f,T);return}}}let l=Me(e);Re(t)?yield B(n,`${l}: ${Ce(t,r.delimiter)}`,r.indent):oe(t)?yield*gn(e,t,n,r):D(t)&&(yield B(n,`${l}:`,r.indent),nt(t)||(yield*Le(t,n+1,r,s,c,u)))}function*gn(e,t,n,r){if(t.length===0){yield B(n,e!=null?`${Me(e)}: []`:"[]",r.indent);return}if(rt(t)){yield B(n,At(t,r.delimiter,e),r.indent);return}if(Na(t)&&t.every(i=>rt(i))){yield*za(e,t,n,r);return}if(ri(t)){let i=ai(t);i?yield*Qa(e,t,i,n,r):yield*zr(e,t,n,r);return}yield*zr(e,t,n,r)}function*za(e,t,n,r){yield B(n,Ee(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(rt(i)){let s=At(i,r.delimiter);yield q(n+1,s,r.indent)}}function At(e,t,n){let r=Ee(e.length,{key:n,delimiter:t}),i=oi(e,t);return e.length===0?r:`${r} ${i}`}function*Qa(e,t,n,r,i){yield B(r,Ee(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*ci(t,n,r+1,i)}function ai(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Xa(e,n))return n}function Xa(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)||!Re(n[r]))return!1}return!0}function*ci(e,t,n,r){for(let i of e)yield B(n,oi(t.map(s=>i[s]),r.delimiter),r.indent)}function*zr(e,t,n,r){yield B(n,Ee(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Rn(i,n+1,r)}function*Za(e,t,n){if(nt(e)){yield B(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(oe(s)&&ri(s)){let c=ai(s);if(c){yield q(t,Ee(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*ci(s,c,t+2,n),o.length>0&&(yield*Le(Object.fromEntries(o),t+1,n));return}}let a=Me(i);if(Re(s))yield q(t,`${a}: ${Ce(s,n.delimiter)}`,n.indent);else if(oe(s))if(s.length===0)yield q(t,`${a}: []`,n.indent);else if(rt(s))yield q(t,`${a}${At(s,n.delimiter)}`,n.indent);else{yield q(t,`${a}${Ee(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Rn(c,t+2,n)}else D(s)&&(yield q(t,`${a}:`,n.indent),nt(s)||(yield*Le(s,t+2,n)));o.length>0&&(yield*Le(Object.fromEntries(o),t+1,n))}function*Rn(e,t,n){if(Re(e))yield q(t,Ce(e,n.delimiter),n.indent);else if(oe(e))if(rt(e))yield q(t,At(e,n.delimiter),n.indent);else{yield q(t,Ee(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Rn(r,t+1,n)}else D(e)&&(yield*Za(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function q(e,t,n){return B(e,"- "+t,n)}function ec(e,t){let n=t("",e,[]);return n===void 0?Tt(e,t,[]):Tt(z(n),t,[])}function Tt(e,t,n){return D(e)?tc(e,t,n):oe(e)?nc(e,t,n):e}function tc(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]=Tt(z(a),t,o))}return r}function nc(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=z(a);r.push(Tt(c,t,o))}return r}function A(e,t){return Array.from(ui(e,t)).join(`
5
+ `)}function En(e,t){return li(e.split(`
6
+ `),t)}function ui(e,t){let n=z(e),r=rc(t);return Ka(r.replacer?ec(n,r.replacer):n,r,0)}function li(e,t){let n=ic(t),r=qa(Ta(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Et(r,n.strict):r}function rc(e){return{indent:e?.indent??2,delimiter:e?.delimiter??G,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function ic(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var ca,kt,G,C,ua,da,ma,va,Ba,La,si,di=k(()=>{ca="null",kt={comma:",",tab:" ",pipe:"|"},G=kt.comma;C=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}};ua=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;da=/^(?:0|[1-9]\d*)$/;ma=[","," ","|"];va=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}};Ba=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,La=/^0\d+$/;si=Symbol("quotedKey")});var je=k(()=>{"use strict";di()});function Sn(e,t,n=mi){let r=Math.max(0,Math.floor(e)),i=n in pi?n:mi,s=pi[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:kn(r,s),dollars_saved_low_usd:o==null?null:kn(o,s),dollars_saved_high_usd:a==null?null:kn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:oc}}function kn(e,t){return ac(Math.max(0,e)/1e6*t)}function it(e){return`$${e.toFixed(6)}`}function ac(e){return Math.round(e*1e6)/1e6}var mi,pi,oc,vn=k(()=>{"use strict";mi="gpt-5",pi={"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},oc="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as cc,readFileSync as Cm}from"node:fs";import{dirname as uc,join as lc}from"node:path";function yi(e,t){let n=e;for(let r=0;r<16;r++){let i=lc(n,t);if(cc(i))return i;let s=uc(n);if(s===n)break;n=s}return null}function dc(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Tn(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 dc(u)}}var gi=k(()=>{});import{createConnection as fc}from"node:net";async function qe(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=fc(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 wn=E(()=>{});import{createHash as Xa,randomUUID as ui}from"node:crypto";import{spawn as li}from"node:child_process";import{constants as bn}from"node:fs";import{readFileSync as Za}from"node:fs";import{mkdir as _n,open as ec,rm as En}from"node:fs/promises";import{tmpdir as tc}from"node:os";import{dirname as Re,join as G,resolve as xt}from"node:path";import{fileURLToPath as nc}from"node:url";function Y(e){let t=ac(e)??xt(e),n=oc(t);return{rootDir:t,socketPath:G(n,"rsp.sock"),lockPath:G(n,"rsp.lock"),wakeLockPath:G(t,".red","tmp","rsp.wake.lock"),summaryPath:G(t,".red","tmp","rsp-status-summary.json")}}async function vt(e,t){if(await _n(Re(e.socketPath),{recursive:!0,mode:448}),await ai(e.socketPath,t))return;let n=await mi(e.lockPath);if(n)try{if(await ai(e.socketPath,t))return;await ic(e.socketPath);let r=sc(e,t);await oi(e.socketPath,r);return}finally{await n.close(),await En(e.lockPath,{force:!0})}await oi(e.socketPath)}async function _e(e,t=200){try{return await di(e,t)!=null}catch{return!1}}async function di(e,t=200){let n=await je({socketPath:e,timeoutMs:t},{id:ui(),op:"ping"});return n.ok?fc(n.value)?{version:mc(n.value.version)}:{}:null}async function Ot(e,t){if(await _n(Re(e.socketPath),{recursive:!0,mode:448}),await _e(e.socketPath,50))return!1;let n=await mi(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=pi(t);return li(r,[...i,"warm-resident","--socket",e.socketPath,"--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","--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function fi(e,t){try{await vt(e,t)}finally{await En(e.wakeLockPath,{force:!0})}}async function oi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await _e(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 ic(e){await En(e,{force:!0})}async function mi(e){await _n(Re(e),{recursive:!0,mode:448});try{return await ec(e,bn.O_CREAT|bn.O_EXCL|bn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function sc(e,t){let[n,r]=pi(t),i=li(n,[...r,"server","--socket",e.socketPath,"--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"],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}function pi(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?xt(process.argv[1]):nc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function oc(e){let t=Xa("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<rc)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return G(tc(),`red-skills-${r}`,t)}function ac(e){let t=xt(e);for(let n=0;n<32;n++){try{let i=Rn(G(t,".git"));if(i!=null)return cc(t,i)??t;if(Rn(G(t,".git","HEAD"))!=null||Rn(G(t,".red","config.yaml"))!=null)return t}catch{}let r=Re(t);if(r===t)return null;t=r}return null}function cc(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=xt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Re(Re(Re(r))):null}function Rn(e){try{return Za(e,"utf8")}catch{return null}}async function ai(e,t){let n=await di(e).catch(()=>null);return n?lc(t.clientVersion,n.version)?(await uc(e,t.clientVersion),await pc(e),!1):!0:!1}async function uc(e,t){try{await je({socketPath:e,timeoutMs:200},{id:ui(),op:"handover",clientVersion:t})}catch{}}function lc(e,t){return!e||!t?!1:dc(e,t)>0}function dc(e,t){let n=ci(e),r=ci(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function ci(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 fc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mc(e){return typeof e=="string"&&e.length>0?e:void 0}async function pc(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await _e(e,50))return;await new Promise(n=>setTimeout(n,50))}}var rc,kn=E(()=>{wn();rc=108});var Ri={};$(Ri,{DEFAULT_RSP_BYTE_BUDGET:()=>Z,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Q,DEFAULT_RSP_IDLE_MS:()=>$t,DEFAULT_RSP_STORE_PATH:()=>At,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Pt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>hi,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>wi,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>It,DEFAULT_RSP_TTL_DAYS:()=>X,MIN_RSP_IDLE_MS:()=>bi,resolveRspConfig:()=>ie});import{readFileSync as yc}from"node:fs";import{join as yi,resolve as gi}from"node:path";function ie(e,t,n){let r=ii(gi(e),yi(".red","config.yaml")),i=r?yc(r,"utf8"):"",s=hn(i,"rsp.enabled")==="true",o=re(z(i,"rsp.ttlDays"),X),a=re(z(i,"rsp.byteBudget"),Z),c=re(z(i,"rsp.telemetryTtlDays"),It),u=re(z(i,"rsp.telemetryByteBudget")??z(i,"rsp.byteBudget"),Pt),l=re(Dt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??z(i,"rsp.telemetryDrainIntervalMs"),hi),d=re(Dt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(i,"rsp.telemetryDrainTimeoutMs"),wi),m=gc(Dt(t.RSP_IDLE_MS)??z(i,"rsp.idleMs"),$t,bi),h=re(Dt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(i,"rsp.heavyGitByteThreshold"),Q),w=Y(e).rootDir,k=n??t.RSP_STORE_URI??`file://${yi(gi(w),At)}`;return{enabled:s,storeUri:k,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:h}}function z(e,t){let n=hn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function re(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function gc(e,t,n){let r=re(e,t);return Math.max(r,n)}function Dt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Q,At,X,Z,It,Pt,hi,wi,$t,bi,F=E(()=>{"use strict";si();kn();Q=8*1024,At=".red/tmp/red-skills.rdb",X=7,Z=64*1024*1024,It=90,Pt=4*1024*1024,hi=3e4,wi=2e3,$t=5*6e4,bi=5e3});var _i=E(()=>{"use strict";wn()});var Bt={};$(Bt,{ResidentRspElisionStore:()=>nt,ensureResidentServer:()=>vt,kickResidentServer:()=>Ot,pingResident:()=>_e,resolveResidentPaths:()=>Y,warmResidentServer:()=>fi});import{randomUUID as hc}from"node:crypto";function Ei(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var nt,Ue=E(()=>{"use strict";_i();kn();nt=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?Ei(n)&&n.status==="expired"?n:!Ei(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 vt(this.paths,this.config);let n=await je(this.paths,{...t,id:hc()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Ii={};$(Ii,{RSP_WRAPPER_CAPABILITIES:()=>Tn,formatHookDecision:()=>vi,hookDecisionFromClaudePreExecJson:()=>xi,rewriteCommand:()=>Ti,rewriteTableFromCapabilities:()=>Si,runClaudePreExecHook:()=>_c});import{readFileSync as ki}from"node:fs";import{existsSync as wc}from"node:fs";import{fileURLToPath as bc}from"node:url";function Si(e){let t=new Map;for(let n of e)t.set(rt(n.command),["rsp",...n.wrapper]);return t}function Ti(e){let t=Oc(e);if(!t||t.length>0&&Di(t[0]))return Sn(e);let n=Rc.get(rt(t));if(!n)return Sn(e);let r=Tn.find(i=>rt(i.command)===rt(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??rt(t)}}async function xi(e,t){let n=Cc(e),r=M(n,["cwd"])||M(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Ec)(r))return{kind:"passthrough",reason:"disabled"};let s=vc(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Ti)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??kc)(r)?o:(await(t.wakeResident??Sc)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function vi(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
- `,status:0}:{stdout:"",status:1}}async function _c(e){let t=e?ki(e,"utf8"):ki(0,"utf8"),n=await xi(t,{cwd:process.cwd()}),r=vi(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Ec(e){return ie(e,process.env).enabled}async function kc(e){let t=Y(e);return await _e(t.socketPath,50)}async function Sc(e){let t=ie(e,process.env);if(!t.enabled||!xc(t))return;let n=Y(e);await Ot(n,Tc(t))}function Tc(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 xc(e){if(!e.storeUri.startsWith("file://"))return!0;try{return wc(bc(e.storeUri))}catch{return!1}}function vc(e){return M(e,["tool_input","command"])||M(e,["tool_input","cmd"])||M(e,["tool_input","args","command"])||M(e,["input","command"])||M(e,["input","cmd"])||M(e,["arguments","command"])||M(e,["arguments","cmd"])||M(e,["command"])||M(e,["cmd"])}function Oc(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("=")&&Di(r))?null:n}function Sn(e){let t=e.trim();return Dc(t)?{kind:"rewrite",command:`rsp exec -- ${Lc(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Dc(e){return!(!e||!Ic(e)||!$c(e)||Pc(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Bc(e,"rsp")||Oi(e,Ac)||Nc(e))}function Ic(e){return/&&|[;|]/.test(e)}function Pc(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function $c(e){return xn(e).some(t=>{let n=vn(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 Oi(e,t){return xn(e).some(n=>{let r=vn(n)[0];return r?t.has(r):!1})}function Bc(e,t){return Oi(e,new Set([t]))}function Nc(e){return xn(e).some(t=>{let n=vn(t);return n[0]==="grep"&&n.includes("-q")})}function xn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function vn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Lc(e){return`'${e.replace(/'/g,"'\\''")}'`}function Di(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function rt(e){return e.join("\0")}function Cc(e){try{let t=JSON.parse(e);return Ai(t)?t:{}}catch{return{}}}function M(e,t){let n=e;for(let r of t){if(!Ai(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ai(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tn,Rc,Ac,Pi=E(()=>{"use strict";F();Ue();Tn=[{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"]}],Rc=Si(Tn);Ac=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Vi={};$(Vi,{NORMALIZATION_ALLOWLIST:()=>Gi,NORMALIZE_ANSI:()=>Li,NORMALIZE_BLANK_LINES:()=>ji,NORMALIZE_CR_PROGRESS:()=>Ci,NORMALIZE_JSON_TOON:()=>qi,NORMALIZE_TRAILING_WHITESPACE:()=>Mi,formatNormalizeDecision:()=>Ji,hookDecisionFromClaudePostExecJson:()=>Fi,normalizeOutput:()=>Nt,renderGenericJsonLane:()=>Dn,runClaudePostExecHook:()=>Uc,transcodeJsonToToon:()=>Ui});import{readFileSync as $i}from"node:fs";function Ui(e,t){let n=t?.encode??O,r=t?.decode??gn,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 On(s,a)?o:e}async function Dn(e,t={}){let n=Jc(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:O(r),detected:!0,lossy:!1};let i=r.length,s=Ni(t.minTokens,Mc),o=Ni(t.maxItems,jc);if(!(i>o&&Yc(e)>=s))return{output:O(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=Vc(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,O(u)].filter(Boolean).join(`
11
- `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Nt(e){let t=e;for(let n of Gi)t=n.apply(t);return t}async function Fi(e,t){let n=Fc(e),r=zc(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Gc)(r))return{kind:"passthrough",reason:"disabled"};let s=Qc(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??Nt)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Ji(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function Uc(e){let t=e?$i(e,"utf8"):$i(0,"utf8"),n=await Fi(t,{cwd:process.cwd()}),r=Ji(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function qc(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&&Bi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Bi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Bi(e){return e>=32&&e<=63}function Gc(e){return ie(e,process.env).enabled}function Fc(e){try{let t=JSON.parse(e);return se(t)?t:{}}catch{return{}}}function Jc(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return se(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 Vc(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++)Hc(e[s])&&n.add(s);for(let s of Kc(e))n.add(s);for(let s of Wc(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 Hc(e){if(!se(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 Kc(e){let t=new Map;e.forEach((r,i)=>{if(se(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 Wc(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!se(r)||!se(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 Yc(e){return Math.ceil(e.length/4)}function Ni(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function zc(e,t){let n=e;for(let r of t){if(!se(n))return"";n=n[r]}return typeof n=="string"?n:""}function Qc(e,t){let n=e[t];return se(n)?n:null}function se(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function On(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)=>On(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)&&On(n[o],r[o]))}var Li,Ci,Mi,ji,qi,Mc,jc,Gi,An=E(()=>{"use strict";Ce();F();Li={id:"ansi",apply:qc},Ci={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(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 xn=k(()=>{});import{createHash as mc,randomUUID as _i}from"node:crypto";import{spawn as Ri}from"node:child_process";import{constants as On}from"node:fs";import{readFileSync as pc}from"node:fs";import{mkdir as Dn,open as yc,rm as $n}from"node:fs/promises";import{tmpdir as gc}from"node:os";import{dirname as ke,join as F,resolve as Dt}from"node:path";import{fileURLToPath as hc}from"node:url";function Q(e){let t=Ec(e)??Dt(e),n=Rc(t);return{rootDir:t,socketPath:F(n,"rsp.sock"),lockPath:F(n,"rsp.lock"),wakeLockPath:F(t,".red","tmp","rsp.wake.lock"),summaryPath:F(t,".red","tmp","rsp-status-summary.json")}}async function $t(e,t){if(await Dn(ke(e.socketPath),{recursive:!0,mode:448}),await wi(e.socketPath,t))return;let n=await Si(e.lockPath);if(n)try{if(await wi(e.socketPath,t))return;await bc(e.socketPath);let r=_c(e,t);await hi(e.socketPath,r);return}finally{await n.close(),await $n(e.lockPath,{force:!0})}await hi(e.socketPath)}async function Se(e,t=200){try{return await Ei(e,t)!=null}catch{return!1}}async function Ei(e,t=200){let n=await qe({socketPath:e,timeoutMs:t},{id:_i(),op:"ping"});return n.ok?xc(n.value)?{version:Oc(n.value.version)}:{}:null}async function It(e,t){if(await Dn(ke(e.socketPath),{recursive:!0,mode:448}),await Se(e.socketPath,50))return!1;let n=await Si(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=vi(t);return Ri(r,[...i,"warm-resident","--socket",e.socketPath,"--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","--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function ki(e,t){try{await $t(e,t)}finally{await $n(e.wakeLockPath,{force:!0})}}async function hi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await Se(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 bc(e){await $n(e,{force:!0})}async function Si(e){await Dn(ke(e),{recursive:!0,mode:448});try{return await yc(e,On.O_CREAT|On.O_EXCL|On.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function _c(e,t){let[n,r]=vi(t),i=Ri(n,[...r,"server","--socket",e.socketPath,"--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"],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}function vi(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Dt(process.argv[1]):hc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Rc(e){let t=mc("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<wc)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return F(gc(),`red-skills-${r}`,t)}function Ec(e){let t=Dt(e);for(let n=0;n<32;n++){try{let i=An(F(t,".git"));if(i!=null)return kc(t,i)??t;if(An(F(t,".git","HEAD"))!=null||An(F(t,".red","config.yaml"))!=null)return t}catch{}let r=ke(t);if(r===t)return null;t=r}return null}function kc(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Dt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?ke(ke(ke(r))):null}function An(e){try{return pc(e,"utf8")}catch{return null}}async function wi(e,t){let n=await Ei(e).catch(()=>null);return n?vc(t.clientVersion,n.version)?(await Sc(e,t.clientVersion),await Ac(e),!1):!0:!1}async function Sc(e,t){try{await qe({socketPath:e,timeoutMs:200},{id:_i(),op:"handover",clientVersion:t})}catch{}}function vc(e,t){return!e||!t?!1:Tc(e,t)>0}function Tc(e,t){let n=bi(e),r=bi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function bi(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 xc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Oc(e){return typeof e=="string"&&e.length>0?e:void 0}async function Ac(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Se(e,50))return;await new Promise(n=>setTimeout(n,50))}}var wc,In=k(()=>{xn();wc=108});var $i={};I($i,{DEFAULT_RSP_BYTE_BUDGET:()=>te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Z,DEFAULT_RSP_IDLE_MS:()=>Ct,DEFAULT_RSP_STORE_PATH:()=>Nt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Lt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Oi,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Ai,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Bt,DEFAULT_RSP_TTL_DAYS:()=>ee,MIN_RSP_IDLE_MS:()=>Di,resolveRspConfig:()=>ce});import{readFileSync as Dc}from"node:fs";import{join as Ti,resolve as xi}from"node:path";function ce(e,t,n){let r=yi(xi(e),Ti(".red","config.yaml")),i=r?Dc(r,"utf8"):"",s=Tn(i,"rsp.enabled")==="true",o=ae(X(i,"rsp.ttlDays"),ee),a=ae(X(i,"rsp.byteBudget"),te),c=ae(X(i,"rsp.telemetryTtlDays"),Bt),u=ae(X(i,"rsp.telemetryByteBudget")??X(i,"rsp.byteBudget"),Lt),l=ae(Pt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??X(i,"rsp.telemetryDrainIntervalMs"),Oi),d=ae(Pt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??X(i,"rsp.telemetryDrainTimeoutMs"),Ai),m=$c(Pt(t.RSP_IDLE_MS)??X(i,"rsp.idleMs"),Ct,Di),h=ae(Pt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??X(i,"rsp.heavyGitByteThreshold"),Z),g=Q(e).rootDir,S=n??t.RSP_STORE_URI??`file://${Ti(xi(g),Nt)}`;return{enabled:s,storeUri:S,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:h}}function X(e,t){let n=Tn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $c(e,t,n){let r=ae(e,t);return Math.max(r,n)}function Pt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Z,Nt,ee,te,Bt,Lt,Oi,Ai,Ct,Di,J=k(()=>{"use strict";gi();In();Z=8*1024,Nt=".red/tmp/red-skills.rdb",ee=7,te=64*1024*1024,Bt=90,Lt=4*1024*1024,Oi=3e4,Ai=2e3,Ct=5*6e4,Di=5e3});var Ii=k(()=>{"use strict";xn()});var Mt={};I(Mt,{ResidentRspElisionStore:()=>st,ensureResidentServer:()=>$t,kickResidentServer:()=>It,pingResident:()=>Se,resolveResidentPaths:()=>Q,warmResidentServer:()=>ki});import{randomUUID as Ic}from"node:crypto";function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var st,Ge=k(()=>{"use strict";Ii();In();st=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?Pi(n)&&n.status==="expired"?n:!Pi(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 $t(this.paths,this.config);let n=await qe(this.paths,{...t,id:Ic()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Gi={};I(Gi,{RSP_WRAPPER_CAPABILITIES:()=>at,formatHookDecision:()=>Mi,hookDecisionFromClaudePreExecJson:()=>Ci,rewriteCommand:()=>Li,rewriteTableFromCapabilities:()=>Bi,runClaudePreExecHook:()=>Lc});import{readFileSync as Ni}from"node:fs";import{existsSync as Pc}from"node:fs";import{fileURLToPath as Nc}from"node:url";function Bi(e){let t=new Map;for(let n of e)t.set(ot(n.command),["rsp",...n.wrapper]);return t}function Li(e){let t=Fc(e);if(!t||t.length>0&&Ui(t[0]))return Pn(e);let n=Bc.get(ot(t));if(!n)return Pn(e);let r=at.find(i=>ot(i.command)===ot(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??ot(t)}}async function Ci(e,t){let n=Xc(e),r=j(n,["cwd"])||j(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Cc)(r))return{kind:"passthrough",reason:"disabled"};let s=Gc(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Li)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Mc)(r)?o:(await(t.wakeResident??jc)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function Mi(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
+ `,status:0}:{stdout:"",status:1}}async function Lc(e){let t=e?Ni(e,"utf8"):Ni(0,"utf8"),n=await Ci(t,{cwd:process.cwd()}),r=Mi(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Cc(e){return ce(e,process.env).enabled}async function Mc(e){let t=Q(e);return await Se(t.socketPath,50)}async function jc(e){let t=ce(e,process.env);if(!t.enabled||!qc(t))return;let n=Q(e);await It(n,Uc(t))}function Uc(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 qc(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Pc(Nc(e.storeUri))}catch{return!1}}function Gc(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 Fc(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("=")&&Ui(r))?null:n}function Pn(e){let t=e.trim();return Jc(t)?{kind:"rewrite",command:`rsp exec -- ${Qc(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Jc(e){return!(!e||!Hc(e)||!Kc(e)||Wc(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Yc(e,"rsp")||ji(e,Vc)||zc(e))}function Hc(e){return/&&|[;|]/.test(e)}function Wc(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function Kc(e){return Nn(e).some(t=>{let n=Bn(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 ji(e,t){return Nn(e).some(n=>{let r=Bn(n)[0];return r?t.has(r):!1})}function Yc(e,t){return ji(e,new Set([t]))}function zc(e){return Nn(e).some(t=>{let n=Bn(t);return n[0]==="grep"&&n.includes("-q")})}function Nn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Bn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Qc(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ui(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ot(e){return e.join("\0")}function Xc(e){try{let t=JSON.parse(e);return qi(t)?t:{}}catch{return{}}}function j(e,t){let n=e;for(let r of t){if(!qi(n))return"";n=n[r]}return typeof n=="string"?n:""}function qi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var at,Bc,Vc,Ln=k(()=>{"use strict";J();Ge();at=[{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"]}],Bc=Bi(at);Vc=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ts={};I(ts,{NORMALIZATION_ALLOWLIST:()=>Xi,NORMALIZE_ANSI:()=>Hi,NORMALIZE_BLANK_LINES:()=>Yi,NORMALIZE_CR_PROGRESS:()=>Wi,NORMALIZE_JSON_TOON:()=>Qi,NORMALIZE_TRAILING_WHITESPACE:()=>Ki,formatNormalizeDecision:()=>es,hookDecisionFromClaudePostExecJson:()=>Zi,normalizeOutput:()=>jt,renderGenericJsonLane:()=>Mn,runClaudePostExecHook:()=>tu,transcodeJsonToToon:()=>zi});import{readFileSync as Fi}from"node:fs";function zi(e,t){let n=t?.encode??A,r=t?.decode??En,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 Cn(s,a)?o:e}async function Mn(e,t={}){let n=su(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:A(r),detected:!0,lossy:!1};let i=r.length,s=Vi(t.minTokens,Zc),o=Vi(t.maxItems,eu);if(!(i>o&&lu(e)>=s))return{output:A(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=ou(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,A(u)].filter(Boolean).join(`
11
+ `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function jt(e){let t=e;for(let n of Xi)t=n.apply(t);return t}async function Zi(e,t){let n=iu(e),r=du(n,["cwd"])||t.cwd;if(!await(t.isEnabled??ru)(r))return{kind:"passthrough",reason:"disabled"};let s=fu(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??jt)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function es(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function tu(e){let t=e?Fi(e,"utf8"):Fi(0,"utf8"),n=await Zi(t,{cwd:process.cwd()}),r=es(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function nu(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&&Ji(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Ji(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Ji(e){return e>=32&&e<=63}function ru(e){return ce(e,process.env).enabled}function iu(e){try{let t=JSON.parse(e);return ue(t)?t:{}}catch{return{}}}function su(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return ue(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 ou(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++)au(e[s])&&n.add(s);for(let s of cu(e))n.add(s);for(let s of uu(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 au(e){if(!ue(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 cu(e){let t=new Map;e.forEach((r,i)=>{if(ue(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 uu(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!ue(r)||!ue(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 lu(e){return Math.ceil(e.length/4)}function Vi(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function du(e,t){let n=e;for(let r of t){if(!ue(n))return"";n=n[r]}return typeof n=="string"?n:""}function fu(e,t){let n=e[t];return ue(n)?n:null}function ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cn(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)=>Cn(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)&&Cn(n[o],r[o]))}var Hi,Wi,Ki,Yi,Qi,Zc,eu,Xi,jn=k(()=>{"use strict";je();J();Hi={id:"ansi",apply:nu},Wi={id:"cr-progress",apply:e=>e.split(`
12
12
  `).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(`
13
- `)},Mi={id:"trailing-whitespace",apply:e=>e.split(`
13
+ `)},Ki={id:"trailing-whitespace",apply:e=>e.split(`
14
14
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
15
- `)},ji={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
15
+ `)},Yi={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
16
16
 
17
- `)};qi={id:"json-to-toon",apply:e=>Ui(e)},Mc=200,jc=15;Gi=[Li,Ci,Mi,ji,qi]});async function Hi(e,t){return Xc?tu(e,t):Zc?ru(e,t):eu(e,t)}async function eu(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 tu(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:nu(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*nu(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 ru(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:iu(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*iu(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Xc,Zc,Ki=E(()=>{Xc=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Zc=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as su}from"node:fs";import{join as ou}from"node:path";function Wi(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=ou(n,"bin",t);if(su(s))return s;throw new Error(`reddb: binary "${t}" not found.
17
+ `)};Qi={id:"json-to-toon",apply:e=>zi(e)},Zc=200,eu=15;Xi=[Hi,Wi,Ki,Yi,Qi]});async function ns(e,t){return mu?gu(e,t):pu?wu(e,t):yu(e,t)}async function yu(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 gu(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:hu(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*hu(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 wu(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:bu(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*bu(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var mu,pu,rs=k(()=>{mu=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",pu=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as _u}from"node:fs";import{join as Ru}from"node:path";function is(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=Ru(n,"bin",t);if(_u(s))return s;throw new Error(`reddb: binary "${t}" not found.
18
18
  expected at: ${s}
19
19
  override: set ${r}=/path/to/${t}
20
20
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
21
- or check the postinstall log for a download error.`)}var Yi=E(()=>{});import{fileURLToPath as au}from"node:url";import{dirname as cu,resolve as uu,join as zm}from"node:path";function fu(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function zi(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Wi({name:fu(),packageRoot:du,envVar:"REDDB_BIN"})}var lu,du,Qi=E(()=>{Yi();lu=cu(au(import.meta.url)),du=uu(lu,"..")});var mu,pu,b,Lt,oe=E(()=>{mu=new TextEncoder,pu=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Lt=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 b("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(mu.encode(i+`
22
- `)).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(pu.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 b(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 b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function Pn(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:/"?yu(e):gu(e)}function yu(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 b("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=hu(i),a=n.port?Number(n.port):In(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 gu(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 b("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):In(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 b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):In(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 b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function hu(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 b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function In(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 $n=E(()=>{oe()});function bu(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Xi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Xi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Xi(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 Ru(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 wu,it,Bn=E(()=>{oe();wu=new Set(["embedded"]),it=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&wu.has(this._transport))throw new b("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:Ru(r.value)}async put(t,n,r,i={}){this._guard("put");let s=bu(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 Nn(e,t){return`${Ln(e)}.${_u(t)}`}function Ln(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function _u(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Eu(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 Zi(e){return`'${String(e).replace(/'/g,"''")}'`}var qe,Cn=E(()=>{oe();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(Zi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Nn(i,t)} = ${Eu(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 ${Nn(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 ${Nn(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 b("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 ${Ln(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(Zi).join(", ")}] FROM ${Ln(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("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 b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
21
+ or check the postinstall log for a download error.`)}var ss=k(()=>{});import{fileURLToPath as Eu}from"node:url";import{dirname as ku,resolve as Su,join as Rp}from"node:path";function xu(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function os(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:is({name:xu(),packageRoot:Tu,envVar:"REDDB_BIN"})}var vu,Tu,as=k(()=>{ss();vu=ku(Eu(import.meta.url)),Tu=Su(vu,"..")});var Ou,Au,b,Ut,le=k(()=>{Ou=new TextEncoder,Au=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Ut=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 b("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(Ou.encode(i+`
22
+ `)).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(Au.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 b(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 b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function qn(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:/"?Du(e):$u(e)}function Du(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 b("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=Iu(i),a=n.port?Number(n.port):Un(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 $u(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 b("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):Un(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 b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Un(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 b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Iu(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 b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Un(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 Gn=k(()=>{le()});function Nu(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return cs(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return cs(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function cs(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 Bu(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 Pu,ct,Fn=k(()=>{le();Pu=new Set(["embedded"]),ct=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Pu.has(this._transport))throw new b("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:Bu(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Nu(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 Jn(e,t){return`${Vn(e)}.${Lu(t)}`}function Vn(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Lu(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Cu(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 us(e){return`'${String(e).replace(/'/g,"''")}'`}var Fe,Hn=k(()=>{le();Fe=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(us).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Jn(i,t)} = ${Cu(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 ${Jn(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 ${Jn(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 b("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 ${Vn(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(us).join(", ")}] FROM ${Vn(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("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 b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
23
23
 
24
24
  `)){let l=u.split(`
25
- `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function ku(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ee(e),a=ee(t),c=i!=null?` GROUP ${ee(i)}`:"",u=s!=null?jn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ee(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function jn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Su(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Tu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Su(e.priority)}`),e.key!=null&&(t+=` KEY ${Un(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Un(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function xu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Un(e):JSON.stringify(e)}function Un(e){return`'${String(e).replace(/'/g,"''")}'`}function Mn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var st,qn=E(()=>{oe();st=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ee(t)}`})}push(t,n,r={}){let i=Tu(r);return this.client.call("query",{sql:`QUEUE PUSH ${ee(t)} ${xu(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ee(t)}${jn(n)}`});return Mn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ee(t)}${jn(n)}`});return Mn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ee(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ee(t)}`})}async readWait(t,n,r={}){let i=ku(t,n,r),s=await this.client.call("query",{sql:i});return Mn(s)}}});function es(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function vu(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function Ct(e){return String(e).split(".").map(ts).join(".")}function ts(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Ou(e){return ns(JSON.stringify(e))}function Du(e){return JSON.stringify(e)}function Au(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Ou(e):ns(e)}function ns(e){return`'${String(e).replace(/'/g,"''")}'`}var ot,Gn=E(()=>{oe();ot=class{constructor(t){this.db=t}async insert(t,n){es(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Ct(t)} DOCUMENT VALUES (${Du(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("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 b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=vu(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 ${Ct(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){es(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${ts(c)} = ${Au(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Ct(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("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 ${Ct(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Iu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${ae(n)}.${ae(r)})`}return $u(e)}function Pu(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 ae(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 $u(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):rs(e)}function rs(e){return`'${String(e).replace(/'/g,"''")}'`}var at,Fn=E(()=>{at=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Pu(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(rs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ae(i)} ${ae(t)} = ${Iu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ae(r)} ${ae(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ae(r)} ${ae(t)}`})}}});function Bu(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 Ge(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 Nu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):is(e)}function is(e){return`'${String(e).replace(/'/g,"''")}'`}var ct,Jn=E(()=>{ct=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Bu(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(is).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Ge(i)}.${Ge(t)} = ${Nu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Ge(r)}.${Ge(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Ge(r)}.${Ge(t)}`})}}});async function os(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Lu)}async function as(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Mu(t)}`)).rows??[]).some(r=>r.name===String(t))}function Lu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ss(e){return String(e).split(".").map(Cu).join(".")}function Cu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Mu(e){return`'${String(e).replace(/'/g,"''")}'`}var ut,Vn=E(()=>{oe();ut=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 b("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(ss).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ss(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 ds(e,t={}){let n=Pn(e);if(Wu(n),n.kind==="embedded"){let r=Ku(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Hu(n),s=t.binary??zi(),o=await Hi(s,i),a=new Lt(o);return await a.call("version",{}),new Kn(a,{transport:"embedded"})}}function us(e){return qu(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:Fu(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Vu(e)?{$uuid:e}:e}function qu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("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 b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Gu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(us):e.map(us)}function Fu(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 Ju(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 Vu(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Mt(e){if(Array.isArray(e))return e.map(Mt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Ju(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]=Mt(i);return n}return e}function Hu(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ku(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 Wu(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",ju)}function Wn(){return new b(cs,`${cs}: nested transactions are not supported on one connection`)}function fs(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Yu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ls} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function zu(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ls} 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 b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ju,Uu,ls,cs,jt,Hn,Kn,ms=E(()=>{Ki();Qi();oe();$n();Bn();Cn();qn();Gn();Fn();Jn();Vn();Bn();Cn();qn();Gn();Fn();Jn();Vn();$n();ju="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Uu="1.0",ls="1.0.9",cs="NESTED_TX_NOT_SUPPORTED";jt=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 Wn()}},Hn=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Wn();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 b("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 b("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 b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new jt(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){fs(n,r)}throw n}}},Kn=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Uu,this.cache=new it(t,this.transport),this.queue=new st(t),this.queues=this.queue,this.documents=new ot(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 at(t,i),this.vault=(i="red.vault")=>new ct(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Gu(n);return r==null?this.client.call("query",{sql:t}).then(Mt):this.client.call("query",{sql:t,params:r}).then(Mt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Yu(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 zu(r,n.length)}tx(){return new Hn(this)}async transaction(t){if(this.inTransaction)throw Wn();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 jt(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){fs(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return as(this,t)}list(){return os(this)}from(t){return new ut(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 Xn={};$(Xn,{DEFAULT_RSP_BYTE_BUDGET:()=>Z,DEFAULT_RSP_TTL_DAYS:()=>X,RSP_ELISION_COLLECTION:()=>ke,RspElisionStore:()=>dt});import{createHash as ws}from"node:crypto";import{existsSync as Qu}from"node:fs";import{mkdir as Xu,readFile as zn,readdir as bs,rename as Zu,writeFile as el}from"node:fs/promises";import{homedir as tl}from"node:os";import{basename as Qn,dirname as Rs,join as Je}from"node:path";import{fileURLToPath as nl}from"node:url";function ps(e,t){return`el:${ws("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 Ee(e){return`record:${e.slice(3)}`}function Fe(e){return`expired:${e.slice(3)}`}function ys(){return"index:v1"}function qt(e){return/^el:[a-f0-9]{12}$/.test(e)}function rl(e){if(!lt(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:lt(e.scope)?e.scope:void 0,ranking:lt(e.ranking)?e.ranking:void 0}}}function il(e){if(!lt(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 lt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function sl(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 bs(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Je(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 ol(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=lt(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 gs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ut(e){return ce(e)?e.collection===ke&&typeof e.handle=="string"&&qt(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"&&al(e.loss):!1}function _s(e){return!ce(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>ce(t)&&typeof t.handle=="string"&&qt(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 Yn(e){return ce(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function al(e){return ce(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function ce(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function cl(e){try{let t=await zn(e,"utf8");if(t.trim()==="")return hs();let n=JSON.parse(t);if(ml(n))return n}catch(t){if(t.code==="ENOENT"){let n=hs();return await ks(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function ul(e){try{let t=await zn(e);return Es(e)?e:ll(t)?dl(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function ll(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function dl(e){return Qn(e)==="red.rdb"?Je(Rs(e),"tmp","rsp-elisions.json"):`${e}.json`}function Es(e){return Qn(e)==="red-skills.rdb"}async function fl(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Je(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Je(tl(),".cache","red-skills","bundles")),t=Je(e,"reddb"),n;try{n=await bs(t)}catch{return}n.sort().reverse();for(let r of n){let i=Je(t,r,process.platform==="win32"?"red.exe":"red");if(Qu(i)){process.env.REDDB_BIN=i;return}}}async function ks(e,t){await Xu(Rs(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await el(n,`${JSON.stringify(t)}
26
- `,"utf8"),await Zu(n,e)}function hs(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function ml(e){return ce(e)&&e.version===1&&ce(e.records)&&Object.values(e.records).every(Ut)&&ce(e.tombstones)&&Object.values(e.tombstones).every(Yn)&&_s(e.index)}function pl(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return nl(e)}var ke,dt,Gt=E(()=>{"use strict";ms();F();ke="rsp_elisions_v1",dt=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=pl(t.uri),r=await ul(n),i=new e(r,{uri:t.uri,ttlDays:gs(t.ttlDays,X),byteBudget:gs(t.byteBudget,Z),now:t.now??(()=>new Date)});return Es(r)?(await fl(),i.db=await ds(`file://${r}`),await i.ensureRedDbStore()):i.document=await cl(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=ps(r,n),c=Ee(a),u={collection:ke,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[Fe(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(!qt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[Ee(t)];if(!Ut(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:Ee(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:ke,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[Fe(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Fe(t)];return Yn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await ks(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(ke)}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 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=ps(r,n),c=Ee(a),u={collection:ke,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(Fe(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(!qt(t))return null;let n=await this.kvGet(Fe(t));if(Yn(n))return n;let r=await this.kvGet(Ee(t));if(!Ut(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:Ee(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:ke,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=rl(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=il(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 sl(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await zn(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Qn(i),c=ws("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=>ol(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(`
27
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ys());return _s(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ys(),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(Fe(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(Ee(t));if(!Ut(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 Is={};$(Is,{REPO_STORE_PATH:()=>er,mergeRspBlock:()=>Os,provisionRspRepoStore:()=>El});import{constants as yl}from"node:fs";import{access as gl,copyFile as hl,mkdir as Ss,readFile as wl,writeFile as Ts}from"node:fs/promises";import{dirname as bl,join as Ft,resolve as Rl}from"node:path";async function El(e,t={}){let n=Rl(e),r=Ft(n,".red"),i=Ft(r,"config.yaml"),s=Ft(n,er);await Ss(r,{recursive:!0}),await Ss(bl(s),{recursive:!0});let o="";try{o=await wl(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Os(o,{enabled:!0,ttlDays:t.ttlDays??X,byteBudget:t.byteBudget??Z,heavyGitByteThreshold:t.heavyGitByteThreshold??Q}),c=a!==o;c&&await Ts(i,a,"utf8");let u=!await vs(s),l=!1;if(u){let m=Ft(n,_l);if(await vs(m))await hl(m,s),l=!0;else{let{RspElisionStore:h}=await Promise.resolve().then(()=>(Gt(),Xn)),w=process.env.REDDB_BIN;try{await(await h.open({uri:`file://${s}`,ttlDays:t.ttlDays??X,byteBudget:t.byteBudget??Z,allowResidentOpen:!0})).close()}finally{w===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=w}}}let d=kl(a,er);return d!==a&&await Ts(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function Os(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Zn(t.ttlDays,X)}`,` byteBudget: ${Zn(t.byteBudget,Z)}`,` heavyGitByteThreshold: ${Zn(t.heavyGitByteThreshold,Q)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
28
- `),i=Ds(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
25
+ `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Mu(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ne(e),a=ne(t),c=i!=null?` GROUP ${ne(i)}`:"",u=s!=null?Kn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ne(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Kn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ju(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Uu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ju(e.priority)}`),e.key!=null&&(t+=` KEY ${Yn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Yn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function qu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Yn(e):JSON.stringify(e)}function Yn(e){return`'${String(e).replace(/'/g,"''")}'`}function Wn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var ut,zn=k(()=>{le();ut=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ne(t)}`})}push(t,n,r={}){let i=Uu(r);return this.client.call("query",{sql:`QUEUE PUSH ${ne(t)} ${qu(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ne(t)}${Kn(n)}`});return Wn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ne(t)}${Kn(n)}`});return Wn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ne(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ne(t)}`})}async readWait(t,n,r={}){let i=Mu(t,n,r),s=await this.client.call("query",{sql:i});return Wn(s)}}});function ls(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function Gu(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function qt(e){return String(e).split(".").map(ds).join(".")}function ds(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Fu(e){return fs(JSON.stringify(e))}function Ju(e){return JSON.stringify(e)}function Vu(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Fu(e):fs(e)}function fs(e){return`'${String(e).replace(/'/g,"''")}'`}var lt,Qn=k(()=>{le();lt=class{constructor(t){this.db=t}async insert(t,n){ls(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${qt(t)} DOCUMENT VALUES (${Ju(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("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 b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Gu(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 ${qt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){ls(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${ds(c)} = ${Vu(u)}`).join(", "),a=(await this.db.query(`UPDATE ${qt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("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 ${qt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Hu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${de(n)}.${de(r)})`}return Ku(e)}function Wu(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 de(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 Ku(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):ms(e)}function ms(e){return`'${String(e).replace(/'/g,"''")}'`}var dt,Xn=k(()=>{dt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Wu(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(ms).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${de(i)} ${de(t)} = ${Hu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${de(r)} ${de(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${de(r)} ${de(t)}`})}}});function Yu(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 Je(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 zu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):ps(e)}function ps(e){return`'${String(e).replace(/'/g,"''")}'`}var ft,Zn=k(()=>{ft=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Yu(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(ps).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Je(i)}.${Je(t)} = ${zu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Je(r)}.${Je(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Je(r)}.${Je(t)}`})}}});async function gs(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Qu)}async function hs(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Zu(t)}`)).rows??[]).some(r=>r.name===String(t))}function Qu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ys(e){return String(e).split(".").map(Xu).join(".")}function Xu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Zu(e){return`'${String(e).replace(/'/g,"''")}'`}var mt,er=k(()=>{le();mt=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 b("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(ys).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ys(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 Rs(e,t={}){let n=qn(e);if(ul(n),n.kind==="embedded"){let r=cl(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=al(n),s=t.binary??os(),o=await ns(s,i),a=new Ut(o);return await a.call("version",{}),new nr(a,{transport:"embedded"})}}function bs(e){return nl(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:il(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ol(e)?{$uuid:e}:e}function nl(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("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 b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function rl(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(bs):e.map(bs)}function il(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 sl(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 ol(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Gt(e){if(Array.isArray(e))return e.map(Gt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return sl(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]=Gt(i);return n}return e}function al(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function cl(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 ul(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",el)}function rr(){return new b(ws,`${ws}: nested transactions are not supported on one connection`)}function Es(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function ll(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${_s} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function dl(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${_s} 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 b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var el,tl,_s,ws,Ft,tr,nr,ks=k(()=>{rs();as();le();Gn();Fn();Hn();zn();Qn();Xn();Zn();er();Fn();Hn();zn();Qn();Xn();Zn();er();Gn();el="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",tl="1.0",_s="1.0.9",ws="NESTED_TX_NOT_SUPPORTED";Ft=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()}},tr=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 b("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 b("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 b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Ft(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Es(n,r)}throw n}}},nr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=tl,this.cache=new ct(t,this.transport),this.queue=new ut(t),this.queues=this.queue,this.documents=new lt(this);let r=new Fe(t);this.kv=Object.assign((i="kv_default")=>new Fe(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 dt(t,i),this.vault=(i="red.vault")=>new ft(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=rl(n);return r==null?this.client.call("query",{sql:t}).then(Gt):this.client.call("query",{sql:t,params:r}).then(Gt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return ll(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 dl(r,n.length)}tx(){return new tr(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 Ft(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Es(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return hs(this,t)}list(){return gs(this)}from(t){return new mt(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 ar={};I(ar,{DEFAULT_RSP_BYTE_BUDGET:()=>te,DEFAULT_RSP_TTL_DAYS:()=>ee,RSP_ELISION_COLLECTION:()=>Te,RspElisionStore:()=>yt});import{createHash as Os}from"node:crypto";import{existsSync as fl}from"node:fs";import{mkdir as ml,readFile as sr,readdir as As,rename as pl,writeFile as yl}from"node:fs/promises";import{homedir as gl}from"node:os";import{basename as or,dirname as Ds,join as He}from"node:path";import{fileURLToPath as hl}from"node:url";function Ss(e,t){return`el:${Os("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 ve(e){return`record:${e.slice(3)}`}function Ve(e){return`expired:${e.slice(3)}`}function vs(){return"index:v1"}function Vt(e){return/^el:[a-f0-9]{12}$/.test(e)}function wl(e){if(!pt(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:pt(e.scope)?e.scope:void 0,ranking:pt(e.ranking)?e.ranking:void 0}}}function bl(e){if(!pt(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 pt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function _l(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 As(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=He(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 Rl(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=pt(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 Ts(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Jt(e){return fe(e)?e.collection===Te&&typeof e.handle=="string"&&Vt(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"&&El(e.loss):!1}function $s(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>fe(t)&&typeof t.handle=="string"&&Vt(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 ir(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function El(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function kl(e){try{let t=await sr(e,"utf8");if(t.trim()==="")return xs();let n=JSON.parse(t);if(Ol(n))return n}catch(t){if(t.code==="ENOENT"){let n=xs();return await Ps(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Sl(e){try{let t=await sr(e);return Is(e)?e:vl(t)?Tl(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function vl(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Tl(e){return or(e)==="red.rdb"?He(Ds(e),"tmp","rsp-elisions.json"):`${e}.json`}function Is(e){return or(e)==="red-skills.rdb"}async function xl(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?He(process.env.XDG_CACHE_HOME,"red-skills","bundles"):He(gl(),".cache","red-skills","bundles")),t=He(e,"reddb"),n;try{n=await As(t)}catch{return}n.sort().reverse();for(let r of n){let i=He(t,r,process.platform==="win32"?"red.exe":"red");if(fl(i)){process.env.REDDB_BIN=i;return}}}async function Ps(e,t){await ml(Ds(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await yl(n,`${JSON.stringify(t)}
26
+ `,"utf8"),await pl(n,e)}function xs(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Ol(e){return fe(e)&&e.version===1&&fe(e.records)&&Object.values(e.records).every(Jt)&&fe(e.tombstones)&&Object.values(e.tombstones).every(ir)&&$s(e.index)}function Al(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return hl(e)}var Te,yt,Ht=k(()=>{"use strict";ks();J();Te="rsp_elisions_v1",yt=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=Al(t.uri),r=await Sl(n),i=new e(r,{uri:t.uri,ttlDays:Ts(t.ttlDays,ee),byteBudget:Ts(t.byteBudget,te),now:t.now??(()=>new Date)});return Is(r)?(await xl(),i.db=await Rs(`file://${r}`),await i.ensureRedDbStore()):i.document=await kl(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=Ss(r,n),c=ve(a),u={collection:Te,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[Ve(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(!Vt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[ve(t)];if(!Jt(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:ve(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:Te,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[Ve(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ve(t)];return ir(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await Ps(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Te)}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 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=Ss(r,n),c=ve(a),u={collection:Te,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(Ve(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(!Vt(t))return null;let n=await this.kvGet(Ve(t));if(ir(n))return n;let r=await this.kvGet(ve(t));if(!Jt(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:ve(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:Te,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=wl(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=bl(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 _l(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=or(i),c=Os("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=>Rl(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(`
27
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(vs());return $s(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(vs(),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(Ve(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(ve(t));if(!Jt(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 qs={};I(qs,{REPO_STORE_PATH:()=>ur,mergeRspBlock:()=>Ms,provisionRspRepoStore:()=>Cl});import{constants as Dl}from"node:fs";import{access as $l,copyFile as Il,mkdir as Ns,readFile as Pl,writeFile as Bs}from"node:fs/promises";import{dirname as Nl,join as Wt,resolve as Bl}from"node:path";async function Cl(e,t={}){let n=Bl(e),r=Wt(n,".red"),i=Wt(r,"config.yaml"),s=Wt(n,ur);await Ns(r,{recursive:!0}),await Ns(Nl(s),{recursive:!0});let o="";try{o=await Pl(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Ms(o,{enabled:!0,ttlDays:t.ttlDays??ee,byteBudget:t.byteBudget??te,heavyGitByteThreshold:t.heavyGitByteThreshold??Z}),c=a!==o;c&&await Bs(i,a,"utf8");let u=!await Cs(s),l=!1;if(u){let m=Wt(n,Ll);if(await Cs(m))await Il(m,s),l=!0;else{let{RspElisionStore:h}=await Promise.resolve().then(()=>(Ht(),ar)),g=process.env.REDDB_BIN;try{await(await h.open({uri:`file://${s}`,ttlDays:t.ttlDays??ee,byteBudget:t.byteBudget??te,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Ml(a,ur);return d!==a&&await Bs(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function Ms(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${cr(t.ttlDays,ee)}`,` byteBudget: ${cr(t.byteBudget,te)}`,` heavyGitByteThreshold: ${cr(t.heavyGitByteThreshold,Z)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
28
+ `),i=js(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
29
29
  `)}
30
- `}let s=tr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
30
+ `}let s=lr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
31
31
  `)}
32
- `}function Ds(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(rr(r)&&nr(r)===0&&As(r)===t)return n}return-1}function tr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(rr(e[i])&&nr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function nr(e){return(e.match(/^ */)?.[0]??"").length}function rr(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function As(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Zn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function kl(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
33
- `),r=Ds(n,"plugins");if(r===-1)return e;let i=tr(n,r,0),s=xs(n,"memory",r+1,i,2);if(s===-1)return e;let o=tr(n,s,2),a=[...n],c=xs(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
32
+ `}function js(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(fr(r)&&dr(r)===0&&Us(r)===t)return n}return-1}function lr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(fr(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 fr(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Us(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function cr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ml(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
33
+ `),r=js(n,"plugins");if(r===-1)return e;let i=lr(n,r,0),s=Ls(n,"memory",r+1,i,2);if(s===-1)return e;let o=lr(n,s,2),a=[...n],c=Ls(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
34
34
  `)}
35
- `}function xs(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(rr(o)&&nr(o)===i&&As(o)===t)return s}return-1}async function vs(e){try{return await gl(e,yl.F_OK),!0}catch{return!1}}var er,_l,Ps=E(()=>{"use strict";F();er=At,_l=".red/memory/graph.rdb"});var Ls={};$(Ls,{runRspMcpServer:()=>Tl});import{createInterface as Sl}from"node:readline";async function Tl(){let e=ie(process.cwd(),process.env),t=Sl({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 xl(r,e);Bs({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Bs({jsonrpc:"2.0",id:typeof Ns(n)?.id>"u"?null:Ns(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function xl(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"]}}]}:{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:$s(t)}]};if(!t.enabled)return{content:[{type:"text",text:$s(t)}],isError:!0};let r=vl(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}}}return{}}function vl(e){return new nt(Y(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 $s(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Bs(e){process.stdout.write(`${JSON.stringify(e)}
36
- `)}function Ns(e){try{return JSON.parse(e)}catch{return null}}var Cs=E(()=>{"use strict";F();Ue()});function ir(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"&&Ol(t.chosenOption)&&Dl(t.outcome)&&Al(t.cost)}function Ol(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Dl(e){return e==="success"||e==="failure"||e==="escalated"}function Al(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 Ms=E(()=>{});import{createHash as Il}from"node:crypto";function zs(e,t){return new or(e,t)}function js(e){let t=Number(e.red_entity_id??e.rid),n=ar(e.properties??e.PROPERTIES),r=Qs(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 Us(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=Xs(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:ar(e.properties??e.PROPERTIES)}}function Bl(e){let t=Number(e.red_entity_id??e.rid),n=ar(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!ir(n)?null:{rid:t,event:n}}function ar(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Jt(e)?e:{}}function Qs(e){let t=e==="contact"?"person":e;if(Pl.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Xs(e){if($l.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Nl(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function qs(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Te(e){return Jt(e)?e:{}}function Gs(e,t){return Te(e)[t]}function Fs(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Js(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Vs(e){let t=Te(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function I(e){return typeof e=="string"&&e.length>0?e:void 0}function Jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sr(e){return e!=null}function Ll(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Cl(e){return Il("sha256").update(JSON.stringify(e)).digest("hex")}function Ml(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Hs(e){return`artifact-hash:${e}`}function Ks(e,t,n){return`connection:${e}:${t}:${n}`}function Ws(){return"model-tier-bandit:v1"}function jl(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ys(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Zs(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+Ys(n,a)*3+Ys(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 Ul(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=eo({...Zs(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Se(i)}function eo(e){return{...e,lexical:Se(e.lexical),tags:Se(e.tags),kind:Se(e.kind),connections:Se(e.connections),vector:Se(e.vector),total:Se(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Se(e){return Math.round(e*1e3)/1e3}function ql(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 Gl(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 Fl(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var J,Pl,$l,or,to=E(()=>{"use strict";Ms();J={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Pl=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),$l=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),or=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(Te(n));if(t==="getArtifact")return await this.getArtifact(Gs(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Te(n);return await this.search(Fs(r,"query"),Js(r,"limit")??10,Vs(r.options))}if(t==="think"){let r=Te(n);return await this.think(Fs(r,"query"),Js(r,"limit")??8,Vs(r.options))}if(t==="link")return await this.link(Te(n));if(t==="backlinks")return await this.backlinks(Gs(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Te(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 ${J.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${J.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${J.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Fl(t.map(r=>r.kind))}}async capture(t){let n=I(t.title)||"Untitled artifact",r=I(t.content);if(!r)throw new Error("brain capture requires content");let i=Qs(I(t.kind)||"note"),s=Ll(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Cl([i,n,r,s,I(t.sourcePath),I(t.sourceSession)]),c=await this.kv().get(Hs(a));if(c!=null){let w=await this.getArtifact(Number(c));if(w)return w}let u=`${Ml(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:I(t.sourceAgent),source_runner:I(t.sourceRunner),source_session:I(t.sourceSession),source_path:I(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Jt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${J.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=js(m);if(!h)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Hs(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 ${J.artifacts}`)).rows.map(js).filter(sr)}async search(t,n,r={}){let i=jl(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=Zs(u,i),d=eo({...l,connections:Ul(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:ql(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 Gl(t,i)}async link(t){let n=await this.getArtifact(qs(t.from)),r=await this.getArtifact(qs(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=Xs(I(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:I(t.reason),confidence:I(t.confidence)||"explicit",created_at:Date.now(),metadata:Jt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${J.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=Us(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ks(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 ${J.connections}`)).rows.map(Us).filter(sr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Nl(I(t.interval)||"day"),i=I(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(!ir(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${J.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 ${J.outcomeEvents}`)).rows.map(Bl).filter(sr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Ws());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Ws(),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(Ks(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(J.kv)}}});var mr={};$(mr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>ve,RSP_TELEMETRY_INDEX_COLLECTION:()=>Kt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>xe,RSP_TELEMETRY_SPOOL:()=>co,appendTelemetryEvent:()=>Wl,drainTelemetrySpool:()=>lr,parseTelemetryEvent:()=>dr,readTelemetryGainsReport:()=>fr,readTelemetryStats:()=>Yt,takeTelemetrySpool:()=>Yl,telemetrySpoolPath:()=>Wt});import{appendFileSync as Jl,mkdirSync as Vl,readFileSync as Hl}from"node:fs";import{mkdir as io,readFile as Kl,rename as so,rm as oo,writeFile as cr}from"node:fs/promises";import{dirname as ur,join as ao}from"node:path";function Wt(e){return ao(e,co)}async function Wl(e,t){try{let n=Wt(e);Vl(ur(n),{recursive:!0}),Jl(n,`${JSON.stringify(t)}
37
- `,{encoding:"utf8",mode:384})}catch{}}async function Yl(e){let t=Wt(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await io(ur(t),{recursive:!0}),await so(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await cr(t,"",{flag:"wx"}).catch(()=>{}),(await uo(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await oo(n,{force:!0})}}async function lr(e,t){let n=Wt(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await io(ur(n),{recursive:!0}),await so(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await cr(n,"",{flag:"wx"}).catch(()=>{});let o=(await uo(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=zl(n);await cr(n,`${i.join(`
35
+ `}function Ls(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(fr(o)&&dr(o)===i&&Us(o)===t)return s}return-1}async function Cs(e){try{return await $l(e,Dl.F_OK),!0}catch{return!1}}var ur,Ll,Gs=k(()=>{"use strict";J();ur=Nt,Ll=".red/memory/graph.rdb"});var Hs={};I(Hs,{runRspMcpServer:()=>Ul});import{createInterface as jl}from"node:readline";async function Ul(){let e=ce(process.cwd(),process.env),t=jl({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 ql(r,e);Js({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Js({jsonrpc:"2.0",id:typeof Vs(n)?.id>"u"?null:Vs(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function ql(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"]}}]}:{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:Fs(t)}]};if(!t.enabled)return{content:[{type:"text",text:Fs(t)}],isError:!0};let r=Gl(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}}}return{}}function Gl(e){return new st(Q(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 Fs(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Js(e){process.stdout.write(`${JSON.stringify(e)}
36
+ `)}function Vs(e){try{return JSON.parse(e)}catch{return null}}var Ws=k(()=>{"use strict";J();Ge()});var Ys={};I(Ys,{renderShellInit:()=>Fl});function Fl(e,t=at){if(e==="fish")return Jl(t);if(e==="bash"||e==="zsh")return Vl(e,t);throw new Error(`unsupported shell: ${e}`)}function Jl(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(Yt))].map(n=>` abbr --add --position command -- ${n} '${Yl(`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(`
37
+ `)}function Vl(e,t){let n=Wl(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Kt("git",n.get("git")??[]),...Kt("gh",n.get("gh")??[]),...Kt("vitest",n.get("vitest")??[]),...Kt("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(`
38
+ `)}function Kt(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(Yt),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(Yt)),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=>Ks(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of Hl(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Kl(u)}' ]`).join(" && ")).join(" || ");i.push(` ${Ks(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function Hl(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 Wl(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Yt(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function Yt(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Ks(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Kl(e){return e.replace(/'/g,"'\\''")}function Yl(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var zs=k(()=>{"use strict";Ln()});function mr(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"&&zl(t.chosenOption)&&Ql(t.outcome)&&Xl(t.cost)}function zl(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Ql(e){return e==="success"||e==="failure"||e==="escalated"}function Xl(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 Qs=k(()=>{});import{createHash as Zl}from"node:crypto";function uo(e,t){return new yr(e,t)}function Xs(e){let t=Number(e.red_entity_id??e.rid),n=gr(e.properties??e.PROPERTIES),r=lo(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 Zs(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=fo(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:gr(e.properties??e.PROPERTIES)}}function nd(e){let t=Number(e.red_entity_id??e.rid),n=gr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!mr(n)?null:{rid:t,event:n}}function gr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zt(e)?e:{}}function lo(e){let t=e==="contact"?"person":e;if(ed.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function fo(e){if(td.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function rd(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function eo(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Oe(e){return zt(e)?e:{}}function to(e,t){return Oe(e)[t]}function no(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function ro(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function io(e){let t=Oe(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function P(e){return typeof e=="string"&&e.length>0?e:void 0}function zt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pr(e){return e!=null}function id(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function sd(e){return Zl("sha256").update(JSON.stringify(e)).digest("hex")}function od(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function so(e){return`artifact-hash:${e}`}function oo(e,t,n){return`connection:${e}:${t}:${n}`}function ao(){return"model-tier-bandit:v1"}function ad(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function co(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function mo(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+co(n,a)*3+co(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 cd(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=po({...mo(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return xe(i)}function po(e){return{...e,lexical:xe(e.lexical),tags:xe(e.tags),kind:xe(e.kind),connections:xe(e.connections),vector:xe(e.vector),total:xe(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function xe(e){return Math.round(e*1e3)/1e3}function ud(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 ld(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 dd(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var V,ed,td,yr,yo=k(()=>{"use strict";Qs();V={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},ed=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),td=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),yr=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(Oe(n));if(t==="getArtifact")return await this.getArtifact(to(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Oe(n);return await this.search(no(r,"query"),ro(r,"limit")??10,io(r.options))}if(t==="think"){let r=Oe(n);return await this.think(no(r,"query"),ro(r,"limit")??8,io(r.options))}if(t==="link")return await this.link(Oe(n));if(t==="backlinks")return await this.backlinks(to(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Oe(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 ${V.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${V.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${V.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:dd(t.map(r=>r.kind))}}async capture(t){let n=P(t.title)||"Untitled artifact",r=P(t.content);if(!r)throw new Error("brain capture requires content");let i=lo(P(t.kind)||"note"),s=id(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=sd([i,n,r,s,P(t.sourcePath),P(t.sourceSession)]),c=await this.kv().get(so(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let u=`${od(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:P(t.sourceAgent),source_runner:P(t.sourceRunner),source_session:P(t.sourceSession),source_path:P(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:zt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${V.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=Xs(m);if(!h)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(so(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 ${V.artifacts}`)).rows.map(Xs).filter(pr)}async search(t,n,r={}){let i=ad(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=mo(u,i),d=po({...l,connections:cd(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:ud(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 ld(t,i)}async link(t){let n=await this.getArtifact(eo(t.from)),r=await this.getArtifact(eo(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=fo(P(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:P(t.reason),confidence:P(t.confidence)||"explicit",created_at:Date.now(),metadata:zt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${V.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=Zs(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(oo(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 ${V.connections}`)).rows.map(Zs).filter(pr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=rd(P(t.interval)||"day"),i=P(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(!mr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${V.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 ${V.outcomeEvents}`)).rows.map(nd).filter(pr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ao());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ao(),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(oo(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(V.kv)}}});var Er={};I(Er,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>De,RSP_TELEMETRY_INDEX_COLLECTION:()=>Zt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Ae,RSP_TELEMETRY_SPOOL:()=>Eo,appendTelemetryEvent:()=>gd,drainTelemetrySpool:()=>br,parseTelemetryEvent:()=>_r,readTelemetryGainsReport:()=>Rr,readTelemetryStats:()=>tn,takeTelemetrySpool:()=>hd,telemetrySpoolPath:()=>en});import{appendFileSync as fd,mkdirSync as md,readFileSync as pd}from"node:fs";import{mkdir as wo,readFile as yd,rename as bo,rm as _o,writeFile as hr}from"node:fs/promises";import{dirname as wr,join as Ro}from"node:path";function en(e){return Ro(e,Eo)}async function gd(e,t){try{let n=en(e);md(wr(n),{recursive:!0}),fd(n,`${JSON.stringify(t)}
39
+ `,{encoding:"utf8",mode:384})}catch{}}async function hd(e){let t=en(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await wo(wr(t),{recursive:!0}),await bo(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await hr(t,"",{flag:"wx"}).catch(()=>{}),(await ko(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await _o(n,{force:!0})}}async function br(e,t){let n=en(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await wo(wr(n),{recursive:!0}),await bo(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await hr(n,"",{flag:"wx"}).catch(()=>{});let o=(await ko(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=wd(n);await hr(n,`${i.join(`
38
40
  `)}
39
- ${s}`,"utf8")}await oo(r,{force:!0})}}function zl(e){try{return Hl(e,"utf8")}catch{return""}}async function uo(e){let t="";for(let n=0;n<5;n++){let r=await Kl(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function dr(e){try{let t=JSON.parse(e);return!lo(t)||t.collection!==xe&&t.collection!==ve?null:t}catch{return null}}async function Yt(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await Vt(e,xe)).filter(p=>ft(p)>=i),o=(await Vt(e,ve)).filter(p=>ft(p)>=i),a=0,c=0,u=0,l=0,d=new Map,m=new Map,h=[],w=0,k=0,S=0;for(let p of s){p.elided===!0&&a++;let R=V(p.raw_bytes),v=V(p.emitted_bytes),gt=Math.max(0,R-v),ge=Math.max(0,V(p.tokens_raw)-V(p.tokens_emitted));c+=R,u+=v,l+=ge;let he=mt(p).slice(0,10);he&&d.set(he,(d.get(he)??0)+ge);let g=ue(p.command)||"unknown",_=m.get(g)??{command:g,invocations:0,bytes_saved:0,tokens_saved:0};_.invocations++,_.bytes_saved+=gt,_.tokens_saved+=ge,m.set(g,_);let De=Ht(p.wrapper_ms);De!=null&&h.push(De),w+=V(p.store_open_count);let Ae=Ht(p.store_elapsed_ms);Ae!=null&&(k+=Ae,S++)}let T=new Map,f=null;for(let p of o){let R=ue(p.reason)||"unknown";T.set(R,(T.get(R)??0)+1);let v=mt(p);(!f||v>f.timestamp)&&(f={timestamp:v,reason:R,command:ue(p.command)||"unknown"})}let y=s.length+o.length;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,daily_tokens_saved:[...d.entries()].sort(([p],[R])=>p.localeCompare(R)).map(([p,R])=>({date:p,tokens_saved:R})),top_commands:[...m.values()].sort((p,R)=>R.bytes_saved-p.bytes_saved||R.tokens_saved-p.tokens_saved||p.command.localeCompare(R.command))},health:{degradations:o.length,degradation_rate:y===0?0:o.length/y,by_reason:[...T.entries()].sort((p,R)=>R[1]-p[1]||p[0].localeCompare(R[0])).map(([p,R])=>({reason:p,count:R})),most_recent:f},latency:{wrapper_ms_p50:Ve(h,.5),wrapper_ms_p95:Ve(h,.95),store_open_count_sum:w,store_elapsed_ms_sum:He(k),store_elapsed_ms_avg:S===0?null:He(k/S)}}}async function fr(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 Vt(e,xe)).filter(g=>ft(g)>=o),c=(await Vt(e,ve)).filter(g=>ft(g)>=o),u=[...a,...c].map(ft).filter(g=>Number.isFinite(g)&&g>0),l=u.length===0?null:Math.min(...u),d=l==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-l)/rd()))),m=[],h=new Map,w=new Map,k=new Map,S=new Map,T=new Map,f=new Map,y=0,p=null,R=0,v=0;for(let g of a){let _=mt(g),De=_.slice(0,10),Ae=_.slice(0,16),Ie=ro(ue(g.command)),Pe=Math.max(0,V(g.tokens_raw)-V(g.tokens_emitted)),sn=Math.max(0,V(g.raw_bytes)-V(g.emitted_bytes)),on=Ht(g.wrapper_ms);if(on!=null){m.push(on);let Lr=h.get(Ie)??[];Lr.push(on),h.set(Ie,Lr)}De&&w.set(De,(w.get(De)??0)+1),Ae&&k.set(Ae,(k.get(Ae)??0)+1);let an=Xl(_);an&&S.set(an,(S.get(an)??0)+1);let cn=td(_);cn&&T.set(cn,(T.get(cn)??0)+Pe);let ht=f.get(Ie)??{command_family:Ie,invocations:0,tokens_saved:0,bytes_saved:0};ht.invocations++,ht.tokens_saved+=Pe,ht.bytes_saved+=sn,f.set(Ie,ht),g.elided===!0&&y++,(g.store_open_count!=null||g.store_elapsed_ms!=null)&&(R++,V(g.store_open_count)>0&&v++),Pe>0&&(!p||Pe>p.tokens_saved||Pe===p.tokens_saved&&sn>p.bytes_saved)&&(p={timestamp:_,command_family:Ie,tokens_saved:Pe,bytes_saved:sn})}let gt=c.map(g=>({timestamp:mt(g),command_family:ro(ue(g.command)),reason:ue(g.reason)||"unknown"})).sort((g,_)=>g.timestamp.localeCompare(_.timestamp)),ge=new Map;for(let g of gt)ge.set(g.reason,(ge.get(g.reason)??0)+1);let he=[...k.entries()].sort((g,_)=>_[1]-g[1]||g[0].localeCompare(_[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:no(m),by_command_family:[...h.entries()].sort((g,_)=>_[1].length-g[1].length||g[0].localeCompare(_[0])).map(([g,_])=>({command_family:g,count:_.length,...no(_)}))},throughput:{requests_per_day:[...w.entries()].sort(([g],[_])=>g.localeCompare(_)).map(([g,_])=>({date:g,requests:_})),active_minute_avg:k.size===0?null:He([...k.values()].reduce((g,_)=>g+_,0)/k.size),peak_minute:he?{minute:he[0],requests:he[1]}:null,hour_weekday_heatmap:Zl(S)},savings:{weekly_tokens_saved:nd(T),elision_rate:a.length===0?0:He(y/a.length),top_commands_by_tokens_saved:[...f.values()].sort((g,_)=>_.tokens_saved-g.tokens_saved||_.bytes_saved-g.bytes_saved||g.command_family.localeCompare(_.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((g,_)=>_.invocations-g.invocations||_.tokens_saved-g.tokens_saved||g.command_family.localeCompare(_.command_family)).slice(0,10),single_biggest_elision:p},health:{degradation_timeline:gt,degradations_by_reason:[...ge.entries()].sort((g,_)=>_[1]-g[1]||g[0].localeCompare(_[0])).map(([g,_])=>({reason:g,count:_})),cold_boots:R===0?null:v,warm_hits:R===0?null:Math.max(0,R-v)}}}async function Vt(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=>Ql(r.value)).filter(r=>lo(r))}function Ql(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function ft(e){let t=Date.parse(mt(e));return Number.isFinite(t)?t:0}function mt(e){return ue(e.created_at)||ue(e.ts)||""}function ue(e){return typeof e=="string"?e:""}function V(e){return Ht(e)??0}function Ht(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ve(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 He(n[r])}function no(e){return{wrapper_ms_p50:Ve(e,.5),wrapper_ms_p90:Ve(e,.9),wrapper_ms_p95:Ve(e,.95),wrapper_ms_p99:Ve(e,.99)}}function He(e){return Math.round(e*100)/100}function ro(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 Xl(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ed(t.getUTCDay())}:${t.getUTCHours()}`:null}function Zl(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 ed(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function td(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 nd(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:He((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function rd(){return 24*60*60*1e3}function lo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var co,xe,ve,Kt,zt=E(()=>{"use strict";co=ao(".red","tmp","rsp-telemetry.spool.jsonl"),xe="rsp_telemetry_invocations_v1",ve="rsp_telemetry_degradations_v1",Kt="rsp_telemetry_index_v1"});var bo={};$(bo,{runResidentServer:()=>dd});import{randomUUID as gr}from"node:crypto";import{existsSync as id}from"node:fs";import{mkdir as go,rename as sd,rm as od,writeFile as ad}from"node:fs/promises";import{createServer as cd}from"node:net";import{dirname as wr,join as Qt}from"node:path";import{fileURLToPath as ud,pathToFileURL as ld}from"node:url";async function dd(e){await go(wr(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await dt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new hr(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??It,byteBudget:e.telemetryByteBudget??e.byteBudget??Pt}),o=e.telemetryDrainTimeoutMs??ho;await pr(s,o);let a=e.idleMs??$t,c,u=e.telemetryDrainIntervalMs??3e4,l=setInterval(()=>{pr(s,o)},u);l.unref();let d=cd(h=>{m(),_d(h,async w=>{m();let k=await Ed(n,w,e.storeUri,e.residentVersion??"0.0.0-dev"),S={id:w.id,ok:!0,value:k,storeOpenCount:i,storeElapsedMs:r};h.write(`${JSON.stringify(S)}
40
- `),w.op==="handover"&&setImmediate(()=>d.close())})});function m(){c&&clearTimeout(c),c=setTimeout(()=>{d.close()},a),c.unref()}await new Promise((h,w)=>{d.once("error",w),d.listen(e.socketPath,()=>{d.off("error",w),h()})}),m(),await new Promise(h=>d.once("close",h)),i=0,c&&clearTimeout(c),clearInterval(l),await pr(s,o),await n.close(),await od(e.socketPath,{force:!0})}async function yd(e,t,n=new Date){let r=await Yt(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(c=>c.date===i)?.tokens_saved??0,o=Qt(t,pd),a=`${o}.${process.pid}.${Date.now()}.tmp`;await go(wr(o),{recursive:!0}),await ad(a,JSON.stringify({version:1,tokens_saved_today:s,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await sd(a,o)}async function pr(e,t=ho){try{await wo(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
41
- `)}}async function gd(e){if(e.collection!==xe)return e;let t=await fo(e.raw_text,po(e.raw_bytes)),n=await fo(e.emitted_text,po(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 fo(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=fd)try{return await wo((async()=>({tokens:(await hd())("cl100k_base").encode(e).length,estimated:!1}))(),md,"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 hd(){return mo??=import(ld(wd()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await mo}function wd(){let e=wr(ud(import.meta.url)),n=[Qt(e,"..","node_modules","js-tiktoken","dist","index.js"),Qt(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>id(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function po(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 wo(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 bd(e){try{return JSON.parse(e)}catch{return e}}function Rd(e){return yo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>yo(t)&&(t.collection===xe||t.collection===ve)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function yo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _d(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
42
- `);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??gr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(u)}
43
- `)}finally{e.end()}})()})}async function Ed(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 Yt(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 fr(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Sd(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await kd(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function kd(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await zs(i,t).request(n,r)}function Sd(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var fd,md,ho,pd,hr,mo,Ro=E(()=>{"use strict";Gt();to();zt();F();fd=256*1024,md=500,ho=2e3,pd=Qt(".red","tmp","rsp-status-summary.json"),hr=class{constructor(t,n){this.store=t;this.opts=n}running;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 r=[...(await this.readIndex(t)).records];await lr(this.opts.rootDir,async i=>{let s=dr(i);if(!s){let o=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(i,"utf8")});return r.push(o),!0}try{let o=await this.writeEvent(t,s);return r.push(o),!0}catch(o){let a=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:yr(s.command)||"unknown",source_id:yr(s.id),source_collection:yr(s.collection),error:o instanceof Error?o.message:String(o),bytes:Buffer.byteLength(i,"utf8")});return r.push(a),!0}}),await this.prune(t,{version:1,records:r}),await yd(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:gr(),a={...await gd(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:ve,id:gr(),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(Kt).get("index:v1"),r=typeof n=="string"?bd(n):n;return Rd(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Kt).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})}}});function le(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 _o(e,t){if(!t)return!0;let n=br(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function A(e,t){return t?e.filter(n=>_o(n,t)):[...e]}function Ke(e,t){if(!t)return e;let r=e.split(`
44
- `).filter(i=>i&&_o(i,t));return r.length>0?`${r.join(`
41
+ ${s}`,"utf8")}await _o(r,{force:!0})}}function wd(e){try{return pd(e,"utf8")}catch{return""}}async function ko(e){let t="";for(let n=0;n<5;n++){let r=await yd(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function _r(e){try{let t=JSON.parse(e);return!So(t)||t.collection!==Ae&&t.collection!==De?null:t}catch{return null}}async function tn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await Qt(e,Ae)).filter(w=>gt(w)>=i),o=(await Qt(e,De)).filter(w=>gt(w)>=i),a=0,c=0,u=0,l=0,d=!1,m=new Map,h=new Map,g=[],S=0,v=0,T=0;for(let w of s){w.elided===!0&&a++;let O=H(w.raw_bytes),Y=H(w.emitted_bytes),_t=Math.max(0,O-Y),ie=Math.max(0,H(w.tokens_raw)-H(w.tokens_emitted));d||=w.estimated===!0&&ie>0,c+=O,u+=Y,l+=ie;let _e=ht(w).slice(0,10);_e&&m.set(_e,(m.get(_e)??0)+ie);let y=me(w.command)||"unknown",_=h.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};_.invocations++,_.bytes_saved+=_t,_.tokens_saved+=ie,h.set(y,_);let Ie=Xt(w.wrapper_ms);Ie!=null&&g.push(Ie),S+=H(w.store_open_count);let Pe=Xt(w.store_elapsed_ms);Pe!=null&&(v+=Pe,T++)}let f=new Map,p=null;for(let w of o){let O=me(w.reason)||"unknown";f.set(O,(f.get(O)??0)+1);let Y=ht(w);(!p||Y>p.timestamp)&&(p={timestamp:Y,reason:O,command:me(w.command)||"unknown"})}let R=s.length+o.length,E=Sn(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(([w],[O])=>w.localeCompare(O)).map(([w,O])=>({date:w,tokens_saved:O})),top_commands:[...h.values()].sort((w,O)=>O.bytes_saved-w.bytes_saved||O.tokens_saved-w.tokens_saved||w.command.localeCompare(O.command))},health:{degradations:o.length,degradation_rate:R===0?0:o.length/R,by_reason:[...f.entries()].sort((w,O)=>O[1]-w[1]||w[0].localeCompare(O[0])).map(([w,O])=>({reason:w,count:O})),most_recent:p},latency:{wrapper_ms_p50:We(g,.5),wrapper_ms_p95:We(g,.95),store_open_count_sum:S,store_elapsed_ms_sum:Ke(v),store_elapsed_ms_avg:T===0?null:Ke(v/T)}}}async function Rr(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 Qt(e,Ae)).filter(y=>gt(y)>=o),c=(await Qt(e,De)).filter(y=>gt(y)>=o),u=[...a,...c].map(gt).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)/vd()))),m=[],h=new Map,g=new Map,S=new Map,v=new Map,T=new Map,f=new Map,p=0,R=!1,E=0,w=null,O=0,Y=0;for(let y of a){let _=ht(y),Ie=_.slice(0,10),Pe=_.slice(0,16),Ne=ho(me(y.command)),se=Math.max(0,H(y.tokens_raw)-H(y.tokens_emitted));p+=se,R||=y.estimated===!0&&se>0;let dn=Math.max(0,H(y.raw_bytes)-H(y.emitted_bytes)),fn=Xt(y.wrapper_ms);if(fn!=null){m.push(fn);let Vr=h.get(Ne)??[];Vr.push(fn),h.set(Ne,Vr)}Ie&&g.set(Ie,(g.get(Ie)??0)+1),Pe&&S.set(Pe,(S.get(Pe)??0)+1);let mn=_d(_);mn&&v.set(mn,(v.get(mn)??0)+1);let pn=kd(_);pn&&T.set(pn,(T.get(pn)??0)+se);let Rt=f.get(Ne)??{command_family:Ne,invocations:0,tokens_saved:0,bytes_saved:0};Rt.invocations++,Rt.tokens_saved+=se,Rt.bytes_saved+=dn,f.set(Ne,Rt),y.elided===!0&&E++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(O++,H(y.store_open_count)>0&&Y++),se>0&&(!w||se>w.tokens_saved||se===w.tokens_saved&&dn>w.bytes_saved)&&(w={timestamp:_,command_family:Ne,tokens_saved:se,bytes_saved:dn})}let _t=c.map(y=>({timestamp:ht(y),command_family:ho(me(y.command)),reason:me(y.reason)||"unknown"})).sort((y,_)=>y.timestamp.localeCompare(_.timestamp)),ie=new Map;for(let y of _t)ie.set(y.reason,(ie.get(y.reason)??0)+1);let _e=[...S.entries()].sort((y,_)=>_[1]-y[1]||y[0].localeCompare(_[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:go(m),by_command_family:[...h.entries()].sort((y,_)=>_[1].length-y[1].length||y[0].localeCompare(_[0])).map(([y,_])=>({command_family:y,count:_.length,...go(_)}))},throughput:{requests_per_day:[...g.entries()].sort(([y],[_])=>y.localeCompare(_)).map(([y,_])=>({date:y,requests:_})),active_minute_avg:S.size===0?null:Ke([...S.values()].reduce((y,_)=>y+_,0)/S.size),peak_minute:_e?{minute:_e[0],requests:_e[1]}:null,hour_weekday_heatmap:Rd(v)},savings:{tokens:Sn(p,R),weekly_tokens_saved:Sd(T),elision_rate:a.length===0?0:Ke(E/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,_)=>_.tokens_saved-y.tokens_saved||_.bytes_saved-y.bytes_saved||y.command_family.localeCompare(_.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,_)=>_.invocations-y.invocations||_.tokens_saved-y.tokens_saved||y.command_family.localeCompare(_.command_family)).slice(0,10),single_biggest_elision:w},health:{degradation_timeline:_t,degradations_by_reason:[...ie.entries()].sort((y,_)=>_[1]-y[1]||y[0].localeCompare(_[0])).map(([y,_])=>({reason:y,count:_})),cold_boots:O===0?null:Y,warm_hits:O===0?null:Math.max(0,O-Y)}}}async function Qt(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=>bd(r.value)).filter(r=>So(r))}function bd(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function gt(e){let t=Date.parse(ht(e));return Number.isFinite(t)?t:0}function ht(e){return me(e.created_at)||me(e.ts)||""}function me(e){return typeof e=="string"?e:""}function H(e){return Xt(e)??0}function Xt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function We(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 Ke(n[r])}function go(e){return{wrapper_ms_p50:We(e,.5),wrapper_ms_p90:We(e,.9),wrapper_ms_p95:We(e,.95),wrapper_ms_p99:We(e,.99)}}function Ke(e){return Math.round(e*100)/100}function ho(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 _d(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Ed(t.getUTCDay())}:${t.getUTCHours()}`:null}function Rd(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 Ed(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function kd(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 Sd(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:Ke((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function vd(){return 24*60*60*1e3}function So(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Eo,Ae,De,Zt,nn=k(()=>{"use strict";vn();Eo=Ro(".red","tmp","rsp-telemetry.spool.jsonl"),Ae="rsp_telemetry_invocations_v1",De="rsp_telemetry_degradations_v1",Zt="rsp_telemetry_index_v1"});var Io={};I(Io,{runResidentServer:()=>Pd});import{randomUUID as vr}from"node:crypto";import{existsSync as Td}from"node:fs";import{mkdir as Ao,rename as xd,rm as Od,writeFile as Ad}from"node:fs/promises";import{createServer as Dd}from"node:net";import{dirname as xr,join as rn}from"node:path";import{fileURLToPath as $d,pathToFileURL as Id}from"node:url";async function Pd(e){await Ao(xr(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await yt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new Tr(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Bt,byteBudget:e.telemetryByteBudget??e.byteBudget??Lt}),o=e.telemetryDrainTimeoutMs??Do;await kr(s,o);let a=e.idleMs??Ct,c,u=e.telemetryDrainIntervalMs??3e4,l=setInterval(()=>{kr(s,o)},u);l.unref();let d=Dd(h=>{m(),Fd(h,async g=>{m();let S=await Jd(n,g,e.storeUri,e.residentVersion??"0.0.0-dev"),v={id:g.id,ok:!0,value:S,storeOpenCount:i,storeElapsedMs:r};h.write(`${JSON.stringify(v)}
42
+ `),g.op==="handover"&&setImmediate(()=>d.close())})});function m(){c&&clearTimeout(c),c=setTimeout(()=>{d.close()},a),c.unref()}await new Promise((h,g)=>{d.once("error",g),d.listen(e.socketPath,()=>{d.off("error",g),h()})}),m(),await new Promise(h=>d.once("close",h)),i=0,c&&clearTimeout(c),clearInterval(l),await kr(s,o),await n.close(),await Od(e.socketPath,{force:!0})}async function Cd(e,t,n=new Date){let r=await tn(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=rn(t,Ld),c=`${a}.${process.pid}.${Date.now()}.tmp`;await Ao(xr(a),{recursive:!0}),await Ad(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 xd(c,a)}async function kr(e,t=Do){try{await $o(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
43
+ `)}}async function Md(e){if(e.collection!==Ae)return e;let t=await vo(e.raw_text,xo(e.raw_bytes)),n=await vo(e.emitted_text,xo(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 vo(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Nd)try{return await $o((async()=>({tokens:(await jd())("cl100k_base").encode(e).length,estimated:!1}))(),Bd,"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 jd(){return To??=import(Id(Ud()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await To}function Ud(){let e=xr($d(import.meta.url)),n=[rn(e,"..","node_modules","js-tiktoken","dist","index.js"),rn(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Td(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function xo(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Sr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function $o(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 qd(e){try{return JSON.parse(e)}catch{return e}}function Gd(e){return Oo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Oo(t)&&(t.collection===Ae||t.collection===De)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Oo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fd(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
44
+ `);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??vr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(u)}
45
+ `)}finally{e.end()}})()})}async function Jd(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 tn(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 Rr(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Hd(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await Vd(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Vd(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await uo(i,t).request(n,r)}function Hd(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Nd,Bd,Do,Ld,Tr,To,Po=k(()=>{"use strict";Ht();yo();nn();J();Nd=256*1024,Bd=500,Do=2e3,Ld=rn(".red","tmp","rsp-status-summary.json"),Tr=class{constructor(t,n){this.store=t;this.opts=n}running;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 r=[...(await this.readIndex(t)).records];await br(this.opts.rootDir,async i=>{let s=_r(i);if(!s){let o=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(i,"utf8")});return r.push(o),!0}try{let o=await this.writeEvent(t,s);return r.push(o),!0}catch(o){let a=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Sr(s.command)||"unknown",source_id:Sr(s.id),source_collection:Sr(s.collection),error:o instanceof Error?o.message:String(o),bytes:Buffer.byteLength(i,"utf8")});return r.push(a),!0}}),await this.prune(t,{version:1,records:r}),await Cd(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:vr(),a={...await Md(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:De,id:vr(),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(Zt).get("index:v1"),r=typeof n=="string"?qd(n):n;return Gd(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Zt).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})}}});function pe(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 No(e,t){if(!t)return!0;let n=Or(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function $(e,t){return t?e.filter(n=>No(n,t)):[...e]}function Ye(e,t){if(!t)return e;let r=e.split(`
46
+ `).filter(i=>i&&No(i,t));return r.length>0?`${r.join(`
45
47
  `)}
46
- `:""}function de(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function br(e){return Array.isArray(e)?e.map(br).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(br).join(" "):String(e??"")}var Xt=E(()=>{"use strict"});var Rr={};$(Rr,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Q,GIT_LOG_MACHINE_FIELDS:()=>Eo,recoveryInstruction:()=>te,renderGitContract:()=>ko,runGitWrapper:()=>xd});import{spawn as Td}from"node:child_process";async function xd(e,t){let n=So(e),r=To(n.argv),i=await Ad(r,n.argv.slice(1));return ko(e,i,t)}async function ko(e,t,n){let r=So(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ke(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=To(r.argv),s=Id(i,r.argv,t.stdout,r.query);if(s===`git empty
47
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=O(s);if(vd(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=Gd(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 ${te(u)}
48
- `;return{stdout:Buffer.from(`${O(a.payload)}
49
- ${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 te(e){return e.startsWith("el:")?`rsp show ${e}`:e}function So(e){let t=le(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 vd(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Od(e)||r.level!=="lossless")return!0;let i=qd(r.heavyGitByteThreshold,Q);return Buffer.byteLength(t)<=i}function Od(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function To(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 Dd(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Eo.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 Ad(e,t){let n=Td("git",Dd(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 Id(e,t,n,r){switch(e){case"status":return Pd(t,n,r);case"log":return $d(t,n,r);case"diff":return Bd(t,n,r);case"commit":return fe(Nd(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return fe(Ld(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Cd(t,n,r);case"branch":return Md(t,n,r);case"show":return jd(t,n,r)}}function Pd(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:Ud(u)})}if(i.length===0)return`git empty
50
- `;let s=A(i,n),o=xo(s,"state");return fe({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 $d(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 fe({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 Bd(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 fe({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 Nd(e,t){let n=t.split(`
51
- `)[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 Ld(e,t){let n=t.split(`
52
- `).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 Cd(e,t,n){let r=t.split(`
53
- `),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=xo(o,"author");return fe({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 Md(e,t,n){let r=t.split(`
54
- `).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 fe({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 jd(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(`
55
- `)){let y=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!y)continue;let p=y[3]??"";h.push({path:(y[1]??"").trim(),changed:Number(y[2]??0),added:[...p].filter(R=>R==="+").length,deleted:[...p].filter(R=>R==="-").length,binary:p.startsWith("Bin")})}let w=A(h,n),k=0,S=0,T=0;for(let f of w)k+=typeof f.changed=="number"?f.changed:0,S+=typeof f.added=="number"?f.added:0,T+=typeof f.deleted=="number"?f.deleted:0;return fe({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
56
- `).length:0,files:w,summary:`${n?`${w.length}/${h.length}`:w.length} files, ${k} changed, +${S} -${T}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function fe(e,t,n){return t?de(e,n):e}function Ud(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function xo(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function qd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Gd(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 Eo,We=E(()=>{"use strict";Ce();F();Xt();F();Eo=["%h","%an","%as","%s"]});var Sr={};$(Sr,{renderGhContract:()=>Do,runGhWrapper:()=>Hd});import{spawn as Oo}from"node:child_process";async function Hd(e,t){let n=Ao(e),r=await Wd(n);return Do(e,r,t)}async function Do(e,t,n){let r=le(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ke(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Ao(e),s=Zt(t.stdout),o=zd(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=rf(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let w=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=w}let c=a?.target.truncated.handle||void 0,u=O(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=sf(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 ${te(m)}
57
- `;return{stdout:Buffer.from(`${O(l.payload)}
58
- ${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 Ao(e){let t=le(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 Kd(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Jd[t]:Fd[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Wd(e){if(e.action==="combined")return await Yd(e);let t=Oo("gh",Kd(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 Yd(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([_r(["pr","view",t,"--json",n.join(",")]),_r(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),_r(["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:Zt(i.stdout),checks:Zt(s.stdout),comments:Zt(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function _r(e){let t=Oo("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 zd(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return ef(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ze(n).map(o=>Io(o,e.wide)),s=A(i,e.query);return Ye({...r,prs:s,summary:`${Er(s.length,i.length,e.query)} ${vo(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Ye({...r,pr:Po(H(n),e),summary:`PR #${Oe(H(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Qd(e,t,H(n));case"issue:list":{let i=ze(n).map(o=>$o(o,e.wide)),s=A(i,e.query);return Ye({...r,issues:s,summary:`${Er(s.length,i.length,e.query)} ${vo(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Ye({...r,issue:tf(H(n),e),summary:`issue #${Oe(H(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ze(n).map(o=>Bo(o,e.wide)),s=A(i,e.query);return Ye({...r,runs:s,summary:`${Er(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 Ye({...r,run:nf(H(n),e),summary:`run ${Oe(H(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Qd(e,t,n){let r=Po(H(n.view),{...e,action:"view",wide:!0}),i=A(ze(n.checks).map(Xd),e.query),s=H(n.comments).comments,o=A(ze(s).map(Zd).slice(-3),e.query);return de({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Oe(H(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 Xd(e){return{name:x(e,"name"),state:pt(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function Zd(e){return{author:Co(e.author),body:en(e,"body",kr,!1),created:x(e,"createdAt")}}function ef(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
48
+ `:""}function ye(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Or(e){return Array.isArray(e)?e.map(Or).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Or).join(" "):String(e??"")}var sn=k(()=>{"use strict"});var Ar={};I(Ar,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Z,GIT_LOG_MACHINE_FIELDS:()=>Bo,recoveryInstruction:()=>re,renderGitContract:()=>Lo,runGitWrapper:()=>Kd});import{spawn as Wd}from"node:child_process";async function Kd(e,t){let n=Co(e),r=Mo(n.argv),i=await Xd(r,n.argv.slice(1));return Lo(e,i,t)}async function Lo(e,t,n){let r=Co(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ye(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Mo(r.argv),s=Zd(i,r.argv,t.stdout,r.query);if(s===`git empty
49
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=A(s);if(Yd(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=df(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 ${re(u)}
50
+ `;return{stdout:Buffer.from(`${A(a.payload)}
51
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function re(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Co(e){let t=pe(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 Yd(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!zd(e)||r.level!=="lossless")return!0;let i=lf(r.heavyGitByteThreshold,Z);return Buffer.byteLength(t)<=i}function zd(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Mo(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 Qd(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Bo.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 Xd(e,t){let n=Wd("git",Qd(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 Zd(e,t,n,r){switch(e){case"status":return ef(t,n,r);case"log":return tf(t,n,r);case"diff":return nf(t,n,r);case"commit":return ge(rf(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ge(sf(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return of(t,n,r);case"branch":return af(t,n,r);case"show":return cf(t,n,r)}}function ef(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:uf(u)})}if(i.length===0)return`git empty
52
+ `;let s=$(i,n),o=jo(s,"state");return ge({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 tf(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=$(r,n);return ge({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 nf(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,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 ge({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 rf(e,t){let n=t.split(`
53
+ `)[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 sf(e,t){let n=t.split(`
54
+ `).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 of(e,t,n){let r=t.split(`
55
+ `),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,n),a=jo(o,"author");return ge({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 af(e,t,n){let r=t.split(`
56
+ `).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=$(r,n),s=i.find(o=>o.current)?.name??"";return ge({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 cf(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(`
57
+ `)){let p=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!p)continue;let R=p[3]??"";h.push({path:(p[1]??"").trim(),changed:Number(p[2]??0),added:[...R].filter(E=>E==="+").length,deleted:[...R].filter(E=>E==="-").length,binary:R.startsWith("Bin")})}let g=$(h,n),S=0,v=0,T=0;for(let f of g)S+=typeof f.changed=="number"?f.changed:0,v+=typeof f.added=="number"?f.added:0,T+=typeof f.deleted=="number"?f.deleted:0;return ge({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
58
+ `).length:0,files:g,summary:`${n?`${g.length}/${h.length}`:g.length} files, ${S} changed, +${v} -${T}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ge(e,t,n){return t?ye(e,n):e}function uf(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function jo(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function lf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function df(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 Bo,ze=k(()=>{"use strict";je();J();sn();J();Bo=["%h","%an","%as","%s"]});var Pr={};I(Pr,{renderGhContract:()=>Go,runGhWrapper:()=>yf});import{spawn as qo}from"node:child_process";async function yf(e,t){let n=Fo(e),r=await hf(n);return Go(e,r,t)}async function Go(e,t,n){let r=pe(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ye(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Fo(e),s=on(t.stdout),o=bf(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=Tf(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let g=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=g}let c=a?.target.truncated.handle||void 0,u=A(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=xf(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 ${re(m)}
59
+ `;return{stdout:Buffer.from(`${A(l.payload)}
60
+ ${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 Fo(e){let t=pe(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 gf(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?mf[t]:ff[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function hf(e){if(e.action==="combined")return await wf(e);let t=qo("gh",gf(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 wf(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Dr(["pr","view",t,"--json",n.join(",")]),Dr(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Dr(["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 Dr(e){let t=qo("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 bf(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return kf(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=Xe(n).map(o=>Jo(o,e.wide)),s=$(i,e.query);return Qe({...r,prs:s,summary:`${$r(s.length,i.length,e.query)} ${Uo(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Qe({...r,pr:Vo(W(n),e),summary:`PR #${$e(W(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return _f(e,t,W(n));case"issue:list":{let i=Xe(n).map(o=>Ho(o,e.wide)),s=$(i,e.query);return Qe({...r,issues:s,summary:`${$r(s.length,i.length,e.query)} ${Uo(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Qe({...r,issue:Sf(W(n),e),summary:`issue #${$e(W(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=Xe(n).map(o=>Wo(o,e.wide)),s=$(i,e.query);return Qe({...r,runs:s,summary:`${$r(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 Qe({...r,run:vf(W(n),e),summary:`run ${$e(W(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function _f(e,t,n){let r=Vo(W(n.view),{...e,action:"view",wide:!0}),i=$(Xe(n.checks).map(Rf),e.query),s=W(n.comments).comments,o=$(Xe(s).map(Ef).slice(-3),e.query);return ye({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${$e(W(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 Rf(e){return{name:x(e,"name"),state:wt(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function Ef(e){return{author:zo(e.author),body:an(e,"body",Ir,!1),created:x(e,"createdAt")}}function kf(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
59
61
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
60
62
  `:`0 runs \u2014 try: rsp gh run list --limit 20
61
- `}function Io(e,t){let n={number:Oe(e,"number"),title:x(e,"title"),state:pt(e),draft:!!e.isDraft};return t&&Object.assign(n,No(e)),n}function Po(e,t){let n=Io(e,t.wide);return n.body=en(e,"body",kr,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function $o(e,t){let n={number:Oe(e,"number"),title:x(e,"title"),state:pt(e),labels:Lo(e.labels)};return t&&Object.assign(n,No(e)),n}function tf(e,t){let n=$o(e,t.wide);return n.body=en(e,"body",kr,t.full),n}function Bo(e,t){let n={id:Oe(e,"databaseId"),name:x(e,"name"),status:pt(e),conclusion:x(e,"conclusion")};return t&&(n.event=x(e,"event"),n.branch=x(e,"headBranch"),n.workflow=x(e,"workflowName"),n.created=x(e,"createdAt")),n}function nf(e,t){let n=Bo(e,t.wide),r=ze(e.jobs).map(i=>({name:x(i,"name"),status:pt(i),conclusion:x(i,"conclusion"),log:en(i,"log",Vd,t.full)}));return n.jobs=r,n}function en(e,t,n,r){let i=x(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 rf(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(Qe(n)){if(Qe(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 sf(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 vo(e,t){return e.every(n=>n.state===t)?t:"returned"}function Er(e,t,n){return n?`${e}/${t}`:String(e)}function Ye(e,t,n){return t.query?de(e,n):e}function pt(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function No(e){return{author:Co(e.author),labels:Lo(e.labels),url:x(e,"url"),updated:x(e,"updatedAt")}}function Lo(e){return Array.isArray(e)?e.map(t=>Qe(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Co(e){return Qe(e)?x(e,"login"):""}function Zt(e){return e.trim()?JSON.parse(e):null}function ze(e){return Array.isArray(e)?e.filter(Qe):[]}function H(e){return Qe(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function Oe(e,t){let n=e[t];return typeof n=="number"?n:0}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fd,Jd,kr,Vd,Tr=E(()=>{"use strict";Ce();We();Xt();Fd={"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"]},Jd={"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"]},kr=160,Vd=160});var vr={};$(vr,{renderTestContract:()=>Mo,runTestWrapper:()=>lf});import{spawn as of}from"node:child_process";async function lf(e,t){let n=le(e),r=await yf(n.argv);return await Mo(e,r,t)}async function Mo(e,t,n){let r=le(e),s=jo(r.argv)==="vitest"?gf(t.stdout):hf(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Ke(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 ${Rf(s.durationSeconds)}`,c=A(s.failures,r.query);if(n.level==="terse")return await df(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let w of c){let k=await wf(w.excerpt,r.argv.join(" "),n.store);u.push({suite:w.suite,name:w.name,excerpt:k.text}),l??=k.handle,d+=k.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?de(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(O(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 df(e,t,n,r,i,s,o){let a=ff(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?de(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=O(u),d=Math.max(0,n.failures.length-a.length),m=a.some((y,p)=>y.excerpt!==n.failures[p].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(y=>({suite:y.suite,name:y.name,excerpt:y.excerpt})));let w=O(h),k=Buffer.byteLength(w),S=await s.store?.mint(Buffer.from(w),{command:e.join(" "),loss:{level:"terse",bytes_elided:k}});if(!S)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${k}) \u2014 ${te(S)}`;return{stdout:Buffer.from(`${l}
62
- ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:S,bytesElided:k,rowsElided:d,rawOutput:Buffer.from(w)}}function ff(e){let t=[],n=cf;for(let r of e.slice(0,uf)){let i=mf(r.excerpt,Math.min(af,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function mf(e,t){if(t<=0)return"";let n=e.split(`
63
+ `}function Jo(e,t){let n={number:$e(e,"number"),title:x(e,"title"),state:wt(e),draft:!!e.isDraft};return t&&Object.assign(n,Ko(e)),n}function Vo(e,t){let n=Jo(e,t.wide);return n.body=an(e,"body",Ir,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function Ho(e,t){let n={number:$e(e,"number"),title:x(e,"title"),state:wt(e),labels:Yo(e.labels)};return t&&Object.assign(n,Ko(e)),n}function Sf(e,t){let n=Ho(e,t.wide);return n.body=an(e,"body",Ir,t.full),n}function Wo(e,t){let n={id:$e(e,"databaseId"),name:x(e,"name"),status:wt(e),conclusion:x(e,"conclusion")};return t&&(n.event=x(e,"event"),n.branch=x(e,"headBranch"),n.workflow=x(e,"workflowName"),n.created=x(e,"createdAt")),n}function vf(e,t){let n=Wo(e,t.wide),r=Xe(e.jobs).map(i=>({name:x(i,"name"),status:wt(i),conclusion:x(i,"conclusion"),log:an(i,"log",pf,t.full)}));return n.jobs=r,n}function an(e,t,n,r){let i=x(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 Tf(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(Ze(n)){if(Ze(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 xf(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 Uo(e,t){return e.every(n=>n.state===t)?t:"returned"}function $r(e,t,n){return n?`${e}/${t}`:String(e)}function Qe(e,t,n){return t.query?ye(e,n):e}function wt(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function Ko(e){return{author:zo(e.author),labels:Yo(e.labels),url:x(e,"url"),updated:x(e,"updatedAt")}}function Yo(e){return Array.isArray(e)?e.map(t=>Ze(t)?x(t,"name"):String(t)).filter(Boolean):[]}function zo(e){return Ze(e)?x(e,"login"):""}function on(e){return e.trim()?JSON.parse(e):null}function Xe(e){return Array.isArray(e)?e.filter(Ze):[]}function W(e){return Ze(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function $e(e,t){let n=e[t];return typeof n=="number"?n:0}function Ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ff,mf,Ir,pf,Nr=k(()=>{"use strict";je();ze();sn();ff={"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"]},mf={"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"]},Ir=160,pf=160});var Lr={};I(Lr,{renderTestContract:()=>Qo,runTestWrapper:()=>If});import{spawn as Of}from"node:child_process";async function If(e,t){let n=pe(e),r=await Cf(n.argv);return await Qo(e,r,t)}async function Qo(e,t,n){let r=pe(e),s=Xo(r.argv)==="vitest"?Mf(t.stdout):jf(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Ye(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 ${Gf(s.durationSeconds)}`,c=$(s.failures,r.query);if(n.level==="terse")return await Pf(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let g of c){let S=await Uf(g.excerpt,r.argv.join(" "),n.store);u.push({suite:g.suite,name:g.name,excerpt:S.text}),l??=S.handle,d+=S.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?ye(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(A(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 Pf(e,t,n,r,i,s,o){let a=Nf(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?ye(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=A(u),d=Math.max(0,n.failures.length-a.length),m=a.some((p,R)=>p.excerpt!==n.failures[R].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(p=>({suite:p.suite,name:p.name,excerpt:p.excerpt})));let g=A(h),S=Buffer.byteLength(g),v=await s.store?.mint(Buffer.from(g),{command:e.join(" "),loss:{level:"terse",bytes_elided:S}});if(!v)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${S}) \u2014 ${re(v)}`;return{stdout:Buffer.from(`${l}
64
+ ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:v,bytesElided:S,rowsElided:d,rawOutput:Buffer.from(g)}}function Nf(e){let t=[],n=Df;for(let r of e.slice(0,$f)){let i=Bf(r.excerpt,Math.min(Af,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Bf(e,t){if(t<=0)return"";let n=e.split(`
63
65
  `),r=n.length<=2?e:`${n[0]}
64
66
  \u2026
65
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function jo(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 pf(e){if(jo(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 yf(e){let t=pf(e),n=of(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 gf(e){let t=Uo(e);if(!me(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=pe(t.numTotalTests),s=pe(t.numFailedTests),o=_f(pe(t.startTime),pe(t.endTime));for(let a of n){if(!me(a))continue;let c=K(a.name)||K(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)me(l)&&l.status==="failed"&&r.push({suite:c,name:K(l.fullName)||K(l.title)||K(l.name),excerpt:bf(l.failureMessages)||K(l.failureMessage)})}return i||=n.reduce((a,c)=>!me(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>me(c)?a+pe(c.perfStats&&me(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function hf(e){let t=e.split(`
66
- `).filter(Boolean).map(c=>Uo(c)).filter(me);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:K(c.name).split("::").slice(0,-1).join("::"),name:K(c.name),excerpt:K(c.stdout)});continue}if(c.reason==="compiler-message"&&me(c.message)){let u=K(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(`
67
- `)}),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 wf(e,t,n){let r=Buffer.from(e);if(r.length<=xr)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,xr).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
68
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${te(i)}`,handle:i,bytesElided:r.length}}function Uo(e){try{return JSON.parse(e)}catch{return null}}function bf(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
69
- `):""}function Rf(e){return`${Number(e.toFixed(1))}s`}function _f(e,t){return e>0&&t>e?(t-e)/1e3:0}function pe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function K(e){return typeof e=="string"?e:""}function me(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var xr,af,cf,uf,Or=E(()=>{"use strict";Ce();We();Xt();xr=320,af=160,cf=xr,uf=3});var tn={};$(tn,{parseExecCommandLine:()=>Fo,renderExecContract:()=>Go,runExecWrapper:()=>vf});import{isUtf8 as Ef}from"node:buffer";import{spawn as kf}from"node:child_process";async function vf(e,t){let n=Fo(e),r=await Of(n);return await Go(n,r,t)}async function Go(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=Df(r);if(s.kind==="text"){let d=await Dn(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=Pf(n.heavyByteThreshold,Sf);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(Af(o,r.length,l,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function Fo(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 Of(e){let t=kf(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 Df(e){return Ef(e)?{kind:"text",text:Nt(e.toString("utf8"))}:{kind:"bytes"}}function Af(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?xf:Tf)/2)),o=qo(e.subarray(0,s)),a=qo(e.subarray(Math.max(0,e.length-s))),c=If(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 ${te(n)}`),`${u.join(`
67
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Xo(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 Lf(e){if(Xo(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 Cf(e){let t=Lf(e),n=Of(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 Mf(e){let t=Zo(e);if(!he(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=we(t.numTotalTests),s=we(t.numFailedTests),o=Ff(we(t.startTime),we(t.endTime));for(let a of n){if(!he(a))continue;let c=K(a.name)||K(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)he(l)&&l.status==="failed"&&r.push({suite:c,name:K(l.fullName)||K(l.title)||K(l.name),excerpt:qf(l.failureMessages)||K(l.failureMessage)})}return i||=n.reduce((a,c)=>!he(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>he(c)?a+we(c.perfStats&&he(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function jf(e){let t=e.split(`
68
+ `).filter(Boolean).map(c=>Zo(c)).filter(he);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+=we(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=we(c.failed),o+=we(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:K(c.name).split("::").slice(0,-1).join("::"),name:K(c.name),excerpt:K(c.stdout)});continue}if(c.reason==="compiler-message"&&he(c.message)){let u=K(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(`
69
+ `)}),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 Uf(e,t,n){let r=Buffer.from(e);if(r.length<=Br)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,Br).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
70
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${re(i)}`,handle:i,bytesElided:r.length}}function Zo(e){try{return JSON.parse(e)}catch{return null}}function qf(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
71
+ `):""}function Gf(e){return`${Number(e.toFixed(1))}s`}function Ff(e,t){return e>0&&t>e?(t-e)/1e3:0}function we(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function K(e){return typeof e=="string"?e:""}function he(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Br,Af,Df,$f,Cr=k(()=>{"use strict";je();ze();sn();Br=320,Af=160,Df=Br,$f=3});var cn={};I(cn,{parseExecCommandLine:()=>na,renderExecContract:()=>ta,runExecWrapper:()=>Yf});import{isUtf8 as Jf}from"node:buffer";import{spawn as Vf}from"node:child_process";async function Yf(e,t){let n=na(e),r=await zf(n);return await ta(n,r,t)}async function ta(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=Qf(r);if(s.kind==="text"){let d=await Mn(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=em(n.heavyByteThreshold,Hf);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(Xf(o,r.length,l,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function na(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 zf(e){let t=Vf(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 Qf(e){return Jf(e)?{kind:"text",text:jt(e.toString("utf8"))}:{kind:"bytes"}}function Xf(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?Kf:Wf)/2)),o=ea(e.subarray(0,s)),a=ea(e.subarray(Math.max(0,e.length-s))),c=Zf(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 ${re(n)}`),`${u.join(`
70
72
  `)}
71
- `}function qo(e){return e.toString("utf8").replace(/�$/g,"")}function If(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 Pf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Sf,Tf,xf,nn=E(()=>{"use strict";We();An();Sf=8*1024,Tf=2*1024,xf=1024});Ce();import{appendFileSync as Jo,existsSync as Pr,mkdirSync as $f,readdirSync as Bf}from"node:fs";import{dirname as Nf,join as Lf}from"node:path";function ri(e){let t={app:e,version:Ha(Me("__RED_BUILD_VERSION__",()=>"2.47.0")??"0.0.0-dev"),gitSha:Me("__RED_BUILD_GIT_SHA__",()=>"e566afde58fb0241b95e784d9b680112501d635a")??"unknown",buildTime:Me("__RED_BUILD_TIME__",()=>"2026-07-13T04:55:24-03:00")??"unknown",bundleAsset:Me("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Me("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Me("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Ha(e){return e.startsWith("v")?e.slice(1):e}function Me(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}async function Cf(e=process.argv.slice(2)){let t=ri("rsp"),n=Kf(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(Pi(),Ii));return await f()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:f}=await Promise.resolve().then(()=>(An(),Vi));return await f()}if(n.command==="setup"){let{provisionRspRepoStore:f}=await Promise.resolve().then(()=>(Ps(),Is)),y=await f(process.cwd());return process.stdout.write(tm(y)),0}if(n.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(Cs(),Ls));return await f(),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(F(),Ri)),i=r(process.cwd(),process.env,n.storeUri),s=Jf(n.command);if(!i.enabled)return s?await rn(Dr(),n.positional):(process.stdout.write(`${Dr()}
72
- `),0);let o=n.command==="git"&&$r(n.positional)?await Mf(process.cwd()):null;if(o){let f=process.hrtime.bigint();return await j(n,await Br(),f,void 0,o.rootDir)}let{resolveResidentPaths:a,ResidentRspElisionStore:c,ensureResidentServer:u}=await Promise.resolve().then(()=>(Ue(),Bt));if(n.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Ro(),bo)),y=ye(n.positional,"--socket")??a(process.cwd()).socketPath,p=r(process.cwd(),process.env,n.storeUri??ye(n.positional,"--store-uri"));return p.enabled?(await f({socketPath:y,storeUri:p.storeUri,ttlDays:P(n.positional,"--ttl-days")??p.ttlDays,byteBudget:P(n.positional,"--byte-budget")??p.byteBudget,telemetryTtlDays:P(n.positional,"--telemetry-ttl-days")??p.telemetryTtlDays,telemetryByteBudget:P(n.positional,"--telemetry-byte-budget")??p.telemetryByteBudget,telemetryDrainIntervalMs:P(n.positional,"--telemetry-drain-interval-ms")??p.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:P(n.positional,"--telemetry-drain-timeout-ms")??p.telemetryDrainTimeoutMs,idleMs:P(n.positional,"--idle-ms")??p.idleMs,residentVersion:ye(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${Dr()}
73
- `),0)}if(n.command==="warm-resident"){let f=a(process.cwd()),y=ye(n.positional,"--socket")??f.socketPath,p=ye(n.positional,"--wake-lock")??f.wakeLockPath,R=r(process.cwd(),process.env,n.storeUri??ye(n.positional,"--store-uri"));if(!R.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Ue(),Bt));return await v({...f,socketPath:y,wakeLockPath:p},{storeUri:R.storeUri,ttlDays:P(n.positional,"--ttl-days")??R.ttlDays,byteBudget:P(n.positional,"--byte-budget")??R.byteBudget,telemetryTtlDays:P(n.positional,"--telemetry-ttl-days")??R.telemetryTtlDays,telemetryByteBudget:P(n.positional,"--telemetry-byte-budget")??R.telemetryByteBudget,telemetryDrainIntervalMs:P(n.positional,"--telemetry-drain-interval-ms")??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:P(n.positional,"--telemetry-drain-timeout-ms")??R.telemetryDrainTimeoutMs,idleMs:P(n.positional,"--idle-ms")??R.idleMs,clientVersion:t.version}),0}let{existsSync:l}=await import("node:fs"),{fileURLToPath:d}=await import("node:url"),m=a(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!l(d(i.storeUri)))return s?await yt(n,i,m.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
74
- `),1);let h=()=>Promise.resolve(new c(m,{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})),w=()=>u(m,{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}),k=async()=>{let{RspElisionStore:f}=await Promise.resolve().then(()=>(Gt(),Xn));return await f.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},S=()=>i.storeUri.endsWith("/red-skills.rdb")?h():k(),T;try{if(!n.command||n.command==="stats"){let f=await S();T=()=>f.close();let y=await f.stats(),p=Uf(f)?await f.telemetryStats(Ar(n.positional,30)):Ko(Ar(n.positional,30));return process.stdout.write(Yf(y,p,Wf(n.positional))),0}if(n.command==="gains"){let f=await S();if(T=()=>f.close(),!qf(f))return process.stdout.write(`error: rsp gains requires the shared RedDB store
75
- `),1;let y=await f.telemetryGains(Ar(n.positional,28));return process.stdout.write(zf(y)),0}if(n.command==="git"){try{await C(w)}catch(v){return await yt(n,i,m.rootDir,v)}if($r(n.positional)){let v=process.hrtime.bigint();return await j(n,await Br(),v,void 0,m.rootDir)}let{runGitWrapper:f}=await Promise.resolve().then(()=>(We(),Rr)),y=new Xe(()=>C(h));T=()=>y.close();let p=process.hrtime.bigint(),R=await C(()=>f(n.positional,{level:n.level,store:y,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await j(n,R,p,y,m.rootDir)}if(n.command==="gh"){try{await C(w)}catch(v){return await yt(n,i,m.rootDir,v)}let{runGhWrapper:f}=await Promise.resolve().then(()=>(Tr(),Sr)),y=new Xe(()=>C(h));T=()=>y.close();let p=process.hrtime.bigint(),R=await C(()=>f(n.positional,{level:n.level,store:y}));return await j(n,R,p,y,m.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await C(w)}catch(v){return await yt(n,i,m.rootDir,v)}let{runTestWrapper:f}=await Promise.resolve().then(()=>(Or(),vr)),y=new Xe(()=>C(h));T=()=>y.close();let p=process.hrtime.bigint(),R=await C(()=>f(n.positional,{level:n.level,store:y}));return await j(n,R,p,y,m.rootDir)}if(n.command==="exec"){try{await C(w)}catch(v){return await yt(n,i,m.rootDir,v)}let{runExecWrapper:f}=await Promise.resolve().then(()=>(nn(),tn)),y=new Xe(()=>C(h));T=()=>y.close();let p=process.hrtime.bigint(),R=await C(()=>f(n.positional,{level:n.level,store:y,heavyByteThreshold:i.heavyGitByteThreshold}));return await j(n,R,p,y)}if(n.command==="show"&&n.handle){let f=await S();T=()=>f.close();let y=await f.get(n.handle);return y&&"original"in y&&y.original?(process.stdout.write(y.original),0):y?.status==="expired"?(process.stdout.write(`expired ${y.expired_at} \u2014 re-run: ${y.command}
73
+ `}function ea(e){return e.toString("utf8").replace(/�$/g,"")}function Zf(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 em(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Hf,Wf,Kf,un=k(()=>{"use strict";ze();jn();Hf=8*1024,Wf=2*1024,Kf=1024});je();import{appendFileSync as ra,existsSync as qr,mkdirSync as tm,readdirSync as nm}from"node:fs";import{dirname as rm,join as im}from"node:path";function fi(e){let t={app:e,version:sc(Ue("__RED_BUILD_VERSION__",()=>"2.49.0")??"0.0.0-dev"),gitSha:Ue("__RED_BUILD_GIT_SHA__",()=>"4ef4bdc2bb7b21bb4a6b9f6c83d702d298446661")??"unknown",buildTime:Ue("__RED_BUILD_TIME__",()=>"2026-07-13T05:36:39-03:00")??"unknown",bundleAsset:Ue("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Ue("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Ue("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function sc(e){return e.startsWith("v")?e.slice(1):e}function Ue(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}vn();async function sm(e=process.argv.slice(2)){let t=fi("rsp"),n=ym(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(Ln(),Gi));return await f()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:f}=await Promise.resolve().then(()=>(jn(),ts));return await f()}if(n.command==="setup"){let{provisionRspRepoStore:f}=await Promise.resolve().then(()=>(Gs(),qs)),p=await f(process.cwd());return process.stdout.write(vm(p)),0}if(n.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(Ws(),Hs));return await f(),0}if(n.command==="shell-init"){let f=n.positional[1];if(f!=="fish"&&f!=="bash"&&f!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
74
+ `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(zs(),Ys));return process.stdout.write(p(f)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(J(),$i)),i=r(process.cwd(),process.env,n.storeUri),s=fm(n.command);if(!i.enabled)return s?await ln(Mr(),n.positional):(process.stdout.write(`${Mr()}
75
+ `),0);let o=n.command==="git"&&Gr(n.positional)?await om(process.cwd()):null;if(o){let f=process.hrtime.bigint();return await U(n,await Fr(),f,void 0,o.rootDir)}let{resolveResidentPaths:a,ResidentRspElisionStore:c,ensureResidentServer:u}=await Promise.resolve().then(()=>(Ge(),Mt));if(n.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Po(),Io)),p=be(n.positional,"--socket")??a(process.cwd()).socketPath,R=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));return R.enabled?(await f({socketPath:p,storeUri:R.storeUri,ttlDays:N(n.positional,"--ttl-days")??R.ttlDays,byteBudget:N(n.positional,"--byte-budget")??R.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??R.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??R.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??R.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??R.idleMs,residentVersion:be(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${Mr()}
76
+ `),0)}if(n.command==="warm-resident"){let f=a(process.cwd()),p=be(n.positional,"--socket")??f.socketPath,R=be(n.positional,"--wake-lock")??f.wakeLockPath,E=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));if(!E.enabled)return 0;let{warmResidentServer:w}=await Promise.resolve().then(()=>(Ge(),Mt));return await w({...f,socketPath:p,wakeLockPath:R},{storeUri:E.storeUri,ttlDays:N(n.positional,"--ttl-days")??E.ttlDays,byteBudget:N(n.positional,"--byte-budget")??E.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??E.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??E.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??E.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??E.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??E.idleMs,clientVersion:t.version}),0}let{existsSync:l}=await import("node:fs"),{fileURLToPath:d}=await import("node:url"),m=a(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!l(d(i.storeUri)))return s?await bt(n,i,m.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
77
+ `),1);let h=()=>Promise.resolve(new c(m,{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})),g=()=>u(m,{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}),S=async()=>{let{RspElisionStore:f}=await Promise.resolve().then(()=>(Ht(),ar));return await f.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},v=()=>i.storeUri.endsWith("/red-skills.rdb")?h():S(),T;try{if(!n.command||n.command==="stats"){let f=await v();T=()=>f.close();let p=await f.stats(),R=cm(f)?await f.telemetryStats(jr(n.positional,30)):oa(jr(n.positional,30));return process.stdout.write(hm(p,R,gm(n.positional))),0}if(n.command==="gains"){let f=await v();if(T=()=>f.close(),!um(f))return process.stdout.write(`error: rsp gains requires the shared RedDB store
78
+ `),1;let p=await f.telemetryGains(jr(n.positional,28));return process.stdout.write(wm(p)),0}if(n.command==="git"){try{await M(g)}catch(w){return await bt(n,i,m.rootDir,w)}if(Gr(n.positional)){let w=process.hrtime.bigint();return await U(n,await Fr(),w,void 0,m.rootDir)}let{runGitWrapper:f}=await Promise.resolve().then(()=>(ze(),Ar)),p=new et(()=>M(h));T=()=>p.close();let R=process.hrtime.bigint(),E=await M(()=>f(n.positional,{level:n.level,store:p,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await U(n,E,R,p,m.rootDir)}if(n.command==="gh"){try{await M(g)}catch(w){return await bt(n,i,m.rootDir,w)}let{runGhWrapper:f}=await Promise.resolve().then(()=>(Nr(),Pr)),p=new et(()=>M(h));T=()=>p.close();let R=process.hrtime.bigint(),E=await M(()=>f(n.positional,{level:n.level,store:p}));return await U(n,E,R,p,m.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await M(g)}catch(w){return await bt(n,i,m.rootDir,w)}let{runTestWrapper:f}=await Promise.resolve().then(()=>(Cr(),Lr)),p=new et(()=>M(h));T=()=>p.close();let R=process.hrtime.bigint(),E=await M(()=>f(n.positional,{level:n.level,store:p}));return await U(n,E,R,p,m.rootDir)}if(n.command==="exec"){try{await M(g)}catch(w){return await bt(n,i,m.rootDir,w)}let{runExecWrapper:f}=await Promise.resolve().then(()=>(un(),cn)),p=new et(()=>M(h));T=()=>p.close();let R=process.hrtime.bigint(),E=await M(()=>f(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await U(n,E,R,p)}if(n.command==="show"&&n.handle){let f=await v();T=()=>f.close();let p=await f.get(n.handle);return p&&"original"in p&&p.original?(process.stdout.write(p.original),0):p?.status==="expired"?(process.stdout.write(`expired ${p.expired_at} \u2014 re-run: ${p.command}
76
79
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
77
80
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
78
- `),2}catch(f){if(s)return await rn("wrapper failed",n.positional,f,m.rootDir);throw f}finally{await T?.()}}function ye(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function P(e,t){let n=ye(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function $r(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Mf(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ue(),Bt)),n=t(e);return Pr(n.socketPath)?n:null}async function Br(){if(jf(process.cwd()))return{stdout:Buffer.from(`git empty
81
+ `),2}catch(f){if(s)return await ln("wrapper failed",n.positional,f,m.rootDir);throw f}finally{await T?.()}}function be(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function N(e,t){let n=be(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Gr(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function om(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ge(),Mt)),n=t(e);return qr(n.socketPath)?n:null}async function Fr(){if(am(process.cwd()))return{stdout:Buffer.from(`git empty
79
82
  `),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
80
83
  `),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
81
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function jf(e){try{return!Pr(`${e}/.git`)||Pr(`${e}/.git/index`)?!1:Bf(e).every(t=>t===".git")}catch{return!1}}function Uf(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function qf(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Xe=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}},Nr=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function yt(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Nr,s=process.hrtime.bigint();try{if(e.command==="git"){if($r(e.positional))return await j(e,await Br(),s,i,n);let{runGitWrapper:o}=await Promise.resolve().then(()=>(We(),Rr)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i,n)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Tr(),Sr)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Or(),vr)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(nn(),tn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i)}}catch(o){return await rn("wrapper failed",e.positional,o,n)}finally{await i.close()}return await rn("wrapper failed",e.positional,r,n)}async function j(e,t,n,r,i=process.cwd()){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let s=Number(process.hrtime.bigint()-n)/1e6;return r?await Gf(i,e,t,s,r.lastResponseMetrics()):Ff(i,e,t,s),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Gf(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(()=>(zt(),mr));await a(e,{collection:c,ts:new Date().toISOString(),command:Vo(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 Ff(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Lf(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Vo(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
82
- `;try{Jo(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;$f(Nf(o),{recursive:!0}),Jo(o,a,{encoding:"utf8",mode:384})}}catch{}}async function rn(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
83
- `);let i=await Vf(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(zt(),mr));await s(r,{collection:o,ts:new Date().toISOString(),command:Ho(t),reason:e})}return i}function Dr(){return"rsp is not enabled in this directory; run /red-setup"}async function C(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Jf(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="exec"}async function Vf(e){if(e[0]==="exec")return await Hf(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)}
84
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Hf(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(nn(),tn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
84
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function am(e){try{return!qr(`${e}/.git`)||qr(`${e}/.git/index`)?!1:nm(e).every(t=>t===".git")}catch{return!1}}function cm(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function um(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var et=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}},Jr=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function bt(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Jr,s=process.hrtime.bigint();try{if(e.command==="git"){if(Gr(e.positional))return await U(e,await Fr(),s,i,n);let{runGitWrapper:o}=await Promise.resolve().then(()=>(ze(),Ar)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await U(e,a,s,i,n)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Nr(),Pr)),a=await o(e.positional,{level:e.level,store:i});return await U(e,a,s,i,n)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Cr(),Lr)),a=await o(e.positional,{level:e.level,store:i});return await U(e,a,s,i,n)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(un(),cn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await U(e,a,s,i)}}catch(o){return await ln("wrapper failed",e.positional,o,n)}finally{await i.close()}return await ln("wrapper failed",e.positional,r,n)}async function U(e,t,n,r,i=process.cwd()){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let s=Number(process.hrtime.bigint()-n)/1e6;return r?await lm(i,e,t,s,r.lastResponseMetrics()):dm(i,e,t,s),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function lm(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(()=>(nn(),Er));await a(e,{collection:c,ts:new Date().toISOString(),command:ia(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 dm(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=im(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:ia(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
85
+ `;try{ra(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;tm(rm(o),{recursive:!0}),ra(o,a,{encoding:"utf8",mode:384})}}catch{}}async function ln(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
86
+ `);let i=await mm(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(nn(),Er));await s(r,{collection:o,ts:new Date().toISOString(),command:sa(t),reason:e})}return i}function Mr(){return"rsp is not enabled in this directory; run /red-setup"}async function M(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function fm(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="exec"}async function mm(e){if(e[0]==="exec")return await pm(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)}
87
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function pm(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(un(),cn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
85
88
  `),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)}
86
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function Vo(e){return Ho(e.positional)}function Ho(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 Kf(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 Ar(e,t){let n=ye(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 Wf(e){return e.includes("--full")}function Yf(e,t=Ko(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: ${t.savings.tokens_saved}`," daily_tokens_saved:",...Qf(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...Xf(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${em(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:",...Zf(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Ir(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Ir(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: ${Ir(t.latency.store_elapsed_ms_avg)}`,""].join(`
87
- `)}function zf(e){return`${O(e)}
88
- `}function Qf(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Xf(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 Zf(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Ir(e){return e==null?"none":String(e)}function em(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Ko(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,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 tm(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
89
- `)}import.meta.url===`file://${process.argv[1]}`&&Cf().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
90
- `),process.exit(1)});export{Cf as main,tm as renderSetupResult,Yf as renderStats};
89
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function ia(e){return sa(e.positional)}function sa(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 ym(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 jr(e,t){let n=be(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 gm(e){return e.includes("--full")}function hm(e,t=oa(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: ${bm(t.savings)}`,` dollars_saved_estimate_usd: ${_m(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:",...Rm(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...Em(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Sm(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:",...km(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Ur(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Ur(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: ${Ur(t.latency.store_elapsed_ms_avg)}`,""].join(`
90
+ `)}function wm(e){return`${A(e)}
91
+ `}function bm(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 _m(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?it(e.dollars_saved_estimate_usd):`${it(e.dollars_saved_low_usd)}-${it(e.dollars_saved_high_usd)} (estimate_midpoint: ${it(e.dollars_saved_estimate_usd)})`}function Rm(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Em(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 km(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Ur(e){return e==null?"none":String(e)}function Sm(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function oa(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 vm(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
92
+ `)}import.meta.url===`file://${process.argv[1]}`&&sm().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
93
+ `),process.exit(1)});export{sm as main,vm as renderSetupResult,hm as renderStats};