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