@reddb-io/red-skills 2.52.0 → 2.52.1

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,104 +1,104 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Ea=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var A=(e,t)=>{for(var n in t)Ea(e,n,{get:t[n],enumerable:!0})};function ri(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 ii(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 $t(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 bn(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 M(e,t){try{return t()}catch(n){throw n instanceof j?n:n instanceof Error?new j(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function si(e){return e==="true"||e==="false"||e==="null"}function va(e){if(!e||!Sa.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function Tt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=$t(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let p=e.length-r.length+f+1;i=e.indexOf("[",p)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let _=f.trim();throw new SyntaxError(_===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${_}" between bracket and fields segment`)}return}let p=e.indexOf("}",c);p!==-1&&(a=p+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let f=u.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('"')?hn(f):f}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),g;try{g=xa(w,t)}catch(f){if(n)throw f;return}let{length:S,delimiter:v}=g,T;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let p=e.slice(c+1,f),_=$a(p,v);if(_!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Xr(v)}" but fields segment contains unquoted "${Xr(_)}"`);return}T=_n(p,v).map(E=>hn(E.trim()))}}return{header:{key:d,length:S,delimiter:v,fields:T},inlineValues:m||void 0}}function xa(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=vt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=vt.pipe,n=n.slice(0,-1)),!Ta.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 $a(e,t){for(let n of Oa)if(n!==t&&bn(e,n)!==-1)return n}function Xr(e){return e===" "?"\\t":e}function _n(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 oi(e){return e.map(t=>At(t))}function At(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return hn(t);if(si(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(va(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function hn(e){let t=e.trim();if(t.startsWith('"')){let n=$t(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 ii(t.slice(1,n))}return t}function Aa(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 Da(e,t){let n=$t(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=ii(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function Ia(e,t){let n=e[t]==='"';return{...n?Da(e,t):Aa(e,t),isQuoted:n}}function ai(e){return e.trim().startsWith("[")&&bn(e,":")!==-1}function Pa(e){return bn(e,":")!==-1}function Ba(){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=Zr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Zr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new j("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new j(`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*La(e,t,n,r){for(let i of e){let s=Na(i,r,t,n);s!==void 0&&(yield s)}}function Zr(e,t){return Math.floor(e/t)}function rt(e,t,n,r,i){if(r.strict&&e!==t)throw new j(`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 j(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Ma(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&ja(e.content,n.delimiter))throw new j(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function ci(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new j(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function ja(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Ga(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=Ba(),i=new Ua(La(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(ai(s.content)){let a=M(s,()=>Tt(s.content,q,n.strict));if(a){i.advanceSync(),yield*xt(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!ti(s)){yield{type:"primitive",value:M(s,()=>At(s.content.trim()))};return}if(!ti(s)&&i.peekSync()?.depth===0)throw new j("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*Me(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Me(a,i,0,n,o)}yield{type:"endObject"}}function ei(e,t,n){if(n){if(n.has(e))throw new j(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Me(e,t,n,r,i){let s=e.content,o=M(e,()=>Tt(s,q,r.strict));if(o&&o.header.key!==void 0){ei(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*xt(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=M(e,()=>Ia(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(ei(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*Fa(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:M(e,()=>At(u))}}function*Fa(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*Me(s,e,r,n,i);else break}}function*xt(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*qa(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Ja(e,n,r,i,s),yield{type:"endArray"};return}yield*Va(e,n,r,i,s),yield{type:"endArray"}}function*qa(e,t,n,r){if(!t.trim()){rt(0,e.length,"inline array items",n,r);return}let i=M(r,()=>_n(t,e.delimiter)),s=M(r,()=>oi(i));rt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Ja(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=M(u,()=>_n(u.content,e.delimiter));rt(d.length,e.fields.length,"tabular row values",r,u);let m=M(u,()=>oi(d));yield*Wa(e.fields,m),o++}else break}rt(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Ma(t.peekSync(),s,e)}function*Va(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*Ha(t,s,r);let m=t.current();m&&(c=m.lineNumber,l=m),o++}else break}rt(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(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 j('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(ai(i)){let a=M(s,()=>Tt(i,q,n.strict));if(a){yield*xt(a.header,a.inlineValues,e,t,n,s);return}}let o=M(s,()=>Tt(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*xt(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Me(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Pa(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Me(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Me(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:M(s,()=>At(i))}}function ti(e){let t=e.content;if(t.startsWith('"')){let n=$t(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 Q(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 Q(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(Q);if(e instanceof Set)return Array.from(e).map(Q);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),Q(n)]));if(Ka(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=Q(e[n]));return t}return null}function Re(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function oe(e){return Array.isArray(e)}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function it(e){return Object.keys(e).length===0}function Ka(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function st(e){return e.length===0||e.every(t=>Re(t))}function za(e){return e.length===0||e.every(t=>oe(t))}function li(e){return e.length===0||e.every(t=>D(t))}function Xa(e){return/^[A-Z_][\w.]*$/i.test(e)}function ui(e){return/^[A-Z_]\w*$/i.test(e)}function Za(e,t=q){return!(!e||e!==e.trim()||si(e)||ec(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function ec(e){return Ya.test(e)||Qa.test(e)}function St(e,t){if(Array.isArray(e))return e.map(n=>St(n,t));if(D(e)){let n={},r=e[di];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>ui(l))){tc(n,c,St(s,t),t);continue}}let a=St(s,t);if(i in n){let c=n[i];if(En(c,a))Rn(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 tc(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(D(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(En(o,n))Rn(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 Rn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(En(s,i))Rn(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 En(e,t){return D(e)&&D(t)}function nc(e){let t={stack:[],root:void 0};for(let n of e)rc(t,n);return ic(t)}function rc(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,di,{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 ic(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 sc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!D(t))return;let{segments:a,tail:c,leafValue:l}=oc(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>ui(m)))return;let u=ac(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function oc(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)||it(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ac(e){return e.join(".")}function Ue(e,t){return e===null?ka:typeof e=="boolean"||typeof e=="number"?String(e):cc(e,t)}function cc(e,t=q){return Za(e,t)?e:`"${ri(e)}"`}function Ge(e){return Xa(e)?e:`"${ri(e)}"`}function fi(e,t=q){return e.map(n=>Ue(n,t)).join(t)}function Ee(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ge(n)),s+=`[${e}${i!==q?i:""}]`,r){let o=r.map(a=>Ge(a));s+=`{${o.join(i)}}`}return s+=":",s}function*lc(e,t,n){if(Re(e)){let r=Ue(e,t.delimiter);r!==""&&(yield r);return}oe(e)?yield*wn(void 0,e,n,t):D(e)&&(yield*je(e,n,t))}function*je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*uc(c,l,t,n,o,r,i,a)}function*uc(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=sc(e,t,i,r,s,o,l);if(d){let{foldedKey:m,remainder:w,leafValue:g,segmentCount:S}=d,v=Ge(m);if(w===void 0){if(Re(g)){yield L(n,`${v}: ${Ue(g,r.delimiter)}`,r.indent);return}else if(oe(g)){yield*wn(m,g,n,r);return}else if(D(g)&&it(g)){yield L(n,`${v}:`,r.indent);return}}if(D(w)){yield L(n,`${v}:`,r.indent);let T=l-S,f=o?`${o}.${m}`:m;yield*je(w,n+1,r,s,f,T);return}}}let u=Ge(e);Re(t)?yield L(n,`${u}: ${Ue(t,r.delimiter)}`,r.indent):oe(t)?yield*wn(e,t,n,r):D(t)&&(yield L(n,`${u}:`,r.indent),it(t)||(yield*je(t,n+1,r,s,c,l)))}function*wn(e,t,n,r){if(t.length===0){yield L(n,e!=null?`${Ge(e)}: []`:"[]",r.indent);return}if(st(t)){yield L(n,Dt(t,r.delimiter,e),r.indent);return}if(za(t)&&t.every(i=>st(i))){yield*dc(e,t,n,r);return}if(li(t)){let i=mi(t);i?yield*fc(e,t,i,n,r):yield*ni(e,t,n,r);return}yield*ni(e,t,n,r)}function*dc(e,t,n,r){yield L(n,Ee(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(st(i)){let s=Dt(i,r.delimiter);yield F(n+1,s,r.indent)}}function Dt(e,t,n){let r=Ee(e.length,{key:n,delimiter:t}),i=fi(e,t);return e.length===0?r:`${r} ${i}`}function*fc(e,t,n,r,i){yield L(r,Ee(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*pi(t,n,r+1,i)}function mi(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&mc(e,n))return n}function mc(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!Re(n[r]))return!1}return!0}function*pi(e,t,n,r){for(let i of e)yield L(n,fi(t.map(s=>i[s]),r.delimiter),r.indent)}function*ni(e,t,n,r){yield L(n,Ee(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*kn(i,n+1,r)}function*pc(e,t,n){if(it(e)){yield L(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(oe(s)&&li(s)){let c=mi(s);if(c){yield F(t,Ee(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*pi(s,c,t+2,n),o.length>0&&(yield*je(Object.fromEntries(o),t+1,n));return}}let a=Ge(i);if(Re(s))yield F(t,`${a}: ${Ue(s,n.delimiter)}`,n.indent);else if(oe(s))if(s.length===0)yield F(t,`${a}: []`,n.indent);else if(st(s))yield F(t,`${a}${Dt(s,n.delimiter)}`,n.indent);else{yield F(t,`${a}${Ee(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*kn(c,t+2,n)}else D(s)&&(yield F(t,`${a}:`,n.indent),it(s)||(yield*je(s,t+2,n)));o.length>0&&(yield*je(Object.fromEntries(o),t+1,n))}function*kn(e,t,n){if(Re(e))yield F(t,Ue(e,n.delimiter),n.indent);else if(oe(e))if(st(e))yield F(t,Dt(e,n.delimiter),n.indent);else{yield F(t,Ee(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*kn(r,t+1,n)}else D(e)&&(yield*pc(e,t,n))}function L(e,t,n){return" ".repeat(n*e)+t}function F(e,t,n){return L(e,"- "+t,n)}function yc(e,t){let n=t("",e,[]);return n===void 0?Ot(e,t,[]):Ot(Q(n),t,[])}function Ot(e,t,n){return D(e)?gc(e,t,n):oe(e)?hc(e,t,n):e}function gc(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]=Ot(Q(a),t,o))}return r}function hc(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=Q(a);r.push(Ot(c,t,o))}return r}function $(e,t){return Array.from(yi(e,t)).join(`
3
+ var ka=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var A=(e,t)=>{for(var n in t)ka(e,n,{get:t[n],enumerable:!0})};function ri(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 ii(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 At(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 bn(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 M(e,t){try{return t()}catch(n){throw n instanceof j?n:n instanceof Error?new j(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function si(e){return e==="true"||e==="false"||e==="null"}function Ta(e){if(!e||!va.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function xt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=At(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let p=e.length-r.length+f+1;i=e.indexOf("[",p)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let _=f.trim();throw new SyntaxError(_===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${_}" between bracket and fields segment`)}return}let p=e.indexOf("}",c);p!==-1&&(a=p+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let f=u.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('"')?hn(f):f}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),g;try{g=Oa(w,t)}catch(f){if(n)throw f;return}let{length:S,delimiter:v}=g,T;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let p=e.slice(c+1,f),_=Aa(p,v);if(_!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Zr(v)}" but fields segment contains unquoted "${Zr(_)}"`);return}T=_n(p,v).map(E=>hn(E.trim()))}}return{header:{key:d,length:S,delimiter:v,fields:T},inlineValues:m||void 0}}function Oa(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Tt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Tt.pipe,n=n.slice(0,-1)),!xa.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 Aa(e,t){for(let n of $a)if(n!==t&&bn(e,n)!==-1)return n}function Zr(e){return e===" "?"\\t":e}function _n(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 oi(e){return e.map(t=>Dt(t))}function Dt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return hn(t);if(si(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Ta(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function hn(e){let t=e.trim();if(t.startsWith('"')){let n=At(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 ii(t.slice(1,n))}return t}function Da(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 Ia(e,t){let n=At(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=ii(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 Pa(e,t){let n=e[t]==='"';return{...n?Ia(e,t):Da(e,t),isQuoted:n}}function ai(e){return e.trim().startsWith("[")&&bn(e,":")!==-1}function Na(e){return bn(e,":")!==-1}function Ba(){return{lineNumber:0,blankLines:[]}}function La(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=Xr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Xr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new j("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new j(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Ca(e,t,n,r){for(let i of e){let s=La(i,r,t,n);s!==void 0&&(yield s)}}function Xr(e,t){return Math.floor(e/t)}function rt(e,t,n,r,i){if(r.strict&&e!==t)throw new j(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Ma(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new j(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function ja(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ua(e.content,n.delimiter))throw new j(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function ci(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new j(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ua(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=Ba(),i=new Ga(Ca(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(ai(s.content)){let a=M(s,()=>xt(s.content,q,n.strict));if(a){i.advanceSync(),yield*Ot(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!ti(s)){yield{type:"primitive",value:M(s,()=>Dt(s.content.trim()))};return}if(!ti(s)&&i.peekSync()?.depth===0)throw new j("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*Me(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Me(a,i,0,n,o)}yield{type:"endObject"}}function ei(e,t,n){if(n){if(n.has(e))throw new j(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Me(e,t,n,r,i){let s=e.content,o=M(e,()=>xt(s,q,r.strict));if(o&&o.header.key!==void 0){ei(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ot(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=M(e,()=>Pa(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(ei(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*qa(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:M(e,()=>Dt(u))}}function*qa(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*Me(s,e,r,n,i);else break}}function*Ot(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Ja(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Va(e,n,r,i,s),yield{type:"endArray"};return}yield*Ha(e,n,r,i,s),yield{type:"endArray"}}function*Ja(e,t,n,r){if(!t.trim()){rt(0,e.length,"inline array items",n,r);return}let i=M(r,()=>_n(t,e.delimiter)),s=M(r,()=>oi(i));rt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Va(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=M(u,()=>_n(u.content,e.delimiter));rt(d.length,e.fields.length,"tabular row values",r,u);let m=M(u,()=>oi(d));yield*Ka(e.fields,m),o++}else break}rt(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&ja(t.peekSync(),s,e)}function*Ha(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*Wa(t,s,r);let m=t.current();m&&(c=m.lineNumber,l=m),o++}else break}rt(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Ma(t.peekSync(),s,e.length)}function*Wa(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new j('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(ai(i)){let a=M(s,()=>xt(i,q,n.strict));if(a){yield*Ot(a.header,a.inlineValues,e,t,n,s);return}}let o=M(s,()=>xt(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*Ot(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Me(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Na(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Me(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Me(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:M(s,()=>Dt(i))}}function ti(e){let t=e.content;if(t.startsWith('"')){let n=At(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Ka(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 Q(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 Q(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(Q);if(e instanceof Set)return Array.from(e).map(Q);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),Q(n)]));if(za(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=Q(e[n]));return t}return null}function ke(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function oe(e){return Array.isArray(e)}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function it(e){return Object.keys(e).length===0}function za(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function st(e){return e.length===0||e.every(t=>ke(t))}function Ya(e){return e.length===0||e.every(t=>oe(t))}function li(e){return e.length===0||e.every(t=>D(t))}function Xa(e){return/^[A-Z_][\w.]*$/i.test(e)}function ui(e){return/^[A-Z_]\w*$/i.test(e)}function ec(e,t=q){return!(!e||e!==e.trim()||si(e)||tc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function tc(e){return Qa.test(e)||Za.test(e)}function vt(e,t){if(Array.isArray(e))return e.map(n=>vt(n,t));if(D(e)){let n={},r=e[di];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>ui(l))){nc(n,c,vt(s,t),t);continue}}let a=vt(s,t);if(i in n){let c=n[i];if(En(c,a))Rn(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 nc(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(D(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(En(o,n))Rn(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 Rn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(En(s,i))Rn(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 En(e,t){return D(e)&&D(t)}function rc(e){let t={stack:[],root:void 0};for(let n of e)ic(t,n);return sc(t)}function ic(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,di,{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 sc(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 oc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!D(t))return;let{segments:a,tail:c,leafValue:l}=ac(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>ui(m)))return;let u=cc(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function ac(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)||it(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function cc(e){return e.join(".")}function Ue(e,t){return e===null?Sa:typeof e=="boolean"||typeof e=="number"?String(e):lc(e,t)}function lc(e,t=q){return ec(e,t)?e:`"${ri(e)}"`}function Ge(e){return Xa(e)?e:`"${ri(e)}"`}function fi(e,t=q){return e.map(n=>Ue(n,t)).join(t)}function Se(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ge(n)),s+=`[${e}${i!==q?i:""}]`,r){let o=r.map(a=>Ge(a));s+=`{${o.join(i)}}`}return s+=":",s}function*uc(e,t,n){if(ke(e)){let r=Ue(e,t.delimiter);r!==""&&(yield r);return}oe(e)?yield*wn(void 0,e,n,t):D(e)&&(yield*je(e,n,t))}function*je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*dc(c,l,t,n,o,r,i,a)}function*dc(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=oc(e,t,i,r,s,o,l);if(d){let{foldedKey:m,remainder:w,leafValue:g,segmentCount:S}=d,v=Ge(m);if(w===void 0){if(ke(g)){yield L(n,`${v}: ${Ue(g,r.delimiter)}`,r.indent);return}else if(oe(g)){yield*wn(m,g,n,r);return}else if(D(g)&&it(g)){yield L(n,`${v}:`,r.indent);return}}if(D(w)){yield L(n,`${v}:`,r.indent);let T=l-S,f=o?`${o}.${m}`:m;yield*je(w,n+1,r,s,f,T);return}}}let u=Ge(e);ke(t)?yield L(n,`${u}: ${Ue(t,r.delimiter)}`,r.indent):oe(t)?yield*wn(e,t,n,r):D(t)&&(yield L(n,`${u}:`,r.indent),it(t)||(yield*je(t,n+1,r,s,c,l)))}function*wn(e,t,n,r){if(t.length===0){yield L(n,e!=null?`${Ge(e)}: []`:"[]",r.indent);return}if(st(t)){yield L(n,It(t,r.delimiter,e),r.indent);return}if(Ya(t)&&t.every(i=>st(i))){yield*fc(e,t,n,r);return}if(li(t)){let i=mi(t);i?yield*mc(e,t,i,n,r):yield*ni(e,t,n,r);return}yield*ni(e,t,n,r)}function*fc(e,t,n,r){yield L(n,Se(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(st(i)){let s=It(i,r.delimiter);yield F(n+1,s,r.indent)}}function It(e,t,n){let r=Se(e.length,{key:n,delimiter:t}),i=fi(e,t);return e.length===0?r:`${r} ${i}`}function*mc(e,t,n,r,i){yield L(r,Se(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*pi(t,n,r+1,i)}function mi(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&pc(e,n))return n}function pc(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)||!ke(n[r]))return!1}return!0}function*pi(e,t,n,r){for(let i of e)yield L(n,fi(t.map(s=>i[s]),r.delimiter),r.indent)}function*ni(e,t,n,r){yield L(n,Se(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*kn(i,n+1,r)}function*yc(e,t,n){if(it(e)){yield L(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(oe(s)&&li(s)){let c=mi(s);if(c){yield F(t,Se(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*pi(s,c,t+2,n),o.length>0&&(yield*je(Object.fromEntries(o),t+1,n));return}}let a=Ge(i);if(ke(s))yield F(t,`${a}: ${Ue(s,n.delimiter)}`,n.indent);else if(oe(s))if(s.length===0)yield F(t,`${a}: []`,n.indent);else if(st(s))yield F(t,`${a}${It(s,n.delimiter)}`,n.indent);else{yield F(t,`${a}${Se(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*kn(c,t+2,n)}else D(s)&&(yield F(t,`${a}:`,n.indent),it(s)||(yield*je(s,t+2,n)));o.length>0&&(yield*je(Object.fromEntries(o),t+1,n))}function*kn(e,t,n){if(ke(e))yield F(t,Ue(e,n.delimiter),n.indent);else if(oe(e))if(st(e))yield F(t,It(e,n.delimiter),n.indent);else{yield F(t,Se(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*kn(r,t+1,n)}else D(e)&&(yield*yc(e,t,n))}function L(e,t,n){return" ".repeat(n*e)+t}function F(e,t,n){return L(e,"- "+t,n)}function gc(e,t){let n=t("",e,[]);return n===void 0?$t(e,t,[]):$t(Q(n),t,[])}function $t(e,t,n){return D(e)?hc(e,t,n):oe(e)?wc(e,t,n):e}function hc(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]=$t(Q(a),t,o))}return r}function wc(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=Q(a);r.push($t(c,t,o))}return r}function $(e,t){return Array.from(yi(e,t)).join(`
5
5
  `)}function Sn(e,t){return gi(e.split(`
6
- `),t)}function yi(e,t){let n=Q(e),r=wc(t);return lc(r.replacer?yc(n,r.replacer):n,r,0)}function gi(e,t){let n=bc(t),r=nc(Ga(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?St(r,n.strict):r}function wc(e){return{indent:e?.indent??2,delimiter:e?.delimiter??q,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function bc(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var ka,vt,q,j,Sa,Ta,Oa,Ua,Ya,Qa,di,hi=k(()=>{ka="null",vt={comma:",",tab:" ",pipe:"|"},q=vt.comma;j=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}};Sa=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;Ta=/^(?:0|[1-9]\d*)$/;Oa=[","," ","|"];Ua=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}};Ya=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Qa=/^0\d+$/;di=Symbol("quotedKey")});var ke=k(()=>{"use strict";hi()});function Tn(e,t,n=bi){let r=Math.max(0,Math.floor(e)),i=n in _i?n:bi,s=_i[i],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:vn(r,s),dollars_saved_low_usd:o==null?null:vn(o,s),dollars_saved_high_usd:a==null?null:vn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:Rc}}function vn(e,t){return Ec(Math.max(0,e)/1e6*t)}function ot(e){return`$${e.toFixed(6)}`}function Ec(e){return Math.round(e*1e6)/1e6}var bi,_i,Rc,xn=k(()=>{"use strict";bi="gpt-5",_i={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15},Rc="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as kc,readFileSync as hp}from"node:fs";import{dirname as Sc,join as vc}from"node:path";function Ri(e,t){let n=e;for(let r=0;r<16;r++){let i=vc(n,t);if(kc(i))return i;let s=Sc(n);if(s===n)break;n=s}return null}function Tc(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function On(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 l=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(d=>d.key).join(".")===t)return Tc(l)}}var Ei=k(()=>{});import{createConnection as xc}from"node:net";async function qe(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=xc(e.socketPath),o=!1,a="",c=setTimeout(()=>{l(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function l(u){o||(o=!0,clearTimeout(c),u())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
6
+ `),t)}function yi(e,t){let n=Q(e),r=bc(t);return uc(r.replacer?gc(n,r.replacer):n,r,0)}function gi(e,t){let n=_c(t),r=rc(Fa(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?vt(r,n.strict):r}function bc(e){return{indent:e?.indent??2,delimiter:e?.delimiter??q,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function _c(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Sa,Tt,q,j,va,xa,$a,Ga,Qa,Za,di,hi=k(()=>{Sa="null",Tt={comma:",",tab:" ",pipe:"|"},q=Tt.comma;j=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}};va=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;xa=/^(?:0|[1-9]\d*)$/;$a=[","," ","|"];Ga=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}};Qa=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Za=/^0\d+$/;di=Symbol("quotedKey")});var ve=k(()=>{"use strict";hi()});function Tn(e,t,n=bi){let r=Math.max(0,Math.floor(e)),i=n in _i?n:bi,s=_i[i],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:vn(r,s),dollars_saved_low_usd:o==null?null:vn(o,s),dollars_saved_high_usd:a==null?null:vn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:Ec}}function vn(e,t){return kc(Math.max(0,e)/1e6*t)}function ot(e){return`$${e.toFixed(6)}`}function kc(e){return Math.round(e*1e6)/1e6}var bi,_i,Ec,xn=k(()=>{"use strict";bi="gpt-5",_i={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15},Ec="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Sc,readFileSync as kp}from"node:fs";import{dirname as vc,join as Tc}from"node:path";function Ri(e,t){let n=e;for(let r=0;r<16;r++){let i=Tc(n,t);if(Sc(i))return i;let s=vc(n);if(s===n)break;n=s}return null}function xc(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function On(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 l=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(d=>d.key).join(".")===t)return xc(l)}}var Ei=k(()=>{});import{createConnection as Oc}from"node:net";async function qe(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Oc(e.socketPath),o=!1,a="",c=setTimeout(()=>{l(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function l(u){o||(o=!0,clearTimeout(c),u())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
8
8
  `)}),s.on("data",u=>{a+=u.toString("utf8");let d=a.indexOf(`
9
- `);if(d<0)return;let m=a.slice(0,d);l(()=>{try{r(JSON.parse(m))}catch(w){i(w)}}),s.end()}),s.on("error",u=>l(()=>i(u))),s.on("close",()=>{o||l(()=>i(new Error("resident rsp server closed without response")))})})}var $n=k(()=>{});import{createHash as Oc,randomUUID as Ti}from"node:crypto";import{spawn as xi}from"node:child_process";import{constants as An}from"node:fs";import{readFileSync as $c}from"node:fs";import{mkdir as In,open as Ac,rm as Pn}from"node:fs/promises";import{tmpdir as Dc}from"node:os";import{dirname as Se,join as J,resolve as It}from"node:path";import{fileURLToPath as Ic}from"node:url";function X(e){let t=Cc(e)??It(e),n=Lc(t);return{rootDir:t,socketPath:J(n,"rsp.sock"),lockPath:J(n,"rsp.lock"),wakeLockPath:J(t,".red","tmp","rsp.wake.lock"),summaryPath:J(t,".red","tmp","rsp-status-summary.json")}}async function Pt(e,t){if(await In(Se(e.socketPath),{recursive:!0,mode:448}),await Si(e.socketPath,t))return;let n=await Ai(e.lockPath);if(n)try{if(await Si(e.socketPath,t))return;await Bc(e.socketPath);let r=Nc(e,t);await ki(e.socketPath,r);return}finally{await n.close(),await Pn(e.lockPath,{force:!0})}await ki(e.socketPath)}async function ve(e,t=200){try{return await Oi(e,t)!=null}catch{return!1}}async function Oi(e,t=200){let n=await qe({socketPath:e,timeoutMs:t},{id:Ti(),op:"ping"});return n.ok?Fc(n.value)?{version:qc(n.value.version)}:{}:null}async function Bt(e,t){if(await In(Se(e.socketPath),{recursive:!0,mode:448}),await ve(e.socketPath,50))return!1;let n=await Ai(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=Di(t);return xi(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 $i(e,t){try{await Pt(e,t)}finally{await Pn(e.wakeLockPath,{force:!0})}}async function ki(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await ve(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function Bc(e){await Pn(e,{force:!0})}async function Ai(e){await In(Se(e),{recursive:!0,mode:448});try{return await Ac(e,An.O_CREAT|An.O_EXCL|An.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Nc(e,t){let[n,r]=Di(t),i=xi(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]?It(process.argv[1]):Ic(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Lc(e){let t=Oc("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=J(n,"red-skills",t);if(J(i,"rsp.sock").length<Pc)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return J(Dc(),`red-skills-${r}`,t)}function Cc(e){let t=It(e);for(let n=0;n<32;n++){try{let i=Dn(J(t,".git"));if(i!=null)return Mc(t,i)??t;if(Dn(J(t,".git","HEAD"))!=null||Dn(J(t,".red","config.yaml"))!=null)return t}catch{}let r=Se(t);if(r===t)return null;t=r}return null}function Mc(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=It(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Se(Se(Se(r))):null}function Dn(e){try{return $c(e,"utf8")}catch{return null}}async function Si(e,t){let n=await Oi(e).catch(()=>null);return n?Uc(t.clientVersion,n.version)?(await jc(e,t.clientVersion),await Jc(e),!1):!0:!1}async function jc(e,t){try{await qe({socketPath:e,timeoutMs:200},{id:Ti(),op:"handover",clientVersion:t})}catch{}}function Uc(e,t){return!e||!t?!1:Gc(e,t)>0}function Gc(e,t){let n=vi(e),r=vi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function vi(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Fc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qc(e){return typeof e=="string"&&e.length>0?e:void 0}async function Jc(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await ve(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Pc,Bn=k(()=>{$n();Pc=108});var Ci={};A(Ci,{DEFAULT_RSP_BYTE_BUDGET:()=>ne,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ee,DEFAULT_RSP_IDLE_MS:()=>jt,DEFAULT_RSP_STORE_PATH:()=>Lt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Mt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Bi,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Ni,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Ct,DEFAULT_RSP_TTL_DAYS:()=>te,MIN_RSP_IDLE_MS:()=>Li,resolveRspConfig:()=>ce});import{readFileSync as Vc}from"node:fs";import{join as Ii,resolve as Pi}from"node:path";function ce(e,t,n){let r=Ri(Pi(e),Ii(".red","config.yaml")),i=r?Vc(r,"utf8"):"",s=On(i,"rsp.enabled")==="true",o=ae(Z(i,"rsp.ttlDays"),te),a=ae(Z(i,"rsp.byteBudget"),ne),c=ae(Z(i,"rsp.telemetryTtlDays"),Ct),l=ae(Z(i,"rsp.telemetryByteBudget")??Z(i,"rsp.byteBudget"),Mt),u=ae(Nt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Z(i,"rsp.telemetryDrainIntervalMs"),Bi),d=ae(Nt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Z(i,"rsp.telemetryDrainTimeoutMs"),Ni),m=Hc(Nt(t.RSP_IDLE_MS)??Z(i,"rsp.idleMs"),jt,Li),w=ae(Nt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Z(i,"rsp.heavyGitByteThreshold"),ee),g=X(e).rootDir,S=n??t.RSP_STORE_URI??`file://${Ii(Pi(g),Lt)}`;return{enabled:s,storeUri:S,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:l,telemetryDrainIntervalMs:u,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:w}}function Z(e,t){let n=On(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Hc(e,t,n){let r=ae(e,t);return Math.max(r,n)}function Nt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ee,Lt,te,ne,Ct,Mt,Bi,Ni,jt,Li,V=k(()=>{"use strict";Ei();Bn();ee=8*1024,Lt=".red/tmp/red-skills.rdb",te=7,ne=64*1024*1024,Ct=90,Mt=4*1024*1024,Bi=3e4,Ni=2e3,jt=5*6e4,Li=5e3});var Mi=k(()=>{"use strict";$n()});var Ut={};A(Ut,{ResidentRspElisionStore:()=>at,ensureResidentServer:()=>Pt,kickResidentServer:()=>Bt,pingResident:()=>ve,resolveResidentPaths:()=>X,warmResidentServer:()=>$i});import{randomUUID as Wc}from"node:crypto";function ji(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var at,Je=k(()=>{"use strict";Mi();Bn();at=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?ji(n)&&n.status==="expired"?n:!ji(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 Pt(this.paths,this.config);let n=await qe(this.paths,{...t,id:Wc()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Ki={};A(Ki,{RSP_WRAPPER_CAPABILITIES:()=>lt,formatHookDecision:()=>Ji,hookDecisionFromClaudePreExecJson:()=>qi,rewriteCommand:()=>Fi,rewriteTableFromCapabilities:()=>Gi,runClaudePreExecHook:()=>Xc});import{readFileSync as Ui}from"node:fs";import{existsSync as Kc}from"node:fs";import{fileURLToPath as zc}from"node:url";function Gi(e){let t=new Map;for(let n of e)t.set(ct(n.command),["rsp",...n.wrapper]);return t}function Fi(e){let t=sl(e);if(!t||t.length>0&&Hi(t[0]))return Ln(e);let n=Qc(t);if(n)return n;let r=Yc.get(ct(t));if(!r)return Ln(e);let i=lt.find(s=>ct(s.command)===ct(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??ct(t)}}function Qc(e){let t=e[0];return t==="cat"&&e.length===2&&Nn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Nn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Nn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Nn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function qi(e,t){let n=pl(e),r=U(n,["cwd"])||U(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Zc)(r))return{kind:"passthrough",reason:"disabled"};let s=il(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Fi)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??el)(r)?o:(await(t.wakeResident??tl)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function Ji(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
- `,status:0}:{stdout:"",status:1}}async function Xc(e){let t=e?Ui(e,"utf8"):Ui(0,"utf8"),n=await qi(t,{cwd:process.cwd()}),r=Ji(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Zc(e){return ce(e,process.env).enabled}async function el(e){let t=X(e);return await ve(t.socketPath,50)}async function tl(e){let t=ce(e,process.env);if(!t.enabled||!rl(t))return;let n=X(e);await Bt(n,nl(t))}function nl(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 rl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Kc(zc(e.storeUri))}catch{return!1}}function il(e){return U(e,["tool_input","command"])||U(e,["tool_input","cmd"])||U(e,["tool_input","args","command"])||U(e,["input","command"])||U(e,["input","cmd"])||U(e,["arguments","command"])||U(e,["arguments","cmd"])||U(e,["command"])||U(e,["cmd"])}function sl(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("=")&&Hi(r))?null:n}function Ln(e){let t=e.trim();return ol(t)?{kind:"rewrite",command:`rsp exec -- ${ml(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function ol(e){return!(!e||!cl(e)||!ul(e)||ll(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||dl(e,"rsp")||Vi(e,al)||fl(e))}function cl(e){return/&&|[;|]/.test(e)}function ll(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function ul(e){return Cn(e).some(t=>{let n=Mn(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 Vi(e,t){return Cn(e).some(n=>{let r=Mn(n)[0];return r?t.has(r):!1})}function dl(e,t){return Vi(e,new Set([t]))}function fl(e){return Cn(e).some(t=>{let n=Mn(t);return n[0]==="grep"&&n.includes("-q")})}function Cn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Mn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ml(e){return`'${e.replace(/'/g,"'\\''")}'`}function Hi(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ct(e){return e.join("\0")}function pl(e){try{let t=JSON.parse(e);return Wi(t)?t:{}}catch{return{}}}function U(e,t){let n=e;for(let r of t){if(!Wi(n))return"";n=n[r]}return typeof n=="string"?n:""}function Wi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lt,Yc,al,jn=k(()=>{"use strict";V();Je();lt=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],Yc=Gi(lt);al=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var as={};A(as,{NORMALIZATION_ALLOWLIST:()=>is,NORMALIZE_ANSI:()=>Xi,NORMALIZE_BLANK_LINES:()=>ts,NORMALIZE_CR_PROGRESS:()=>Zi,NORMALIZE_JSON_TOON:()=>rs,NORMALIZE_TRAILING_WHITESPACE:()=>es,formatNormalizeDecision:()=>os,hookDecisionFromClaudePostExecJson:()=>ss,normalizeOutput:()=>Ve,renderGenericJsonLane:()=>ut,runClaudePostExecHook:()=>hl,transcodeJsonToToon:()=>ns});import{readFileSync as zi}from"node:fs";function ns(e,t){let n=t?.encode??$,r=t?.decode??Sn,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 Un(s,a)?o:e}async function ut(e,t={}){let n=Rl(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:$(r),detected:!0,lossy:!1};let i=r.length,s=Qi(t.minTokens,yl),o=Qi(t.maxItems,gl);if(!(i>o&&Tl(e)>=s))return{output:$(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=El(r,o),l={items:c},u=`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:[u,m,$(l)].filter(Boolean).join(`
11
- `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Ve(e){let t=e;for(let n of is)t=n.apply(t);return t}async function ss(e,t){let n=_l(e),r=xl(n,["cwd"])||t.cwd;if(!await(t.isEnabled??bl)(r))return{kind:"passthrough",reason:"disabled"};let s=Ol(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??Ve)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function os(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function hl(e){let t=e?zi(e,"utf8"):zi(0,"utf8"),n=await ss(t,{cwd:process.cwd()}),r=os(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function wl(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&&Yi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Yi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Yi(e){return e>=32&&e<=63}function bl(e){return ce(e,process.env).enabled}function _l(e){try{let t=JSON.parse(e);return le(t)?t:{}}catch{return{}}}function Rl(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return le(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 El(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++)kl(e[s])&&n.add(s);for(let s of Sl(e))n.add(s);for(let s of vl(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 kl(e){if(!le(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 Sl(e){let t=new Map;e.forEach((r,i)=>{if(le(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 vl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!le(r)||!le(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 Tl(e){return Math.ceil(e.length/4)}function Qi(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function xl(e,t){let n=e;for(let r of t){if(!le(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ol(e,t){let n=e[t];return le(n)?n:null}function le(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Un(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)=>Un(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)&&Un(n[o],r[o]))}var Xi,Zi,es,ts,rs,yl,gl,is,Gt=k(()=>{"use strict";ke();V();Xi={id:"ansi",apply:wl},Zi={id:"cr-progress",apply:e=>e.split(`
9
+ `);if(d<0)return;let m=a.slice(0,d);l(()=>{try{r(JSON.parse(m))}catch(w){i(w)}}),s.end()}),s.on("error",u=>l(()=>i(u))),s.on("close",()=>{o||l(()=>i(new Error("resident rsp server closed without response")))})})}var $n=k(()=>{});import{createHash as $c,randomUUID as Ti}from"node:crypto";import{spawn as xi}from"node:child_process";import{constants as An}from"node:fs";import{readFileSync as Ac}from"node:fs";import{mkdir as In,open as Dc,rm as Pn}from"node:fs/promises";import{tmpdir as Ic}from"node:os";import{dirname as Te,join as J,resolve as Pt}from"node:path";import{fileURLToPath as Pc}from"node:url";function Z(e){let t=Mc(e)??Pt(e),n=Cc(t);return{rootDir:t,socketPath:J(n,"rsp.sock"),lockPath:J(n,"rsp.lock"),wakeLockPath:J(t,".red","tmp","rsp.wake.lock"),summaryPath:J(t,".red","tmp","rsp-status-summary.json")}}async function Nt(e,t){if(await In(Te(e.socketPath),{recursive:!0,mode:448}),await Si(e.socketPath,t))return;let n=await Ai(e.lockPath);if(n)try{if(await Si(e.socketPath,t))return;await Bc(e.socketPath);let r=Lc(e,t);await ki(e.socketPath,r);return}finally{await n.close(),await Pn(e.lockPath,{force:!0})}await ki(e.socketPath)}async function xe(e,t=200){try{return await Oi(e,t)!=null}catch{return!1}}async function Oi(e,t=200){let n=await qe({socketPath:e,timeoutMs:t},{id:Ti(),op:"ping"});return n.ok?qc(n.value)?{version:Jc(n.value.version)}:{}:null}async function Bt(e,t){if(await In(Te(e.socketPath),{recursive:!0,mode:448}),await xe(e.socketPath,50))return!1;let n=await Ai(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=Di(t);return xi(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 $i(e,t){try{await Nt(e,t)}finally{await Pn(e.wakeLockPath,{force:!0})}}async function ki(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await xe(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function Bc(e){await Pn(e,{force:!0})}async function Ai(e){await In(Te(e),{recursive:!0,mode:448});try{return await Dc(e,An.O_CREAT|An.O_EXCL|An.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Lc(e,t){let[n,r]=Di(t),i=xi(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]?Pt(process.argv[1]):Pc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Cc(e){let t=$c("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=J(n,"red-skills",t);if(J(i,"rsp.sock").length<Nc)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return J(Ic(),`red-skills-${r}`,t)}function Mc(e){let t=Pt(e);for(let n=0;n<32;n++){try{let i=Dn(J(t,".git"));if(i!=null)return jc(t,i)??t;if(Dn(J(t,".git","HEAD"))!=null||Dn(J(t,".red","config.yaml"))!=null)return t}catch{}let r=Te(t);if(r===t)return null;t=r}return null}function jc(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Pt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Te(Te(Te(r))):null}function Dn(e){try{return Ac(e,"utf8")}catch{return null}}async function Si(e,t){let n=await Oi(e).catch(()=>null);return n?Gc(t.clientVersion,n.version)?(await Uc(e,t.clientVersion),await Vc(e),!1):!0:!1}async function Uc(e,t){try{await qe({socketPath:e,timeoutMs:200},{id:Ti(),op:"handover",clientVersion:t})}catch{}}function Gc(e,t){return!e||!t?!1:Fc(e,t)>0}function Fc(e,t){let n=vi(e),r=vi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function vi(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 qc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jc(e){return typeof e=="string"&&e.length>0?e:void 0}async function Vc(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await xe(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Nc,Nn=k(()=>{$n();Nc=108});var Ci={};A(Ci,{DEFAULT_RSP_BYTE_BUDGET:()=>ne,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ee,DEFAULT_RSP_IDLE_MS:()=>Ut,DEFAULT_RSP_STORE_PATH:()=>Ct,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>jt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Ni,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Bi,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Mt,DEFAULT_RSP_TTL_DAYS:()=>te,MIN_RSP_IDLE_MS:()=>Li,resolveRspConfig:()=>ce});import{readFileSync as Hc}from"node:fs";import{join as Ii,resolve as Pi}from"node:path";function ce(e,t,n){let r=Ri(Pi(e),Ii(".red","config.yaml")),i=r?Hc(r,"utf8"):"",s=On(i,"rsp.enabled")==="true",o=ae(X(i,"rsp.ttlDays"),te),a=ae(X(i,"rsp.byteBudget"),ne),c=ae(X(i,"rsp.telemetryTtlDays"),Mt),l=ae(X(i,"rsp.telemetryByteBudget")??X(i,"rsp.byteBudget"),jt),u=ae(Lt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??X(i,"rsp.telemetryDrainIntervalMs"),Ni),d=ae(Lt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??X(i,"rsp.telemetryDrainTimeoutMs"),Bi),m=Wc(Lt(t.RSP_IDLE_MS)??X(i,"rsp.idleMs"),Ut,Li),w=ae(Lt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??X(i,"rsp.heavyGitByteThreshold"),ee),g=Z(e).rootDir,S=n??t.RSP_STORE_URI??`file://${Ii(Pi(g),Ct)}`;return{enabled:s,storeUri:S,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:l,telemetryDrainIntervalMs:u,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:w}}function X(e,t){let n=On(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Wc(e,t,n){let r=ae(e,t);return Math.max(r,n)}function Lt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ee,Ct,te,ne,Mt,jt,Ni,Bi,Ut,Li,V=k(()=>{"use strict";Ei();Nn();ee=8*1024,Ct=".red/tmp/red-skills.rdb",te=7,ne=64*1024*1024,Mt=90,jt=4*1024*1024,Ni=3e4,Bi=2e3,Ut=5*6e4,Li=5e3});var Mi=k(()=>{"use strict";$n()});var Gt={};A(Gt,{ResidentRspElisionStore:()=>at,ensureResidentServer:()=>Nt,kickResidentServer:()=>Bt,pingResident:()=>xe,resolveResidentPaths:()=>Z,warmResidentServer:()=>$i});import{randomUUID as Kc}from"node:crypto";function ji(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var at,Je=k(()=>{"use strict";Mi();Nn();at=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?ji(n)&&n.status==="expired"?n:!ji(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 Nt(this.paths,this.config);let n=await qe(this.paths,{...t,id:Kc()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Ki={};A(Ki,{RSP_WRAPPER_CAPABILITIES:()=>lt,formatHookDecision:()=>Ji,hookDecisionFromClaudePreExecJson:()=>qi,rewriteCommand:()=>Fi,rewriteTableFromCapabilities:()=>Gi,runClaudePreExecHook:()=>Xc});import{readFileSync as Ui}from"node:fs";import{existsSync as zc}from"node:fs";import{fileURLToPath as Yc}from"node:url";function Gi(e){let t=new Map;for(let n of e)t.set(ct(n.command),["rsp",...n.wrapper]);return t}function Fi(e){let t=ol(e);if(!t||t.length>0&&Hi(t[0]))return Ln(e);let n=Zc(t);if(n)return n;let r=Qc.get(ct(t));if(!r)return Ln(e);let i=lt.find(s=>ct(s.command)===ct(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??ct(t)}}function Zc(e){let t=e[0];return t==="cat"&&e.length===2&&Bn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Bn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Bn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Bn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function qi(e,t){let n=yl(e),r=U(n,["cwd"])||U(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??el)(r))return{kind:"passthrough",reason:"disabled"};let s=sl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Fi)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??tl)(r)?o:(await(t.wakeResident??nl)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function Ji(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
+ `,status:0}:{stdout:"",status:1}}async function Xc(e){let t=e?Ui(e,"utf8"):Ui(0,"utf8"),n=await qi(t,{cwd:process.cwd()}),r=Ji(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function el(e){return ce(e,process.env).enabled}async function tl(e){let t=Z(e);return await xe(t.socketPath,50)}async function nl(e){let t=ce(e,process.env);if(!t.enabled||!il(t))return;let n=Z(e);await Bt(n,rl(t))}function rl(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 il(e){if(!e.storeUri.startsWith("file://"))return!0;try{return zc(Yc(e.storeUri))}catch{return!1}}function sl(e){return U(e,["tool_input","command"])||U(e,["tool_input","cmd"])||U(e,["tool_input","args","command"])||U(e,["input","command"])||U(e,["input","cmd"])||U(e,["arguments","command"])||U(e,["arguments","cmd"])||U(e,["command"])||U(e,["cmd"])}function ol(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("=")&&Hi(r))?null:n}function Ln(e){let t=e.trim();return al(t)?{kind:"rewrite",command:`rsp exec -- ${pl(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function al(e){return!(!e||!ll(e)||!dl(e)||ul(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||fl(e,"rsp")||Vi(e,cl)||ml(e))}function ll(e){return/&&|[;|]/.test(e)}function ul(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function dl(e){return Cn(e).some(t=>{let n=Mn(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 Vi(e,t){return Cn(e).some(n=>{let r=Mn(n)[0];return r?t.has(r):!1})}function fl(e,t){return Vi(e,new Set([t]))}function ml(e){return Cn(e).some(t=>{let n=Mn(t);return n[0]==="grep"&&n.includes("-q")})}function Cn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Mn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function pl(e){return`'${e.replace(/'/g,"'\\''")}'`}function Hi(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ct(e){return e.join("\0")}function yl(e){try{let t=JSON.parse(e);return Wi(t)?t:{}}catch{return{}}}function U(e,t){let n=e;for(let r of t){if(!Wi(n))return"";n=n[r]}return typeof n=="string"?n:""}function Wi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lt,Qc,cl,jn=k(()=>{"use strict";V();Je();lt=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],Qc=Gi(lt);cl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var as={};A(as,{NORMALIZATION_ALLOWLIST:()=>is,NORMALIZE_ANSI:()=>Zi,NORMALIZE_BLANK_LINES:()=>ts,NORMALIZE_CR_PROGRESS:()=>Xi,NORMALIZE_JSON_TOON:()=>rs,NORMALIZE_TRAILING_WHITESPACE:()=>es,formatNormalizeDecision:()=>os,hookDecisionFromClaudePostExecJson:()=>ss,normalizeOutput:()=>Ve,renderGenericJsonLane:()=>ut,runClaudePostExecHook:()=>wl,transcodeJsonToToon:()=>ns});import{readFileSync as zi}from"node:fs";function ns(e,t){let n=t?.encode??$,r=t?.decode??Sn,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 Un(s,a)?o:e}async function ut(e,t={}){let n=El(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:$(r),detected:!0,lossy:!1};let i=r.length,s=Qi(t.minTokens,gl),o=Qi(t.maxItems,hl);if(!(i>o&&xl(e)>=s))return{output:$(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=kl(r,o),l={items:c},u=`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:[u,m,$(l)].filter(Boolean).join(`
11
+ `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Ve(e){let t=e;for(let n of is)t=n.apply(t);return t}async function ss(e,t){let n=Rl(e),r=Ol(n,["cwd"])||t.cwd;if(!await(t.isEnabled??_l)(r))return{kind:"passthrough",reason:"disabled"};let s=$l(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??Ve)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function os(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function wl(e){let t=e?zi(e,"utf8"):zi(0,"utf8"),n=await ss(t,{cwd:process.cwd()}),r=os(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function bl(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&&Yi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Yi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Yi(e){return e>=32&&e<=63}function _l(e){return ce(e,process.env).enabled}function Rl(e){try{let t=JSON.parse(e);return le(t)?t:{}}catch{return{}}}function El(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return le(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 kl(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++)Sl(e[s])&&n.add(s);for(let s of vl(e))n.add(s);for(let s of Tl(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 Sl(e){if(!le(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 vl(e){let t=new Map;e.forEach((r,i)=>{if(le(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 Tl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!le(r)||!le(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 xl(e){return Math.ceil(e.length/4)}function Qi(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Ol(e,t){let n=e;for(let r of t){if(!le(n))return"";n=n[r]}return typeof n=="string"?n:""}function $l(e,t){let n=e[t];return le(n)?n:null}function le(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Un(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)=>Un(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)&&Un(n[o],r[o]))}var Zi,Xi,es,ts,rs,gl,hl,is,Ft=k(()=>{"use strict";ve();V();Zi={id:"ansi",apply:bl},Xi={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
13
  `)},es={id:"trailing-whitespace",apply:e=>e.split(`
14
14
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
15
15
  `)},ts={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
16
16
 
17
- `)};rs={id:"json-to-toon",apply:e=>ns(e)},yl=200,gl=15;is=[Xi,Zi,es,ts,rs]});async function cs(e,t){return $l?Il(e,t):Al?Bl(e,t):Dl(e,t)}async function Dl(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function Il(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:Pl(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Pl(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 Bl(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:Nl(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Nl(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var $l,Al,ls=k(()=>{$l=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Al=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Ll}from"node:fs";import{join as Cl}from"node:path";function us(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=Cl(n,"bin",t);if(Ll(s))return s;throw new Error(`reddb: binary "${t}" not found.
17
+ `)};rs={id:"json-to-toon",apply:e=>ns(e)},gl=200,hl=15;is=[Zi,Xi,es,ts,rs]});async function cs(e,t){return Al?Pl(e,t):Dl?Bl(e,t):Il(e,t)}async function Il(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 Pl(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:Nl(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Nl(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Bl(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:Ll(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Ll(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Al,Dl,ls=k(()=>{Al=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Dl=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Cl}from"node:fs";import{join as Ml}from"node:path";function us(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=Ml(n,"bin",t);if(Cl(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 ds=k(()=>{});import{fileURLToPath as Ml}from"node:url";import{dirname as jl,resolve as Ul,join as ty}from"node:path";function ql(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function fs(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:us({name:ql(),packageRoot:Fl,envVar:"REDDB_BIN"})}var Gl,Fl,ms=k(()=>{ds();Gl=jl(Ml(import.meta.url)),Fl=Ul(Gl,"..")});var Jl,Vl,b,Ft,ue=k(()=>{Jl=new TextEncoder,Vl=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Ft=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new b("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Jl.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(Vl.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new b(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function Fn(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:/"?Hl(e):Wl(e)}function Hl(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(u){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${u.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=Kl(i),a=n.port?Number(n.port):Gn(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Wl(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Gn(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Gn(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Kl(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Gn(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 qn=k(()=>{ue()});function Yl(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return ps(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return ps(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function ps(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 Ql(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 zl,dt,Jn=k(()=>{ue();zl=new Set(["embedded"]),dt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&zl.has(this._transport))throw new b("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:Ql(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Yl(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 Vn(e,t){return`${Hn(e)}.${Xl(t)}`}function Hn(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Xl(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Zl(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 ys(e){return`'${String(e).replace(/'/g,"''")}'`}var He,Wn=k(()=>{ue();He=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(ys).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Vn(i,t)} = ${Zl(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 ${Vn(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 ${Vn(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new b("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Hn(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(ys).join(", ")}] FROM ${Hn(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
21
+ or check the postinstall log for a download error.`)}var ds=k(()=>{});import{fileURLToPath as jl}from"node:url";import{dirname as Ul,resolve as Gl,join as ay}from"node:path";function Jl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function fs(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:us({name:Jl(),packageRoot:ql,envVar:"REDDB_BIN"})}var Fl,ql,ms=k(()=>{ds();Fl=Ul(jl(import.meta.url)),ql=Gl(Fl,"..")});var Vl,Hl,b,qt,ue=k(()=>{Vl=new TextEncoder,Hl=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},qt=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new b("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Vl.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(Hl.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new b(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function Fn(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:/"?Wl(e):Kl(e)}function Wl(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(u){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${u.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=zl(i),a=n.port?Number(n.port):Gn(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,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 Kl(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Gn(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Gn(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function zl(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Gn(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 qn=k(()=>{ue()});function Ql(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return ps(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return ps(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function ps(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function Zl(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var Yl,dt,Jn=k(()=>{ue();Yl=new Set(["embedded"]),dt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Yl.has(this._transport))throw new b("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:Zl(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Ql(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 Vn(e,t){return`${Hn(e)}.${Xl(t)}`}function Hn(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Xl(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function eu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function ys(e){return`'${String(e).replace(/'/g,"''")}'`}var He,Wn=k(()=>{ue();He=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(ys).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Vn(i,t)} = ${eu(n)}${o}${s}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${Vn(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 ${Vn(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new b("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Hn(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(ys).join(", ")}] FROM ${Hn(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
23
23
 
24
24
  `)){let u=l.split(`
25
- `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.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 b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=re(e),a=re(t),c=i!=null?` GROUP ${re(i)}`:"",l=s!=null?zn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function re(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function zn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function tu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function nu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${tu(e.priority)}`),e.key!=null&&(t+=` KEY ${Yn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Yn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function ru(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Yn(e):JSON.stringify(e)}function Yn(e){return`'${String(e).replace(/'/g,"''")}'`}function Kn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var ft,Qn=k(()=>{ue();ft=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${re(t)}`})}push(t,n,r={}){let i=nu(r);return this.client.call("query",{sql:`QUEUE PUSH ${re(t)} ${ru(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${re(t)}${zn(n)}`});return Kn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${re(t)}${zn(n)}`});return Kn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${re(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${re(t)}`})}async readWait(t,n,r={}){let i=eu(t,n,r),s=await this.client.call("query",{sql:i});return Kn(s)}}});function gs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function iu(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function qt(e){return String(e).split(".").map(hs).join(".")}function hs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function su(e){return ws(JSON.stringify(e))}function ou(e){return JSON.stringify(e)}function au(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?su(e):ws(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}var mt,Xn=k(()=>{ue();mt=class{constructor(t){this.db=t}async insert(t,n){gs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${qt(t)} DOCUMENT VALUES (${ou(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=iu(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${qt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){gs(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${hs(c)} = ${au(l)}`).join(", "),a=(await this.db.query(`UPDATE ${qt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${qt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function cu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${de(n)}.${de(r)})`}return uu(e)}function lu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function de(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function uu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):bs(e)}function bs(e){return`'${String(e).replace(/'/g,"''")}'`}var pt,Zn=k(()=>{pt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){lu(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(bs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${de(i)} ${de(t)} = ${cu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${de(r)} ${de(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${de(r)} ${de(t)}`})}}});function du(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function We(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function fu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):_s(e)}function _s(e){return`'${String(e).replace(/'/g,"''")}'`}var yt,er=k(()=>{yt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){du(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(_s).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${We(i)}.${We(t)} = ${fu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${We(r)}.${We(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${We(r)}.${We(t)}`})}}});async function Es(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(mu)}async function ks(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${yu(t)}`)).rows??[]).some(r=>r.name===String(t))}function mu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Rs(e){return String(e).split(".").map(pu).join(".")}function pu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function yu(e){return`'${String(e).replace(/'/g,"''")}'`}var gt,tr=k(()=>{ue();gt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new b("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Rs).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Rs(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 xs(e,t={}){let n=Fn(e);if(vu(n),n.kind==="embedded"){let r=Su(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=ku(n),s=t.binary??fs(),o=await cs(s,i),a=new Ft(o);return await a.call("version",{}),new rr(a,{transport:"embedded"})}}function vs(e){return wu(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:_u(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Eu(e)?{$uuid:e}:e}function wu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function bu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(vs):e.map(vs)}function _u(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 Ru(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 Eu(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Jt(e){if(Array.isArray(e))return e.map(Jt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Ru(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]=Jt(i);return n}return e}function ku(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Su(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 vu(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",gu)}function ir(){return new b(Ss,`${Ss}: nested transactions are not supported on one connection`)}function Os(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Tu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Ts} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function xu(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Ts} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var gu,hu,Ts,Ss,Vt,nr,rr,$s=k(()=>{ls();ms();ue();qn();Jn();Wn();Qn();Xn();Zn();er();tr();Jn();Wn();Qn();Xn();Zn();er();tr();qn();gu="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",hu="1.0",Ts="1.0.9",Ss="NESTED_TX_NOT_SUPPORTED";Vt=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 ir()}},nr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ir();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Vt(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Os(n,r)}throw n}}},rr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=hu,this.cache=new dt(t,this.transport),this.queue=new ft(t),this.queues=this.queue,this.documents=new mt(this);let r=new He(t);this.kv=Object.assign((i="kv_default")=>new He(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 pt(t,i),this.vault=(i="red.vault")=>new yt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=bu(n);return r==null?this.client.call("query",{sql:t}).then(Jt):this.client.call("query",{sql:t,params:r}).then(Jt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Tu(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 xu(r,n.length)}tx(){return new nr(this)}async transaction(t){if(this.inTransaction)throw ir();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 Vt(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Os(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ks(this,t)}list(){return Es(this)}from(t){return new gt(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 cr={};A(cr,{DEFAULT_RSP_BYTE_BUDGET:()=>ne,DEFAULT_RSP_TTL_DAYS:()=>te,RSP_ELISION_COLLECTION:()=>xe,RspElisionStore:()=>wt});import{createHash as Bs}from"node:crypto";import{existsSync as Ou}from"node:fs";import{mkdir as $u,readFile as or,readdir as Ns,rename as Au,writeFile as Du}from"node:fs/promises";import{homedir as Iu}from"node:os";import{basename as ar,dirname as Ls,join as ze}from"node:path";import{fileURLToPath as Pu}from"node:url";function As(e,t){return`el:${Bs("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 Te(e){return`record:${e.slice(3)}`}function Ke(e){return`expired:${e.slice(3)}`}function Ds(){return"index:v1"}function Wt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Bu(e){if(!ht(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:ht(e.scope)?e.scope:void 0,ranking:ht(e.ranking)?e.ranking:void 0}}}function Nu(e){if(!ht(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 ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Lu(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 Ns(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let l=ze(o,c.name);c.isDirectory()?await s(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await s(e),r}function Cu(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=ht(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(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function Is(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ht(e){return fe(e)?e.collection===xe&&typeof e.handle=="string"&&Wt(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"&&Mu(e.loss):!1}function Cs(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>fe(t)&&typeof t.handle=="string"&&Wt(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 sr(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Mu(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ju(e){try{let t=await or(e,"utf8");if(t.trim()==="")return Ps();let n=JSON.parse(t);if(Ju(n))return n}catch(t){if(t.code==="ENOENT"){let n=Ps();return await js(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Uu(e){try{let t=await or(e);return Ms(e)?e:Gu(t)?Fu(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Gu(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Fu(e){return ar(e)==="red.rdb"?ze(Ls(e),"tmp","rsp-elisions.json"):`${e}.json`}function Ms(e){return ar(e)==="red-skills.rdb"}async function qu(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):ze(Iu(),".cache","red-skills","bundles")),t=ze(e,"reddb"),n;try{n=await Ns(t)}catch{return}n.sort().reverse();for(let r of n){let i=ze(t,r,process.platform==="win32"?"red.exe":"red");if(Ou(i)){process.env.REDDB_BIN=i;return}}}async function js(e,t){await $u(Ls(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Du(n,`${JSON.stringify(t)}
26
- `,"utf8"),await Au(n,e)}function Ps(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Ju(e){return fe(e)&&e.version===1&&fe(e.records)&&Object.values(e.records).every(Ht)&&fe(e.tombstones)&&Object.values(e.tombstones).every(sr)&&Cs(e.index)}function Vu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Pu(e)}var xe,wt,Kt=k(()=>{"use strict";$s();V();xe="rsp_elisions_v1",wt=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=Vu(t.uri),r=await Uu(n),i=new e(r,{uri:t.uri,ttlDays:Is(t.ttlDays,te),byteBudget:Is(t.byteBudget,ne),now:t.now??(()=>new Date)});return Ms(r)?(await qu(),i.db=await xs(`file://${r}`),await i.ensureRedDbStore()):i.document=await ju(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=As(r,n),c=Te(a),l={collection:xe,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[Ke(a)],this.document.records[c]=l,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(!Wt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[Te(t)];if(!Ht(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:Te(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:xe,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[Ke(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ke(t)];return sr(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await js(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(xe)}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=As(r,n),c=Te(a),l={collection:xe,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(Ke(a)),await this.kv().put(c,l);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(!Wt(t))return null;let n=await this.kvGet(Ke(t));if(sr(n))return n;let r=await this.kvGet(Te(t));if(!Ht(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:Te(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:xe,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=Bu(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Nu(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 Lu(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await or(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=ar(i),c=Bs("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 l=Date.now(),u={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:l,updated_at:l,accessed_at:l,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:l,updated_at:l}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,u),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=>Cu(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 Cs(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(Ke(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(Te(t));if(!Ht(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 Ws={};A(Ws,{REPO_STORE_PATH:()=>ur,mergeRspBlock:()=>Js,provisionRspRepoStore:()=>Zu});import{constants as Hu}from"node:fs";import{access as Wu,copyFile as Ku,mkdir as Us,readFile as zu,writeFile as Gs}from"node:fs/promises";import{dirname as Yu,join as zt,resolve as Qu}from"node:path";async function Zu(e,t={}){let n=Qu(e),r=zt(n,".red"),i=zt(r,"config.yaml"),s=zt(n,ur);await Us(r,{recursive:!0}),await Us(Yu(s),{recursive:!0});let o="";try{o=await zu(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Js(o,{enabled:!0,ttlDays:t.ttlDays??te,byteBudget:t.byteBudget??ne,heavyGitByteThreshold:t.heavyGitByteThreshold??ee}),c=a!==o;c&&await Gs(i,a,"utf8");let l=!await qs(s),u=!1;if(l){let m=zt(n,Xu);if(await qs(m))await Ku(m,s),u=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(Kt(),cr)),g=process.env.REDDB_BIN;try{await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??te,byteBudget:t.byteBudget??ne,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=ed(a,ur);return d!==a&&await Gs(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:l,memoryStoreMigrated:u}}function Js(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${lr(t.ttlDays,te)}`,` byteBudget: ${lr(t.byteBudget,ne)}`,` heavyGitByteThreshold: ${lr(t.heavyGitByteThreshold,ee)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
25
+ `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function tu(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=re(e),a=re(t),c=i!=null?` GROUP ${re(i)}`:"",l=s!=null?zn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function re(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function zn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function nu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ru(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${nu(e.priority)}`),e.key!=null&&(t+=` KEY ${Yn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Yn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function iu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Yn(e):JSON.stringify(e)}function Yn(e){return`'${String(e).replace(/'/g,"''")}'`}function Kn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var ft,Qn=k(()=>{ue();ft=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${re(t)}`})}push(t,n,r={}){let i=ru(r);return this.client.call("query",{sql:`QUEUE PUSH ${re(t)} ${iu(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${re(t)}${zn(n)}`});return Kn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${re(t)}${zn(n)}`});return Kn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${re(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${re(t)}`})}async readWait(t,n,r={}){let i=tu(t,n,r),s=await this.client.call("query",{sql:i});return Kn(s)}}});function gs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function su(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function Jt(e){return String(e).split(".").map(hs).join(".")}function hs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function ou(e){return ws(JSON.stringify(e))}function au(e){return JSON.stringify(e)}function cu(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ou(e):ws(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}var mt,Zn=k(()=>{ue();mt=class{constructor(t){this.db=t}async insert(t,n){gs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Jt(t)} DOCUMENT VALUES (${au(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=su(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 ${Jt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){gs(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${hs(c)} = ${cu(l)}`).join(", "),a=(await this.db.query(`UPDATE ${Jt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Jt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function lu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${de(n)}.${de(r)})`}return du(e)}function uu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function de(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function du(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):bs(e)}function bs(e){return`'${String(e).replace(/'/g,"''")}'`}var pt,Xn=k(()=>{pt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){uu(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(bs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${de(i)} ${de(t)} = ${lu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${de(r)} ${de(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${de(r)} ${de(t)}`})}}});function fu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function We(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function mu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):_s(e)}function _s(e){return`'${String(e).replace(/'/g,"''")}'`}var yt,er=k(()=>{yt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){fu(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(_s).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${We(i)}.${We(t)} = ${mu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${We(r)}.${We(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${We(r)}.${We(t)}`})}}});async function Es(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(pu)}async function ks(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gu(t)}`)).rows??[]).some(r=>r.name===String(t))}function pu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Rs(e){return String(e).split(".").map(yu).join(".")}function yu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function gu(e){return`'${String(e).replace(/'/g,"''")}'`}var gt,tr=k(()=>{ue();gt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new b("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Rs).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Rs(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 xs(e,t={}){let n=Fn(e);if(Tu(n),n.kind==="embedded"){let r=vu(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Su(n),s=t.binary??fs(),o=await cs(s,i),a=new qt(o);return await a.call("version",{}),new rr(a,{transport:"embedded"})}}function vs(e){return bu(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:Ru(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ku(e)?{$uuid:e}:e}function bu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function _u(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(vs):e.map(vs)}function Ru(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 Eu(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 ku(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Vt(e){if(Array.isArray(e))return e.map(Vt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Eu(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]=Vt(i);return n}return e}function Su(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function vu(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 Tu(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",hu)}function ir(){return new b(Ss,`${Ss}: nested transactions are not supported on one connection`)}function Os(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function xu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Ts} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Ou(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Ts} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var hu,wu,Ts,Ss,Ht,nr,rr,$s=k(()=>{ls();ms();ue();qn();Jn();Wn();Qn();Zn();Xn();er();tr();Jn();Wn();Qn();Zn();Xn();er();tr();qn();hu="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",wu="1.0",Ts="1.0.9",Ss="NESTED_TX_NOT_SUPPORTED";Ht=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 ir()}},nr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ir();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Ht(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Os(n,r)}throw n}}},rr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=wu,this.cache=new dt(t,this.transport),this.queue=new ft(t),this.queues=this.queue,this.documents=new mt(this);let r=new He(t);this.kv=Object.assign((i="kv_default")=>new He(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 pt(t,i),this.vault=(i="red.vault")=>new yt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=_u(n);return r==null?this.client.call("query",{sql:t}).then(Vt):this.client.call("query",{sql:t,params:r}).then(Vt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return xu(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 Ou(r,n.length)}tx(){return new nr(this)}async transaction(t){if(this.inTransaction)throw ir();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 Ht(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Os(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ks(this,t)}list(){return Es(this)}from(t){return new gt(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 cr={};A(cr,{DEFAULT_RSP_BYTE_BUDGET:()=>ne,DEFAULT_RSP_TTL_DAYS:()=>te,RSP_ELISION_COLLECTION:()=>$e,RspElisionStore:()=>wt});import{createHash as Ns}from"node:crypto";import{existsSync as $u}from"node:fs";import{mkdir as Au,readFile as or,readdir as Bs,rename as Du,writeFile as Iu}from"node:fs/promises";import{homedir as Pu}from"node:os";import{basename as ar,dirname as Ls,join as ze}from"node:path";import{fileURLToPath as Nu}from"node:url";function As(e,t){return`el:${Ns("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 Oe(e){return`record:${e.slice(3)}`}function Ke(e){return`expired:${e.slice(3)}`}function Ds(){return"index:v1"}function Kt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Bu(e){if(!ht(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:ht(e.scope)?e.scope:void 0,ranking:ht(e.ranking)?e.ranking:void 0}}}function Lu(e){if(!ht(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 ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Cu(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 l=ze(o,c.name);c.isDirectory()?await s(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await s(e),r}function Mu(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=ht(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(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function Is(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Wt(e){return fe(e)?e.collection===$e&&typeof e.handle=="string"&&Kt(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"&&ju(e.loss):!1}function Cs(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>fe(t)&&typeof t.handle=="string"&&Kt(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 sr(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function ju(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Uu(e){try{let t=await or(e,"utf8");if(t.trim()==="")return Ps();let n=JSON.parse(t);if(Vu(n))return n}catch(t){if(t.code==="ENOENT"){let n=Ps();return await js(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Gu(e){try{let t=await or(e);return Ms(e)?e:Fu(t)?qu(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Fu(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function qu(e){return ar(e)==="red.rdb"?ze(Ls(e),"tmp","rsp-elisions.json"):`${e}.json`}function Ms(e){return ar(e)==="red-skills.rdb"}async function Ju(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):ze(Pu(),".cache","red-skills","bundles")),t=ze(e,"reddb"),n;try{n=await Bs(t)}catch{return}n.sort().reverse();for(let r of n){let i=ze(t,r,process.platform==="win32"?"red.exe":"red");if($u(i)){process.env.REDDB_BIN=i;return}}}async function js(e,t){await Au(Ls(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Iu(n,`${JSON.stringify(t)}
26
+ `,"utf8"),await Du(n,e)}function Ps(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Vu(e){return fe(e)&&e.version===1&&fe(e.records)&&Object.values(e.records).every(Wt)&&fe(e.tombstones)&&Object.values(e.tombstones).every(sr)&&Cs(e.index)}function Hu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Nu(e)}var $e,wt,zt=k(()=>{"use strict";$s();V();$e="rsp_elisions_v1",wt=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=Hu(t.uri),r=await Gu(n),i=new e(r,{uri:t.uri,ttlDays:Is(t.ttlDays,te),byteBudget:Is(t.byteBudget,ne),now:t.now??(()=>new Date)});return Ms(r)?(await Ju(),i.db=await xs(`file://${r}`),await i.ensureRedDbStore()):i.document=await Uu(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=As(r,n),c=Oe(a),l={collection:$e,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[Ke(a)],this.document.records[c]=l,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(!Kt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[Oe(t)];if(!Wt(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:Oe(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:$e,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[Ke(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ke(t)];return sr(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await js(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv($e)}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=As(r,n),c=Oe(a),l={collection:$e,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(Ke(a)),await this.kv().put(c,l);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(!Kt(t))return null;let n=await this.kvGet(Ke(t));if(sr(n))return n;let r=await this.kvGet(Oe(t));if(!Wt(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:Oe(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:$e,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=Bu(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Lu(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 Cu(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await or(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=ar(i),c=Ns("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 l=Date.now(),u={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:l,updated_at:l,accessed_at:l,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:l,updated_at:l}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,u),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=>Mu(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 Cs(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(Ke(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(Oe(t));if(!Wt(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 Ws={};A(Ws,{REPO_STORE_PATH:()=>ur,mergeRspBlock:()=>Js,provisionRspRepoStore:()=>ed});import{constants as Wu}from"node:fs";import{access as Ku,copyFile as zu,mkdir as Us,readFile as Yu,writeFile as Gs}from"node:fs/promises";import{dirname as Qu,join as Yt,resolve as Zu}from"node:path";async function ed(e,t={}){let n=Zu(e),r=Yt(n,".red"),i=Yt(r,"config.yaml"),s=Yt(n,ur);await Us(r,{recursive:!0}),await Us(Qu(s),{recursive:!0});let o="";try{o=await Yu(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Js(o,{enabled:!0,ttlDays:t.ttlDays??te,byteBudget:t.byteBudget??ne,heavyGitByteThreshold:t.heavyGitByteThreshold??ee}),c=a!==o;c&&await Gs(i,a,"utf8");let l=!await qs(s),u=!1;if(l){let m=Yt(n,Xu);if(await qs(m))await zu(m,s),u=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(zt(),cr)),g=process.env.REDDB_BIN;try{await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??te,byteBudget:t.byteBudget??ne,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=td(a,ur);return d!==a&&await Gs(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:l,memoryStoreMigrated:u}}function Js(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${lr(t.ttlDays,te)}`,` byteBudget: ${lr(t.byteBudget,ne)}`,` heavyGitByteThreshold: ${lr(t.heavyGitByteThreshold,ee)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
28
28
  `),i=Vs(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
30
  `}let s=dr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
31
31
  `)}
32
- `}function Vs(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(mr(r)&&fr(r)===0&&Hs(r)===t)return n}return-1}function dr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(mr(e[i])&&fr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function fr(e){return(e.match(/^ */)?.[0]??"").length}function mr(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Hs(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function lr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ed(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
32
+ `}function Vs(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(mr(r)&&fr(r)===0&&Hs(r)===t)return n}return-1}function dr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(mr(e[i])&&fr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function fr(e){return(e.match(/^ */)?.[0]??"").length}function mr(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Hs(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function lr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function td(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
33
33
  `),r=Vs(n,"plugins");if(r===-1)return e;let i=dr(n,r,0),s=Fs(n,"memory",r+1,i,2);if(s===-1)return e;let o=dr(n,s,2),a=[...n],c=Fs(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 Fs(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(mr(o)&&fr(o)===i&&Hs(o)===t)return s}return-1}async function qs(e){try{return await Wu(e,Hu.F_OK),!0}catch{return!1}}var ur,Xu,Ks=k(()=>{"use strict";V();ur=Lt,Xu=".red/memory/graph.rdb"});var eo={};A(eo,{runRspMcpServer:()=>nd});import{createInterface as td}from"node:readline";async function nd(){let e=ce(process.cwd(),process.env),t=td({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 rd(r,e);Xs({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Xs({jsonrpc:"2.0",id:typeof Zs(n)?.id>"u"?null:Zs(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function rd(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Qs(t)}]};if(!t.enabled)return{content:[{type:"text",text:Qs(t)}],isError:!0};let r=ld(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await id(n.arguments,r)}]}}return{}}async function id(e,t){let n=sd(e?.payload),r=od(e?.level),i=await ut(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return zs(i.output);let s=Ve(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return zs(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return ad(s,o.length,a,r)}function sd(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function od(e){return e==="terse"?"terse":"brief"}function ad(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=Ys(s.subarray(0,o)),c=Ys(s.subarray(Math.max(0,s.length-o))),l=["payload summary",`bytes: ${t}`,`lines: ${cd(s)}`,"head:",a];return c&&c!==a&&l.push("tail:",c),l.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${l.join(`
35
+ `}function Fs(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(mr(o)&&fr(o)===i&&Hs(o)===t)return s}return-1}async function qs(e){try{return await Ku(e,Wu.F_OK),!0}catch{return!1}}var ur,Xu,Ks=k(()=>{"use strict";V();ur=Ct,Xu=".red/memory/graph.rdb"});var eo={};A(eo,{runRspMcpServer:()=>rd});import{createInterface as nd}from"node:readline";async function rd(){let e=ce(process.cwd(),process.env),t=nd({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 id(r,e);Zs({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Zs({jsonrpc:"2.0",id:typeof Xs(n)?.id>"u"?null:Xs(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function id(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Qs(t)}]};if(!t.enabled)return{content:[{type:"text",text:Qs(t)}],isError:!0};let r=ud(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await sd(n.arguments,r)}]}}return{}}async function sd(e,t){let n=od(e?.payload),r=ad(e?.level),i=await ut(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return zs(i.output);let s=Ve(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return zs(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return cd(s,o.length,a,r)}function od(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function ad(e){return e==="terse"?"terse":"brief"}function cd(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=Ys(s.subarray(0,o)),c=Ys(s.subarray(Math.max(0,s.length-o))),l=["payload summary",`bytes: ${t}`,`lines: ${ld(s)}`,"head:",a];return c&&c!==a&&l.push("tail:",c),l.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${l.join(`
36
36
  `)}
37
37
  `}function zs(e){return e.endsWith(`
38
38
  `)?e:`${e}
39
- `}function Ys(e){return e.toString("utf8").replace(/�$/g,"")}function cd(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 ld(e){return new at(X(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 Qs(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Xs(e){process.stdout.write(`${JSON.stringify(e)}
40
- `)}function Zs(e){try{return JSON.parse(e)}catch{return null}}var to=k(()=>{"use strict";V();Gt();Je()});var ro={};A(ro,{renderShellInit:()=>ud});function ud(e,t=lt){if(e==="fish")return dd(t);if(e==="bash"||e==="zsh")return fd(e,t);throw new Error(`unsupported shell: ${e}`)}function dd(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(Qt))].map(n=>` abbr --add --position command -- ${n} '${gd(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
41
- `)}function fd(e,t){let n=pd(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Yt("git",n.get("git")??[]),...Yt("gh",n.get("gh")??[]),...Yt("vitest",n.get("vitest")??[]),...Yt("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
42
- `)}function Yt(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(Qt),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(Qt)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>no(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of md(r)){let a=o.map(c=>c.map((l,u)=>`[ "$${u+2}" = '${yd(l)}' ]`).join(" && ")).join(" || ");i.push(` ${no(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function md(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function pd(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Qt(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function Qt(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function no(e){return e.replace(/[\\|)&;]/g,"\\$&")}function yd(e){return e.replace(/'/g,"'\\''")}function gd(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var io=k(()=>{"use strict";jn()});function pr(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"&&hd(t.chosenOption)&&wd(t.outcome)&&bd(t.cost)}function hd(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function wd(e){return e==="success"||e==="failure"||e==="escalated"}function bd(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 so=k(()=>{});import{createHash as _d}from"node:crypto";function wo(e,t){return new gr(e,t)}function oo(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES),r=bo(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 ao(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=_o(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:hr(e.properties??e.PROPERTIES)}}function kd(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!pr(n)?null:{rid:t,event:n}}function hr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Xt(e)?e:{}}function bo(e){let t=e==="contact"?"person":e;if(Rd.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function _o(e){if(Ed.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Sd(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function co(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function $e(e){return Xt(e)?e:{}}function lo(e,t){return $e(e)[t]}function uo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function fo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function mo(e){let t=$e(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function B(e){return typeof e=="string"&&e.length>0?e:void 0}function Xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yr(e){return e!=null}function vd(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Td(e){return _d("sha256").update(JSON.stringify(e)).digest("hex")}function xd(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function po(e){return`artifact-hash:${e}`}function yo(e,t,n){return`connection:${e}:${t}:${n}`}function go(){return"model-tier-bandit:v1"}function Od(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ho(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Ro(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+ho(n,a)*3+ho(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,l)=>c+(l===a?4:l.includes(a)||a.includes(l)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function $d(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({...Ro(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Oe(i)}function Eo(e){return{...e,lexical:Oe(e.lexical),tags:Oe(e.tags),kind:Oe(e.kind),connections:Oe(e.connections),vector:Oe(e.vector),total:Oe(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Oe(e){return Math.round(e*1e3)/1e3}function Ad(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 Dd(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 Id(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var H,Rd,Ed,gr,ko=k(()=>{"use strict";so();H={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Rd=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ed=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture($e(n));if(t==="getArtifact")return await this.getArtifact(lo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=$e(n);return await this.search(uo(r,"query"),fo(r,"limit")??10,mo(r.options))}if(t==="think"){let r=$e(n);return await this.think(uo(r,"query"),fo(r,"limit")??8,mo(r.options))}if(t==="link")return await this.link($e(n));if(t==="backlinks")return await this.backlinks(lo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis($e(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 ${H.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Id(t.map(r=>r.kind))}}async capture(t){let n=B(t.title)||"Untitled artifact",r=B(t.content);if(!r)throw new Error("brain capture requires content");let i=bo(B(t.kind)||"note"),s=vd(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Td([i,n,r,s,B(t.sourcePath),B(t.sourceSession)]),c=await this.kv().get(po(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let l=`${xd(n)}-${a.slice(0,8)}`,u={id:l,title:n,content:r,tags:s,source_agent:B(t.sourceAgent),source_runner:B(t.sourceRunner),source_session:B(t.sourceSession),source_path:B(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Xt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${H.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,l,i,a,u)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let w=oo(m);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(po(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 ${H.artifacts}`)).rows.map(oo).filter(yr)}async search(t,n,r={}){let i=Od(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(l=>[l.rid,l]));return o.filter(l=>!s.has(l.rid)).map(l=>{let u=Ro(l,i),d=Eo({...u,connections:$d(l,i,a,c),vector:0});return{artifact:l,score:d.total,score_breakdown:d,excerpt:Ad(l.properties.content,i)}}).filter(l=>l.score>0).sort((l,u)=>u.score-l.score||u.artifact.properties.updated_at-l.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 Dd(t,i)}async link(t){let n=await this.getArtifact(co(t.from)),r=await this.getArtifact(co(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=_o(B(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let u=(await this.listConnections()).find(d=>d.rid===s);if(u)return u}let o={reason:B(t.reason),confidence:B(t.confidence)||"explicit",created_at:Date.now(),metadata:Xt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${H.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 l=ao(c);if(!l)throw new Error("INSERT connection returned invalid row");return await this.kv().put(yo(n.rid,r.rid,i),l.rid),l}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 ${H.connections}`)).rows.map(ao).filter(yr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Sd(B(t.interval)||"day"),i=B(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!pr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${H.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 ${H.outcomeEvents}`)).rows.map(kd).filter(yr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(go());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(go(),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(yo(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(H.kv)}}});var kr={};A(kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>De,RSP_TELEMETRY_INDEX_COLLECTION:()=>tn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Ae,RSP_TELEMETRY_SPOOL:()=>Ao,appendTelemetryEvent:()=>Cd,drainTelemetrySpool:()=>_r,parseTelemetryEvent:()=>Rr,readTelemetryGainsReport:()=>Er,readTelemetryStats:()=>rn,takeTelemetrySpool:()=>Md,telemetrySpoolPath:()=>nn});import{appendFileSync as Pd,mkdirSync as Bd,readFileSync as Nd}from"node:fs";import{mkdir as To,readFile as Ld,rename as xo,rm as Oo,writeFile as wr}from"node:fs/promises";import{dirname as br,join as $o}from"node:path";function nn(e){return $o(e,Ao)}async function Cd(e,t){try{let n=nn(e);Bd(br(n),{recursive:!0}),Pd(n,`${JSON.stringify(t)}
43
- `,{encoding:"utf8",mode:384})}catch{}}async function Md(e){let t=nn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await To(br(t),{recursive:!0}),await xo(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await wr(t,"",{flag:"wx"}).catch(()=>{}),(await Do(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await Oo(n,{force:!0})}}async function _r(e,t){let n=nn(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await To(br(n),{recursive:!0}),await xo(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await wr(n,"",{flag:"wx"}).catch(()=>{});let o=(await Do(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=jd(n);await wr(n,`${i.join(`
39
+ `}function Ys(e){return e.toString("utf8").replace(/�$/g,"")}function ld(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 ud(e){return new at(Z(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 Qs(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Zs(e){process.stdout.write(`${JSON.stringify(e)}
40
+ `)}function Xs(e){try{return JSON.parse(e)}catch{return null}}var to=k(()=>{"use strict";V();Ft();Je()});var ro={};A(ro,{renderShellInit:()=>dd});function dd(e,t=lt){if(e==="fish")return fd(t);if(e==="bash"||e==="zsh")return md(e,t);throw new Error(`unsupported shell: ${e}`)}function fd(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(Zt))].map(n=>` abbr --add --position command -- ${n} '${hd(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
41
+ `)}function md(e,t){let n=yd(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Qt("git",n.get("git")??[]),...Qt("gh",n.get("gh")??[]),...Qt("vitest",n.get("vitest")??[]),...Qt("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
42
+ `)}function Qt(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(Zt),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(Zt)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>no(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of pd(r)){let a=o.map(c=>c.map((l,u)=>`[ "$${u+2}" = '${gd(l)}' ]`).join(" && ")).join(" || ");i.push(` ${no(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function pd(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function yd(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Zt(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function Zt(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function no(e){return e.replace(/[\\|)&;]/g,"\\$&")}function gd(e){return e.replace(/'/g,"'\\''")}function hd(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var io=k(()=>{"use strict";jn()});function pr(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"&&wd(t.chosenOption)&&bd(t.outcome)&&_d(t.cost)}function wd(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function bd(e){return e==="success"||e==="failure"||e==="escalated"}function _d(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 so=k(()=>{});import{createHash as Rd}from"node:crypto";function wo(e,t){return new gr(e,t)}function oo(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES),r=bo(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 ao(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=_o(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:hr(e.properties??e.PROPERTIES)}}function Sd(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!pr(n)?null:{rid:t,event:n}}function hr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Xt(e)?e:{}}function bo(e){let t=e==="contact"?"person":e;if(Ed.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function _o(e){if(kd.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function vd(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function co(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function De(e){return Xt(e)?e:{}}function lo(e,t){return De(e)[t]}function uo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function fo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function mo(e){let t=De(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function N(e){return typeof e=="string"&&e.length>0?e:void 0}function Xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yr(e){return e!=null}function Td(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function xd(e){return Rd("sha256").update(JSON.stringify(e)).digest("hex")}function Od(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function po(e){return`artifact-hash:${e}`}function yo(e,t,n){return`connection:${e}:${t}:${n}`}function go(){return"model-tier-bandit:v1"}function $d(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ho(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Ro(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+ho(n,a)*3+ho(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,l)=>c+(l===a?4:l.includes(a)||a.includes(l)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function Ad(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({...Ro(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ae(i)}function Eo(e){return{...e,lexical:Ae(e.lexical),tags:Ae(e.tags),kind:Ae(e.kind),connections:Ae(e.connections),vector:Ae(e.vector),total:Ae(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ae(e){return Math.round(e*1e3)/1e3}function Dd(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 Id(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 Pd(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var H,Ed,kd,gr,ko=k(()=>{"use strict";so();H={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Ed=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),kd=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(De(n));if(t==="getArtifact")return await this.getArtifact(lo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=De(n);return await this.search(uo(r,"query"),fo(r,"limit")??10,mo(r.options))}if(t==="think"){let r=De(n);return await this.think(uo(r,"query"),fo(r,"limit")??8,mo(r.options))}if(t==="link")return await this.link(De(n));if(t==="backlinks")return await this.backlinks(lo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(De(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 ${H.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Pd(t.map(r=>r.kind))}}async capture(t){let n=N(t.title)||"Untitled artifact",r=N(t.content);if(!r)throw new Error("brain capture requires content");let i=bo(N(t.kind)||"note"),s=Td(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=xd([i,n,r,s,N(t.sourcePath),N(t.sourceSession)]),c=await this.kv().get(po(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let l=`${Od(n)}-${a.slice(0,8)}`,u={id:l,title:n,content:r,tags:s,source_agent:N(t.sourceAgent),source_runner:N(t.sourceRunner),source_session:N(t.sourceSession),source_path:N(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Xt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${H.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,l,i,a,u)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let w=oo(m);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(po(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 ${H.artifacts}`)).rows.map(oo).filter(yr)}async search(t,n,r={}){let i=$d(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(l=>[l.rid,l]));return o.filter(l=>!s.has(l.rid)).map(l=>{let u=Ro(l,i),d=Eo({...u,connections:Ad(l,i,a,c),vector:0});return{artifact:l,score:d.total,score_breakdown:d,excerpt:Dd(l.properties.content,i)}}).filter(l=>l.score>0).sort((l,u)=>u.score-l.score||u.artifact.properties.updated_at-l.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 Id(t,i)}async link(t){let n=await this.getArtifact(co(t.from)),r=await this.getArtifact(co(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=_o(N(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let u=(await this.listConnections()).find(d=>d.rid===s);if(u)return u}let o={reason:N(t.reason),confidence:N(t.confidence)||"explicit",created_at:Date.now(),metadata:Xt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${H.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 l=ao(c);if(!l)throw new Error("INSERT connection returned invalid row");return await this.kv().put(yo(n.rid,r.rid,i),l.rid),l}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 ${H.connections}`)).rows.map(ao).filter(yr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=vd(N(t.interval)||"day"),i=N(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(!pr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${H.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 ${H.outcomeEvents}`)).rows.map(Sd).filter(yr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(go());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(go(),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(yo(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(H.kv)}}});var kr={};A(kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>ye,RSP_TELEMETRY_INDEX_COLLECTION:()=>Rt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>pe,RSP_TELEMETRY_SPOOL:()=>Ao,appendTelemetryEvent:()=>Md,drainTelemetrySpool:()=>_r,parseTelemetryEvent:()=>Rr,readTelemetryGainsReport:()=>Er,readTelemetryStats:()=>rn,takeTelemetrySpool:()=>jd,telemetrySpoolPath:()=>nn});import{appendFileSync as Nd,mkdirSync as Bd,readFileSync as Ld}from"node:fs";import{mkdir as To,readFile as Cd,rename as xo,rm as Oo,writeFile as wr}from"node:fs/promises";import{dirname as br,join as $o}from"node:path";function nn(e){return $o(e,Ao)}async function Md(e,t){try{let n=nn(e);Bd(br(n),{recursive:!0}),Nd(n,`${JSON.stringify(t)}
43
+ `,{encoding:"utf8",mode:384})}catch{}}async function jd(e){let t=nn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await To(br(t),{recursive:!0}),await xo(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await wr(t,"",{flag:"wx"}).catch(()=>{}),(await Do(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await Oo(n,{force:!0})}}async function _r(e,t){let n=nn(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await To(br(n),{recursive:!0}),await xo(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await wr(n,"",{flag:"wx"}).catch(()=>{});let o=(await Do(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=Ud(n);await wr(n,`${i.join(`
44
44
  `)}
45
- ${s}`,"utf8")}await Oo(r,{force:!0})}}function jd(e){try{return Nd(e,"utf8")}catch{return""}}async function Do(e){let t="";for(let n=0;n<5;n++){let r=await Ld(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Rr(e){try{let t=JSON.parse(e);return!Io(t)||t.collection!==Ae&&t.collection!==De?null:t}catch{return null}}async function rn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await Zt(e,Ae)).filter(h=>bt(h)>=i),o=(await Zt(e,De)).filter(h=>bt(h)>=i),a=0,c=0,l=0,u=0,d=!1,m=new Map,w=new Map,g=[],S=0,v=0,T=0;for(let h of s){h.elided===!0&&a++;let O=W(h.raw_bytes),Y=W(h.emitted_bytes),Et=Math.max(0,O-Y),ie=Math.max(0,W(h.tokens_raw)-W(h.tokens_emitted));d||=h.estimated===!0&&ie>0,c+=O,l+=Y,u+=ie;let _e=_t(h).slice(0,10);_e&&m.set(_e,(m.get(_e)??0)+ie);let y=me(h.command)||"unknown",R=w.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};R.invocations++,R.bytes_saved+=Et,R.tokens_saved+=ie,w.set(y,R);let Ne=en(h.wrapper_ms);Ne!=null&&g.push(Ne),S+=W(h.store_open_count);let Le=en(h.store_elapsed_ms);Le!=null&&(v+=Le,T++)}let f=new Map,p=null;for(let h of o){let O=me(h.reason)||"unknown";f.set(O,(f.get(O)??0)+1);let Y=_t(h);(!p||Y>p.timestamp)&&(p={timestamp:Y,reason:O,command:me(h.command)||"unknown"})}let _=s.length+o.length,E=Tn(u,d);return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:l,bytes_saved:Math.max(0,c-l),tokens_saved:u,tokens_saved_estimated:E.tokens_saved_estimated,token_estimate_range_pct:E.token_estimate_range_pct,tokens_saved_low:E.tokens_saved_low,tokens_saved_high:E.tokens_saved_high,dollars_saved_estimate_usd:E.dollars_saved_estimate_usd,dollars_saved_low_usd:E.dollars_saved_low_usd,dollars_saved_high_usd:E.dollars_saved_high_usd,pricing_model_family:E.pricing_model_family,pricing_input_usd_per_million_tokens:E.pricing_input_usd_per_million_tokens,pricing_note:E.pricing_note,daily_tokens_saved:[...m.entries()].sort(([h],[O])=>h.localeCompare(O)).map(([h,O])=>({date:h,tokens_saved:O})),top_commands:[...w.values()].sort((h,O)=>O.bytes_saved-h.bytes_saved||O.tokens_saved-h.tokens_saved||h.command.localeCompare(O.command))},health:{degradations:o.length,degradation_rate:_===0?0:o.length/_,by_reason:[...f.entries()].sort((h,O)=>O[1]-h[1]||h[0].localeCompare(O[0])).map(([h,O])=>({reason:h,count:O})),most_recent:p},latency:{wrapper_ms_p50:Ye(g,.5),wrapper_ms_p95:Ye(g,.95),store_open_count_sum:S,store_elapsed_ms_sum:Qe(v),store_elapsed_ms_avg:T===0?null:Qe(v/T)}}}async function Er(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 Zt(e,Ae)).filter(y=>bt(y)>=o),c=(await Zt(e,De)).filter(y=>bt(y)>=o),l=[...a,...c].map(bt).filter(y=>Number.isFinite(y)&&y>0),u=l.length===0?null:Math.min(...l),d=u==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-u)/Hd()))),m=[],w=new Map,g=new Map,S=new Map,v=new Map,T=new Map,f=new Map,p=0,_=!1,E=0,h=null,O=0,Y=0;for(let y of a){let R=_t(y),Ne=R.slice(0,10),Le=R.slice(0,16),Ce=vo(me(y.command)),se=Math.max(0,W(y.tokens_raw)-W(y.tokens_emitted));p+=se,_||=y.estimated===!0&&se>0;let mn=Math.max(0,W(y.raw_bytes)-W(y.emitted_bytes)),pn=en(y.wrapper_ms);if(pn!=null){m.push(pn);let Qr=w.get(Ce)??[];Qr.push(pn),w.set(Ce,Qr)}Ne&&g.set(Ne,(g.get(Ne)??0)+1),Le&&S.set(Le,(S.get(Le)??0)+1);let yn=Gd(R);yn&&v.set(yn,(v.get(yn)??0)+1);let gn=Jd(R);gn&&T.set(gn,(T.get(gn)??0)+se);let kt=f.get(Ce)??{command_family:Ce,invocations:0,tokens_saved:0,bytes_saved:0};kt.invocations++,kt.tokens_saved+=se,kt.bytes_saved+=mn,f.set(Ce,kt),y.elided===!0&&E++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(O++,W(y.store_open_count)>0&&Y++),se>0&&(!h||se>h.tokens_saved||se===h.tokens_saved&&mn>h.bytes_saved)&&(h={timestamp:R,command_family:Ce,tokens_saved:se,bytes_saved:mn})}let Et=c.map(y=>({timestamp:_t(y),command_family:vo(me(y.command)),reason:me(y.reason)||"unknown"})).sort((y,R)=>y.timestamp.localeCompare(R.timestamp)),ie=new Map;for(let y of Et)ie.set(y.reason,(ie.get(y.reason)??0)+1);let _e=[...S.entries()].sort((y,R)=>R[1]-y[1]||y[0].localeCompare(R[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:So(m),by_command_family:[...w.entries()].sort((y,R)=>R[1].length-y[1].length||y[0].localeCompare(R[0])).map(([y,R])=>({command_family:y,count:R.length,...So(R)}))},throughput:{requests_per_day:[...g.entries()].sort(([y],[R])=>y.localeCompare(R)).map(([y,R])=>({date:y,requests:R})),active_minute_avg:S.size===0?null:Qe([...S.values()].reduce((y,R)=>y+R,0)/S.size),peak_minute:_e?{minute:_e[0],requests:_e[1]}:null,hour_weekday_heatmap:Fd(v)},savings:{tokens:Tn(p,_),weekly_tokens_saved:Vd(T),elision_rate:a.length===0?0:Qe(E/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,R)=>R.tokens_saved-y.tokens_saved||R.bytes_saved-y.bytes_saved||y.command_family.localeCompare(R.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,R)=>R.invocations-y.invocations||R.tokens_saved-y.tokens_saved||y.command_family.localeCompare(R.command_family)).slice(0,10),single_biggest_elision:h},health:{degradation_timeline:Et,degradations_by_reason:[...ie.entries()].sort((y,R)=>R[1]-y[1]||y[0].localeCompare(R[0])).map(([y,R])=>({reason:y,count:R})),cold_boots:O===0?null:Y,warm_hits:O===0?null:Math.max(0,O-Y)}}}async function Zt(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=>Ud(r.value)).filter(r=>Io(r))}function Ud(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function bt(e){let t=Date.parse(_t(e));return Number.isFinite(t)?t:0}function _t(e){return me(e.created_at)||me(e.ts)||""}function me(e){return typeof e=="string"?e:""}function W(e){return en(e)??0}function en(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ye(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 Qe(n[r])}function So(e){return{wrapper_ms_p50:Ye(e,.5),wrapper_ms_p90:Ye(e,.9),wrapper_ms_p95:Ye(e,.95),wrapper_ms_p99:Ye(e,.99)}}function Qe(e){return Math.round(e*100)/100}function vo(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 Gd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${qd(t.getUTCDay())}:${t.getUTCHours()}`:null}function Fd(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 qd(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Jd(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 Vd(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:Qe((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Hd(){return 24*60*60*1e3}function Io(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ao,Ae,De,tn,sn=k(()=>{"use strict";xn();Ao=$o(".red","tmp","rsp-telemetry.spool.jsonl"),Ae="rsp_telemetry_invocations_v1",De="rsp_telemetry_degradations_v1",tn="rsp_telemetry_index_v1"});var Uo={};A(Uo,{runResidentServer:()=>ef});import{randomUUID as Tr}from"node:crypto";import{existsSync as Wd}from"node:fs";import{mkdir as Co,rename as Kd,rm as zd,writeFile as Yd}from"node:fs/promises";import{createServer as Qd}from"node:net";import{dirname as Or,join as on}from"node:path";import{fileURLToPath as Xd,pathToFileURL as Zd}from"node:url";async function ef(e){await Co(Or(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await wt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new xr(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Ct,byteBudget:e.telemetryByteBudget??e.byteBudget??Mt}),o=e.telemetryDrainTimeoutMs??Mo;await Sr(s,o);let a=e.idleMs??jt,c,l=e.telemetryDrainIntervalMs??3e4,u=setInterval(()=>{Sr(s,o)},l);u.unref();let d=Qd(w=>{m(),df(w,async g=>{m();let S=await ff(n,g,e.storeUri,e.residentVersion??"0.0.0-dev"),v={id:g.id,ok:!0,value:S,storeOpenCount:i,storeElapsedMs:r};w.write(`${JSON.stringify(v)}
46
- `),g.op==="handover"&&setImmediate(()=>d.close())})});function m(){c&&clearTimeout(c),c=setTimeout(()=>{d.close()},a),c.unref()}await new Promise((w,g)=>{d.once("error",g),d.listen(e.socketPath,()=>{d.off("error",g),w()})}),m(),await new Promise(w=>d.once("close",w)),i=0,c&&clearTimeout(c),clearInterval(u),await Sr(s,o),await n.close(),await zd(e.socketPath,{force:!0})}async function sf(e,t,n=new Date){let r=await rn(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(l=>l.date===i)?.tokens_saved??0,o=r.savings.tokens_saved>0?s/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=on(t,rf),c=`${a}.${process.pid}.${Date.now()}.tmp`;await Co(Or(a),{recursive:!0}),await Yd(c,JSON.stringify({version:1,tokens_saved_today:s,dollars_saved_today_usd:Math.round(o*1e6)/1e6,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await Kd(c,a)}async function Sr(e,t=Mo){try{await jo(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
47
- `)}}async function of(e){if(e.collection!==Ae)return e;let t=await Po(e.raw_text,No(e.raw_bytes)),n=await Po(e.emitted_text,No(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 Po(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=tf)try{return await jo((async()=>({tokens:(await af())("cl100k_base").encode(e).length,estimated:!1}))(),nf,"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 af(){return Bo??=import(Zd(cf()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Bo}function cf(){let e=Or(Xd(import.meta.url)),n=[on(e,"..","node_modules","js-tiktoken","dist","index.js"),on(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Wd(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function No(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function vr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function jo(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 lf(e){try{return JSON.parse(e)}catch{return e}}function uf(e){return Lo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Lo(t)&&(t.collection===Ae||t.collection===De)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Lo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function df(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
45
+ ${s}`,"utf8")}await Oo(r,{force:!0})}}function Ud(e){try{return Ld(e,"utf8")}catch{return""}}async function Do(e){let t="";for(let n=0;n<5;n++){let r=await Cd(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Rr(e){try{let t=JSON.parse(e);return!Io(t)||t.collection!==pe&&t.collection!==ye?null:t}catch{return null}}async function rn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await en(e,pe)).filter(h=>bt(h)>=i),o=(await en(e,ye)).filter(h=>bt(h)>=i),a=0,c=0,l=0,u=0,d=!1,m=new Map,w=new Map,g=[],S=0,v=0,T=0;for(let h of s){h.elided===!0&&a++;let O=W(h.raw_bytes),Y=W(h.emitted_bytes),kt=Math.max(0,O-Y),ie=Math.max(0,W(h.tokens_raw)-W(h.tokens_emitted));d||=h.estimated===!0&&ie>0,c+=O,l+=Y,u+=ie;let Ee=_t(h).slice(0,10);Ee&&m.set(Ee,(m.get(Ee)??0)+ie);let y=me(h.command)||"unknown",R=w.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};R.invocations++,R.bytes_saved+=kt,R.tokens_saved+=ie,w.set(y,R);let Be=tn(h.wrapper_ms);Be!=null&&g.push(Be),S+=W(h.store_open_count);let Le=tn(h.store_elapsed_ms);Le!=null&&(v+=Le,T++)}let f=new Map,p=null;for(let h of o){let O=me(h.reason)||"unknown";f.set(O,(f.get(O)??0)+1);let Y=_t(h);(!p||Y>p.timestamp)&&(p={timestamp:Y,reason:O,command:me(h.command)||"unknown"})}let _=s.length+o.length,E=Tn(u,d);return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:l,bytes_saved:Math.max(0,c-l),tokens_saved:u,tokens_saved_estimated:E.tokens_saved_estimated,token_estimate_range_pct:E.token_estimate_range_pct,tokens_saved_low:E.tokens_saved_low,tokens_saved_high:E.tokens_saved_high,dollars_saved_estimate_usd:E.dollars_saved_estimate_usd,dollars_saved_low_usd:E.dollars_saved_low_usd,dollars_saved_high_usd:E.dollars_saved_high_usd,pricing_model_family:E.pricing_model_family,pricing_input_usd_per_million_tokens:E.pricing_input_usd_per_million_tokens,pricing_note:E.pricing_note,daily_tokens_saved:[...m.entries()].sort(([h],[O])=>h.localeCompare(O)).map(([h,O])=>({date:h,tokens_saved:O})),top_commands:[...w.values()].sort((h,O)=>O.bytes_saved-h.bytes_saved||O.tokens_saved-h.tokens_saved||h.command.localeCompare(O.command))},health:{degradations:o.length,degradation_rate:_===0?0:o.length/_,by_reason:[...f.entries()].sort((h,O)=>O[1]-h[1]||h[0].localeCompare(O[0])).map(([h,O])=>({reason:h,count:O})),most_recent:p},latency:{wrapper_ms_p50:Ye(g,.5),wrapper_ms_p95:Ye(g,.95),store_open_count_sum:S,store_elapsed_ms_sum:Qe(v),store_elapsed_ms_avg:T===0?null:Qe(v/T)}}}async function Er(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 en(e,pe)).filter(y=>bt(y)>=o),c=(await en(e,ye)).filter(y=>bt(y)>=o),l=[...a,...c].map(bt).filter(y=>Number.isFinite(y)&&y>0),u=l.length===0?null:Math.min(...l),d=u==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-u)/Wd()))),m=[],w=new Map,g=new Map,S=new Map,v=new Map,T=new Map,f=new Map,p=0,_=!1,E=0,h=null,O=0,Y=0;for(let y of a){let R=_t(y),Be=R.slice(0,10),Le=R.slice(0,16),Ce=vo(me(y.command)),se=Math.max(0,W(y.tokens_raw)-W(y.tokens_emitted));p+=se,_||=y.estimated===!0&&se>0;let mn=Math.max(0,W(y.raw_bytes)-W(y.emitted_bytes)),pn=tn(y.wrapper_ms);if(pn!=null){m.push(pn);let Qr=w.get(Ce)??[];Qr.push(pn),w.set(Ce,Qr)}Be&&g.set(Be,(g.get(Be)??0)+1),Le&&S.set(Le,(S.get(Le)??0)+1);let yn=Fd(R);yn&&v.set(yn,(v.get(yn)??0)+1);let gn=Vd(R);gn&&T.set(gn,(T.get(gn)??0)+se);let St=f.get(Ce)??{command_family:Ce,invocations:0,tokens_saved:0,bytes_saved:0};St.invocations++,St.tokens_saved+=se,St.bytes_saved+=mn,f.set(Ce,St),y.elided===!0&&E++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(O++,W(y.store_open_count)>0&&Y++),se>0&&(!h||se>h.tokens_saved||se===h.tokens_saved&&mn>h.bytes_saved)&&(h={timestamp:R,command_family:Ce,tokens_saved:se,bytes_saved:mn})}let kt=c.map(y=>({timestamp:_t(y),command_family:vo(me(y.command)),reason:me(y.reason)||"unknown"})).sort((y,R)=>y.timestamp.localeCompare(R.timestamp)),ie=new Map;for(let y of kt)ie.set(y.reason,(ie.get(y.reason)??0)+1);let Ee=[...S.entries()].sort((y,R)=>R[1]-y[1]||y[0].localeCompare(R[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:So(m),by_command_family:[...w.entries()].sort((y,R)=>R[1].length-y[1].length||y[0].localeCompare(R[0])).map(([y,R])=>({command_family:y,count:R.length,...So(R)}))},throughput:{requests_per_day:[...g.entries()].sort(([y],[R])=>y.localeCompare(R)).map(([y,R])=>({date:y,requests:R})),active_minute_avg:S.size===0?null:Qe([...S.values()].reduce((y,R)=>y+R,0)/S.size),peak_minute:Ee?{minute:Ee[0],requests:Ee[1]}:null,hour_weekday_heatmap:qd(v)},savings:{tokens:Tn(p,_),weekly_tokens_saved:Hd(T),elision_rate:a.length===0?0:Qe(E/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,R)=>R.tokens_saved-y.tokens_saved||R.bytes_saved-y.bytes_saved||y.command_family.localeCompare(R.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,R)=>R.invocations-y.invocations||R.tokens_saved-y.tokens_saved||y.command_family.localeCompare(R.command_family)).slice(0,10),single_biggest_elision:h},health:{degradation_timeline:kt,degradations_by_reason:[...ie.entries()].sort((y,R)=>R[1]-y[1]||y[0].localeCompare(R[0])).map(([y,R])=>({reason:y,count:R})),cold_boots:O===0?null:Y,warm_hits:O===0?null:Math.max(0,O-Y)}}}async function en(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=>Gd(r.value)).filter(r=>Io(r))}function Gd(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function bt(e){let t=Date.parse(_t(e));return Number.isFinite(t)?t:0}function _t(e){return me(e.created_at)||me(e.ts)||""}function me(e){return typeof e=="string"?e:""}function W(e){return tn(e)??0}function tn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ye(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 Qe(n[r])}function So(e){return{wrapper_ms_p50:Ye(e,.5),wrapper_ms_p90:Ye(e,.9),wrapper_ms_p95:Ye(e,.95),wrapper_ms_p99:Ye(e,.99)}}function Qe(e){return Math.round(e*100)/100}function vo(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 Fd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Jd(t.getUTCDay())}:${t.getUTCHours()}`:null}function qd(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 Jd(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Vd(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 Hd(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:Qe((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Wd(){return 24*60*60*1e3}function Io(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ao,pe,ye,Rt,sn=k(()=>{"use strict";xn();Ao=$o(".red","tmp","rsp-telemetry.spool.jsonl"),pe="rsp_telemetry_invocations_v1",ye="rsp_telemetry_degradations_v1",Rt="rsp_telemetry_index_v1"});var Go={};A(Go,{runResidentServer:()=>tf});import{randomUUID as Tr}from"node:crypto";import{existsSync as Kd}from"node:fs";import{mkdir as Co,rename as zd,rm as Yd,writeFile as Qd}from"node:fs/promises";import{createServer as Zd}from"node:net";import{dirname as Or,join as on}from"node:path";import{fileURLToPath as Xd,pathToFileURL as ef}from"node:url";async function tf(e){await Co(Or(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await wt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new xr(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Mt,byteBudget:e.telemetryByteBudget??e.byteBudget??jt}),o=e.telemetryDrainTimeoutMs??Mo;await Sr(s,o);let a=e.idleMs??Ut,c,l=e.telemetryDrainIntervalMs??3e4,u=setInterval(()=>{Sr(s,o)},l);u.unref();let d=Zd(w=>{m(),hf(w,async g=>{m();let S=await wf(n,g,e.storeUri,e.residentVersion??"0.0.0-dev"),v={id:g.id,ok:!0,value:S,storeOpenCount:i,storeElapsedMs:r};w.write(`${JSON.stringify(v)}
46
+ `),g.op==="handover"&&setImmediate(()=>d.close())})});function m(){c&&clearTimeout(c),c=setTimeout(()=>{d.close()},a),c.unref()}await new Promise((w,g)=>{d.once("error",g),d.listen(e.socketPath,()=>{d.off("error",g),w()})}),m(),await new Promise(w=>d.once("close",w)),i=0,c&&clearTimeout(c),clearInterval(u),await Sr(s,o),await n.close(),await Yd(e.socketPath,{force:!0})}async function af(e,t,n=new Date){let r=await rn(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(l=>l.date===i)?.tokens_saved??0,o=r.savings.tokens_saved>0?s/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=on(t,sf),c=`${a}.${process.pid}.${Date.now()}.tmp`;await Co(Or(a),{recursive:!0}),await Qd(c,JSON.stringify({version:1,tokens_saved_today:s,dollars_saved_today_usd:Math.round(o*1e6)/1e6,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await zd(c,a)}async function Sr(e,t=Mo){try{await Uo(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
47
+ `)}}async function cf(e){let t=[];for(let n of of){let r=await lf(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await uf(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${jo(n)}`))}return t}async function lf(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let i=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(i?.[1])return{ok:!1,previousModel:i[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let s=(await e.list()).find(o=>o.name===t);if(s&&s.model!=="kv")return{ok:!1,previousModel:s.model};throw n}}async function uf(e,t,n){let r=df(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${jo(t)}`)}function df(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function jo(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}async function ff(e){if(e.collection!==pe)return e;let t=await Po(e.raw_text,Bo(e.raw_bytes)),n=await Po(e.emitted_text,Bo(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 Po(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=nf)try{return await Uo((async()=>({tokens:(await mf())("cl100k_base").encode(e).length,estimated:!1}))(),rf,"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 mf(){return No??=import(ef(pf()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await No}function pf(){let e=Or(Xd(import.meta.url)),n=[on(e,"..","node_modules","js-tiktoken","dist","index.js"),on(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Kd(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Bo(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function vr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function Uo(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 yf(e){try{return JSON.parse(e)}catch{return e}}function gf(e){return Lo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Lo(t)&&(t.collection===pe||t.collection===ye)&&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 hf(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
48
48
  `);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 l={id:o?.id??Tr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(l)}
49
- `)}finally{e.end()}})()})}async function ff(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 rn(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 Er(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return pf(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await mf(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function mf(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await wo(i,t).request(n,r)}function pf(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var tf,nf,Mo,rf,xr,Bo,Go=k(()=>{"use strict";Kt();ko();sn();V();tf=256*1024,nf=500,Mo=2e3,rf=on(".red","tmp","rsp-status-summary.json"),xr=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 _r(this.opts.rootDir,async i=>{let s=Rr(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:vr(s.command)||"unknown",source_id:vr(s.id),source_collection:vr(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 sf(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:Tr(),a={...await of(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeDrainDegradation(t,n){return await this.writeEvent(t,{collection:De,id:Tr(),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(tn).get("index:v1"),r=typeof n=="string"?lf(n):n;return uf(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(tn).put("index:v1",n)}async prune(t,n){let r=Date.now(),i=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:i})}}});function pe(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function Fo(e,t){if(!t)return!0;let n=$r(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>Fo(n,t)):[...e]}function Xe(e,t){if(!t)return e;let r=e.split(`
50
- `).filter(i=>i&&Fo(i,t));return r.length>0?`${r.join(`
49
+ `)}finally{e.end()}})()})}async function wf(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 rn(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 Er(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return _f(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await bf(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function bf(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await wo(i,t).request(n,r)}function _f(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var nf,rf,Mo,sf,of,xr,No,Fo=k(()=>{"use strict";zt();ko();sn();V();nf=256*1024,rf=500,Mo=2e3,sf=on(".red","tmp","rsp-status-summary.json"),of=[pe,ye,Rt],xr=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 n=await cf(t),i=[...(await this.readIndex(t)).records];for(let s of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:s.collection,error:`expected kv, got ${s.previousModel}`,bytes:0}));await _r(this.opts.rootDir,async s=>{let o=Rr(s);if(!o){let a=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(s,"utf8")});return i.push(a),!0}try{let a=await this.writeEvent(t,o);return i.push(a),!0}catch(a){let c=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:vr(o.command)||"unknown",source_id:vr(o.id),source_collection:vr(o.collection),error:a instanceof Error?a.message:String(a),bytes:Buffer.byteLength(s,"utf8")});return i.push(c),!0}}),await this.prune(t,{version:1,records:i}),await af(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:Tr(),a={...await ff(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:ye,id:Tr(),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(Rt).get("index:v1"),r=typeof n=="string"?yf(n):n;return gf(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Rt).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 ge(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 qo(e,t){if(!t)return!0;let n=$r(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>qo(n,t)):[...e]}function Ze(e,t){if(!t)return e;let r=e.split(`
50
+ `).filter(i=>i&&qo(i,t));return r.length>0?`${r.join(`
51
51
  `)}
52
- `:""}function ye(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function $r(e){return Array.isArray(e)?e.map($r).join(" "):typeof e=="object"&&e!==null?Object.values(e).map($r).join(" "):String(e??"")}var an=k(()=>{"use strict"});var Ar={};A(Ar,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ee,GIT_LOG_MACHINE_FIELDS:()=>qo,recoveryInstruction:()=>G,renderGitContract:()=>Jo,runGitWrapper:()=>gf});import{spawn as yf}from"node:child_process";async function gf(e,t){let n=Vo(e),r=Ho(n.argv),i=await _f(r,n.argv.slice(1));return Jo(e,i,t)}async function Jo(e,t,n){let r=Vo(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Xe(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Ho(r.argv),s=Rf(i,r.argv,t.stdout,r.query);if(s===`git empty
53
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=$(s);if(hf(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=If(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),l=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!l)throw new Error("terse git output requires an elision store");let u=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${G(l)}
52
+ `:""}function he(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function $r(e){return Array.isArray(e)?e.map($r).join(" "):typeof e=="object"&&e!==null?Object.values(e).map($r).join(" "):String(e??"")}var an=k(()=>{"use strict"});var Ar={};A(Ar,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ee,GIT_LOG_MACHINE_FIELDS:()=>Jo,recoveryInstruction:()=>G,renderGitContract:()=>Vo,runGitWrapper:()=>Ef});import{spawn as Rf}from"node:child_process";async function Ef(e,t){let n=Ho(e),r=Wo(n.argv),i=await Tf(r,n.argv.slice(1));return Vo(e,i,t)}async function Vo(e,t,n){let r=Ho(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ze(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Wo(r.argv),s=xf(i,r.argv,t.stdout,r.query);if(s===`git empty
53
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=$(s);if(kf(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=Mf(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),l=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!l)throw new Error("terse git output requires an elision store");let u=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${G(l)}
54
54
  `;return{stdout:Buffer.from(`${$(a.payload)}
55
- ${u}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:l,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function G(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Vo(e){let t=pe(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function hf(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!wf(e)||r.level!=="lossless")return!0;let i=Df(r.heavyGitByteThreshold,ee);return Buffer.byteLength(t)<=i}function wf(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ho(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function bf(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${qo.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function _f(e,t){let n=yf("git",bf(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 Rf(e,t,n,r){switch(e){case"status":return Ef(t,n,r);case"log":return kf(t,n,r);case"diff":return Sf(t,n,r);case"commit":return ge(vf(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ge(Tf(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return xf(t,n,r);case"branch":return Of(t,n,r);case"show":return $f(t,n,r)}}function Ef(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:Af(l)})}if(i.length===0)return`git empty
56
- `;let s=I(i,n),o=Wo(s,"state");return ge({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function kf(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=I(r,n);return ge({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function Sf(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=I(i,n),o=s.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return ge({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function vf(e,t){let n=t.split(`
57
- `)[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]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function Tf(e,t){let n=t.split(`
58
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[m,w]=(u??"").split(":");return{flag:l??"",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 xf(e,t,n){let r=t.split(`
59
- `),i=[],s=null;for(let c of r){let l=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(l){s={commit:l[1]??"",finalLine:Number(l[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let u=i.at(-1),d=s.commit.slice(0,12);u&&u.commit===d&&u.author===s.author&&u.path===s.path&&u.line_end+1===s.finalLine?u.line_end=s.finalLine:i.push({line_start:s.finalLine,line_end:s.finalLine,author:s.author,commit:d,path:s.path}),s=null}let o=I(i,n),a=Wo(o,"author");return ge({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${i.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Of(e,t,n){let r=t.split(`
60
- `).filter(Boolean).map(o=>{let[a,c,l,u,d,m]=o.split("\0");return{current:a==="*",name:c??"",commit:l??"",upstream:u||null,worktree:d||null,subject:m??""}}),i=I(r,n),s=i.find(o=>o.current)?.name??"";return ge({command:e.join(" "),branches:i,summary:`${n?`${i.length}/${r.length}`:i.length} branches${s?`, current ${s}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function $f(e,t,n){let r=t.indexOf(""),i=r>=0?t.indexOf("",r+1):-1,s=r>=0&&i>=0?t.slice(r+1,i):"",o=i>=0?t.slice(i+1):t,[a,c,l,u,d,m=""]=s.split(""),w=[];for(let f of o.split(`
61
- `)){let p=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!p)continue;let _=p[3]??"";w.push({path:(p[1]??"").trim(),changed:Number(p[2]??0),added:[..._].filter(E=>E==="+").length,deleted:[..._].filter(E=>E==="-").length,binary:_.startsWith("Bin")})}let g=I(w,n),S=0,v=0,T=0;for(let f of g)S+=typeof f.changed=="number"?f.changed:0,v+=typeof f.added=="number"?f.added:0,T+=typeof f.deleted=="number"?f.deleted:0;return ge({command:e.join(" "),commit:a??"",short:c??"",author:l??"",date:u??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
62
- `).length:0,files:g,summary:`${n?`${g.length}/${w.length}`:g.length} files, ${S} changed, +${v} -${T}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ge(e,t,n){return t?ye(e,n):e}function Af(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Wo(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Df(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function If(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var qo,Ie=k(()=>{"use strict";ke();V();an();V();qo=["%h","%an","%as","%s"]});var Br={};A(Br,{renderGhContract:()=>Yo,runGhWrapper:()=>Lf});import{spawn as zo}from"node:child_process";async function Lf(e,t){let n=Qo(e),r=await Mf(n);return Yo(e,r,t)}async function Yo(e,t,n){let r=pe(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Xe(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Qo(e),s=cn(t.stdout),o=Uf(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=Wf(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let g=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=g}let c=a?.target.truncated.handle||void 0,l=$(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=Kf(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),m=await n.store?.mint(Buffer.from(l),{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 ${u.rowsElided} rows (+${d}) \u2014 ${G(m)}
55
+ ${u}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:l,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function G(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ho(e){let t=ge(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 kf(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Sf(e)||r.level!=="lossless")return!0;let i=Cf(r.heavyGitByteThreshold,ee);return Buffer.byteLength(t)<=i}function Sf(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Wo(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function vf(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Jo.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function Tf(e,t){let n=Rf("git",vf(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 xf(e,t,n,r){switch(e){case"status":return Of(t,n,r);case"log":return $f(t,n,r);case"diff":return Af(t,n,r);case"commit":return we(Df(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return we(If(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Pf(t,n,r);case"branch":return Nf(t,n,r);case"show":return Bf(t,n,r)}}function Of(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(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:Lf(l)})}if(i.length===0)return`git empty
56
+ `;let s=I(i,n),o=Ko(s,"state");return we({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 $f(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=I(r,n);return we({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 Af(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=I(i,n),o=s.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return we({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 Df(e,t){let n=t.split(`
57
+ `)[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]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function If(e,t){let n=t.split(`
58
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[m,w]=(u??"").split(":");return{flag:l??"",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 Pf(e,t,n){let r=t.split(`
59
+ `),i=[],s=null;for(let c of r){let l=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(l){s={commit:l[1]??"",finalLine:Number(l[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let u=i.at(-1),d=s.commit.slice(0,12);u&&u.commit===d&&u.author===s.author&&u.path===s.path&&u.line_end+1===s.finalLine?u.line_end=s.finalLine:i.push({line_start:s.finalLine,line_end:s.finalLine,author:s.author,commit:d,path:s.path}),s=null}let o=I(i,n),a=Ko(o,"author");return we({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${i.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Nf(e,t,n){let r=t.split(`
60
+ `).filter(Boolean).map(o=>{let[a,c,l,u,d,m]=o.split("\0");return{current:a==="*",name:c??"",commit:l??"",upstream:u||null,worktree:d||null,subject:m??""}}),i=I(r,n),s=i.find(o=>o.current)?.name??"";return we({command:e.join(" "),branches:i,summary:`${n?`${i.length}/${r.length}`:i.length} branches${s?`, current ${s}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Bf(e,t,n){let r=t.indexOf(""),i=r>=0?t.indexOf("",r+1):-1,s=r>=0&&i>=0?t.slice(r+1,i):"",o=i>=0?t.slice(i+1):t,[a,c,l,u,d,m=""]=s.split(""),w=[];for(let f of o.split(`
61
+ `)){let p=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!p)continue;let _=p[3]??"";w.push({path:(p[1]??"").trim(),changed:Number(p[2]??0),added:[..._].filter(E=>E==="+").length,deleted:[..._].filter(E=>E==="-").length,binary:_.startsWith("Bin")})}let g=I(w,n),S=0,v=0,T=0;for(let f of g)S+=typeof f.changed=="number"?f.changed:0,v+=typeof f.added=="number"?f.added:0,T+=typeof f.deleted=="number"?f.deleted:0;return we({command:e.join(" "),commit:a??"",short:c??"",author:l??"",date:u??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
62
+ `).length:0,files:g,summary:`${n?`${g.length}/${w.length}`:g.length} files, ${S} changed, +${v} -${T}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function we(e,t,n){return t?he(e,n):e}function Lf(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ko(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Cf(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Mf(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var Jo,Ie=k(()=>{"use strict";ve();V();an();V();Jo=["%h","%an","%as","%s"]});var Nr={};A(Nr,{renderGhContract:()=>Qo,runGhWrapper:()=>Ff});import{spawn as Yo}from"node:child_process";async function Ff(e,t){let n=Zo(e),r=await Jf(n);return Qo(e,r,t)}async function Qo(e,t,n){let r=ge(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ze(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Zo(e),s=cn(t.stdout),o=Hf(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=Xf(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let g=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=g}let c=a?.target.truncated.handle||void 0,l=$(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=em(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),m=await n.store?.mint(Buffer.from(l),{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 ${u.rowsElided} rows (+${d}) \u2014 ${G(m)}
63
63
  `;return{stdout:Buffer.from(`${$(u.payload)}
64
- ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:d,rowsElided:u.rowsElided,rawOutput:Buffer.from(l)}}function Qo(e){let t=pe(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);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 Cf(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Bf[t]:Pf[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Mf(e){if(e.action==="combined")return await jf(e);let t=zo("gh",Cf(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 jf(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Dr(["pr","view",t,"--json",n.join(",")]),Dr(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Dr(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:cn(i.stdout),checks:cn(s.stdout),comments:cn(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Dr(e){let t=zo("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 Uf(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Jf(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=et(n).map(o=>Xo(o,e.wide)),s=I(i,e.query);return Ze({...r,prs:s,summary:`${Ir(s.length,i.length,e.query)} ${Ko(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Ze({...r,pr:Zo(K(n),e),summary:`PR #${Pe(K(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Gf(e,t,K(n));case"issue:list":{let i=et(n).map(o=>ea(o,e.wide)),s=I(i,e.query);return Ze({...r,issues:s,summary:`${Ir(s.length,i.length,e.query)} ${Ko(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Ze({...r,issue:Vf(K(n),e),summary:`issue #${Pe(K(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=et(n).map(o=>ta(o,e.wide)),s=I(i,e.query);return Ze({...r,runs:s,summary:`${Ir(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 Ze({...r,run:Hf(K(n),e),summary:`run ${Pe(K(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Gf(e,t,n){let r=Zo(K(n.view),{...e,action:"view",wide:!0}),i=I(et(n.checks).map(Ff),e.query),s=K(n.comments).comments,o=I(et(s).map(qf).slice(-3),e.query);return ye({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Pe(K(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 Ff(e){return{name:x(e,"name"),state:Rt(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function qf(e){return{author:ia(e.author),body:ln(e,"body",Pr,!1),created:x(e,"createdAt")}}function Jf(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
64
+ ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:d,rowsElided:u.rowsElided,rawOutput:Buffer.from(l)}}function Zo(e){let t=ge(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 l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);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 qf(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Uf[t]:jf[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Jf(e){if(e.action==="combined")return await Vf(e);let t=Yo("gh",qf(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 Vf(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Dr(["pr","view",t,"--json",n.join(",")]),Dr(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Dr(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:cn(i.stdout),checks:cn(s.stdout),comments:cn(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Dr(e){let t=Yo("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 Hf(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Yf(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=et(n).map(o=>Xo(o,e.wide)),s=I(i,e.query);return Xe({...r,prs:s,summary:`${Ir(s.length,i.length,e.query)} ${zo(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Xe({...r,pr:ea(K(n),e),summary:`PR #${Pe(K(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Wf(e,t,K(n));case"issue:list":{let i=et(n).map(o=>ta(o,e.wide)),s=I(i,e.query);return Xe({...r,issues:s,summary:`${Ir(s.length,i.length,e.query)} ${zo(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Xe({...r,issue:Qf(K(n),e),summary:`issue #${Pe(K(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=et(n).map(o=>na(o,e.wide)),s=I(i,e.query);return Xe({...r,runs:s,summary:`${Ir(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 Xe({...r,run:Zf(K(n),e),summary:`run ${Pe(K(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Wf(e,t,n){let r=ea(K(n.view),{...e,action:"view",wide:!0}),i=I(et(n.checks).map(Kf),e.query),s=K(n.comments).comments,o=I(et(s).map(zf).slice(-3),e.query);return he({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Pe(K(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 Kf(e){return{name:x(e,"name"),state:Et(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function zf(e){return{author:sa(e.author),body:ln(e,"body",Pr,!1),created:x(e,"createdAt")}}function Yf(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
65
65
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
66
66
  `:`0 runs \u2014 try: rsp gh run list --limit 20
67
- `}function Xo(e,t){let n={number:Pe(e,"number"),title:x(e,"title"),state:Rt(e),draft:!!e.isDraft};return t&&Object.assign(n,na(e)),n}function Zo(e,t){let n=Xo(e,t.wide);return n.body=ln(e,"body",Pr,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function ea(e,t){let n={number:Pe(e,"number"),title:x(e,"title"),state:Rt(e),labels:ra(e.labels)};return t&&Object.assign(n,na(e)),n}function Vf(e,t){let n=ea(e,t.wide);return n.body=ln(e,"body",Pr,t.full),n}function ta(e,t){let n={id:Pe(e,"databaseId"),name:x(e,"name"),status:Rt(e),conclusion:x(e,"conclusion")};return t&&(n.event=x(e,"event"),n.branch=x(e,"headBranch"),n.workflow=x(e,"workflowName"),n.created=x(e,"createdAt")),n}function Hf(e,t){let n=ta(e,t.wide),r=et(e.jobs).map(i=>({name:x(i,"name"),status:Rt(i),conclusion:x(i,"conclusion"),log:ln(i,"log",Nf,t.full)}));return n.jobs=r,n}function ln(e,t,n,r){let i=x(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Wf(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(tt(n)){if(tt(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 Kf(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 Ko(e,t){return e.every(n=>n.state===t)?t:"returned"}function Ir(e,t,n){return n?`${e}/${t}`:String(e)}function Ze(e,t,n){return t.query?ye(e,n):e}function Rt(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function na(e){return{author:ia(e.author),labels:ra(e.labels),url:x(e,"url"),updated:x(e,"updatedAt")}}function ra(e){return Array.isArray(e)?e.map(t=>tt(t)?x(t,"name"):String(t)).filter(Boolean):[]}function ia(e){return tt(e)?x(e,"login"):""}function cn(e){return e.trim()?JSON.parse(e):null}function et(e){return Array.isArray(e)?e.filter(tt):[]}function K(e){return tt(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function Pe(e,t){let n=e[t];return typeof n=="number"?n:0}function tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pf,Bf,Pr,Nf,Nr=k(()=>{"use strict";ke();Ie();an();Pf={"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"]},Bf={"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"]},Pr=160,Nf=160});var Cr={};A(Cr,{renderTestContract:()=>sa,runTestWrapper:()=>Zf});import{spawn as zf}from"node:child_process";async function Zf(e,t){let n=pe(e),r=await im(n.argv);return await sa(e,r,t)}async function sa(e,t,n){let r=pe(e),s=oa(r.argv)==="vitest"?sm(t.stdout):om(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Xe(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 ${lm(s.durationSeconds)}`,c=I(s.failures,r.query);if(n.level==="terse")return await em(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let g of c){let S=await am(g.excerpt,r.argv.join(" "),n.store);l.push({suite:g.suite,name:g.name,excerpt:S.text}),u??=S.handle,d+=S.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(m.failures=l);let w=r.query?ye(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from($(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function em(e,t,n,r,i,s,o){let a=tm(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?ye(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=$(l),d=Math.max(0,n.failures.length-a.length),m=a.some((p,_)=>p.excerpt!==n.failures[_].excerpt);if(d===0&&!m)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(p=>({suite:p.suite,name:p.name,excerpt:p.excerpt})));let g=$(w),S=Buffer.byteLength(g),v=await s.store?.mint(Buffer.from(g),{command:e.join(" "),loss:{level:"terse",bytes_elided:S}});if(!v)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${S}) \u2014 ${G(v)}`;return{stdout:Buffer.from(`${u}
68
- ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:v,bytesElided:S,rowsElided:d,rawOutput:Buffer.from(g)}}function tm(e){let t=[],n=Qf;for(let r of e.slice(0,Xf)){let i=nm(r.excerpt,Math.min(Yf,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function nm(e,t){if(t<=0)return"";let n=e.split(`
67
+ `}function Xo(e,t){let n={number:Pe(e,"number"),title:x(e,"title"),state:Et(e),draft:!!e.isDraft};return t&&Object.assign(n,ra(e)),n}function ea(e,t){let n=Xo(e,t.wide);return n.body=ln(e,"body",Pr,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function ta(e,t){let n={number:Pe(e,"number"),title:x(e,"title"),state:Et(e),labels:ia(e.labels)};return t&&Object.assign(n,ra(e)),n}function Qf(e,t){let n=ta(e,t.wide);return n.body=ln(e,"body",Pr,t.full),n}function na(e,t){let n={id:Pe(e,"databaseId"),name:x(e,"name"),status:Et(e),conclusion:x(e,"conclusion")};return t&&(n.event=x(e,"event"),n.branch=x(e,"headBranch"),n.workflow=x(e,"workflowName"),n.created=x(e,"createdAt")),n}function Zf(e,t){let n=na(e,t.wide),r=et(e.jobs).map(i=>({name:x(i,"name"),status:Et(i),conclusion:x(i,"conclusion"),log:ln(i,"log",Gf,t.full)}));return n.jobs=r,n}function ln(e,t,n,r){let i=x(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Xf(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(tt(n)){if(tt(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 em(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 zo(e,t){return e.every(n=>n.state===t)?t:"returned"}function Ir(e,t,n){return n?`${e}/${t}`:String(e)}function Xe(e,t,n){return t.query?he(e,n):e}function Et(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function ra(e){return{author:sa(e.author),labels:ia(e.labels),url:x(e,"url"),updated:x(e,"updatedAt")}}function ia(e){return Array.isArray(e)?e.map(t=>tt(t)?x(t,"name"):String(t)).filter(Boolean):[]}function sa(e){return tt(e)?x(e,"login"):""}function cn(e){return e.trim()?JSON.parse(e):null}function et(e){return Array.isArray(e)?e.filter(tt):[]}function K(e){return tt(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function Pe(e,t){let n=e[t];return typeof n=="number"?n:0}function tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jf,Uf,Pr,Gf,Br=k(()=>{"use strict";ve();Ie();an();jf={"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"]},Uf={"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"]},Pr=160,Gf=160});var Cr={};A(Cr,{renderTestContract:()=>oa,runTestWrapper:()=>sm});import{spawn as tm}from"node:child_process";async function sm(e,t){let n=ge(e),r=await um(n.argv);return await oa(e,r,t)}async function oa(e,t,n){let r=ge(e),s=aa(r.argv)==="vitest"?dm(t.stdout):fm(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Ze(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 ${ym(s.durationSeconds)}`,c=I(s.failures,r.query);if(n.level==="terse")return await om(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let g of c){let S=await mm(g.excerpt,r.argv.join(" "),n.store);l.push({suite:g.suite,name:g.name,excerpt:S.text}),u??=S.handle,d+=S.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(m.failures=l);let w=r.query?he(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from($(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function om(e,t,n,r,i,s,o){let a=am(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?he(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=$(l),d=Math.max(0,n.failures.length-a.length),m=a.some((p,_)=>p.excerpt!==n.failures[_].excerpt);if(d===0&&!m)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(p=>({suite:p.suite,name:p.name,excerpt:p.excerpt})));let g=$(w),S=Buffer.byteLength(g),v=await s.store?.mint(Buffer.from(g),{command:e.join(" "),loss:{level:"terse",bytes_elided:S}});if(!v)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${S}) \u2014 ${G(v)}`;return{stdout:Buffer.from(`${u}
68
+ ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:v,bytesElided:S,rowsElided:d,rawOutput:Buffer.from(g)}}function am(e){let t=[],n=rm;for(let r of e.slice(0,im)){let i=cm(r.excerpt,Math.min(nm,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function cm(e,t){if(t<=0)return"";let n=e.split(`
69
69
  `),r=n.length<=2?e:`${n[0]}
70
70
  \u2026
71
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function oa(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 rm(e){if(oa(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 im(e){let t=rm(e),n=zf(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 sm(e){let t=aa(e);if(!he(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=we(t.numTotalTests),s=we(t.numFailedTests),o=um(we(t.startTime),we(t.endTime));for(let a of n){if(!he(a))continue;let c=z(a.name)||z(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)he(u)&&u.status==="failed"&&r.push({suite:c,name:z(u.fullName)||z(u.title)||z(u.name),excerpt:cm(u.failureMessages)||z(u.failureMessage)})}return i||=n.reduce((a,c)=>!he(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>he(c)?a+we(c.perfStats&&he(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function om(e){let t=e.split(`
72
- `).filter(Boolean).map(c=>aa(c)).filter(he);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=we(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=we(c.failed),o+=we(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:z(c.name).split("::").slice(0,-1).join("::"),name:z(c.name),excerpt:z(c.stdout)});continue}if(c.reason==="compiler-message"&&he(c.message)){let l=z(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
73
- `)}),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 am(e,t,n){let r=Buffer.from(e);if(r.length<=Lr)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,Lr).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
74
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${G(i)}`,handle:i,bytesElided:r.length}}function aa(e){try{return JSON.parse(e)}catch{return null}}function cm(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
75
- `):""}function lm(e){return`${Number(e.toFixed(1))}s`}function um(e,t){return e>0&&t>e?(t-e)/1e3:0}function we(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function z(e){return typeof e=="string"?e:""}function he(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lr,Yf,Qf,Xf,Mr=k(()=>{"use strict";ke();Ie();an();Lr=320,Yf=160,Qf=Lr,Xf=3});var Gr={};A(Gr,{parseCatCommand:()=>Ur,renderCatContract:()=>wm,runCatWrapper:()=>hm});import{isUtf8 as dm}from"node:buffer";import{readFile as fm}from"node:fs/promises";import{extname as mm}from"node:path";async function hm(e,t){let n=Ur(e),r=await fm(n.file);return ma(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await fa(e,n,r,t)}async function wm(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Ur(e),i=Buffer.from(t.stdout,"utf8");return ma(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await fa(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ur(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=da(t[++s],jr);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=da(c,jr);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function fa(e,t,n,r){let i=n.toString("utf8"),s=Rm(i,t),o=r.level!=="lossless"||n.length>ua(r.heavyByteThreshold,ca)||s.truncated;if(!la(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=la(t.file)?bm(e,t.file,n,i,r.level,s):_m(e,t.file,n,i,s),c=`${$(a)}
76
- `;if(!o&&Buffer.byteLength(c)<=ua(r.heavyByteThreshold,ca))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let l=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!l)throw new Error("rsp cat elision requires an elision store");let u=`\u2026 elided file bytes (+${n.length}) \u2014 ${G(l)}
77
- `;return{stdout:Buffer.from(`${c}${u}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:l,bytesElided:n.length,rawOutput:n}}function bm(e,t,n,r,i,s){let o=un(r),a=i==="terse"?ym:pm,c=un(s.text),l=c.slice(0,a),u=c.slice(Math.max(l.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:Em(o),content:{head:l,tail:u,truncated:s.truncated||l.length+u.length<o.length}}}function _m(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:un(r).length,content:un(i.text),truncated:i.truncated}}function Rm(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
71
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function aa(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 lm(e){if(aa(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 um(e){let t=lm(e),n=tm(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 dm(e){let t=ca(e);if(!be(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=_e(t.numTotalTests),s=_e(t.numFailedTests),o=gm(_e(t.startTime),_e(t.endTime));for(let a of n){if(!be(a))continue;let c=z(a.name)||z(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)be(u)&&u.status==="failed"&&r.push({suite:c,name:z(u.fullName)||z(u.title)||z(u.name),excerpt:pm(u.failureMessages)||z(u.failureMessage)})}return i||=n.reduce((a,c)=>!be(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>be(c)?a+_e(c.perfStats&&be(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function fm(e){let t=e.split(`
72
+ `).filter(Boolean).map(c=>ca(c)).filter(be);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+=_e(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=_e(c.failed),o+=_e(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:z(c.name).split("::").slice(0,-1).join("::"),name:z(c.name),excerpt:z(c.stdout)});continue}if(c.reason==="compiler-message"&&be(c.message)){let l=z(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
73
+ `)}),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 mm(e,t,n){let r=Buffer.from(e);if(r.length<=Lr)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,Lr).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
74
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${G(i)}`,handle:i,bytesElided:r.length}}function ca(e){try{return JSON.parse(e)}catch{return null}}function pm(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
75
+ `):""}function ym(e){return`${Number(e.toFixed(1))}s`}function gm(e,t){return e>0&&t>e?(t-e)/1e3:0}function _e(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function z(e){return typeof e=="string"?e:""}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lr,nm,rm,im,Mr=k(()=>{"use strict";ve();Ie();an();Lr=320,nm=160,rm=Lr,im=3});var Gr={};A(Gr,{parseCatCommand:()=>Ur,renderCatContract:()=>Sm,runCatWrapper:()=>km});import{isUtf8 as hm}from"node:buffer";import{readFile as wm}from"node:fs/promises";import{extname as bm}from"node:path";async function km(e,t){let n=Ur(e),r=await wm(n.file);return pa(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ma(e,n,r,t)}async function Sm(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Ur(e),i=Buffer.from(t.stdout,"utf8");return pa(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await ma(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ur(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=fa(t[++s],jr);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=fa(c,jr);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function ma(e,t,n,r){let i=n.toString("utf8"),s=xm(i,t),o=r.level!=="lossless"||n.length>da(r.heavyByteThreshold,la)||s.truncated;if(!ua(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ua(t.file)?vm(e,t.file,n,i,r.level,s):Tm(e,t.file,n,i,s),c=`${$(a)}
76
+ `;if(!o&&Buffer.byteLength(c)<=da(r.heavyByteThreshold,la))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let l=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!l)throw new Error("rsp cat elision requires an elision store");let u=`\u2026 elided file bytes (+${n.length}) \u2014 ${G(l)}
77
+ `;return{stdout:Buffer.from(`${c}${u}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:l,bytesElided:n.length,rawOutput:n}}function vm(e,t,n,r,i,s){let o=un(r),a=i==="terse"?Rm:_m,c=un(s.text),l=c.slice(0,a),u=c.slice(Math.max(l.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:Om(o),content:{head:l,tail:u,truncated:s.truncated||l.length+u.length<o.length}}}function Tm(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:un(r).length,content:un(i.text),truncated:i.truncated}}function xm(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
78
78
  `),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??jr,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
79
79
  `)}${r&&o.length>0?`
80
- `:""}`,truncated:o.length<i.length}}function Em(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!km(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function un(e){let t=e.split(`
81
- `);return t.at(-1)===""?t.slice(0,-1):t}function ma(e){return e.includes(0)||!dm(e)}function la(e){return gm.has(mm(e).toLowerCase())}function km(e){return["for","if","switch","while"].includes(e)}function ua(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function da(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var ca,jr,pm,ym,gm,Fr=k(()=>{"use strict";ke();Ie();ca=8*1024,jr=10,pm=8,ym=2,gm=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var dn={};A(dn,{parseExecCommandLine:()=>ga,renderExecContract:()=>ya,runExecWrapper:()=>$m});import{isUtf8 as Sm}from"node:buffer";import{spawn as vm}from"node:child_process";async function $m(e,t){let n=ga(e),r=await Am(n);return await ya(n,r,t)}async function ya(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=Dm(r);if(s.kind==="text"){let d=await ut(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=Bm(n.heavyByteThreshold,Tm);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,l=n.level==="lossless"?"terse":n.level,u=await n.store?.mint(r,{command:e,loss:{level:l,bytes_elided:c}});if(!u)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(Im(o,r.length,u,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:u,bytesElided:c,rawOutput:r}}function ga(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 Am(e){let t=vm(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 Dm(e){return Sm(e)?{kind:"text",text:Ve(e.toString("utf8"))}:{kind:"bytes"}}function Im(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?Om:xm)/2)),o=pa(e.subarray(0,s)),a=pa(e.subarray(Math.max(0,e.length-s))),c=Pm(e),l=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&l.push("tail:",a),l.push(`\u2026 elided stdout (+${t}) \u2014 ${G(n)}`),`${l.join(`
80
+ `:""}`,truncated:o.length<i.length}}function Om(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!$m(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function un(e){let t=e.split(`
81
+ `);return t.at(-1)===""?t.slice(0,-1):t}function pa(e){return e.includes(0)||!hm(e)}function ua(e){return Em.has(bm(e).toLowerCase())}function $m(e){return["for","if","switch","while"].includes(e)}function da(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fa(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var la,jr,_m,Rm,Em,Fr=k(()=>{"use strict";ve();Ie();la=8*1024,jr=10,_m=8,Rm=2,Em=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var dn={};A(dn,{parseExecCommandLine:()=>ha,renderExecContract:()=>ga,runExecWrapper:()=>Bm});import{isUtf8 as Am}from"node:buffer";import{spawn as Dm}from"node:child_process";async function Bm(e,t){let n=ha(e),r=await Lm(n);return await ga(n,r,t)}async function ga(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=Cm(r);if(s.kind==="text"){let d=await ut(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=Um(n.heavyByteThreshold,Im);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,l=n.level==="lossless"?"terse":n.level,u=await n.store?.mint(r,{command:e,loss:{level:l,bytes_elided:c}});if(!u)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(Mm(o,r.length,u,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:u,bytesElided:c,rawOutput:r}}function ha(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 Lm(e){let t=Dm(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 Cm(e){return Am(e)?{kind:"text",text:Ve(e.toString("utf8"))}:{kind:"bytes"}}function Mm(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?Nm:Pm)/2)),o=ya(e.subarray(0,s)),a=ya(e.subarray(Math.max(0,e.length-s))),c=jm(e),l=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&l.push("tail:",a),l.push(`\u2026 elided stdout (+${t}) \u2014 ${G(n)}`),`${l.join(`
82
82
  `)}
83
- `}function pa(e){return e.toString("utf8").replace(/�$/g,"")}function Pm(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 Bm(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Tm,xm,Om,fn=k(()=>{"use strict";Ie();Gt();Tm=8*1024,xm=2*1024,Om=1024});ke();import{appendFileSync as ha,existsSync as Vr,mkdirSync as Nm,readdirSync as Lm}from"node:fs";import{dirname as Cm,join as Mm}from"node:path";function wi(e){let t={app:e,version:_c(Fe("__RED_BUILD_VERSION__",()=>"2.52.0")??"0.0.0-dev"),gitSha:Fe("__RED_BUILD_GIT_SHA__",()=>"c81d861c9217cb6952df944a466aa611ea1e6b1f")??"unknown",buildTime:Fe("__RED_BUILD_TIME__",()=>"2026-07-13T10:28:25-03:00")??"unknown",bundleAsset:Fe("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Fe("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Fe("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function _c(e){return e.startsWith("v")?e.slice(1):e}function Fe(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}xn();async function jm(e=process.argv.slice(2)){let t=wi("rsp"),n=zm(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(jn(),Ki));return await f()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:f}=await Promise.resolve().then(()=>(Gt(),as));return await f()}if(n.command==="setup"){let{provisionRspRepoStore:f}=await Promise.resolve().then(()=>(Ks(),Ws)),p=await f(process.cwd());return process.stdout.write(sp(p)),0}if(n.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(to(),eo));return await f(),0}if(n.command==="shell-init"){let f=n.positional[1];if(f!=="fish"&&f!=="bash"&&f!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
84
- `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(io(),ro));return process.stdout.write(p(f)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(V(),Ci)),i=r(process.cwd(),process.env,n.storeUri),s=Wm(n.command);if(!i.enabled)return s?await Hm(n.positional):(process.stdout.write(`${Yr()}
85
- `),0);let o=n.command==="git"&&Hr(n.positional)?await Um(process.cwd()):null;if(o){let f=process.hrtime.bigint();return await C(n,await Wr(),f,void 0,o.rootDir)}let{resolveResidentPaths:a,ResidentRspElisionStore:c,ensureResidentServer:l}=await Promise.resolve().then(()=>(Je(),Ut));if(n.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Go(),Uo)),p=be(n.positional,"--socket")??a(process.cwd()).socketPath,_=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));return _.enabled?(await f({socketPath:p,storeUri:_.storeUri,ttlDays:N(n.positional,"--ttl-days")??_.ttlDays,byteBudget:N(n.positional,"--byte-budget")??_.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??_.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??_.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??_.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??_.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??_.idleMs,residentVersion:be(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${Yr()}
86
- `),0)}if(n.command==="warm-resident"){let f=a(process.cwd()),p=be(n.positional,"--socket")??f.socketPath,_=be(n.positional,"--wake-lock")??f.wakeLockPath,E=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));if(!E.enabled)return 0;let{warmResidentServer:h}=await Promise.resolve().then(()=>(Je(),Ut));return await h({...f,socketPath:p,wakeLockPath:_},{storeUri:E.storeUri,ttlDays:N(n.positional,"--ttl-days")??E.ttlDays,byteBudget:N(n.positional,"--byte-budget")??E.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??E.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??E.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??E.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??E.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??E.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:d}=await import("node:url"),m=a(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(d(i.storeUri)))return s?await nt(n,i,m.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
87
- `),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})),g=()=>l(m,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),S=async()=>{let{RspElisionStore:f}=await Promise.resolve().then(()=>(Kt(),cr));return await f.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},v=()=>i.storeUri.endsWith("/red-skills.rdb")?w():S(),T;try{if(!n.command||n.command==="stats"){let f=await v();T=()=>f.close();let p=await f.stats(),_=Fm(f)?await f.telemetryStats(qr(n.positional,30)):Ra(qr(n.positional,30));return process.stdout.write(Qm(p,_,Ym(n.positional))),0}if(n.command==="gains"){let f=await v();if(T=()=>f.close(),!qm(f))return process.stdout.write(`error: rsp gains requires the shared RedDB store
88
- `),1;let p=await f.telemetryGains(qr(n.positional,28));return process.stdout.write(Xm(p)),0}if(n.command==="git"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}if(Hr(n.positional)){let h=process.hrtime.bigint();return await C(n,await Wr(),h,void 0,m.rootDir)}let{runGitWrapper:f}=await Promise.resolve().then(()=>(Ie(),Ar)),p=new Be(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p,m.rootDir)}if(n.command==="gh"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runGhWrapper:f}=await Promise.resolve().then(()=>(Nr(),Br)),p=new Be(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p}));return await C(n,E,_,p,m.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runTestWrapper:f}=await Promise.resolve().then(()=>(Mr(),Cr)),p=new Be(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p}));return await C(n,E,_,p,m.rootDir)}if(n.command==="cat"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runCatWrapper:f}=await Promise.resolve().then(()=>(Fr(),Gr)),p=new Be(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p,m.rootDir)}if(n.command==="exec"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runExecWrapper:f}=await Promise.resolve().then(()=>(fn(),dn)),p=new Be(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p)}if(n.command==="show"&&n.handle){let f=await v();T=()=>f.close();let p=await f.get(n.handle);return p&&"original"in p&&p.original?(process.stdout.write(p.original),0):p?.status==="expired"?(process.stdout.write(`expired ${p.expired_at} \u2014 re-run: ${p.command}
83
+ `}function ya(e){return e.toString("utf8").replace(/�$/g,"")}function jm(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 Um(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Im,Pm,Nm,fn=k(()=>{"use strict";Ie();Ft();Im=8*1024,Pm=2*1024,Nm=1024});ve();import{appendFileSync as wa,existsSync as Vr,mkdirSync as Gm,readdirSync as Fm}from"node:fs";import{dirname as qm,join as Jm}from"node:path";function wi(e){let t={app:e,version:Rc(Fe("__RED_BUILD_VERSION__",()=>"2.52.1")??"0.0.0-dev"),gitSha:Fe("__RED_BUILD_GIT_SHA__",()=>"5f9db66891922f06c3094f96ec4157b7df63fa5c")??"unknown",buildTime:Fe("__RED_BUILD_TIME__",()=>"2026-07-13T12:30:40-03:00")??"unknown",bundleAsset:Fe("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Fe("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Fe("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Rc(e){return e.startsWith("v")?e.slice(1):e}function Fe(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}xn();async function Vm(e=process.argv.slice(2)){let t=wi("rsp"),n=tp(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:f}=await Promise.resolve().then(()=>(jn(),Ki));return await f()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:f}=await Promise.resolve().then(()=>(Ft(),as));return await f()}if(n.command==="setup"){let{provisionRspRepoStore:f}=await Promise.resolve().then(()=>(Ks(),Ws)),p=await f(process.cwd());return process.stdout.write(dp(p)),0}if(n.command==="mcp"){let{runRspMcpServer:f}=await Promise.resolve().then(()=>(to(),eo));return await f(),0}if(n.command==="shell-init"){let f=n.positional[1];if(f!=="fish"&&f!=="bash"&&f!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
84
+ `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(io(),ro));return process.stdout.write(p(f)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(V(),Ci)),i=r(process.cwd(),process.env,n.storeUri),s=Xm(n.command);if(!i.enabled)return s?await Zm(n.positional):(process.stdout.write(`${Yr()}
85
+ `),0);let o=n.command==="git"&&Hr(n.positional)?await Hm(process.cwd()):null;if(o){let f=process.hrtime.bigint();return await C(n,await Wr(),f,void 0,o.rootDir)}let{resolveResidentPaths:a,ResidentRspElisionStore:c,ensureResidentServer:l}=await Promise.resolve().then(()=>(Je(),Gt));if(n.command==="server"){let{runResidentServer:f}=await Promise.resolve().then(()=>(Fo(),Go)),p=Re(n.positional,"--socket")??a(process.cwd()).socketPath,_=r(process.cwd(),process.env,n.storeUri??Re(n.positional,"--store-uri"));return _.enabled?(await f({socketPath:p,storeUri:_.storeUri,ttlDays:B(n.positional,"--ttl-days")??_.ttlDays,byteBudget:B(n.positional,"--byte-budget")??_.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??_.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??_.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??_.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??_.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??_.idleMs,residentVersion:Re(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${Yr()}
86
+ `),0)}if(n.command==="warm-resident"){let f=a(process.cwd()),p=Re(n.positional,"--socket")??f.socketPath,_=Re(n.positional,"--wake-lock")??f.wakeLockPath,E=r(process.cwd(),process.env,n.storeUri??Re(n.positional,"--store-uri"));if(!E.enabled)return 0;let{warmResidentServer:h}=await Promise.resolve().then(()=>(Je(),Gt));return await h({...f,socketPath:p,wakeLockPath:_},{storeUri:E.storeUri,ttlDays:B(n.positional,"--ttl-days")??E.ttlDays,byteBudget:B(n.positional,"--byte-budget")??E.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??E.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??E.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??E.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??E.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??E.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:d}=await import("node:url"),m=a(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(d(i.storeUri)))return s?await nt(n,i,m.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
87
+ `),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})),g=()=>l(m,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),S=async()=>{let{RspElisionStore:f}=await Promise.resolve().then(()=>(zt(),cr));return await f.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},v=()=>i.storeUri.endsWith("/red-skills.rdb")?w():S(),T;try{if(!n.command||n.command==="stats"){let f=await v();T=()=>f.close();let p=await f.stats(),_=Km(f)?await f.telemetryStats(qr(n.positional,30)):Ea(qr(n.positional,30));return process.stdout.write(rp(p,_,np(n.positional))),0}if(n.command==="gains"){let f=await v();if(T=()=>f.close(),!zm(f))return process.stdout.write(`error: rsp gains requires the shared RedDB store
88
+ `),1;let p=await f.telemetryGains(qr(n.positional,28));return process.stdout.write(ip(p)),0}if(n.command==="git"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}if(Hr(n.positional)){let h=process.hrtime.bigint();return await C(n,await Wr(),h,void 0,m.rootDir)}let{runGitWrapper:f}=await Promise.resolve().then(()=>(Ie(),Ar)),p=new Ne(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p,m.rootDir)}if(n.command==="gh"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runGhWrapper:f}=await Promise.resolve().then(()=>(Br(),Nr)),p=new Ne(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p}));return await C(n,E,_,p,m.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runTestWrapper:f}=await Promise.resolve().then(()=>(Mr(),Cr)),p=new Ne(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p}));return await C(n,E,_,p,m.rootDir)}if(n.command==="cat"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runCatWrapper:f}=await Promise.resolve().then(()=>(Fr(),Gr)),p=new Ne(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p,m.rootDir)}if(n.command==="exec"){try{await P(g)}catch(h){return await nt(n,i,m.rootDir,h)}let{runExecWrapper:f}=await Promise.resolve().then(()=>(fn(),dn)),p=new Ne(()=>P(w));T=()=>p.close();let _=process.hrtime.bigint(),E=await P(()=>f(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await C(n,E,_,p)}if(n.command==="show"&&n.handle){let f=await v();T=()=>f.close();let p=await f.get(n.handle);return p&&"original"in p&&p.original?(process.stdout.write(p.original),0):p?.status==="expired"?(process.stdout.write(`expired ${p.expired_at} \u2014 re-run: ${p.command}
89
89
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
90
90
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
91
- `),2}catch(f){if(s)return await zr("wrapper failed",n.positional,f,m.rootDir);throw f}finally{await T?.()}}function be(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function N(e,t){let n=be(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Hr(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Um(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Je(),Ut)),n=t(e);return Vr(n.socketPath)?n:null}async function Wr(){if(Gm(process.cwd()))return{stdout:Buffer.from(`git empty
91
+ `),2}catch(f){if(s)return await zr("wrapper failed",n.positional,f,m.rootDir);throw f}finally{await T?.()}}function Re(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function B(e,t){let n=Re(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Hr(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Hm(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Je(),Gt)),n=t(e);return Vr(n.socketPath)?n:null}async function Wr(){if(Wm(process.cwd()))return{stdout:Buffer.from(`git empty
92
92
  `),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
93
93
  `),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
94
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function Gm(e){try{return!Vr(`${e}/.git`)||Vr(`${e}/.git/index`)?!1:Lm(e).every(t=>t===".git")}catch{return!1}}function Fm(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function qm(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Be=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}},Kr=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function nt(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Kr,s=process.hrtime.bigint();try{if(e.command==="git"){if(Hr(e.positional))return await C(e,await Wr(),s,i,n);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Ie(),Ar)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Nr(),Br)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Mr(),Cr)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Fr(),Gr)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(fn(),dn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i)}}catch(o){return await zr("wrapper failed",e.positional,o,n)}finally{await i.close()}return await zr("wrapper failed",e.positional,r,n)}async function C(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 Jm(i,e,t,s,r.lastResponseMetrics()):Vm(i,e,t,s),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Jm(e,t,n,r,i){let s=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(sn(),kr));await a(e,{collection:c,ts:new Date().toISOString(),command:ba(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 Vm(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Mm(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:ba(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
95
- `;try{ha(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;Nm(Cm(o),{recursive:!0}),ha(o,a,{encoding:"utf8",mode:384})}}catch{}}async function zr(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
96
- `);let i=await wa(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(sn(),kr));await s(r,{collection:o,ts:new Date().toISOString(),command:_a(t),reason:e})}return i}async function Hm(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Yr()}, passing through
97
- `),await wa(e)}function Yr(){return"rsp is not enabled in this directory; run /red-setup"}async function P(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Wm(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function wa(e){if(e[0]==="exec")return await Km(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)}
98
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Km(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(fn(),dn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
94
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function Wm(e){try{return!Vr(`${e}/.git`)||Vr(`${e}/.git/index`)?!1:Fm(e).every(t=>t===".git")}catch{return!1}}function Km(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function zm(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Ne=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}},Kr=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function nt(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Kr,s=process.hrtime.bigint();try{if(e.command==="git"){if(Hr(e.positional))return await C(e,await Wr(),s,i,n);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Ie(),Ar)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Br(),Nr)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Mr(),Cr)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Fr(),Gr)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(fn(),dn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i)}}catch(o){return await zr("wrapper failed",e.positional,o,n)}finally{await i.close()}return await zr("wrapper failed",e.positional,r,n)}async function C(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 Ym(i,e,t,s,r.lastResponseMetrics()):Qm(i,e,t,s),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Ym(e,t,n,r,i){let s=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(sn(),kr));await a(e,{collection:c,ts:new Date().toISOString(),command:_a(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 Qm(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Jm(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:_a(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
95
+ `;try{wa(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;Gm(qm(o),{recursive:!0}),wa(o,a,{encoding:"utf8",mode:384})}}catch{}}async function zr(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
96
+ `);let i=await ba(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(sn(),kr));await s(r,{collection:o,ts:new Date().toISOString(),command:Ra(t),reason:e})}return i}async function Zm(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Yr()}, passing through
97
+ `),await ba(e)}function Yr(){return"rsp is not enabled in this directory; run /red-setup"}async function P(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Xm(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function ba(e){if(e[0]==="exec")return await ep(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)}
98
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function ep(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(fn(),dn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
99
99
  `),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)}
100
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function ba(e){return _a(e.positional)}function _a(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 zm(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 qr(e,t){let n=be(e,"--since")??e.find(s=>s.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let i=Number(r[1]);return Number.isFinite(i)&&i>0?i:t}function Ym(e){return e.includes("--full")}function Qm(e,t=Ra(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: ${Zm(t.savings)}`,` dollars_saved_estimate_usd: ${ep(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...tp(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...np(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${ip(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:",...rp(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Jr(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Jr(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: ${Jr(t.latency.store_elapsed_ms_avg)}`,""].join(`
101
- `)}function Xm(e){return`${$(e)}
102
- `}function Zm(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function ep(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?ot(e.dollars_saved_estimate_usd):`${ot(e.dollars_saved_low_usd)}-${ot(e.dollars_saved_high_usd)} (estimate_midpoint: ${ot(e.dollars_saved_estimate_usd)})`}function tp(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function np(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 rp(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Jr(e){return e==null?"none":String(e)}function ip(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Ra(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function sp(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
103
- `)}import.meta.url===`file://${process.argv[1]}`&&jm().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
104
- `),process.exit(1)});export{jm as main,sp as renderSetupResult,Qm as renderStats};
100
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function _a(e){return Ra(e.positional)}function Ra(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 tp(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 qr(e,t){let n=Re(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 np(e){return e.includes("--full")}function rp(e,t=Ea(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: ${sp(t.savings)}`,` dollars_saved_estimate_usd: ${op(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...ap(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...cp(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${up(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:",...lp(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Jr(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Jr(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: ${Jr(t.latency.store_elapsed_ms_avg)}`,""].join(`
101
+ `)}function ip(e){return`${$(e)}
102
+ `}function sp(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function op(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?ot(e.dollars_saved_estimate_usd):`${ot(e.dollars_saved_low_usd)}-${ot(e.dollars_saved_high_usd)} (estimate_midpoint: ${ot(e.dollars_saved_estimate_usd)})`}function ap(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function cp(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 lp(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Jr(e){return e==null?"none":String(e)}function up(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Ea(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function dp(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
103
+ `)}import.meta.url===`file://${process.argv[1]}`&&Vm().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
104
+ `),process.exit(1)});export{Vm as main,dp as renderSetupResult,rp as renderStats};