@reddb-io/red-skills 2.43.0 → 2.43.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,81 +1,82 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Ao=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>{for(var n in t)Ao(e,n,{get:t[n],enumerable:!0})};function _r(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 Rr(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 bt(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 en(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 $(e,t){try{return t()}catch(n){throw n instanceof N?n:n instanceof Error?new N(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Er(e){return e==="true"||e==="false"||e==="null"}function $o(e){if(!e||!Po.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function gt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=bt(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let R=e.length-r.length+f+1;i=e.indexOf("[",R)}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 m=f.trim();throw new SyntaxError(m===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${m}" between bracket and fields segment`)}return}let R=e.indexOf("}",c);R!==-1&&(a=R+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let u=Math.max(s+1,a),d=e.slice(u,o);if(d!==""){if(n){let f=d.trim();throw new SyntaxError(f===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${f}" between bracket segment and colon`)}return}let l;if(i>0){let f=e.slice(0,i).trim();l=f.startsWith('"')?Xt(f):f}let p=e.slice(o+1).trim(),w=e.slice(i+1,s),b;try{b=Bo(w,t)}catch(f){if(n)throw f;return}let{length:T,delimiter:S}=b,g;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let R=e.slice(c+1,f),m=Co(R,S);if(m!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${yr(S)}" but fields segment contains unquoted "${yr(m)}"`);return}g=tn(R,S).map(E=>Xt(E.trim()))}}return{header:{key:l,length:T,delimiter:S,fields:g},inlineValues:p||void 0}}function Bo(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=yt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=yt.pipe,n=n.slice(0,-1)),!No.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 Co(e,t){for(let n of Lo)if(n!==t&&en(e,n)!==-1)return n}function yr(e){return e===" "?"\\t":e}function tn(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 kr(e){return e.map(t=>_t(t))}function _t(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Xt(t);if(Er(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if($o(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Xt(e){let t=e.trim();if(t.startsWith('"')){let n=bt(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 Rr(t.slice(1,n))}return t}function jo(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 Mo(e,t){let n=bt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Rr(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 Uo(e,t){let n=e[t]==='"';return{...n?Mo(e,t):jo(e,t),isQuoted:n}}function Sr(e){return e.trim().startsWith("[")&&en(e,":")!==-1}function qo(e){return en(e,":")!==-1}function Fo(){return{lineNumber:0,blankLines:[]}}function Go(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=gr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=gr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new N("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new N(`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*Vo(e,t,n,r){for(let i of e){let s=Go(i,r,t,n);s!==void 0&&(yield s)}}function gr(e,t){return Math.floor(e/t)}function Ke(e,t,n,r,i){if(r.strict&&e!==t)throw new N(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Jo(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new N(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Ho(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ko(e.content,n.delimiter))throw new N(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Tr(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new N(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ko(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Yo(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=Fo(),i=new Wo(Vo(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(Sr(s.content)){let a=$(s,()=>gt(s.content,j,n.strict));if(a){i.advanceSync(),yield*ht(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!wr(s)){yield{type:"primitive",value:$(s,()=>_t(s.content.trim()))};return}if(!wr(s)&&i.peekSync()?.depth===0)throw new N("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*Oe(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Oe(a,i,0,n,o)}yield{type:"endObject"}}function hr(e,t,n){if(n){if(n.has(e))throw new N(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Oe(e,t,n,r,i){let s=e.content,o=$(e,()=>gt(s,j,r.strict));if(o&&o.header.key!==void 0){hr(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*ht(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=$(e,()=>Uo(s,0)),u=s.indexOf(":",a.length),d=u>=0?s.slice(u+1).trim():"";if(hr(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!d){let l=t.peekSync();if(l&&l.depth>n){yield{type:"startObject"},yield*zo(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(d==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:$(e,()=>_t(d))}}function*zo(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*Oe(s,e,r,n,i);else break}}function*ht(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Qo(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Xo(e,n,r,i,s),yield{type:"endArray"};return}yield*Zo(e,n,r,i,s),yield{type:"endArray"}}function*Qo(e,t,n,r){if(!t.trim()){Ke(0,e.length,"inline array items",n,r);return}let i=$(r,()=>tn(t,e.delimiter)),s=$(r,()=>kr(i));Ke(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Xo(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let d=t.peekSync();if(!d||d.depth<s)break;if(d.depth===s){a===void 0&&(a=d.lineNumber),c=d.lineNumber,u=d,t.advanceSync();let l=$(d,()=>tn(d.content,e.delimiter));Ke(l.length,e.fields.length,"tabular row values",r,d);let p=$(d,()=>kr(l));yield*ta(e.fields,p),o++}else break}Ke(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Tr(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Ho(t.peekSync(),s,e)}function*Zo(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let d=t.peekSync();if(!d||d.depth<s)break;let l=d.content.startsWith("- ")||d.content==="-";if(d.depth===s&&l){a===void 0&&(a=d.lineNumber),c=d.lineNumber,u=d,yield*ea(t,s,r);let p=t.current();p&&(c=p.lineNumber,u=p),o++}else break}Ke(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Tr(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Jo(t.peekSync(),s,e.length)}function*ea(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 N('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(Sr(i)){let a=$(s,()=>gt(i,j,n.strict));if(a){yield*ht(a.header,a.inlineValues,e,t,n,s);return}}let o=$(s,()=>gt(i,j,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*ht(a,o.inlineValues,e,t+1,n,s);let u=t+1;for(;!e.atEndSync();){let d=e.peekSync();if(!d||d.depth<u)break;if(d.depth===u&&!d.content.startsWith("- "))e.advanceSync(),yield*Oe(d,e,u,n,c);else break}yield{type:"endObject"};return}if(qo(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Oe(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<c)break;if(u.depth===c&&!u.content.startsWith("- "))e.advanceSync(),yield*Oe(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:$(s,()=>_t(i))}}function wr(e){let t=e.content;if(t.startsWith('"')){let n=bt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*ta(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 J(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 J(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(J);if(e instanceof Set)return Array.from(e).map(J);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),J(n)]));if(na(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=J(e[n]));return t}return null}function fe(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function X(e){return Array.isArray(e)}function x(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function We(e){return Object.keys(e).length===0}function na(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Ye(e){return e.length===0||e.every(t=>fe(t))}function ra(e){return e.length===0||e.every(t=>X(t))}function vr(e){return e.length===0||e.every(t=>x(t))}function oa(e){return/^[A-Z_][\w.]*$/i.test(e)}function xr(e){return/^[A-Z_]\w*$/i.test(e)}function aa(e,t=j){return!(!e||e!==e.trim()||Er(e)||ca(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function ca(e){return ia.test(e)||sa.test(e)}function pt(e,t){if(Array.isArray(e))return e.map(n=>pt(n,t));if(x(e)){let n={},r=e[Or];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(u=>xr(u))){ua(n,c,pt(s,t),t);continue}}let a=pt(s,t);if(i in n){let c=n[i];if(rn(c,a))nn(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function ua(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],u=i[c];if(u===void 0){let d={};i[c]=d,i=d}else if(x(u))i=u;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof u}`);let d={};i[c]=d,i=d}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(rn(o,n))nn(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 nn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(rn(s,i))nn(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 rn(e,t){return x(e)&&x(t)}function da(e){let t={stack:[],root:void 0};for(let n of e)la(t,n);return fa(t)}function la(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,Or,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function fa(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function ma(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!x(t))return;let{segments:a,tail:c,leafValue:u}=pa(e,t,o??r.flattenDepth);if(a.length<2||!a.every(p=>xr(p)))return;let d=ya(a),l=s?`${s}.${d}`:d;if(!n.includes(d)&&!(i&&i.has(l)))return{foldedKey:d,remainder:c,leafValue:u,segmentCount:a.length}}function pa(e,t,n){let r=[e],i=t;for(;r.length<n&&x(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!x(i)||We(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ya(e){return e.join(".")}function Ae(e,t){return e===null?Io:typeof e=="boolean"||typeof e=="number"?String(e):ga(e,t)}function ga(e,t=j){return aa(e,t)?e:`"${_r(e)}"`}function Ie(e){return oa(e)?e:`"${_r(e)}"`}function Dr(e,t=j){return e.map(n=>Ae(n,t)).join(t)}function me(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ie(n)),s+=`[${e}${i!==j?i:""}]`,r){let o=r.map(a=>Ie(a));s+=`{${o.join(i)}}`}return s+=":",s}function*ha(e,t,n){if(fe(e)){let r=Ae(e,t.delimiter);r!==""&&(yield r);return}X(e)?yield*Zt(void 0,e,n,t):x(e)&&(yield*De(e,n,t))}function*De(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*wa(c,u,t,n,o,r,i,a)}function*wa(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,u=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let l=ma(e,t,i,r,s,o,u);if(l){let{foldedKey:p,remainder:w,leafValue:b,segmentCount:T}=l,S=Ie(p);if(w===void 0){if(fe(b)){yield A(n,`${S}: ${Ae(b,r.delimiter)}`,r.indent);return}else if(X(b)){yield*Zt(p,b,n,r);return}else if(x(b)&&We(b)){yield A(n,`${S}:`,r.indent);return}}if(x(w)){yield A(n,`${S}:`,r.indent);let g=u-T,f=o?`${o}.${p}`:p;yield*De(w,n+1,r,s,f,g);return}}}let d=Ie(e);fe(t)?yield A(n,`${d}: ${Ae(t,r.delimiter)}`,r.indent):X(t)?yield*Zt(e,t,n,r):x(t)&&(yield A(n,`${d}:`,r.indent),We(t)||(yield*De(t,n+1,r,s,c,u)))}function*Zt(e,t,n,r){if(t.length===0){yield A(n,e!=null?`${Ie(e)}: []`:"[]",r.indent);return}if(Ye(t)){yield A(n,Rt(t,r.delimiter,e),r.indent);return}if(ra(t)&&t.every(i=>Ye(i))){yield*ba(e,t,n,r);return}if(vr(t)){let i=Ar(t);i?yield*_a(e,t,i,n,r):yield*br(e,t,n,r);return}yield*br(e,t,n,r)}function*ba(e,t,n,r){yield A(n,me(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(Ye(i)){let s=Rt(i,r.delimiter);yield C(n+1,s,r.indent)}}function Rt(e,t,n){let r=me(e.length,{key:n,delimiter:t}),i=Dr(e,t);return e.length===0?r:`${r} ${i}`}function*_a(e,t,n,r,i){yield A(r,me(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Ir(t,n,r+1,i)}function Ar(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Ra(e,n))return n}function Ra(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)||!fe(n[r]))return!1}return!0}function*Ir(e,t,n,r){for(let i of e)yield A(n,Dr(t.map(s=>i[s]),r.delimiter),r.indent)}function*br(e,t,n,r){yield A(n,me(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*sn(i,n+1,r)}function*Ea(e,t,n){if(We(e)){yield A(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(X(s)&&vr(s)){let c=Ar(s);if(c){yield C(t,me(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Ir(s,c,t+2,n),o.length>0&&(yield*De(Object.fromEntries(o),t+1,n));return}}let a=Ie(i);if(fe(s))yield C(t,`${a}: ${Ae(s,n.delimiter)}`,n.indent);else if(X(s))if(s.length===0)yield C(t,`${a}: []`,n.indent);else if(Ye(s))yield C(t,`${a}${Rt(s,n.delimiter)}`,n.indent);else{yield C(t,`${a}${me(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*sn(c,t+2,n)}else x(s)&&(yield C(t,`${a}:`,n.indent),We(s)||(yield*De(s,t+2,n)));o.length>0&&(yield*De(Object.fromEntries(o),t+1,n))}function*sn(e,t,n){if(fe(e))yield C(t,Ae(e,n.delimiter),n.indent);else if(X(e))if(Ye(e))yield C(t,Rt(e,n.delimiter),n.indent);else{yield C(t,me(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*sn(r,t+1,n)}else x(e)&&(yield*Ea(e,t,n))}function A(e,t,n){return" ".repeat(n*e)+t}function C(e,t,n){return A(e,"- "+t,n)}function ka(e,t){let n=t("",e,[]);return n===void 0?wt(e,t,[]):wt(J(n),t,[])}function wt(e,t,n){return x(e)?Sa(e,t,n):X(e)?Ta(e,t,n):e}function Sa(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]=wt(J(a),t,o))}return r}function Ta(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=J(a);r.push(wt(c,t,o))}return r}function O(e,t){return Array.from(Pr(e,t)).join(`
5
- `)}function on(e,t){return $r(e.split(`
6
- `),t)}function Pr(e,t){let n=J(e),r=va(t);return ha(r.replacer?ka(n,r.replacer):n,r,0)}function $r(e,t){let n=xa(t),r=da(Yo(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?pt(r,n.strict):r}function va(e){return{indent:e?.indent??2,delimiter:e?.delimiter??j,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function xa(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Io,yt,j,N,Po,No,Lo,Wo,ia,sa,Or,Nr=k(()=>{Io="null",yt={comma:",",tab:" ",pipe:"|"},j=yt.comma;N=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}};Po=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;No=/^(?:0|[1-9]\d*)$/;Lo=[","," ","|"];Wo=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}};ia=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,sa=/^0\d+$/;Or=Symbol("quotedKey")});var Pe=k(()=>{"use strict";Nr()});import{existsSync as Da,readFileSync as yf}from"node:fs";import{dirname as Aa,join as Ia}from"node:path";function Lr(e,t){let n=e;for(let r=0;r<16;r++){let i=Ia(n,t);if(Da(i))return i;let s=Aa(n);if(s===n)break;n=s}return null}function Pa(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function an(e,t){let n=[];for(let r of e.split(`
7
- `)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let u=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(l=>l.key).join(".")===t)return Pa(u)}}var Cr=k(()=>{});var Gr={};P(Gr,{DEFAULT_RSP_BYTE_BUDGET:()=>W,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>H,DEFAULT_RSP_STORE_PATH:()=>Et,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>St,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>qr,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Fr,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>kt,DEFAULT_RSP_TTL_DAYS:()=>K,resolveRspConfig:()=>ee});import{readFileSync as $a}from"node:fs";import{dirname as jr,join as Mr,resolve as Ur}from"node:path";function ee(e,t,n){let r=Lr(Ur(e),Mr(".red","config.yaml")),i=r?jr(jr(r)):e,s=r?$a(r,"utf8"):"",o=an(s,"rsp.enabled")==="true",a=pe(Z(s,"rsp.ttlDays"),K),c=pe(Z(s,"rsp.byteBudget"),W),u=pe(Z(s,"rsp.telemetryTtlDays"),kt),d=pe(Z(s,"rsp.telemetryByteBudget")??Z(s,"rsp.byteBudget"),St),l=pe(cn(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Z(s,"rsp.telemetryDrainIntervalMs"),qr),p=pe(cn(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Z(s,"rsp.telemetryDrainTimeoutMs"),Fr),w=pe(cn(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Z(s,"rsp.heavyGitByteThreshold"),H),b=n??t.RSP_STORE_URI??`file://${Mr(Ur(i),Et)}`;return{enabled:o,storeUri:b,ttlDays:a,byteBudget:c,telemetryTtlDays:u,telemetryByteBudget:d,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:p,heavyGitByteThreshold:w}}function Z(e,t){let n=an(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function pe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function cn(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var H,Et,K,W,kt,St,qr,Fr,M=k(()=>{"use strict";Cr();H=8*1024,Et=".red/tmp/red-skills.rdb",K=7,W=64*1024*1024,kt=90,St=4*1024*1024,qr=3e4,Fr=2e3});import{createConnection as Na}from"node:net";async function Ne(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Na(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function u(d){o||(o=!0,clearTimeout(c),d())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
8
- `)}),s.on("data",d=>{a+=d.toString("utf8");let l=a.indexOf(`
9
- `);if(l<0)return;let p=a.slice(0,l);u(()=>{try{r(JSON.parse(p))}catch(w){i(w)}}),s.end()}),s.on("error",d=>u(()=>i(d))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var un=k(()=>{});var Vr=k(()=>{"use strict";un()});import{createHash as Ba,randomUUID as Yr}from"node:crypto";import{spawn as zr}from"node:child_process";import{constants as dn}from"node:fs";import{readFileSync as La}from"node:fs";import{mkdir as ln,open as Ca,rm as fn}from"node:fs/promises";import{tmpdir as ja}from"node:os";import{dirname as Tt,join as Y,resolve as mn}from"node:path";import{fileURLToPath as Ma}from"node:url";function ye(e){let t=Va(e)??mn(e),n=Ga(t);return{rootDir:t,socketPath:Y(n,"rsp.sock"),lockPath:Y(n,"rsp.lock"),wakeLockPath:Y(t,".red","tmp","rsp.wake.lock"),summaryPath:Y(t,".red","tmp","rsp-status-summary.json")}}async function vt(e,t){if(await ln(Tt(e.socketPath),{recursive:!0,mode:448}),await Kr(e.socketPath,t))return;let n=await Zr(e.lockPath);if(n)try{if(await Kr(e.socketPath,t))return;await qa(e.socketPath);let r=Fa(e,t);await Jr(e.socketPath,r);return}finally{await n.close(),await fn(e.lockPath,{force:!0})}await Jr(e.socketPath)}async function ge(e,t=200){try{return await Qr(e,t)!=null}catch{return!1}}async function Qr(e,t=200){let n=await Ne({socketPath:e,timeoutMs:t},{id:Yr(),op:"ping"});return n.ok?Wa(n.value)?{version:Ya(n.value.version)}:{}:null}async function xt(e,t){if(await ln(Tt(e.socketPath),{recursive:!0,mode:448}),await ge(e.socketPath,50))return!1;let n=await Zr(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=ei(t);return zr(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),"--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 Xr(e,t){try{await vt(e,t)}finally{await fn(e.wakeLockPath,{force:!0})}}async function Jr(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await ge(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 qa(e){await fn(e,{force:!0})}async function Zr(e){await ln(Tt(e),{recursive:!0,mode:448});try{return await Ca(e,dn.O_CREAT|dn.O_EXCL|dn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Fa(e,t){let[n,r]=ei(t),i=zr(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),"--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 ei(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?mn(process.argv[1]):Ma(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Ga(e){let t=Ba("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=Y(n,"red-skills",t);if(Y(i,"rsp.sock").length<Ua)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Y(ja(),`red-skills-${r}`,t)}function Va(e){let t=mn(e);for(let n=0;n<32;n++){try{if(Hr(Y(t,".red","config.yaml"))!=null||Hr(Y(t,".git","HEAD"))!=null)return t}catch{}let r=Tt(t);if(r===t)return null;t=r}return null}function Hr(e){try{return La(e,"utf8")}catch{return null}}async function Kr(e,t){let n=await Qr(e).catch(()=>null);return n?Ha(t.clientVersion,n.version)?(await Ja(e,t.clientVersion),await za(e),!1):!0:!1}async function Ja(e,t){try{await Ne({socketPath:e,timeoutMs:200},{id:Yr(),op:"handover",clientVersion:t})}catch{}}function Ha(e,t){return!e||!t?!1:Ka(e,t)>0}function Ka(e,t){let n=Wr(e),r=Wr(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Wr(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 Wa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ya(e){return typeof e=="string"&&e.length>0?e:void 0}async function za(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await ge(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ua,ti=k(()=>{un();Ua=108});var Ot={};P(Ot,{ResidentRspElisionStore:()=>ze,ensureResidentServer:()=>vt,kickResidentServer:()=>xt,pingResident:()=>ge,resolveResidentPaths:()=>ye,warmResidentServer:()=>Xr});import{randomUUID as Qa}from"node:crypto";function ni(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ze,Be=k(()=>{"use strict";Vr();ti();ze=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?ni(n)&&n.status==="expired"?n:!ni(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){await vt(this.paths,this.config);let n=await Ne(this.paths,{...t,id:Qa()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var di={};P(di,{RSP_WRAPPER_CAPABILITIES:()=>pn,formatHookDecision:()=>ai,hookDecisionFromClaudePreExecJson:()=>oi,rewriteCommand:()=>si,rewriteTableFromCapabilities:()=>ii,runClaudePreExecHook:()=>tc});import{readFileSync as ri}from"node:fs";import{existsSync as Xa}from"node:fs";import{fileURLToPath as Za}from"node:url";function ii(e){let t=new Map;for(let n of e)t.set(Qe(n.command),["rsp",...n.wrapper]);return t}function si(e){let t=cc(e);if(!t)return{kind:"passthrough"};if(t.length>0&&ci(t[0]))return{kind:"passthrough"};let n=ec.get(Qe(t));if(!n)return{kind:"passthrough"};let r=pn.find(i=>Qe(i.command)===Qe(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??Qe(t)}}async function oi(e,t){let n=uc(e),r=L(n,["cwd"])||L(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??nc)(r))return{kind:"passthrough",reason:"disabled"};let s=ac(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??si)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??rc)(r)?o:(await(t.wakeResident??ic)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function ai(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
- `,status:0}:{stdout:"",status:1}}async function tc(e){let t=e?ri(e,"utf8"):ri(0,"utf8"),n=await oi(t,{cwd:process.cwd()}),r=ai(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function nc(e){return ee(e,process.env).enabled}async function rc(e){let t=ye(e);return await ge(t.socketPath,50)}async function ic(e){let t=ee(e,process.env);if(!t.enabled||!oc(t))return;let n=ye(e);await xt(n,sc(t))}function sc(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs}}function oc(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Xa(Za(e.storeUri))}catch{return!1}}function ac(e){return L(e,["tool_input","command"])||L(e,["tool_input","cmd"])||L(e,["tool_input","args","command"])||L(e,["input","command"])||L(e,["input","cmd"])||L(e,["arguments","command"])||L(e,["arguments","cmd"])||L(e,["command"])||L(e,["cmd"])}function cc(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("=")&&ci(r))?null:n}function ci(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Qe(e){return e.join("\0")}function uc(e){try{let t=JSON.parse(e);return ui(t)?t:{}}catch{return{}}}function L(e,t){let n=e;for(let r of t){if(!ui(n))return"";n=n[r]}return typeof n=="string"?n:""}function ui(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pn,ec,li=k(()=>{"use strict";M();Be();pn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],ec=ii(pn)});var Si={};P(Si,{NORMALIZATION_ALLOWLIST:()=>_i,NORMALIZE_ANSI:()=>pi,NORMALIZE_BLANK_LINES:()=>hi,NORMALIZE_CR_PROGRESS:()=>yi,NORMALIZE_JSON_TOON:()=>bi,NORMALIZE_TRAILING_WHITESPACE:()=>gi,formatNormalizeDecision:()=>ki,hookDecisionFromClaudePostExecJson:()=>Ei,normalizeOutput:()=>Ri,runClaudePostExecHook:()=>dc,transcodeJsonToToon:()=>wi});import{readFileSync as fi}from"node:fs";function wi(e,t){let n=t?.encode??O,r=t?.decode??on,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 yn(s,a)?o:e}function Ri(e){let t=e;for(let n of _i)t=n.apply(t);return t}async function Ei(e,t){let n=mc(e),r=pc(n,["cwd"])||t.cwd;if(!await(t.isEnabled??fc)(r))return{kind:"passthrough",reason:"disabled"};let s=yc(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??Ri)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function ki(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function dc(e){let t=e?fi(e,"utf8"):fi(0,"utf8"),n=await Ei(t,{cwd:process.cwd()}),r=ki(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function lc(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&&mi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&mi(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function mi(e){return e>=32&&e<=63}function fc(e){return ee(e,process.env).enabled}function mc(e){try{let t=JSON.parse(e);return gn(t)?t:{}}catch{return{}}}function pc(e,t){let n=e;for(let r of t){if(!gn(n))return"";n=n[r]}return typeof n=="string"?n:""}function yc(e,t){let n=e[t];return gn(n)?n:null}function gn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yn(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)=>yn(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)&&yn(n[o],r[o]))}var pi,yi,gi,hi,bi,_i,Ti=k(()=>{"use strict";Pe();M();pi={id:"ansi",apply:lc},yi={id:"cr-progress",apply:e=>e.split(`
3
+ var $o=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>{for(var n in t)$o(e,n,{get:t[n],enumerable:!0})};function Ir(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 Pr(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 sn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function N(e,t){try{return t()}catch(n){throw n instanceof $?n:n instanceof Error?new $(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Nr(e){return e==="true"||e==="false"||e==="null"}function Co(e){if(!e||!Lo.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function wt(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 _=e.length-r.length+f+1;i=e.indexOf("[",_)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let p=f.trim();throw new SyntaxError(p===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${p}" between bracket and fields segment`)}return}let _=e.indexOf("}",c);_!==-1&&(a=_+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let u=Math.max(s+1,a),l=e.slice(u,o);if(l!==""){if(n){let f=l.trim();throw new SyntaxError(f===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${f}" between bracket segment and colon`)}return}let d;if(i>0){let f=e.slice(0,i).trim();d=f.startsWith('"')?nn(f):f}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),b;try{b=jo(w,t)}catch(f){if(n)throw f;return}let{length:T,delimiter:S}=b,g;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let _=e.slice(c+1,f),p=qo(_,S);if(p!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${vr(S)}" but fields segment contains unquoted "${vr(p)}"`);return}g=on(_,S).map(E=>nn(E.trim()))}}return{header:{key:d,length:T,delimiter:S,fields:g},inlineValues:m||void 0}}function jo(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=ht.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=ht.pipe,n=n.slice(0,-1)),!Mo.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 qo(e,t){for(let n of Uo)if(n!==t&&sn(e,n)!==-1)return n}function vr(e){return e===" "?"\\t":e}function on(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 $r(e){return e.map(t=>Et(t))}function Et(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return nn(t);if(Nr(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Co(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function nn(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 Pr(t.slice(1,n))}return t}function Go(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 Fo(e,t){let n=_t(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Pr(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 Jo(e,t){let n=e[t]==='"';return{...n?Fo(e,t):Go(e,t),isQuoted:n}}function Br(e){return e.trim().startsWith("[")&&sn(e,":")!==-1}function Vo(e){return sn(e,":")!==-1}function Ho(){return{lineNumber:0,blankLines:[]}}function Ko(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 $("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new $(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Wo(e,t,n,r){for(let i of e){let s=Ko(i,r,t,n);s!==void 0&&(yield s)}}function xr(e,t){return Math.floor(e/t)}function Ye(e,t,n,r,i){if(r.strict&&e!==t)throw new $(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Yo(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new $(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function zo(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Qo(e.content,n.delimiter))throw new $(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Lr(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new $(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Qo(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Zo(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=Ho(),i=new Xo(Wo(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(Br(s.content)){let a=N(s,()=>wt(s.content,M,n.strict));if(a){i.advanceSync(),yield*bt(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Ar(s)){yield{type:"primitive",value:N(s,()=>Et(s.content.trim()))};return}if(!Ar(s)&&i.peekSync()?.depth===0)throw new $("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Ie(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Ie(a,i,0,n,o)}yield{type:"endObject"}}function Or(e,t,n){if(n){if(n.has(e))throw new $(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Ie(e,t,n,r,i){let s=e.content,o=N(e,()=>wt(s,M,r.strict));if(o&&o.header.key!==void 0){Or(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*bt(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=N(e,()=>Jo(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Or(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!l){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*ea(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(l==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:N(e,()=>Et(l))}}function*ea(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*Ie(s,e,r,n,i);else break}}function*bt(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*ta(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*na(e,n,r,i,s),yield{type:"endArray"};return}yield*ra(e,n,r,i,s),yield{type:"endArray"}}function*ta(e,t,n,r){if(!t.trim()){Ye(0,e.length,"inline array items",n,r);return}let i=N(r,()=>on(t,e.delimiter)),s=N(r,()=>$r(i));Ye(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*na(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;if(l.depth===s){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,t.advanceSync();let d=N(l,()=>on(l.content,e.delimiter));Ye(d.length,e.fields.length,"tabular row values",r,l);let m=N(l,()=>$r(d));yield*sa(e.fields,m),o++}else break}Ye(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Lr(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&zo(t.peekSync(),s,e)}function*ra(e,t,n,r,i){let s=n+1,o=0,a,c,u=i;for(;!t.atEndSync()&&o<e.length;){let l=t.peekSync();if(!l||l.depth<s)break;let d=l.content.startsWith("- ")||l.content==="-";if(l.depth===s&&d){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,yield*ia(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}Ye(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Lr(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Yo(t.peekSync(),s,e.length)}function*ia(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new $('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(Br(i)){let a=N(s,()=>wt(i,M,n.strict));if(a){yield*bt(a.header,a.inlineValues,e,t,n,s);return}}let o=N(s,()=>wt(i,M,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*bt(a,o.inlineValues,e,t+1,n,s);let u=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<u)break;if(l.depth===u&&!l.content.startsWith("- "))e.advanceSync(),yield*Ie(l,e,u,n,c);else break}yield{type:"endObject"};return}if(Vo(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Ie(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<c)break;if(u.depth===c&&!u.content.startsWith("- "))e.advanceSync(),yield*Ie(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:N(s,()=>Et(i))}}function Ar(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*sa(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 V(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 V(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(V);if(e instanceof Set)return Array.from(e).map(V);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),V(n)]));if(oa(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=V(e[n]));return t}return null}function pe(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function Z(e){return Array.isArray(e)}function O(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ze(e){return Object.keys(e).length===0}function oa(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Qe(e){return e.length===0||e.every(t=>pe(t))}function aa(e){return e.length===0||e.every(t=>Z(t))}function Cr(e){return e.length===0||e.every(t=>O(t))}function la(e){return/^[A-Z_][\w.]*$/i.test(e)}function Mr(e){return/^[A-Z_]\w*$/i.test(e)}function da(e,t=M){return!(!e||e!==e.trim()||Nr(e)||fa(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function fa(e){return ca.test(e)||ua.test(e)}function gt(e,t){if(Array.isArray(e))return e.map(n=>gt(n,t));if(O(e)){let n={},r=e[jr];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(u=>Mr(u))){ma(n,c,gt(s,t),t);continue}}let a=gt(s,t);if(i in n){let c=n[i];if(cn(c,a))an(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 ma(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],u=i[c];if(u===void 0){let l={};i[c]=l,i=l}else if(O(u))i=u;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof u}`);let l={};i[c]=l,i=l}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(cn(o,n))an(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 an(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(cn(s,i))an(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 cn(e,t){return O(e)&&O(t)}function pa(e){let t={stack:[],root:void 0};for(let n of e)ya(t,n);return ga(t)}function ya(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,jr,{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 ga(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 ha(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!O(t))return;let{segments:a,tail:c,leafValue:u}=wa(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Mr(m)))return;let l=ba(a),d=s?`${s}.${l}`:l;if(!n.includes(l)&&!(i&&i.has(d)))return{foldedKey:l,remainder:c,leafValue:u,segmentCount:a.length}}function wa(e,t,n){let r=[e],i=t;for(;r.length<n&&O(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!O(i)||ze(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ba(e){return e.join(".")}function Ne(e,t){return e===null?Bo:typeof e=="boolean"||typeof e=="number"?String(e):Ra(e,t)}function Ra(e,t=M){return da(e,t)?e:`"${Ir(e)}"`}function $e(e){return la(e)?e:`"${Ir(e)}"`}function Ur(e,t=M){return e.map(n=>Ne(n,t)).join(t)}function ye(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=$e(n)),s+=`[${e}${i!==M?i:""}]`,r){let o=r.map(a=>$e(a));s+=`{${o.join(i)}}`}return s+=":",s}function*_a(e,t,n){if(pe(e)){let r=Ne(e,t.delimiter);r!==""&&(yield r);return}Z(e)?yield*rn(void 0,e,n,t):O(e)&&(yield*Pe(e,n,t))}function*Pe(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*Ea(c,u,t,n,o,r,i,a)}function*Ea(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,u=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=ha(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:w,leafValue:b,segmentCount:T}=d,S=$e(m);if(w===void 0){if(pe(b)){yield D(n,`${S}: ${Ne(b,r.delimiter)}`,r.indent);return}else if(Z(b)){yield*rn(m,b,n,r);return}else if(O(b)&&ze(b)){yield D(n,`${S}:`,r.indent);return}}if(O(w)){yield D(n,`${S}:`,r.indent);let g=u-T,f=o?`${o}.${m}`:m;yield*Pe(w,n+1,r,s,f,g);return}}}let l=$e(e);pe(t)?yield D(n,`${l}: ${Ne(t,r.delimiter)}`,r.indent):Z(t)?yield*rn(e,t,n,r):O(t)&&(yield D(n,`${l}:`,r.indent),ze(t)||(yield*Pe(t,n+1,r,s,c,u)))}function*rn(e,t,n,r){if(t.length===0){yield D(n,e!=null?`${$e(e)}: []`:"[]",r.indent);return}if(Qe(t)){yield D(n,kt(t,r.delimiter,e),r.indent);return}if(aa(t)&&t.every(i=>Qe(i))){yield*ka(e,t,n,r);return}if(Cr(t)){let i=qr(t);i?yield*Sa(e,t,i,n,r):yield*Dr(e,t,n,r);return}yield*Dr(e,t,n,r)}function*ka(e,t,n,r){yield D(n,ye(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(Qe(i)){let s=kt(i,r.delimiter);yield C(n+1,s,r.indent)}}function kt(e,t,n){let r=ye(e.length,{key:n,delimiter:t}),i=Ur(e,t);return e.length===0?r:`${r} ${i}`}function*Sa(e,t,n,r,i){yield D(r,ye(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Gr(t,n,r+1,i)}function qr(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Ta(e,n))return n}function Ta(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!pe(n[r]))return!1}return!0}function*Gr(e,t,n,r){for(let i of e)yield D(n,Ur(t.map(s=>i[s]),r.delimiter),r.indent)}function*Dr(e,t,n,r){yield D(n,ye(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*un(i,n+1,r)}function*va(e,t,n){if(ze(e)){yield D(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(Z(s)&&Cr(s)){let c=qr(s);if(c){yield C(t,ye(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Gr(s,c,t+2,n),o.length>0&&(yield*Pe(Object.fromEntries(o),t+1,n));return}}let a=$e(i);if(pe(s))yield C(t,`${a}: ${Ne(s,n.delimiter)}`,n.indent);else if(Z(s))if(s.length===0)yield C(t,`${a}: []`,n.indent);else if(Qe(s))yield C(t,`${a}${kt(s,n.delimiter)}`,n.indent);else{yield C(t,`${a}${ye(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*un(c,t+2,n)}else O(s)&&(yield C(t,`${a}:`,n.indent),ze(s)||(yield*Pe(s,t+2,n)));o.length>0&&(yield*Pe(Object.fromEntries(o),t+1,n))}function*un(e,t,n){if(pe(e))yield C(t,Ne(e,n.delimiter),n.indent);else if(Z(e))if(Qe(e))yield C(t,kt(e,n.delimiter),n.indent);else{yield C(t,ye(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*un(r,t+1,n)}else O(e)&&(yield*va(e,t,n))}function D(e,t,n){return" ".repeat(n*e)+t}function C(e,t,n){return D(e,"- "+t,n)}function xa(e,t){let n=t("",e,[]);return n===void 0?Rt(e,t,[]):Rt(V(n),t,[])}function Rt(e,t,n){return O(e)?Oa(e,t,n):Z(e)?Aa(e,t,n):e}function Oa(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]=Rt(V(a),t,o))}return r}function Aa(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=V(a);r.push(Rt(c,t,o))}return r}function x(e,t){return Array.from(Fr(e,t)).join(`
5
+ `)}function ln(e,t){return Jr(e.split(`
6
+ `),t)}function Fr(e,t){let n=V(e),r=Da(t);return _a(r.replacer?xa(n,r.replacer):n,r,0)}function Jr(e,t){let n=Ia(t),r=pa(Zo(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?gt(r,n.strict):r}function Da(e){return{indent:e?.indent??2,delimiter:e?.delimiter??M,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function Ia(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Bo,ht,M,$,Lo,Mo,Uo,Xo,ca,ua,jr,Vr=k(()=>{Bo="null",ht={comma:",",tab:" ",pipe:"|"},M=ht.comma;$=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};Lo=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;Mo=/^(?:0|[1-9]\d*)$/;Uo=[","," ","|"];Xo=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}};ca=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,ua=/^0\d+$/;jr=Symbol("quotedKey")});var Be=k(()=>{"use strict";Vr()});import{existsSync as Na,readFileSync as Of}from"node:fs";import{dirname as $a,join as Ba}from"node:path";function Kr(e,t){let n=e;for(let r=0;r<16;r++){let i=Ba(n,t);if(Na(i))return i;let s=$a(n);if(s===n)break;n=s}return null}function La(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function dn(e,t){let n=[];for(let r of e.split(`
7
+ `)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let u=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return La(u)}}var Wr=k(()=>{});var ei={};P(ei,{DEFAULT_RSP_BYTE_BUDGET:()=>W,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>H,DEFAULT_RSP_STORE_PATH:()=>St,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>vt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Xr,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Zr,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Tt,DEFAULT_RSP_TTL_DAYS:()=>K,resolveRspConfig:()=>te});import{readFileSync as Ca}from"node:fs";import{dirname as Yr,join as zr,resolve as Qr}from"node:path";function te(e,t,n){let r=Kr(Qr(e),zr(".red","config.yaml")),i=r?Yr(Yr(r)):e,s=r?Ca(r,"utf8"):"",o=dn(s,"rsp.enabled")==="true",a=ge(ee(s,"rsp.ttlDays"),K),c=ge(ee(s,"rsp.byteBudget"),W),u=ge(ee(s,"rsp.telemetryTtlDays"),Tt),l=ge(ee(s,"rsp.telemetryByteBudget")??ee(s,"rsp.byteBudget"),vt),d=ge(fn(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ee(s,"rsp.telemetryDrainIntervalMs"),Xr),m=ge(fn(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ee(s,"rsp.telemetryDrainTimeoutMs"),Zr),w=ge(fn(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ee(s,"rsp.heavyGitByteThreshold"),H),b=n??t.RSP_STORE_URI??`file://${zr(Qr(i),St)}`;return{enabled:o,storeUri:b,ttlDays:a,byteBudget:c,telemetryTtlDays:u,telemetryByteBudget:l,telemetryDrainIntervalMs:d,telemetryDrainTimeoutMs:m,heavyGitByteThreshold:w}}function ee(e,t){let n=dn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ge(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fn(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var H,St,K,W,Tt,vt,Xr,Zr,j=k(()=>{"use strict";Wr();H=8*1024,St=".red/tmp/red-skills.rdb",K=7,W=64*1024*1024,Tt=90,vt=4*1024*1024,Xr=3e4,Zr=2e3});import{createConnection as Ma}from"node:net";async function Ce(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Ma(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
8
+ `)}),s.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
9
+ `);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(w){i(w)}}),s.end()}),s.on("error",l=>u(()=>i(l))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var mn=k(()=>{});var ti=k(()=>{"use strict";mn()});import{createHash as ja,randomUUID as oi}from"node:crypto";import{spawn as ai}from"node:child_process";import{constants as pn}from"node:fs";import{readFileSync as Ua}from"node:fs";import{mkdir as yn,open as qa,rm as gn}from"node:fs/promises";import{tmpdir as Ga}from"node:os";import{dirname as xt,join as Y,resolve as hn}from"node:path";import{fileURLToPath as Fa}from"node:url";function he(e){let t=Wa(e)??hn(e),n=Ka(t);return{rootDir:t,socketPath:Y(n,"rsp.sock"),lockPath:Y(n,"rsp.lock"),wakeLockPath:Y(t,".red","tmp","rsp.wake.lock"),summaryPath:Y(t,".red","tmp","rsp-status-summary.json")}}async function Ot(e,t){if(await yn(xt(e.socketPath),{recursive:!0,mode:448}),await ii(e.socketPath,t))return;let n=await li(e.lockPath);if(n)try{if(await ii(e.socketPath,t))return;await Va(e.socketPath);let r=Ha(e,t);await ni(e.socketPath,r);return}finally{await n.close(),await gn(e.lockPath,{force:!0})}await ni(e.socketPath)}async function we(e,t=200){try{return await ci(e,t)!=null}catch{return!1}}async function ci(e,t=200){let n=await Ce({socketPath:e,timeoutMs:t},{id:oi(),op:"ping"});return n.ok?Xa(n.value)?{version:Za(n.value.version)}:{}:null}async function At(e,t){if(await yn(xt(e.socketPath),{recursive:!0,mode:448}),await we(e.socketPath,50))return!1;let n=await li(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=di(t);return ai(r,[...i,"warm-resident","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--resident-version",t.clientVersion??"0.0.0-dev","--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function ui(e,t){try{await Ot(e,t)}finally{await gn(e.wakeLockPath,{force:!0})}}async function ni(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await we(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 Va(e){await gn(e,{force:!0})}async function li(e){await yn(xt(e),{recursive:!0,mode:448});try{return await qa(e,pn.O_CREAT|pn.O_EXCL|pn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Ha(e,t){let[n,r]=di(t),i=ai(n,[...r,"server","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--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]?hn(process.argv[1]):Fa(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Ka(e){let t=ja("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=Y(n,"red-skills",t);if(Y(i,"rsp.sock").length<Ja)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Y(Ga(),`red-skills-${r}`,t)}function Wa(e){let t=hn(e);for(let n=0;n<32;n++){try{if(ri(Y(t,".red","config.yaml"))!=null||ri(Y(t,".git","HEAD"))!=null)return t}catch{}let r=xt(t);if(r===t)return null;t=r}return null}function ri(e){try{return Ua(e,"utf8")}catch{return null}}async function ii(e,t){let n=await ci(e).catch(()=>null);return n?za(t.clientVersion,n.version)?(await Ya(e,t.clientVersion),await ec(e),!1):!0:!1}async function Ya(e,t){try{await Ce({socketPath:e,timeoutMs:200},{id:oi(),op:"handover",clientVersion:t})}catch{}}function za(e,t){return!e||!t?!1:Qa(e,t)>0}function Qa(e,t){let n=si(e),r=si(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function si(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Xa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Za(e){return typeof e=="string"&&e.length>0?e:void 0}async function ec(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await we(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ja,fi=k(()=>{mn();Ja=108});var Dt={};P(Dt,{ResidentRspElisionStore:()=>Xe,ensureResidentServer:()=>Ot,kickResidentServer:()=>At,pingResident:()=>we,resolveResidentPaths:()=>he,warmResidentServer:()=>ui});import{randomUUID as tc}from"node:crypto";function mi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Xe,Me=k(()=>{"use strict";ti();fi();Xe=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?mi(n)&&n.status==="expired"?n:!mi(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 Ot(this.paths,this.config);let n=await Ce(this.paths,{...t,id:tc()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var _i={};P(_i,{RSP_WRAPPER_CAPABILITIES:()=>wn,formatHookDecision:()=>wi,hookDecisionFromClaudePreExecJson:()=>hi,rewriteCommand:()=>gi,rewriteTableFromCapabilities:()=>yi,runClaudePreExecHook:()=>sc});import{readFileSync as pi}from"node:fs";import{existsSync as nc}from"node:fs";import{fileURLToPath as rc}from"node:url";function yi(e){let t=new Map;for(let n of e)t.set(Ze(n.command),["rsp",...n.wrapper]);return t}function gi(e){let t=fc(e);if(!t)return{kind:"passthrough"};if(t.length>0&&bi(t[0]))return{kind:"passthrough"};let n=ic.get(Ze(t));if(!n)return{kind:"passthrough"};let r=wn.find(i=>Ze(i.command)===Ze(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??Ze(t)}}async function hi(e,t){let n=mc(e),r=L(n,["cwd"])||L(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??oc)(r))return{kind:"passthrough",reason:"disabled"};let s=dc(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??gi)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??ac)(r)?o:(await(t.wakeResident??cc)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function wi(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
+ `,status:0}:{stdout:"",status:1}}async function sc(e){let t=e?pi(e,"utf8"):pi(0,"utf8"),n=await hi(t,{cwd:process.cwd()}),r=wi(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function oc(e){return te(e,process.env).enabled}async function ac(e){let t=he(e);return await we(t.socketPath,50)}async function cc(e){let t=te(e,process.env);if(!t.enabled||!lc(t))return;let n=he(e);await At(n,uc(t))}function uc(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs}}function lc(e){if(!e.storeUri.startsWith("file://"))return!0;try{return nc(rc(e.storeUri))}catch{return!1}}function dc(e){return L(e,["tool_input","command"])||L(e,["tool_input","cmd"])||L(e,["tool_input","args","command"])||L(e,["input","command"])||L(e,["input","cmd"])||L(e,["arguments","command"])||L(e,["arguments","cmd"])||L(e,["command"])||L(e,["cmd"])}function fc(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&bi(r))?null:n}function bi(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Ze(e){return e.join("\0")}function mc(e){try{let t=JSON.parse(e);return Ri(t)?t:{}}catch{return{}}}function L(e,t){let n=e;for(let r of t){if(!Ri(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ri(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wn,ic,Ei=k(()=>{"use strict";j();Me();wn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],ic=yi(wn)});var Li={};P(Li,{NORMALIZATION_ALLOWLIST:()=>Pi,NORMALIZE_ANSI:()=>vi,NORMALIZE_BLANK_LINES:()=>Ai,NORMALIZE_CR_PROGRESS:()=>xi,NORMALIZE_JSON_TOON:()=>Ii,NORMALIZE_TRAILING_WHITESPACE:()=>Oi,formatNormalizeDecision:()=>Bi,hookDecisionFromClaudePostExecJson:()=>$i,normalizeOutput:()=>Ni,renderGenericJsonLane:()=>gc,runClaudePostExecHook:()=>hc,transcodeJsonToToon:()=>Di});import{readFileSync as ki}from"node:fs";function Di(e,t){let n=t?.encode??x,r=t?.decode??ln,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 bn(s,a)?o:e}async function gc(e,t={}){let n=_c(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:x(r),detected:!0,lossy:!1};let i=r.length,s=Ti(t.minTokens,pc),o=Ti(t.maxItems,yc);if(!(i>o&&vc(e)>=s))return{output:x(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=Ec(r,o),u={items:c},l=`items: ${c.length} of ${i} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`;return{output:[l,m,x(u)].filter(Boolean).join(`
11
+ `),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Ni(e){let t=e;for(let n of Pi)t=n.apply(t);return t}async function $i(e,t){let n=Rc(e),r=xc(n,["cwd"])||t.cwd;if(!await(t.isEnabled??bc)(r))return{kind:"passthrough",reason:"disabled"};let s=Oc(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??Ni)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Bi(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function hc(e){let t=e?ki(e,"utf8"):ki(0,"utf8"),n=await $i(t,{cwd:process.cwd()}),r=Bi(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function wc(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&&Si(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Si(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Si(e){return e>=32&&e<=63}function bc(e){return te(e,process.env).enabled}function Rc(e){try{let t=JSON.parse(e);return ne(t)?t:{}}catch{return{}}}function _c(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return ne(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 Ec(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++)kc(e[s])&&n.add(s);for(let s of Sc(e))n.add(s);for(let s of Tc(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 kc(e){if(!ne(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 Sc(e){let t=new Map;e.forEach((r,i)=>{if(ne(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 Tc(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!ne(r)||!ne(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 vc(e){return Math.ceil(e.length/4)}function Ti(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function xc(e,t){let n=e;for(let r of t){if(!ne(n))return"";n=n[r]}return typeof n=="string"?n:""}function Oc(e,t){let n=e[t];return ne(n)?n:null}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bn(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)=>bn(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)&&bn(n[o],r[o]))}var vi,xi,Oi,Ai,Ii,pc,yc,Pi,Ci=k(()=>{"use strict";Be();j();vi={id:"ansi",apply:wc},xi={id:"cr-progress",apply:e=>e.split(`
11
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(`
12
- `)},gi={id:"trailing-whitespace",apply:e=>e.split(`
13
+ `)},Oi={id:"trailing-whitespace",apply:e=>e.split(`
13
14
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
14
- `)},hi={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
15
+ `)},Ai={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
15
16
 
16
- `)};bi={id:"json-to-toon",apply:e=>wi(e)},_i=[pi,yi,gi,hi,bi]});async function vi(e,t){return gc?bc(e,t):hc?Rc(e,t):wc(e,t)}async function wc(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 bc(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:_c(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*_c(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 Rc(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:Ec(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Ec(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var gc,hc,xi=k(()=>{gc=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",hc=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as kc}from"node:fs";import{join as Sc}from"node:path";function Oi(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=Sc(n,"bin",t);if(kc(s))return s;throw new Error(`reddb: binary "${t}" not found.
17
+ `)};Ii={id:"json-to-toon",apply:e=>Di(e)},pc=200,yc=15;Pi=[vi,xi,Oi,Ai,Ii]});async function Mi(e,t){return Ac?Pc(e,t):Dc?$c(e,t):Ic(e,t)}async function Ic(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 Pc(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:Nc(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Nc(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 $c(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:Bc(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Bc(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Ac,Dc,ji=k(()=>{Ac=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Dc=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Lc}from"node:fs";import{join as Cc}from"node:path";function Ui(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=Cc(n,"bin",t);if(Lc(s))return s;throw new Error(`reddb: binary "${t}" not found.
17
18
  expected at: ${s}
18
19
  override: set ${r}=/path/to/${t}
19
20
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
20
- or check the postinstall log for a download error.`)}var Di=k(()=>{});import{fileURLToPath as Tc}from"node:url";import{dirname as vc,resolve as xc,join as Xf}from"node:path";function Ac(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ai(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Oi({name:Ac(),packageRoot:Dc,envVar:"REDDB_BIN"})}var Oc,Dc,Ii=k(()=>{Di();Oc=vc(Tc(import.meta.url)),Dc=xc(Oc,"..")});var Ic,Pc,h,Dt,te=k(()=>{Ic=new TextEncoder,Pc=new TextDecoder("utf-8"),h=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Dt=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new h("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Ic.encode(i+`
21
- `)).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(Pc.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new h(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new h("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function wn(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:/"?$c(e):Nc(e)}function $c(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(d){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${d.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=Bc(i),a=n.port?Number(n.port):hn(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Nc(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):hn(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):hn(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new h("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Bc(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new h("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function hn(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 bn=k(()=>{te()});function Cc(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Pi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Pi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Pi(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 jc(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 Lc,Xe,_n=k(()=>{te();Lc=new Set(["embedded"]),Xe=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Lc.has(this._transport))throw new h("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:jc(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Cc(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 Rn(e,t){return`${En(e)}.${Mc(t)}`}function En(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new h("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Mc(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Uc(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 $i(e){return`'${String(e).replace(/'/g,"''")}'`}var Le,kn=k(()=>{te();Le=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($i).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Rn(i,t)} = ${Uc(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 ${Rn(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 ${Rn(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new h("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${En(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($i).join(", ")}] FROM ${En(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new h("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new h("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
21
+ or check the postinstall log for a download error.`)}var qi=k(()=>{});import{fileURLToPath as Mc}from"node:url";import{dirname as jc,resolve as Uc,join as dm}from"node:path";function Fc(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Gi(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Ui({name:Fc(),packageRoot:Gc,envVar:"REDDB_BIN"})}var qc,Gc,Fi=k(()=>{qi();qc=jc(Mc(import.meta.url)),Gc=Uc(qc,"..")});var Jc,Vc,h,It,re=k(()=>{Jc=new TextEncoder,Vc=new TextDecoder("utf-8"),h=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},It=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new h("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Jc.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(Vc.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new h(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new h("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function _n(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:/"?Hc(e):Kc(e)}function Hc(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(l){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=Wc(i),a=n.port?Number(n.port):Rn(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Kc(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Rn(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Rn(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new h("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Wc(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new h("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Rn(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 En=k(()=>{re()});function zc(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ji(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ji(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ji(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 Qc(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 Yc,et,kn=k(()=>{re();Yc=new Set(["embedded"]),et=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Yc.has(this._transport))throw new h("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:Qc(r.value)}async put(t,n,r,i={}){this._guard("put");let s=zc(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 Sn(e,t){return`${Tn(e)}.${Xc(t)}`}function Tn(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new h("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Xc(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Zc(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 Vi(e){return`'${String(e).replace(/'/g,"''")}'`}var je,vn=k(()=>{re();je=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(Vi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Sn(i,t)} = ${Zc(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 ${Sn(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 ${Sn(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new h("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Tn(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(Vi).join(", ")}] FROM ${Tn(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new h("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new h("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
22
23
 
23
- `)){let d=u.split(`
24
- `).find(l=>l.startsWith("data: "));d&&(yield JSON.parse(d.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function qc(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=z(e),a=z(t),c=i!=null?` GROUP ${z(i)}`:"",u=s!=null?Tn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function z(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Tn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Fc(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Gc(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new h("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Fc(e.priority)}`),e.key!=null&&(t+=` KEY ${vn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${vn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Vc(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?vn(e):JSON.stringify(e)}function vn(e){return`'${String(e).replace(/'/g,"''")}'`}function Sn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Ze,xn=k(()=>{te();Ze=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${z(t)}`})}push(t,n,r={}){let i=Gc(r);return this.client.call("query",{sql:`QUEUE PUSH ${z(t)} ${Vc(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${z(t)}${Tn(n)}`});return Sn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${z(t)}${Tn(n)}`});return Sn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${z(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${z(t)}`})}async readWait(t,n,r={}){let i=qc(t,n,r),s=await this.client.call("query",{sql:i});return Sn(s)}}});function Ni(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function Jc(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function At(e){return String(e).split(".").map(Bi).join(".")}function Bi(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Hc(e){return Li(JSON.stringify(e))}function Kc(e){return JSON.stringify(e)}function Wc(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Hc(e):Li(e)}function Li(e){return`'${String(e).replace(/'/g,"''")}'`}var et,On=k(()=>{te();et=class{constructor(t){this.db=t}async insert(t,n){Ni(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${At(t)} DOCUMENT VALUES (${Kc(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new h("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Jc(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 ${At(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Ni(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Bi(c)} = ${Wc(u)}`).join(", "),a=(await this.db.query(`UPDATE ${At(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${At(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Yc(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${ne(n)}.${ne(r)})`}return Qc(e)}function zc(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 ne(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 Qc(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ci(e)}function Ci(e){return`'${String(e).replace(/'/g,"''")}'`}var tt,Dn=k(()=>{tt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){zc(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ci).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ne(i)} ${ne(t)} = ${Yc(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ne(r)} ${ne(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ne(r)} ${ne(t)}`})}}});function Xc(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 Ce(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 Zc(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):ji(e)}function ji(e){return`'${String(e).replace(/'/g,"''")}'`}var nt,An=k(()=>{nt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Xc(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(ji).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Ce(i)}.${Ce(t)} = ${Zc(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Ce(r)}.${Ce(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Ce(r)}.${Ce(t)}`})}}});async function Ui(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(eu)}async function qi(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${nu(t)}`)).rows??[]).some(r=>r.name===String(t))}function eu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Mi(e){return String(e).split(".").map(tu).join(".")}function tu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function nu(e){return`'${String(e).replace(/'/g,"''")}'`}var rt,In=k(()=>{te();rt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new h("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Mi).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Mi(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 Ji(e,t={}){let n=wn(e);if(fu(n),n.kind==="embedded"){let r=lu(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=du(n),s=t.binary??Ai(),o=await vi(s,i),a=new Dt(o);return await a.call("version",{}),new $n(a,{transport:"embedded"})}}function Gi(e){return su(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:au(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&uu(e)?{$uuid:e}:e}function su(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new h("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function ou(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Gi):e.map(Gi)}function au(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function cu(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 uu(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function It(e){if(Array.isArray(e))return e.map(It);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return cu(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]=It(i);return n}return e}function du(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function lu(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 fu(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",ru)}function Nn(){return new h(Fi,`${Fi}: nested transactions are not supported on one connection`)}function Hi(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function mu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Vi} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function pu(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Vi} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ru,iu,Vi,Fi,Pt,Pn,$n,Ki=k(()=>{xi();Ii();te();bn();_n();kn();xn();On();Dn();An();In();_n();kn();xn();On();Dn();An();In();bn();ru="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",iu="1.0",Vi="1.0.9",Fi="NESTED_TX_NOT_SUPPORTED";Pt=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 Nn()}},Pn=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Nn();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Pt(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Hi(n,r)}throw n}}},$n=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=iu,this.cache=new Xe(t,this.transport),this.queue=new Ze(t),this.queues=this.queue,this.documents=new et(this);let r=new Le(t);this.kv=Object.assign((i="kv_default")=>new Le(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 tt(t,i),this.vault=(i="red.vault")=>new nt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=ou(n);return r==null?this.client.call("query",{sql:t}).then(It):this.client.call("query",{sql:t,params:r}).then(It)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return mu(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 pu(r,n.length)}tx(){return new Pn(this)}async transaction(t){if(this.inTransaction)throw Nn();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 Pt(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Hi(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return qi(this,t)}list(){return Ui(this)}from(t){return new rt(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 jn={};P(jn,{DEFAULT_RSP_BYTE_BUDGET:()=>W,DEFAULT_RSP_TTL_DAYS:()=>K,RSP_ELISION_COLLECTION:()=>we,RspElisionStore:()=>st});import{createHash as Xi}from"node:crypto";import{existsSync as yu}from"node:fs";import{mkdir as gu,readFile as Ln,readdir as Zi,rename as hu,writeFile as wu}from"node:fs/promises";import{homedir as bu}from"node:os";import{basename as Cn,dirname as es,join as Me}from"node:path";import{fileURLToPath as _u}from"node:url";function Wi(e,t){return`el:${Xi("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 he(e){return`record:${e.slice(3)}`}function je(e){return`expired:${e.slice(3)}`}function Yi(){return"index:v1"}function Nt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ru(e){if(!it(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:it(e.scope)?e.scope:void 0,ranking:it(e.ranking)?e.ranking:void 0}}}function Eu(e){if(!it(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 it(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ku(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 Zi(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Me(o,c.name);c.isDirectory()?await s(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await s(e),r}function Su(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=it(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),u=t.filter(d=>c.includes(d));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function zi(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $t(e){return re(e)?e.collection===we&&typeof e.handle=="string"&&Nt(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"&&Tu(e.loss):!1}function ts(e){return!re(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>re(t)&&typeof t.handle=="string"&&Nt(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 Bn(e){return re(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Tu(e){return re(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vu(e){try{let t=await Ln(e,"utf8");if(t.trim()==="")return Qi();let n=JSON.parse(t);if(Iu(n))return n}catch(t){if(t.code==="ENOENT"){let n=Qi();return await rs(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function xu(e){try{let t=await Ln(e);return ns(e)?e:Ou(t)?Du(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ou(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Du(e){return Cn(e)==="red.rdb"?Me(es(e),"tmp","rsp-elisions.json"):`${e}.json`}function ns(e){return Cn(e)==="red-skills.rdb"}async function Au(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Me(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Me(bu(),".cache","red-skills","bundles")),t=Me(e,"reddb"),n;try{n=await Zi(t)}catch{return}n.sort().reverse();for(let r of n){let i=Me(t,r,process.platform==="win32"?"red.exe":"red");if(yu(i)){process.env.REDDB_BIN=i;return}}}async function rs(e,t){await gu(es(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await wu(n,`${JSON.stringify(t)}
25
- `,"utf8"),await hu(n,e)}function Qi(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Iu(e){return re(e)&&e.version===1&&re(e.records)&&Object.values(e.records).every($t)&&re(e.tombstones)&&Object.values(e.tombstones).every(Bn)&&ts(e.index)}function Pu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return _u(e)}var we,st,Bt=k(()=>{"use strict";Ki();M();we="rsp_elisions_v1",st=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=Pu(t.uri),r=await xu(n),i=new e(r,{uri:t.uri,ttlDays:zi(t.ttlDays,K),byteBudget:zi(t.byteBudget,W),now:t.now??(()=>new Date)});return ns(r)?(await Au(),i.db=await Ji(`file://${r}`),await i.ensureRedDbStore()):i.document=await vu(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=Wi(r,n),c=he(a),u={collection:we,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[je(a)],this.document.records[c]=u,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!Nt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[he(t)];if(!$t(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:he(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:we,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[je(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[je(t)];return Bn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await rs(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(we)}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=Wi(r,n),c=he(a),u={collection:we,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(je(a)),await this.kv().put(c,u);let l=(await this.readRedDbIndex()).records.filter(p=>p.handle!==a);return l.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:l}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!Nt(t))return null;let n=await this.kvGet(je(t));if(Bn(n))return n;let r=await this.kvGet(he(t));if(!$t(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:he(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:we,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=Ru(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Eu(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 ku(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await Ln(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Cn(i),c=Xi("sha256").update("resident-memory-v1\0").update(i).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),d={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:u,updated_at:u}},l=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,d),p=Number(l.rows[0]?.red_entity_id??l.rows[0]?.rid);Number.isFinite(p)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,p),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=>Su(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(`
26
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Yi());return ts(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Yi(),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(je(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(he(t));if(!$t(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 ls={};P(ls,{REPO_STORE_PATH:()=>Un,mergeRspBlock:()=>cs,provisionRspRepoStore:()=>Uu});import{constants as $u}from"node:fs";import{access as Nu,copyFile as Bu,mkdir as is,readFile as Lu,writeFile as ss}from"node:fs/promises";import{dirname as Cu,join as Lt,resolve as ju}from"node:path";async function Uu(e,t={}){let n=ju(e),r=Lt(n,".red"),i=Lt(r,"config.yaml"),s=Lt(n,Un);await is(r,{recursive:!0}),await is(Cu(s),{recursive:!0});let o="";try{o=await Lu(i,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=cs(o,{enabled:!0,ttlDays:t.ttlDays??K,byteBudget:t.byteBudget??W,heavyGitByteThreshold:t.heavyGitByteThreshold??H}),c=a!==o;c&&await ss(i,a,"utf8");let u=!await as(s),d=!1;if(u){let p=Lt(n,Mu);if(await as(p))await Bu(p,s),d=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(Bt(),jn)),b=process.env.REDDB_BIN;try{await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??K,byteBudget:t.byteBudget??W,allowResidentOpen:!0})).close()}finally{b===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=b}}}let l=qu(a,Un);return l!==a&&await ss(i,l,"utf8"),{configPath:i,storePath:s,configChanged:c||l!==a,storeCreated:u,memoryStoreMigrated:d}}function cs(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Mn(t.ttlDays,K)}`,` byteBudget: ${Mn(t.byteBudget,W)}`,` heavyGitByteThreshold: ${Mn(t.heavyGitByteThreshold,H)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
27
- `),i=us(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
24
+ `)){let l=u.split(`
25
+ `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function eu(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=z(e),a=z(t),c=i!=null?` GROUP ${z(i)}`:"",u=s!=null?On(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function z(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function On(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function tu(e){if(!Number.isInteger(e))throw new h("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 h("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 ${An(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${An(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"?An(e):JSON.stringify(e)}function An(e){return`'${String(e).replace(/'/g,"''")}'`}function xn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var tt,Dn=k(()=>{re();tt=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${z(t)}`})}push(t,n,r={}){let i=nu(r);return this.client.call("query",{sql:`QUEUE PUSH ${z(t)} ${ru(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${z(t)}${On(n)}`});return xn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${z(t)}${On(n)}`});return xn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${z(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${z(t)}`})}async readWait(t,n,r={}){let i=eu(t,n,r),s=await this.client.call("query",{sql:i});return xn(s)}}});function Hi(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function iu(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function Pt(e){return String(e).split(".").map(Ki).join(".")}function Ki(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function su(e){return Wi(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):Wi(e)}function Wi(e){return`'${String(e).replace(/'/g,"''")}'`}var nt,In=k(()=>{re();nt=class{constructor(t){this.db=t}async insert(t,n){Hi(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Pt(t)} DOCUMENT VALUES (${ou(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new h("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=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 ${Pt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Hi(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Ki(c)} = ${au(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Pt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Pt(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, ${ie(n)}.${ie(r)})`}return lu(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 ie(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 lu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Yi(e)}function Yi(e){return`'${String(e).replace(/'/g,"''")}'`}var rt,Pn=k(()=>{rt=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(Yi).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ie(i)} ${ie(t)} = ${cu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ie(r)} ${ie(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ie(r)} ${ie(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 Ue(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):zi(e)}function zi(e){return`'${String(e).replace(/'/g,"''")}'`}var it,Nn=k(()=>{it=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(zi).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Ue(i)}.${Ue(t)} = ${fu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Ue(r)}.${Ue(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Ue(r)}.${Ue(t)}`})}}});async function Xi(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(mu)}async function Zi(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 Qi(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 h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function yu(e){return`'${String(e).replace(/'/g,"''")}'`}var st,$n=k(()=>{re();st=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new h("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Qi).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Qi(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function rs(e,t={}){let n=_n(e);if(Tu(n),n.kind==="embedded"){let r=Su(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=ku(n),s=t.binary??Gi(),o=await Mi(s,i),a=new It(o);return await a.call("version",{}),new Ln(a,{transport:"embedded"})}}function ts(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:Ru(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 h("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function bu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ts):e.map(ts)}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 _u(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 Nt(e){if(Array.isArray(e))return e.map(Nt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return _u(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]=Nt(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 Tu(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",gu)}function Cn(){return new h(es,`${es}: nested transactions are not supported on one connection`)}function is(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ns} 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 h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ns} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var gu,hu,ns,es,$t,Bn,Ln,ss=k(()=>{ji();Fi();re();En();kn();vn();Dn();In();Pn();Nn();$n();kn();vn();Dn();In();Pn();Nn();$n();En();gu="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",hu="1.0",ns="1.0.9",es="NESTED_TX_NOT_SUPPORTED";$t=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 Cn()}},Bn=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Cn();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new $t(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){is(n,r)}throw n}}},Ln=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=hu,this.cache=new et(t,this.transport),this.queue=new tt(t),this.queues=this.queue,this.documents=new nt(this);let r=new je(t);this.kv=Object.assign((i="kv_default")=>new je(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 rt(t,i),this.vault=(i="red.vault")=>new it(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=bu(n);return r==null?this.client.call("query",{sql:t}).then(Nt):this.client.call("query",{sql:t,params:r}).then(Nt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return vu(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 Bn(this)}async transaction(t){if(this.inTransaction)throw Cn();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 $t(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){is(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return Zi(this,t)}list(){return Xi(this)}from(t){return new st(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 qn={};P(qn,{DEFAULT_RSP_BYTE_BUDGET:()=>W,DEFAULT_RSP_TTL_DAYS:()=>K,RSP_ELISION_COLLECTION:()=>Re,RspElisionStore:()=>at});import{createHash as ls}from"node:crypto";import{existsSync as Ou}from"node:fs";import{mkdir as Au,readFile as jn,readdir as ds,rename as Du,writeFile as Iu}from"node:fs/promises";import{homedir as Pu}from"node:os";import{basename as Un,dirname as fs,join as Ge}from"node:path";import{fileURLToPath as Nu}from"node:url";function os(e,t){return`el:${ls("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 be(e){return`record:${e.slice(3)}`}function qe(e){return`expired:${e.slice(3)}`}function as(){return"index:v1"}function Lt(e){return/^el:[a-f0-9]{12}$/.test(e)}function $u(e){if(!ot(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:ot(e.scope)?e.scope:void 0,ranking:ot(e.ranking)?e.ranking:void 0}}}function Bu(e){if(!ot(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 ot(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 ds(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Ge(o,c.name);c.isDirectory()?await s(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await s(e),r}function 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=ot(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function cs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Bt(e){return se(e)?e.collection===Re&&typeof e.handle=="string"&&Lt(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 ms(e){return!se(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>se(t)&&typeof t.handle=="string"&&Lt(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 Mn(e){return se(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Mu(e){return se(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function se(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ju(e){try{let t=await jn(e,"utf8");if(t.trim()==="")return us();let n=JSON.parse(t);if(Ju(n))return n}catch(t){if(t.code==="ENOENT"){let n=us();return await ys(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Uu(e){try{let t=await jn(e);return ps(e)?e:qu(t)?Gu(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function qu(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Gu(e){return Un(e)==="red.rdb"?Ge(fs(e),"tmp","rsp-elisions.json"):`${e}.json`}function ps(e){return Un(e)==="red-skills.rdb"}async function Fu(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ge(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ge(Pu(),".cache","red-skills","bundles")),t=Ge(e,"reddb"),n;try{n=await ds(t)}catch{return}n.sort().reverse();for(let r of n){let i=Ge(t,r,process.platform==="win32"?"red.exe":"red");if(Ou(i)){process.env.REDDB_BIN=i;return}}}async function ys(e,t){await Au(fs(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Iu(n,`${JSON.stringify(t)}
26
+ `,"utf8"),await Du(n,e)}function us(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Ju(e){return se(e)&&e.version===1&&se(e.records)&&Object.values(e.records).every(Bt)&&se(e.tombstones)&&Object.values(e.tombstones).every(Mn)&&ms(e.index)}function Vu(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Nu(e)}var Re,at,Ct=k(()=>{"use strict";ss();j();Re="rsp_elisions_v1",at=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:cs(t.ttlDays,K),byteBudget:cs(t.byteBudget,W),now:t.now??(()=>new Date)});return ps(r)?(await Fu(),i.db=await rs(`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=os(r,n),c=be(a),u={collection:Re,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[qe(a)],this.document.records[c]=u,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!Lt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[be(t)];if(!Bt(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:be(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:Re,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[qe(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[qe(t)];return Mn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await ys(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Re)}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=os(r,n),c=be(a),u={collection:Re,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(qe(a)),await this.kv().put(c,u);let d=(await this.readRedDbIndex()).records.filter(m=>m.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!Lt(t))return null;let n=await this.kvGet(qe(t));if(Mn(n))return n;let r=await this.kvGet(be(t));if(!Bt(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:be(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:Re,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=$u(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Bu(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 jn(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Un(i),c=ls("sha256").update("resident-memory-v1\0").update(i).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:u,updated_at:u}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),m=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(m)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,m),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),i=t.toLowerCase().split(/\s+/).filter(Boolean),s=r.rows.map(o=>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(as());return ms(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(as(),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(qe(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(be(t));if(!Bt(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 ks={};P(ks,{REPO_STORE_PATH:()=>Fn,mergeRspBlock:()=>Rs,provisionRspRepoStore:()=>Zu});import{constants as Hu}from"node:fs";import{access as Ku,copyFile as Wu,mkdir as gs,readFile as Yu,writeFile as hs}from"node:fs/promises";import{dirname as zu,join as Mt,resolve as Qu}from"node:path";async function Zu(e,t={}){let n=Qu(e),r=Mt(n,".red"),i=Mt(r,"config.yaml"),s=Mt(n,Fn);await gs(r,{recursive:!0}),await gs(zu(s),{recursive:!0});let o="";try{o=await Yu(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Rs(o,{enabled:!0,ttlDays:t.ttlDays??K,byteBudget:t.byteBudget??W,heavyGitByteThreshold:t.heavyGitByteThreshold??H}),c=a!==o;c&&await hs(i,a,"utf8");let u=!await bs(s),l=!1;if(u){let m=Mt(n,Xu);if(await bs(m))await Wu(m,s),l=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(Ct(),qn)),b=process.env.REDDB_BIN;try{await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??K,byteBudget:t.byteBudget??W,allowResidentOpen:!0})).close()}finally{b===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=b}}}let d=el(a,Fn);return d!==a&&await hs(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function Rs(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Gn(t.ttlDays,K)}`,` byteBudget: ${Gn(t.byteBudget,W)}`,` heavyGitByteThreshold: ${Gn(t.heavyGitByteThreshold,H)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
28
+ `),i=_s(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
28
29
  `)}
29
- `}let s=qn(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
30
+ `}let s=Jn(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
30
31
  `)}
31
- `}function us(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Gn(r)&&Fn(r)===0&&ds(r)===t)return n}return-1}function qn(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Gn(e[i])&&Fn(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Fn(e){return(e.match(/^ */)?.[0]??"").length}function Gn(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function ds(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Mn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function qu(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
32
- `),r=us(n,"plugins");if(r===-1)return e;let i=qn(n,r,0),s=os(n,"memory",r+1,i,2);if(s===-1)return e;let o=qn(n,s,2),a=[...n],c=os(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
32
+ `}function _s(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Hn(r)&&Vn(r)===0&&Es(r)===t)return n}return-1}function Jn(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Hn(e[i])&&Vn(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Vn(e){return(e.match(/^ */)?.[0]??"").length}function Hn(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Es(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Gn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function el(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
33
+ `),r=_s(n,"plugins");if(r===-1)return e;let i=Jn(n,r,0),s=ws(n,"memory",r+1,i,2);if(s===-1)return e;let o=Jn(n,s,2),a=[...n],c=ws(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
33
34
  `)}
34
- `}function os(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Gn(o)&&Fn(o)===i&&ds(o)===t)return s}return-1}async function as(e){try{return await Nu(e,$u.F_OK),!0}catch{return!1}}var Un,Mu,fs=k(()=>{"use strict";M();Un=Et,Mu=".red/memory/graph.rdb"});var gs={};P(gs,{runRspMcpServer:()=>Gu});import{createInterface as Fu}from"node:readline";async function Gu(){let e=ee(process.cwd(),process.env),t=Fu({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 Vu(r,e);ps({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){ps({jsonrpc:"2.0",id:typeof ys(n)?.id>"u"?null:ys(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function Vu(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:ms(t)}]};if(!t.enabled)return{content:[{type:"text",text:ms(t)}],isError:!0};let r=Ju(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}}return{}}function Ju(e){return new ze(ye(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs})}function ms(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function ps(e){process.stdout.write(`${JSON.stringify(e)}
35
- `)}function ys(e){try{return JSON.parse(e)}catch{return null}}var hs=k(()=>{"use strict";M();Be()});function Vn(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"&&Hu(t.chosenOption)&&Ku(t.outcome)&&Wu(t.cost)}function Hu(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Ku(e){return e==="success"||e==="failure"||e==="escalated"}function Wu(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 ws=k(()=>{});import{createHash as Yu}from"node:crypto";function As(e,t){return new Hn(e,t)}function bs(e){let t=Number(e.red_entity_id??e.rid),n=Kn(e.properties??e.PROPERTIES),r=Is(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 _s(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=Ps(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:Kn(e.properties??e.PROPERTIES)}}function Xu(e){let t=Number(e.red_entity_id??e.rid),n=Kn(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Vn(n)?null:{rid:t,event:n}}function Kn(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Ct(e)?e:{}}function Is(e){let t=e==="contact"?"person":e;if(zu.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ps(e){if(Qu.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Zu(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Rs(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function _e(e){return Ct(e)?e:{}}function Es(e,t){return _e(e)[t]}function ks(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ss(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ts(e){let t=_e(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function D(e){return typeof e=="string"&&e.length>0?e:void 0}function Ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jn(e){return e!=null}function ed(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function td(e){return Yu("sha256").update(JSON.stringify(e)).digest("hex")}function nd(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function vs(e){return`artifact-hash:${e}`}function xs(e,t,n){return`connection:${e}:${t}:${n}`}function Os(){return"model-tier-bandit:v1"}function rd(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ds(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function $s(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+Ds(n,a)*3+Ds(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function id(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=Ns({...$s(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return be(i)}function Ns(e){return{...e,lexical:be(e.lexical),tags:be(e.tags),kind:be(e.kind),connections:be(e.connections),vector:be(e.vector),total:be(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function be(e){return Math.round(e*1e3)/1e3}function sd(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 od(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 ad(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var U,zu,Qu,Hn,Bs=k(()=>{"use strict";ws();U={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},zu=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Qu=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Hn=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(Es(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=_e(n);return await this.search(ks(r,"query"),Ss(r,"limit")??10,Ts(r.options))}if(t==="think"){let r=_e(n);return await this.think(ks(r,"query"),Ss(r,"limit")??8,Ts(r.options))}if(t==="link")return await this.link(_e(n));if(t==="backlinks")return await this.backlinks(Es(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 ${U.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${U.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${U.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:ad(t.map(r=>r.kind))}}async capture(t){let n=D(t.title)||"Untitled artifact",r=D(t.content);if(!r)throw new Error("brain capture requires content");let i=Is(D(t.kind)||"note"),s=ed(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=td([i,n,r,s,D(t.sourcePath),D(t.sourceSession)]),c=await this.kv().get(vs(a));if(c!=null){let b=await this.getArtifact(Number(c));if(b)return b}let u=`${nd(n)}-${a.slice(0,8)}`,d={id:u,title:n,content:r,tags:s,source_agent:D(t.sourceAgent),source_runner:D(t.sourceRunner),source_session:D(t.sourceSession),source_path:D(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Ct(t.metadata)?t.metadata:void 0},p=(await this.db.query(`INSERT INTO ${U.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,d)).rows[0];if(!p)throw new Error("INSERT artifact returned no row");let w=bs(p);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(vs(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 ${U.artifacts}`)).rows.map(bs).filter(Jn)}async search(t,n,r={}){let i=rd(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!s.has(u.rid)).map(u=>{let d=$s(u,i),l=Ns({...d,connections:id(u,i,a,c),vector:0});return{artifact:u,score:l.total,score_breakdown:l,excerpt:sd(u.properties.content,i)}}).filter(u=>u.score>0).sort((u,d)=>d.score-u.score||d.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return od(t,i)}async link(t){let n=await this.getArtifact(Rs(t.from)),r=await this.getArtifact(Rs(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=Ps(D(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let d=(await this.listConnections()).find(l=>l.rid===s);if(d)return d}let o={reason:D(t.reason),confidence:D(t.confidence)||"explicit",created_at:Date.now(),metadata:Ct(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${U.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=_s(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(xs(n.rid,r.rid,i),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${U.connections}`)).rows.map(_s).filter(Jn)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Zu(D(t.interval)||"day"),i=D(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(!Vn(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${U.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 ${U.outcomeEvents}`)).rows.map(Xu).filter(Jn).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Os());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Os(),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(xs(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(U.kv)}}});var Zn={};P(Zn,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_INDEX_COLLECTION:()=>Ut,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Re,RSP_TELEMETRY_SPOOL:()=>Gs,appendTelemetryEvent:()=>ld,drainTelemetrySpool:()=>zn,parseTelemetryEvent:()=>Qn,readTelemetryGainsReport:()=>Xn,readTelemetryStats:()=>Ft,takeTelemetrySpool:()=>fd,telemetrySpoolPath:()=>qt});import{appendFileSync as cd,mkdirSync as ud,readFileSync as dd}from"node:fs";import{mkdir as js,readFile as Ms,rename as Us,rm as qs,writeFile as Wn}from"node:fs/promises";import{dirname as Yn,join as Fs}from"node:path";function qt(e){return Fs(e,Gs)}async function ld(e,t){try{let n=qt(e);ud(Yn(n),{recursive:!0}),cd(n,`${JSON.stringify(t)}
36
- `,{encoding:"utf8",mode:384})}catch{}}async function fd(e){let t=qt(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await js(Yn(t),{recursive:!0}),await Us(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Wn(t,"",{flag:"wx"}).catch(()=>{}),(await Ms(n,"utf8").catch(()=>"")).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await qs(n,{force:!0})}}async function zn(e,t){let n=qt(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await js(Yn(n),{recursive:!0}),await Us(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await Wn(n,"",{flag:"wx"}).catch(()=>{});let o=(await Ms(r,"utf8").catch(()=>"")).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=md(n);await Wn(n,`${i.join(`
35
+ `}function ws(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Hn(o)&&Vn(o)===i&&Es(o)===t)return s}return-1}async function bs(e){try{return await Ku(e,Hu.F_OK),!0}catch{return!1}}var Fn,Xu,Ss=k(()=>{"use strict";j();Fn=St,Xu=".red/memory/graph.rdb"});var Os={};P(Os,{runRspMcpServer:()=>nl});import{createInterface as tl}from"node:readline";async function nl(){let e=te(process.cwd(),process.env),t=tl({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 rl(r,e);vs({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){vs({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 rl(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Ts(t)}]};if(!t.enabled)return{content:[{type:"text",text:Ts(t)}],isError:!0};let r=il(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}}return{}}function il(e){return new Xe(he(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs})}function Ts(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function vs(e){process.stdout.write(`${JSON.stringify(e)}
36
+ `)}function xs(e){try{return JSON.parse(e)}catch{return null}}var As=k(()=>{"use strict";j();Me()});function Kn(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"&&sl(t.chosenOption)&&ol(t.outcome)&&al(t.cost)}function sl(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function ol(e){return e==="success"||e==="failure"||e==="escalated"}function al(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var Ds=k(()=>{});import{createHash as cl}from"node:crypto";function Gs(e,t){return new Yn(e,t)}function Is(e){let t=Number(e.red_entity_id??e.rid),n=zn(e.properties??e.PROPERTIES),r=Fs(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 Ps(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=Js(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:zn(e.properties??e.PROPERTIES)}}function dl(e){let t=Number(e.red_entity_id??e.rid),n=zn(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Kn(n)?null:{rid:t,event:n}}function zn(e){return e==null?{}:typeof e=="string"?JSON.parse(e):jt(e)?e:{}}function Fs(e){let t=e==="contact"?"person":e;if(ul.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Js(e){if(ll.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function fl(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Ns(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ee(e){return jt(e)?e:{}}function $s(e,t){return Ee(e)[t]}function Bs(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ls(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Cs(e){let t=Ee(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function A(e){return typeof e=="string"&&e.length>0?e:void 0}function jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wn(e){return e!=null}function ml(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function pl(e){return cl("sha256").update(JSON.stringify(e)).digest("hex")}function yl(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ms(e){return`artifact-hash:${e}`}function js(e,t,n){return`connection:${e}:${t}:${n}`}function Us(){return"model-tier-bandit:v1"}function gl(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function qs(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Vs(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+qs(n,a)*3+qs(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function hl(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=Hs({...Vs(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return _e(i)}function Hs(e){return{...e,lexical:_e(e.lexical),tags:_e(e.tags),kind:_e(e.kind),connections:_e(e.connections),vector:_e(e.vector),total:_e(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _e(e){return Math.round(e*1e3)/1e3}function wl(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 bl(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 Rl(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var U,ul,ll,Yn,Ks=k(()=>{"use strict";Ds();U={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},ul=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),ll=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Yn=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(Ee(n));if(t==="getArtifact")return await this.getArtifact($s(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ee(n);return await this.search(Bs(r,"query"),Ls(r,"limit")??10,Cs(r.options))}if(t==="think"){let r=Ee(n);return await this.think(Bs(r,"query"),Ls(r,"limit")??8,Cs(r.options))}if(t==="link")return await this.link(Ee(n));if(t==="backlinks")return await this.backlinks($s(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ee(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 ${U.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${U.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${U.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Rl(t.map(r=>r.kind))}}async capture(t){let n=A(t.title)||"Untitled artifact",r=A(t.content);if(!r)throw new Error("brain capture requires content");let i=Fs(A(t.kind)||"note"),s=ml(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=pl([i,n,r,s,A(t.sourcePath),A(t.sourceSession)]),c=await this.kv().get(Ms(a));if(c!=null){let b=await this.getArtifact(Number(c));if(b)return b}let u=`${yl(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:A(t.sourceAgent),source_runner:A(t.sourceRunner),source_session:A(t.sourceSession),source_path:A(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:jt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${U.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let w=Is(m);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ms(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 ${U.artifacts}`)).rows.map(Is).filter(Wn)}async search(t,n,r={}){let i=gl(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!s.has(u.rid)).map(u=>{let l=Vs(u,i),d=Hs({...l,connections:hl(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:wl(u.properties.content,i)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return bl(t,i)}async link(t){let n=await this.getArtifact(Ns(t.from)),r=await this.getArtifact(Ns(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=Js(A(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let l=(await this.listConnections()).find(d=>d.rid===s);if(l)return l}let o={reason:A(t.reason),confidence:A(t.confidence)||"explicit",created_at:Date.now(),metadata:jt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${U.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ps(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(js(n.rid,r.rid,i),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${U.connections}`)).rows.map(Ps).filter(Wn)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=fl(A(t.interval)||"day"),i=A(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Kn(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${U.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 ${U.outcomeEvents}`)).rows.map(dl).filter(Wn).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Us());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Us(),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(js(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(U.kv)}}});var nr={};P(nr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_INDEX_COLLECTION:()=>Gt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_SPOOL:()=>to,appendTelemetryEvent:()=>Sl,drainTelemetrySpool:()=>Zn,parseTelemetryEvent:()=>er,readTelemetryGainsReport:()=>tr,readTelemetryStats:()=>Jt,takeTelemetrySpool:()=>Tl,telemetrySpoolPath:()=>Ft});import{appendFileSync as _l,mkdirSync as El,readFileSync as kl}from"node:fs";import{mkdir as zs,readFile as Qs,rename as Xs,rm as Zs,writeFile as Qn}from"node:fs/promises";import{dirname as Xn,join as eo}from"node:path";function Ft(e){return eo(e,to)}async function Sl(e,t){try{let n=Ft(e);El(Xn(n),{recursive:!0}),_l(n,`${JSON.stringify(t)}
37
+ `,{encoding:"utf8",mode:384})}catch{}}async function Tl(e){let t=Ft(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await zs(Xn(t),{recursive:!0}),await Xs(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Qn(t,"",{flag:"wx"}).catch(()=>{}),(await Qs(n,"utf8").catch(()=>"")).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await Zs(n,{force:!0})}}async function Zn(e,t){let n=Ft(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await zs(Xn(n),{recursive:!0}),await Xs(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await Qn(n,"",{flag:"wx"}).catch(()=>{});let o=(await Qs(r,"utf8").catch(()=>"")).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=vl(n);await Qn(n,`${i.join(`
37
38
  `)}
38
- ${s}`,"utf8")}await qs(r,{force:!0})}}function md(e){try{return dd(e,"utf8")}catch{return""}}function Qn(e){try{let t=JSON.parse(e);return!Vs(t)||t.collection!==Re&&t.collection!==Ee?null:t}catch{return null}}async function Ft(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await jt(e,Re)).filter(m=>ot(m)>=i),o=(await jt(e,Ee)).filter(m=>ot(m)>=i),a=0,c=0,u=0,d=0,l=new Map,p=new Map,w=[],b=0,T=0,S=0;for(let m of s){m.elided===!0&&a++;let E=q(m.raw_bytes),V=q(m.emitted_bytes),ft=Math.max(0,E-V),de=Math.max(0,q(m.tokens_raw)-q(m.tokens_emitted));c+=E,u+=V,d+=de;let le=at(m).slice(0,10);le&&l.set(le,(l.get(le)??0)+de);let y=ie(m.command)||"unknown",_=p.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};_.invocations++,_.bytes_saved+=ft,_.tokens_saved+=de,p.set(y,_);let Se=Mt(m.wrapper_ms);Se!=null&&w.push(Se),b+=q(m.store_open_count);let Te=Mt(m.store_elapsed_ms);Te!=null&&(T+=Te,S++)}let g=new Map,f=null;for(let m of o){let E=ie(m.reason)||"unknown";g.set(E,(g.get(E)??0)+1);let V=at(m);(!f||V>f.timestamp)&&(f={timestamp:V,reason:E,command:ie(m.command)||"unknown"})}let R=s.length+o.length;return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:u,bytes_saved:Math.max(0,c-u),tokens_saved:d,daily_tokens_saved:[...l.entries()].sort(([m],[E])=>m.localeCompare(E)).map(([m,E])=>({date:m,tokens_saved:E})),top_commands:[...p.values()].sort((m,E)=>E.bytes_saved-m.bytes_saved||E.tokens_saved-m.tokens_saved||m.command.localeCompare(E.command))},health:{degradations:o.length,degradation_rate:R===0?0:o.length/R,by_reason:[...g.entries()].sort((m,E)=>E[1]-m[1]||m[0].localeCompare(E[0])).map(([m,E])=>({reason:m,count:E})),most_recent:f},latency:{wrapper_ms_p50:Ue(w,.5),wrapper_ms_p95:Ue(w,.95),store_open_count_sum:b,store_elapsed_ms_sum:qe(T),store_elapsed_ms_avg:S===0?null:qe(T/S)}}}async function Xn(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 jt(e,Re)).filter(y=>ot(y)>=o),c=(await jt(e,Ee)).filter(y=>ot(y)>=o),u=[...a,...c].map(ot).filter(y=>Number.isFinite(y)&&y>0),d=u.length===0?null:Math.min(...u),l=d==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-d)/_d()))),p=[],w=new Map,b=new Map,T=new Map,S=new Map,g=new Map,f=new Map,R=0,m=null,E=0,V=0;for(let y of a){let _=at(y),Se=_.slice(0,10),Te=_.slice(0,16),ve=Cs(ie(y.command)),xe=Math.max(0,q(y.tokens_raw)-q(y.tokens_emitted)),Wt=Math.max(0,q(y.raw_bytes)-q(y.emitted_bytes)),Yt=Mt(y.wrapper_ms);if(Yt!=null){p.push(Yt);let pr=w.get(ve)??[];pr.push(Yt),w.set(ve,pr)}Se&&b.set(Se,(b.get(Se)??0)+1),Te&&T.set(Te,(T.get(Te)??0)+1);let zt=yd(_);zt&&S.set(zt,(S.get(zt)??0)+1);let Qt=wd(_);Qt&&g.set(Qt,(g.get(Qt)??0)+xe);let mt=f.get(ve)??{command_family:ve,invocations:0,tokens_saved:0,bytes_saved:0};mt.invocations++,mt.tokens_saved+=xe,mt.bytes_saved+=Wt,f.set(ve,mt),y.elided===!0&&R++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(E++,q(y.store_open_count)>0&&V++),xe>0&&(!m||xe>m.tokens_saved||xe===m.tokens_saved&&Wt>m.bytes_saved)&&(m={timestamp:_,command_family:ve,tokens_saved:xe,bytes_saved:Wt})}let ft=c.map(y=>({timestamp:at(y),command_family:Cs(ie(y.command)),reason:ie(y.reason)||"unknown"})).sort((y,_)=>y.timestamp.localeCompare(_.timestamp)),de=new Map;for(let y of ft)de.set(y.reason,(de.get(y.reason)??0)+1);let le=[...T.entries()].sort((y,_)=>_[1]-y[1]||y[0].localeCompare(_[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:l,since:s,until:i,label:`window: ${r}d, data: ${l}d`,empty:a.length===0&&c.length===0,invocations:a.length,degradations:c.length},latency:{global:Ls(p),by_command_family:[...w.entries()].sort((y,_)=>_[1].length-y[1].length||y[0].localeCompare(_[0])).map(([y,_])=>({command_family:y,count:_.length,...Ls(_)}))},throughput:{requests_per_day:[...b.entries()].sort(([y],[_])=>y.localeCompare(_)).map(([y,_])=>({date:y,requests:_})),active_minute_avg:T.size===0?null:qe([...T.values()].reduce((y,_)=>y+_,0)/T.size),peak_minute:le?{minute:le[0],requests:le[1]}:null,hour_weekday_heatmap:gd(S)},savings:{weekly_tokens_saved:bd(g),elision_rate:a.length===0?0:qe(R/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,_)=>_.tokens_saved-y.tokens_saved||_.bytes_saved-y.bytes_saved||y.command_family.localeCompare(_.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,_)=>_.invocations-y.invocations||_.tokens_saved-y.tokens_saved||y.command_family.localeCompare(_.command_family)).slice(0,10),single_biggest_elision:m},health:{degradation_timeline:ft,degradations_by_reason:[...de.entries()].sort((y,_)=>_[1]-y[1]||y[0].localeCompare(_[0])).map(([y,_])=>({reason:y,count:_})),cold_boots:E===0?null:V,warm_hits:E===0?null:Math.max(0,E-V)}}}async function jt(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=>pd(r.value)).filter(r=>Vs(r))}function pd(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function ot(e){let t=Date.parse(at(e));return Number.isFinite(t)?t:0}function at(e){return ie(e.created_at)||ie(e.ts)||""}function ie(e){return typeof e=="string"?e:""}function q(e){return Mt(e)??0}function Mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ue(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 Ls(e){return{wrapper_ms_p50:Ue(e,.5),wrapper_ms_p90:Ue(e,.9),wrapper_ms_p95:Ue(e,.95),wrapper_ms_p99:Ue(e,.99)}}function qe(e){return Math.round(e*100)/100}function Cs(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 yd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${hd(t.getUTCDay())}:${t.getUTCHours()}`:null}function gd(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 hd(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function wd(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 bd(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 _d(){return 24*60*60*1e3}function Vs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Gs,Re,Ee,Ut,Gt=k(()=>{"use strict";Gs=Fs(".red","tmp","rsp-telemetry.spool.jsonl"),Re="rsp_telemetry_invocations_v1",Ee="rsp_telemetry_degradations_v1",Ut="rsp_telemetry_index_v1"});var Xs={};P(Xs,{runResidentServer:()=>Od});import{randomUUID as nr}from"node:crypto";import{existsSync as Rd}from"node:fs";import{mkdir as Ys,rename as Ed,rm as kd,writeFile as Sd}from"node:fs/promises";import{createServer as Td}from"node:net";import{dirname as ir,join as Vt}from"node:path";import{fileURLToPath as vd,pathToFileURL as xd}from"node:url";async function Od(e){await Ys(ir(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await st.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new rr(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??kt,byteBudget:e.telemetryByteBudget??e.byteBudget??St}),o=e.telemetryDrainTimeoutMs??zs;await er(s,o);let a=e.idleMs??3e4,c,u=e.telemetryDrainIntervalMs??3e4,d=setInterval(()=>{er(s,o)},u);d.unref();let l=Td(w=>{p(),jd(w,async b=>{p();let T=await Md(n,b,e.storeUri,e.residentVersion??"0.0.0-dev"),S={id:b.id,ok:!0,value:T,storeOpenCount:i,storeElapsedMs:r};w.write(`${JSON.stringify(S)}
39
- `),b.op==="handover"&&setImmediate(()=>l.close())})});function p(){c&&clearTimeout(c),c=setTimeout(()=>{l.close()},a),c.unref()}await new Promise((w,b)=>{l.once("error",b),l.listen(e.socketPath,()=>{l.off("error",b),w()})}),p(),await new Promise(w=>l.once("close",w)),i=0,c&&clearTimeout(c),clearInterval(d),await er(s,o),await n.close(),await kd(e.socketPath,{force:!0})}async function Pd(e,t,n=new Date){let r=await Ft(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(c=>c.date===i)?.tokens_saved??0,o=Vt(t,Id),a=`${o}.${process.pid}.${Date.now()}.tmp`;await Ys(ir(o),{recursive:!0}),await Sd(a,JSON.stringify({version:1,tokens_saved_today:s,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await Ed(a,o)}async function er(e,t=zs){try{await Qs(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
40
- `)}}async function $d(e){if(e.collection!==Re)return e;let t=await Js(e.raw_text,Ks(e.raw_bytes)),n=await Js(e.emitted_text,Ks(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 Js(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Dd)try{return await Qs((async()=>({tokens:(await Nd())("cl100k_base").encode(e).length,estimated:!1}))(),Ad,"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 Nd(){return Hs??=import(xd(Bd()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Hs}function Bd(){let e=ir(vd(import.meta.url)),n=[Vt(e,"..","node_modules","js-tiktoken","dist","index.js"),Vt(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Rd(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Ks(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function tr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function Qs(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 Ld(e){try{return JSON.parse(e)}catch{return e}}function Cd(e){return Ws(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Ws(t)&&(t.collection===Re||t.collection===Ee)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Ws(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jd(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
41
- `);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let u={id:o?.id??nr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(u)}
42
- `)}finally{e.end()}})()})}async function Md(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 Ft(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 Xn(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return qd(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await Ud(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Ud(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await As(i,t).request(n,r)}function qd(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Dd,Ad,zs,Id,rr,Hs,Zs=k(()=>{"use strict";Bt();Bs();Gt();M();Dd=256*1024,Ad=500,zs=2e3,Id=Vt(".red","tmp","rsp-status-summary.json"),rr=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 zn(this.opts.rootDir,async i=>{let s=Qn(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:tr(s.command)||"unknown",source_id:tr(s.id),source_collection:tr(s.collection),error:o instanceof Error?o.message:String(o),bytes:Buffer.byteLength(i,"utf8")});return r.push(a),!0}}),await this.prune(t,{version:1,records:r}),await Pd(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,i=typeof n.created_at=="string"?n.created_at:r.toISOString(),s=new Date(Date.parse(i)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:nr(),a={...await $d(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeDrainDegradation(t,n){return await this.writeEvent(t,{collection:Ee,id:nr(),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(Ut).get("index:v1"),r=typeof n=="string"?Ld(n):n;return Cd(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Ut).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 se(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 eo(e,t){if(!t)return!0;let n=sr(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function B(e,t){return t?e.filter(n=>eo(n,t)):[...e]}function Fe(e,t){if(!t)return e;let r=e.split(`
43
- `).filter(i=>i&&eo(i,t));return r.length>0?`${r.join(`
39
+ ${s}`,"utf8")}await Zs(r,{force:!0})}}function vl(e){try{return kl(e,"utf8")}catch{return""}}function er(e){try{let t=JSON.parse(e);return!no(t)||t.collection!==ke&&t.collection!==Se?null:t}catch{return null}}async function Jt(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await Ut(e,ke)).filter(p=>ct(p)>=i),o=(await Ut(e,Se)).filter(p=>ct(p)>=i),a=0,c=0,u=0,l=0,d=new Map,m=new Map,w=[],b=0,T=0,S=0;for(let p of s){p.elided===!0&&a++;let E=q(p.raw_bytes),J=q(p.emitted_bytes),pt=Math.max(0,E-J),fe=Math.max(0,q(p.tokens_raw)-q(p.tokens_emitted));c+=E,u+=J,l+=fe;let me=ut(p).slice(0,10);me&&d.set(me,(d.get(me)??0)+fe);let y=oe(p.command)||"unknown",R=m.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};R.invocations++,R.bytes_saved+=pt,R.tokens_saved+=fe,m.set(y,R);let xe=qt(p.wrapper_ms);xe!=null&&w.push(xe),b+=q(p.store_open_count);let Oe=qt(p.store_elapsed_ms);Oe!=null&&(T+=Oe,S++)}let g=new Map,f=null;for(let p of o){let E=oe(p.reason)||"unknown";g.set(E,(g.get(E)??0)+1);let J=ut(p);(!f||J>f.timestamp)&&(f={timestamp:J,reason:E,command:oe(p.command)||"unknown"})}let _=s.length+o.length;return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:u,bytes_saved:Math.max(0,c-u),tokens_saved:l,daily_tokens_saved:[...d.entries()].sort(([p],[E])=>p.localeCompare(E)).map(([p,E])=>({date:p,tokens_saved:E})),top_commands:[...m.values()].sort((p,E)=>E.bytes_saved-p.bytes_saved||E.tokens_saved-p.tokens_saved||p.command.localeCompare(E.command))},health:{degradations:o.length,degradation_rate:_===0?0:o.length/_,by_reason:[...g.entries()].sort((p,E)=>E[1]-p[1]||p[0].localeCompare(E[0])).map(([p,E])=>({reason:p,count:E})),most_recent:f},latency:{wrapper_ms_p50:Fe(w,.5),wrapper_ms_p95:Fe(w,.95),store_open_count_sum:b,store_elapsed_ms_sum:Je(T),store_elapsed_ms_avg:S===0?null:Je(T/S)}}}async function tr(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 Ut(e,ke)).filter(y=>ct(y)>=o),c=(await Ut(e,Se)).filter(y=>ct(y)>=o),u=[...a,...c].map(ct).filter(y=>Number.isFinite(y)&&y>0),l=u.length===0?null:Math.min(...u),d=l==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-l)/Nl()))),m=[],w=new Map,b=new Map,T=new Map,S=new Map,g=new Map,f=new Map,_=0,p=null,E=0,J=0;for(let y of a){let R=ut(y),xe=R.slice(0,10),Oe=R.slice(0,16),Ae=Ys(oe(y.command)),De=Math.max(0,q(y.tokens_raw)-q(y.tokens_emitted)),Xt=Math.max(0,q(y.raw_bytes)-q(y.emitted_bytes)),Zt=qt(y.wrapper_ms);if(Zt!=null){m.push(Zt);let Tr=w.get(Ae)??[];Tr.push(Zt),w.set(Ae,Tr)}xe&&b.set(xe,(b.get(xe)??0)+1),Oe&&T.set(Oe,(T.get(Oe)??0)+1);let en=Ol(R);en&&S.set(en,(S.get(en)??0)+1);let tn=Il(R);tn&&g.set(tn,(g.get(tn)??0)+De);let yt=f.get(Ae)??{command_family:Ae,invocations:0,tokens_saved:0,bytes_saved:0};yt.invocations++,yt.tokens_saved+=De,yt.bytes_saved+=Xt,f.set(Ae,yt),y.elided===!0&&_++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(E++,q(y.store_open_count)>0&&J++),De>0&&(!p||De>p.tokens_saved||De===p.tokens_saved&&Xt>p.bytes_saved)&&(p={timestamp:R,command_family:Ae,tokens_saved:De,bytes_saved:Xt})}let pt=c.map(y=>({timestamp:ut(y),command_family:Ys(oe(y.command)),reason:oe(y.reason)||"unknown"})).sort((y,R)=>y.timestamp.localeCompare(R.timestamp)),fe=new Map;for(let y of pt)fe.set(y.reason,(fe.get(y.reason)??0)+1);let me=[...T.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:Ws(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,...Ws(R)}))},throughput:{requests_per_day:[...b.entries()].sort(([y],[R])=>y.localeCompare(R)).map(([y,R])=>({date:y,requests:R})),active_minute_avg:T.size===0?null:Je([...T.values()].reduce((y,R)=>y+R,0)/T.size),peak_minute:me?{minute:me[0],requests:me[1]}:null,hour_weekday_heatmap:Al(S)},savings:{weekly_tokens_saved:Pl(g),elision_rate:a.length===0?0:Je(_/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:p},health:{degradation_timeline:pt,degradations_by_reason:[...fe.entries()].sort((y,R)=>R[1]-y[1]||y[0].localeCompare(R[0])).map(([y,R])=>({reason:y,count:R})),cold_boots:E===0?null:J,warm_hits:E===0?null:Math.max(0,E-J)}}}async function Ut(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=>xl(r.value)).filter(r=>no(r))}function xl(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function ct(e){let t=Date.parse(ut(e));return Number.isFinite(t)?t:0}function ut(e){return oe(e.created_at)||oe(e.ts)||""}function oe(e){return typeof e=="string"?e:""}function q(e){return qt(e)??0}function qt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Fe(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 Je(n[r])}function Ws(e){return{wrapper_ms_p50:Fe(e,.5),wrapper_ms_p90:Fe(e,.9),wrapper_ms_p95:Fe(e,.95),wrapper_ms_p99:Fe(e,.99)}}function Je(e){return Math.round(e*100)/100}function Ys(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 Ol(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Dl(t.getUTCDay())}:${t.getUTCHours()}`:null}function Al(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 Dl(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Il(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 Pl(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:Je((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Nl(){return 24*60*60*1e3}function no(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var to,ke,Se,Gt,Vt=k(()=>{"use strict";to=eo(".red","tmp","rsp-telemetry.spool.jsonl"),ke="rsp_telemetry_invocations_v1",Se="rsp_telemetry_degradations_v1",Gt="rsp_telemetry_index_v1"});var lo={};P(lo,{runResidentServer:()=>ql});import{randomUUID as sr}from"node:crypto";import{existsSync as $l}from"node:fs";import{mkdir as ao,rename as Bl,rm as Ll,writeFile as Cl}from"node:fs/promises";import{createServer as Ml}from"node:net";import{dirname as ar,join as Ht}from"node:path";import{fileURLToPath as jl,pathToFileURL as Ul}from"node:url";async function ql(e){await ao(ar(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await at.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new or(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Tt,byteBudget:e.telemetryByteBudget??e.byteBudget??vt}),o=e.telemetryDrainTimeoutMs??co;await rr(s,o);let a=e.idleMs??3e4,c,u=e.telemetryDrainIntervalMs??3e4,l=setInterval(()=>{rr(s,o)},u);l.unref();let d=Ml(w=>{m(),Ql(w,async b=>{m();let T=await Xl(n,b,e.storeUri,e.residentVersion??"0.0.0-dev"),S={id:b.id,ok:!0,value:T,storeOpenCount:i,storeElapsedMs:r};w.write(`${JSON.stringify(S)}
40
+ `),b.op==="handover"&&setImmediate(()=>d.close())})});function m(){c&&clearTimeout(c),c=setTimeout(()=>{d.close()},a),c.unref()}await new Promise((w,b)=>{d.once("error",b),d.listen(e.socketPath,()=>{d.off("error",b),w()})}),m(),await new Promise(w=>d.once("close",w)),i=0,c&&clearTimeout(c),clearInterval(l),await rr(s,o),await n.close(),await Ll(e.socketPath,{force:!0})}async function Vl(e,t,n=new Date){let r=await Jt(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(c=>c.date===i)?.tokens_saved??0,o=Ht(t,Jl),a=`${o}.${process.pid}.${Date.now()}.tmp`;await ao(ar(o),{recursive:!0}),await Cl(a,JSON.stringify({version:1,tokens_saved_today:s,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await Bl(a,o)}async function rr(e,t=co){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)}
41
+ `)}}async function Hl(e){if(e.collection!==ke)return e;let t=await ro(e.raw_text,so(e.raw_bytes)),n=await ro(e.emitted_text,so(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 ro(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Gl)try{return await uo((async()=>({tokens:(await Kl())("cl100k_base").encode(e).length,estimated:!1}))(),Fl,"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 Kl(){return io??=import(Ul(Wl()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await io}function Wl(){let e=ar(jl(import.meta.url)),n=[Ht(e,"..","node_modules","js-tiktoken","dist","index.js"),Ht(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>$l(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function so(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ir(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 Yl(e){try{return JSON.parse(e)}catch{return e}}function zl(e){return oo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>oo(t)&&(t.collection===ke||t.collection===Se)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function oo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ql(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
42
+ `);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let u={id:o?.id??sr(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(u)}
43
+ `)}finally{e.end()}})()})}async function Xl(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 Jt(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 tr(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return ed(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await Zl(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Zl(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await Gs(i,t).request(n,r)}function ed(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Gl,Fl,co,Jl,or,io,fo=k(()=>{"use strict";Ct();Ks();Vt();j();Gl=256*1024,Fl=500,co=2e3,Jl=Ht(".red","tmp","rsp-status-summary.json"),or=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 Zn(this.opts.rootDir,async i=>{let s=er(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:ir(s.command)||"unknown",source_id:ir(s.id),source_collection:ir(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 Vl(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:sr(),a={...await Hl(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeDrainDegradation(t,n){return await this.writeEvent(t,{collection:Se,id:sr(),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(Gt).get("index:v1"),r=typeof n=="string"?Yl(n):n;return zl(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Gt).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 ae(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 mo(e,t){if(!t)return!0;let n=cr(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function B(e,t){return t?e.filter(n=>mo(n,t)):[...e]}function Ve(e,t){if(!t)return e;let r=e.split(`
44
+ `).filter(i=>i&&mo(i,t));return r.length>0?`${r.join(`
44
45
  `)}
45
- `:""}function oe(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function sr(e){return Array.isArray(e)?e.map(sr).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(sr).join(" "):String(e??"")}var Jt=k(()=>{"use strict"});var so={};P(so,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>H,GIT_LOG_MACHINE_FIELDS:()=>to,renderGitContract:()=>no,runGitWrapper:()=>Gd});import{spawn as Fd}from"node:child_process";async function Gd(e,t){let n=ro(e),r=io(n.argv),i=await Kd(r,n.argv.slice(1));return no(e,i,t)}async function no(e,t,n){let r=ro(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Fe(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=io(r.argv),s=Wd(i,r.argv,t.stdout,r.query);if(s===`git empty
46
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=O(s);if(Vd(i,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let a=rl(s);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let d=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 rsp show ${u}
47
- `;return{stdout:Buffer.from(`${O(a.payload)}
48
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function ro(e){let t=se(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function Vd(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Jd(e)||r.level!=="lossless")return!0;let i=nl(r.heavyGitByteThreshold,H);return Buffer.byteLength(t)<=i}function Jd(e){return e==="diff"||e==="log"}function io(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function Hd(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${to.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function Kd(e,t){let n=Fd("git",Hd(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Wd(e,t,n,r){switch(e){case"status":return Yd(t,n,r);case"log":return zd(t,n,r);case"diff":return Qd(t,n,r);case"commit":return ct(Xd(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ct(Zd(t,n),r,["rsp gh pr list --query <branch>"])}}function Yd(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",d=c.slice(8).join(" ");i.push({path:d,index:u[0]??".",worktree:u[1]??".",state:el(u)})}if(i.length===0)return`git empty
49
- `;let s=B(i,n),o=tl(s,"state");return ct({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 zd(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=B(r,n);return ct({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 Qd(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,u,d]=a.split(" ");return{path:d??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),s=B(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 ct({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 Xd(e,t){let n=t.split(`
50
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(i?.[1]??0),d=Number(s?.[1]??0),l=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:d,deletions:l,summary:`commit ${c} on ${a}: ${u} files, +${d} -${l}`}}function Zd(e,t){let n=t.split(`
51
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[u,d,l=""]=c.split(" "),[p,w]=(d??"").split(":");return{flag:u??"",from:p??"",to:w??"",summary:l}}),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 ct(e,t,n){return t?oe(e,n):e}function el(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function tl(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function nl(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function rl(e){for(let t of["rows","commits","files","refs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var to,oo=k(()=>{"use strict";Pe();M();Jt();M();to=["%h","%an","%as","%s"]});var bo={};P(bo,{renderGhContract:()=>uo,runGhWrapper:()=>al});import{spawn as co}from"node:child_process";async function al(e,t){let n=lo(e),r=await ul(n);return uo(e,r,t)}async function uo(e,t,n){let r=se(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Fe(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=lo(e),s=Ht(t.stdout),o=ll(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=wl(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let b=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=b}let c=a?.target.truncated.handle||void 0,u=O(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=bl(o);if(!d)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Buffer.byteLength(u),p=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let w=`\u2026 elided ${d.rowsElided} rows (+${l}) \u2014 rsp show ${p}
52
- `;return{stdout:Buffer.from(`${O(d.payload)}
53
- ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:d.payload,mintedHandle:p,bytesElided:l,rowsElided:d.rowsElided,rawOutput:Buffer.from(u)}}function lo(e){let t=se(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:s.push(u);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function cl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?sl[t]:il[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function ul(e){if(e.action==="combined")return await dl(e);let t=co("gh",cl(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 dl(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([or(["pr","view",t,"--json",n.join(",")]),or(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),or(["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:Ht(i.stdout),checks:Ht(s.stdout),comments:Ht(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function or(e){let t=co("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 ll(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return yl(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=Ve(n).map(o=>fo(o,e.wide)),s=B(i,e.query);return Ge({...r,prs:s,summary:`${ar(s.length,i.length,e.query)} ${ao(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Ge({...r,pr:mo(F(n),e),summary:`PR #${ke(F(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return fl(e,t,F(n));case"issue:list":{let i=Ve(n).map(o=>po(o,e.wide)),s=B(i,e.query);return Ge({...r,issues:s,summary:`${ar(s.length,i.length,e.query)} ${ao(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Ge({...r,issue:gl(F(n),e),summary:`issue #${ke(F(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=Ve(n).map(o=>yo(o,e.wide)),s=B(i,e.query);return Ge({...r,runs:s,summary:`${ar(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 Ge({...r,run:hl(F(n),e),summary:`run ${ke(F(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function fl(e,t,n){let r=mo(F(n.view),{...e,action:"view",wide:!0}),i=B(Ve(n.checks).map(ml),e.query),s=F(n.comments).comments,o=B(Ve(s).map(pl).slice(-3),e.query);return oe({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${ke(F(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 ml(e){return{name:v(e,"name"),state:ut(e),bucket:v(e,"bucket"),conclusion:v(e,"conclusion"),workflow:v(e,"workflow"),link:v(e,"link")}}function pl(e){return{author:wo(e.author),body:Kt(e,"body",cr,!1),created:v(e,"createdAt")}}function yl(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
46
+ `:""}function ce(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function cr(e){return Array.isArray(e)?e.map(cr).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(cr).join(" "):String(e??"")}var Kt=k(()=>{"use strict"});var ur={};P(ur,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>H,GIT_LOG_MACHINE_FIELDS:()=>po,recoveryInstruction:()=>Te,renderGitContract:()=>yo,runGitWrapper:()=>nd});import{spawn as td}from"node:child_process";async function nd(e,t){let n=go(e),r=ho(n.argv),i=await od(r,n.argv.slice(1));return yo(e,i,t)}async function yo(e,t,n){let r=go(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ve(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=ho(r.argv),s=ad(i,r.argv,t.stdout,r.query);if(s===`git empty
47
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=x(s);if(rd(i,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let a=gd(s);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${Te(u)}
48
+ `;return{stdout:Buffer.from(`${x(a.payload)}
49
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function Te(e){return e.startsWith("el:")?`rsp show ${e}`:e}function go(e){let t=ae(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 rd(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!id(e)||r.level!=="lossless")return!0;let i=yd(r.heavyGitByteThreshold,H);return Buffer.byteLength(t)<=i}function id(e){return e==="diff"||e==="log"}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")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function sd(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${po.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function od(e,t){let n=td("git",sd(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function ad(e,t,n,r){switch(e){case"status":return cd(t,n,r);case"log":return ud(t,n,r);case"diff":return ld(t,n,r);case"commit":return lt(dd(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return lt(fd(t,n),r,["rsp gh pr list --query <branch>"])}}function cd(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");i.push({path:l,index:u[0]??".",worktree:u[1]??".",state:md(u)})}if(i.length===0)return`git empty
50
+ `;let s=B(i,n),o=pd(s,"state");return lt({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 ud(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=B(r,n);return lt({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 ld(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),s=B(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 lt({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 dd(e,t){let n=t.split(`
51
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(i?.[1]??0),l=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function fd(e,t){let n=t.split(`
52
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[m,w]=(l??"").split(":");return{flag:u??"",from:m??"",to:w??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function lt(e,t,n){return t?ce(e,n):e}function md(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function pd(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function yd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function gd(e){for(let t of["rows","commits","files","refs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var po,dt=k(()=>{"use strict";Be();j();Kt();j();po=["%h","%an","%as","%s"]});var mr={};P(mr,{renderGhContract:()=>Ro,runGhWrapper:()=>Rd});import{spawn as bo}from"node:child_process";async function Rd(e,t){let n=_o(e),r=await Ed(n);return Ro(e,r,t)}async function Ro(e,t,n){let r=ae(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Ve(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=_o(e),s=Wt(t.stdout),o=Sd(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=Id(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let b=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=b}let c=a?.target.truncated.handle||void 0,u=x(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Pd(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),m=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!m)throw new Error("terse gh output requires an elision store");let w=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${Te(m)}
53
+ `;return{stdout:Buffer.from(`${x(l.payload)}
54
+ ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:m,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function _o(e){let t=ae(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:s.push(u);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function _d(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?wd[t]:hd[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Ed(e){if(e.action==="combined")return await kd(e);let t=bo("gh",_d(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 kd(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([lr(["pr","view",t,"--json",n.join(",")]),lr(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),lr(["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:Wt(i.stdout),checks:Wt(s.stdout),comments:Wt(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function lr(e){let t=bo("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 Sd(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Od(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=Ke(n).map(o=>Eo(o,e.wide)),s=B(i,e.query);return He({...r,prs:s,summary:`${dr(s.length,i.length,e.query)} ${wo(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return He({...r,pr:ko(G(n),e),summary:`PR #${ve(G(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Td(e,t,G(n));case"issue:list":{let i=Ke(n).map(o=>So(o,e.wide)),s=B(i,e.query);return He({...r,issues:s,summary:`${dr(s.length,i.length,e.query)} ${wo(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return He({...r,issue:Ad(G(n),e),summary:`issue #${ve(G(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=Ke(n).map(o=>To(o,e.wide)),s=B(i,e.query);return He({...r,runs:s,summary:`${dr(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 He({...r,run:Dd(G(n),e),summary:`run ${ve(G(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Td(e,t,n){let r=ko(G(n.view),{...e,action:"view",wide:!0}),i=B(Ke(n.checks).map(vd),e.query),s=G(n.comments).comments,o=B(Ke(s).map(xd).slice(-3),e.query);return ce({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${ve(G(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 vd(e){return{name:v(e,"name"),state:ft(e),bucket:v(e,"bucket"),conclusion:v(e,"conclusion"),workflow:v(e,"workflow"),link:v(e,"link")}}function xd(e){return{author:Oo(e.author),body:Yt(e,"body",fr,!1),created:v(e,"createdAt")}}function Od(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
54
55
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
55
56
  `:`0 runs \u2014 try: rsp gh run list --limit 20
56
- `}function fo(e,t){let n={number:ke(e,"number"),title:v(e,"title"),state:ut(e),draft:!!e.isDraft};return t&&Object.assign(n,go(e)),n}function mo(e,t){let n=fo(e,t.wide);return n.body=Kt(e,"body",cr,t.full),t.wide&&(n.base=v(e,"baseRefName"),n.head=v(e,"headRefName")),n}function po(e,t){let n={number:ke(e,"number"),title:v(e,"title"),state:ut(e),labels:ho(e.labels)};return t&&Object.assign(n,go(e)),n}function gl(e,t){let n=po(e,t.wide);return n.body=Kt(e,"body",cr,t.full),n}function yo(e,t){let n={id:ke(e,"databaseId"),name:v(e,"name"),status:ut(e),conclusion:v(e,"conclusion")};return t&&(n.event=v(e,"event"),n.branch=v(e,"headBranch"),n.workflow=v(e,"workflowName"),n.created=v(e,"createdAt")),n}function hl(e,t){let n=yo(e,t.wide),r=Ve(e.jobs).map(i=>({name:v(i,"name"),status:ut(i),conclusion:v(i,"conclusion"),log:Kt(i,"log",ol,t.full)}));return n.jobs=r,n}function Kt(e,t,n,r){let i=v(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 wl(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(Je(n)){if(Je(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 bl(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 ao(e,t){return e.every(n=>n.state===t)?t:"returned"}function ar(e,t,n){return n?`${e}/${t}`:String(e)}function Ge(e,t,n){return t.query?oe(e,n):e}function ut(e){return(v(e,"state")||v(e,"status")).toLowerCase()}function go(e){return{author:wo(e.author),labels:ho(e.labels),url:v(e,"url"),updated:v(e,"updatedAt")}}function ho(e){return Array.isArray(e)?e.map(t=>Je(t)?v(t,"name"):String(t)).filter(Boolean):[]}function wo(e){return Je(e)?v(e,"login"):""}function Ht(e){return e.trim()?JSON.parse(e):null}function Ve(e){return Array.isArray(e)?e.filter(Je):[]}function F(e){return Je(e)?e:{}}function v(e,t){let n=e[t];return typeof n=="string"?n:""}function ke(e,t){let n=e[t];return typeof n=="number"?n:0}function Je(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var il,sl,cr,ol,_o=k(()=>{"use strict";Pe();Jt();il={"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"]},sl={"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"]},cr=160,ol=160});var So={};P(So,{renderTestContract:()=>Ro,runTestWrapper:()=>Sl});import{spawn as _l}from"node:child_process";async function Sl(e,t){let n=se(e),r=await Dl(n.argv);return await Ro(e,r,t)}async function Ro(e,t,n){let r=se(e),s=Eo(r.argv)==="vitest"?Al(t.stdout):Il(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Fe(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 ${Nl(s.durationSeconds)}`,c=B(s.failures,r.query);if(n.level==="terse")return await Tl(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],d,l=0;for(let b of c){let T=await Pl(b.excerpt,r.argv.join(" "),n.store);u.push({suite:b.suite,name:b.name,excerpt:T.text}),d??=T.handle,l+=T.bytesElided}let p={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};u.length>0&&(p.failures=u);let w=r.query?oe(p,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):p;return{stdout:Buffer.from(O(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:d,bytesElided:l>0?l:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Tl(e,t,n,r,i,s,o){let a=vl(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let u=o?oe(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,d=O(u),l=Math.max(0,n.failures.length-a.length),p=a.some((R,m)=>R.excerpt!==n.failures[m].excerpt);if(l===0&&!p)return{stdout:Buffer.from(d),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(R=>({suite:R.suite,name:R.name,excerpt:R.excerpt})));let b=O(w),T=Buffer.byteLength(b),S=await s.store?.mint(Buffer.from(b),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!S)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${l>0?`${l} failures`:"full detail"} (+${T}) \u2014 rsp show ${S}`;return{stdout:Buffer.from(`${d}
57
- ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:S,bytesElided:T,rowsElided:l,rawOutput:Buffer.from(b)}}function vl(e){let t=[],n=El;for(let r of e.slice(0,kl)){let i=xl(r.excerpt,Math.min(Rl,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function xl(e,t){if(t<=0)return"";let n=e.split(`
57
+ `}function Eo(e,t){let n={number:ve(e,"number"),title:v(e,"title"),state:ft(e),draft:!!e.isDraft};return t&&Object.assign(n,vo(e)),n}function ko(e,t){let n=Eo(e,t.wide);return n.body=Yt(e,"body",fr,t.full),t.wide&&(n.base=v(e,"baseRefName"),n.head=v(e,"headRefName")),n}function So(e,t){let n={number:ve(e,"number"),title:v(e,"title"),state:ft(e),labels:xo(e.labels)};return t&&Object.assign(n,vo(e)),n}function Ad(e,t){let n=So(e,t.wide);return n.body=Yt(e,"body",fr,t.full),n}function To(e,t){let n={id:ve(e,"databaseId"),name:v(e,"name"),status:ft(e),conclusion:v(e,"conclusion")};return t&&(n.event=v(e,"event"),n.branch=v(e,"headBranch"),n.workflow=v(e,"workflowName"),n.created=v(e,"createdAt")),n}function Dd(e,t){let n=To(e,t.wide),r=Ke(e.jobs).map(i=>({name:v(i,"name"),status:ft(i),conclusion:v(i,"conclusion"),log:Yt(i,"log",bd,t.full)}));return n.jobs=r,n}function Yt(e,t,n,r){let i=v(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 Id(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(We(n)){if(We(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 Pd(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 wo(e,t){return e.every(n=>n.state===t)?t:"returned"}function dr(e,t,n){return n?`${e}/${t}`:String(e)}function He(e,t,n){return t.query?ce(e,n):e}function ft(e){return(v(e,"state")||v(e,"status")).toLowerCase()}function vo(e){return{author:Oo(e.author),labels:xo(e.labels),url:v(e,"url"),updated:v(e,"updatedAt")}}function xo(e){return Array.isArray(e)?e.map(t=>We(t)?v(t,"name"):String(t)).filter(Boolean):[]}function Oo(e){return We(e)?v(e,"login"):""}function Wt(e){return e.trim()?JSON.parse(e):null}function Ke(e){return Array.isArray(e)?e.filter(We):[]}function G(e){return We(e)?e:{}}function v(e,t){let n=e[t];return typeof n=="string"?n:""}function ve(e,t){let n=e[t];return typeof n=="number"?n:0}function We(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hd,wd,fr,bd,pr=k(()=>{"use strict";Be();dt();Kt();hd={"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"]},wd={"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"]},fr=160,bd=160});var gr={};P(gr,{renderTestContract:()=>Ao,runTestWrapper:()=>Cd});import{spawn as Nd}from"node:child_process";async function Cd(e,t){let n=ae(e),r=await Gd(n.argv);return await Ao(e,r,t)}async function Ao(e,t,n){let r=ae(e),s=Do(r.argv)==="vitest"?Fd(t.stdout):Jd(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Ve(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 ${Kd(s.durationSeconds)}`,c=B(s.failures,r.query);if(n.level==="terse")return await Md(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let b of c){let T=await Vd(b.excerpt,r.argv.join(" "),n.store);u.push({suite:b.suite,name:b.name,excerpt:T.text}),l??=T.handle,d+=T.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};u.length>0&&(m.failures=u);let w=r.query?ce(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(x(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Md(e,t,n,r,i,s,o){let a=jd(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let u=o?ce(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=x(u),d=Math.max(0,n.failures.length-a.length),m=a.some((_,p)=>_.excerpt!==n.failures[p].excerpt);if(d===0&&!m)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(_=>({suite:_.suite,name:_.name,excerpt:_.excerpt})));let b=x(w),T=Buffer.byteLength(b),S=await s.store?.mint(Buffer.from(b),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!S)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${T}) \u2014 ${Te(S)}`;return{stdout:Buffer.from(`${l}
58
+ ${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:S,bytesElided:T,rowsElided:d,rawOutput:Buffer.from(b)}}function jd(e){let t=[],n=Bd;for(let r of e.slice(0,Ld)){let i=Ud(r.excerpt,Math.min($d,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Ud(e,t){if(t<=0)return"";let n=e.split(`
58
59
  `),r=n.length<=2?e:`${n[0]}
59
60
  \u2026
60
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Eo(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 Ol(e){if(Eo(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 Dl(e){let t=Ol(e),n=_l(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 Al(e){let t=ko(e);if(!ae(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=ce(t.numTotalTests),s=ce(t.numFailedTests),o=Bl(ce(t.startTime),ce(t.endTime));for(let a of n){if(!ae(a))continue;let c=G(a.name)||G(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let d of u)ae(d)&&d.status==="failed"&&r.push({suite:c,name:G(d.fullName)||G(d.title)||G(d.name),excerpt:$l(d.failureMessages)||G(d.failureMessage)})}return i||=n.reduce((a,c)=>!ae(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>ae(c)?a+ce(c.perfStats&&ae(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Il(e){let t=e.split(`
61
- `).filter(Boolean).map(c=>ko(c)).filter(ae);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+=ce(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=ce(c.failed),o+=ce(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:G(c.name).split("::").slice(0,-1).join("::"),name:G(c.name),excerpt:G(c.stdout)});continue}if(c.reason==="compiler-message"&&ae(c.message)){let u=G(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
62
- `)}),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 Pl(e,t,n){let r=Buffer.from(e);if(r.length<=ur)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,ur).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
63
- \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function ko(e){try{return JSON.parse(e)}catch{return null}}function $l(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
64
- `):""}function Nl(e){return`${Number(e.toFixed(1))}s`}function Bl(e,t){return e>0&&t>e?(t-e)/1e3:0}function ce(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function G(e){return typeof e=="string"?e:""}function ae(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ur,Rl,El,kl,To=k(()=>{"use strict";Pe();Jt();ur=320,Rl=160,El=ur,kl=3});Pe();import{appendFileSync as vo,existsSync as mr,mkdirSync as Ll,readdirSync as Cl}from"node:fs";import{dirname as jl,join as Ml}from"node:path";function Br(e){let t={app:e,version:Oa($e("__RED_BUILD_VERSION__",()=>"2.43.0")??"0.0.0-dev"),gitSha:$e("__RED_BUILD_GIT_SHA__",()=>"809ed5c081ab042908db5143230cdec6a0f5a0e1")??"unknown",buildTime:$e("__RED_BUILD_TIME__",()=>"2026-07-13T02:58:29-03:00")??"unknown",bundleAsset:$e("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=$e("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=$e("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Oa(e){return e.startsWith("v")?e.slice(1):e}function $e(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}async function Ul(e=process.argv.slice(2)){let t=Br("rsp"),n=Yl(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(li(),di));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Ti(),Si));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(fs(),ls)),f=await g(process.cwd());return process.stdout.write(rf(f)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(hs(),gs));return await g(),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(M(),Gr)),i=r(process.cwd(),process.env,n.storeUri),s=Kl(n.command);if(!i.enabled)return s?await He(dr(),n.positional):(process.stdout.write(`${dr()}
65
- `),0);if(n.command==="git"&&xo(n.positional)&&await ql(process.cwd())){let g=process.hrtime.bigint();return await dt(n,await Oo(),g)}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Be(),Ot));if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(Zs(),Xs)),f=ue(n.positional,"--socket")??o(process.cwd()).socketPath,R=r(process.cwd(),process.env,n.storeUri??ue(n.positional,"--store-uri"));return R.enabled?(await g({socketPath:f,storeUri:R.storeUri,ttlDays:I(n.positional,"--ttl-days")??R.ttlDays,byteBudget:I(n.positional,"--byte-budget")??R.byteBudget,telemetryTtlDays:I(n.positional,"--telemetry-ttl-days")??R.telemetryTtlDays,telemetryByteBudget:I(n.positional,"--telemetry-byte-budget")??R.telemetryByteBudget,telemetryDrainIntervalMs:I(n.positional,"--telemetry-drain-interval-ms")??R.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:I(n.positional,"--telemetry-drain-timeout-ms")??R.telemetryDrainTimeoutMs,idleMs:I(n.positional,"--idle-ms"),residentVersion:ue(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${dr()}
66
- `),0)}if(n.command==="warm-resident"){let g=o(process.cwd()),f=ue(n.positional,"--socket")??g.socketPath,R=ue(n.positional,"--wake-lock")??g.wakeLockPath,m=r(process.cwd(),process.env,n.storeUri??ue(n.positional,"--store-uri"));if(!m.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>(Be(),Ot));return await E({...g,socketPath:f,wakeLockPath:R},{storeUri:m.storeUri,ttlDays:I(n.positional,"--ttl-days")??m.ttlDays,byteBudget:I(n.positional,"--byte-budget")??m.byteBudget,telemetryTtlDays:I(n.positional,"--telemetry-ttl-days")??m.telemetryTtlDays,telemetryByteBudget:I(n.positional,"--telemetry-byte-budget")??m.telemetryByteBudget,telemetryDrainIntervalMs:I(n.positional,"--telemetry-drain-interval-ms")??m.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:I(n.positional,"--telemetry-drain-timeout-ms")??m.telemetryDrainTimeoutMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:d}=await import("node:url"),l=o(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(d(i.storeUri)))return s?await He("store not provisioned",n.positional,void 0,l.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
67
- `),1);let p=()=>Promise.resolve(new a(l,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,clientVersion:t.version})),w=()=>c(l,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,clientVersion:t.version}),b=async()=>{let{RspElisionStore:g}=await Promise.resolve().then(()=>(Bt(),jn));return await g.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},T=()=>i.storeUri.endsWith("/red-skills.rdb")?p():b(),S;try{if(!n.command||n.command==="stats"){let g=await T();S=()=>g.close();let f=await g.stats(),R=Gl(g)?await g.telemetryStats(lr(n.positional,30)):Do(lr(n.positional,30));return process.stdout.write(Ql(f,R,zl(n.positional))),0}if(n.command==="gains"){let g=await T();if(S=()=>g.close(),!Vl(g))return process.stdout.write(`error: rsp gains requires the shared RedDB store
68
- `),1;let f=await g.telemetryGains(lr(n.positional,28));return process.stdout.write(Xl(f)),0}if(n.command==="git"){try{await Q(w)}catch(E){return await He("resident unavailable",n.positional,E,l.rootDir)}if(xo(n.positional)){let E=process.hrtime.bigint();return await dt(n,await Oo(),E)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(oo(),so)),f=new lt(()=>Q(p));S=()=>f.close();let R=process.hrtime.bigint(),m=await Q(()=>g(n.positional,{level:n.level,store:f,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await dt(n,m,R,f)}if(n.command==="gh"){try{await Q(w)}catch(E){return await He("resident unavailable",n.positional,E,l.rootDir)}let{runGhWrapper:g}=await Promise.resolve().then(()=>(_o(),bo)),f=new lt(()=>Q(p));S=()=>f.close();let R=process.hrtime.bigint(),m=await Q(()=>g(n.positional,{level:n.level,store:f}));return await dt(n,m,R,f)}if(n.command==="vitest"||n.command==="cargo"){try{await Q(w)}catch(E){return await He("resident unavailable",n.positional,E,l.rootDir)}let{runTestWrapper:g}=await Promise.resolve().then(()=>(To(),So)),f=new lt(()=>Q(p));S=()=>f.close();let R=process.hrtime.bigint(),m=await Q(()=>g(n.positional,{level:n.level,store:f}));return await dt(n,m,R,f)}if(n.command==="show"&&n.handle){let g=await T();S=()=>g.close();let f=await g.get(n.handle);return f&&"original"in f&&f.original?(process.stdout.write(f.original),0):f?.status==="expired"?(process.stdout.write(`expired ${f.expired_at} \u2014 re-run: ${f.command}
61
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Do(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 qd(e){if(Do(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 Gd(e){let t=qd(e),n=Nd(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 Fd(e){let t=Io(e);if(!ue(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=le(t.numTotalTests),s=le(t.numFailedTests),o=Wd(le(t.startTime),le(t.endTime));for(let a of n){if(!ue(a))continue;let c=F(a.name)||F(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)ue(l)&&l.status==="failed"&&r.push({suite:c,name:F(l.fullName)||F(l.title)||F(l.name),excerpt:Hd(l.failureMessages)||F(l.failureMessage)})}return i||=n.reduce((a,c)=>!ue(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>ue(c)?a+le(c.perfStats&&ue(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Jd(e){let t=e.split(`
62
+ `).filter(Boolean).map(c=>Io(c)).filter(ue);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+=le(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=le(c.failed),o+=le(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:F(c.name).split("::").slice(0,-1).join("::"),name:F(c.name),excerpt:F(c.stdout)});continue}if(c.reason==="compiler-message"&&ue(c.message)){let u=F(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
63
+ `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function Vd(e,t,n){let r=Buffer.from(e);if(r.length<=yr)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,yr).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
64
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${Te(i)}`,handle:i,bytesElided:r.length}}function Io(e){try{return JSON.parse(e)}catch{return null}}function Hd(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
65
+ `):""}function Kd(e){return`${Number(e.toFixed(1))}s`}function Wd(e,t){return e>0&&t>e?(t-e)/1e3:0}function le(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function F(e){return typeof e=="string"?e:""}function ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var yr,$d,Bd,Ld,hr=k(()=>{"use strict";Be();dt();Kt();yr=320,$d=160,Bd=yr,Ld=3});Be();import{appendFileSync as Po,existsSync as _r,mkdirSync as Yd,readdirSync as zd}from"node:fs";import{dirname as Qd,join as Xd}from"node:path";function Hr(e){let t={app:e,version:Pa(Le("__RED_BUILD_VERSION__",()=>"2.43.1")??"0.0.0-dev"),gitSha:Le("__RED_BUILD_GIT_SHA__",()=>"19de8838ddbe4f10a1bd9d4816ee1052c9a5cee1")??"unknown",buildTime:Le("__RED_BUILD_TIME__",()=>"2026-07-13T03:25:28-03:00")??"unknown",bundleAsset:Le("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Le("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Le("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Pa(e){return e.startsWith("v")?e.slice(1):e}function Le(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}async function Zd(e=process.argv.slice(2)){let t=Hr("rsp"),n=uf(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Ei(),_i));return await g()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Ci(),Li));return await g()}if(n.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Ss(),ks)),f=await g(process.cwd());return process.stdout.write(hf(f)),0}if(n.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(As(),Os));return await g(),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(j(),ei)),i=r(process.cwd(),process.env,n.storeUri),s=af(n.command);if(!i.enabled)return s?await Qt(wr(),n.positional):(process.stdout.write(`${wr()}
66
+ `),0);if(n.command==="git"&&Er(n.positional)&&await ef(process.cwd())){let g=process.hrtime.bigint();return await X(n,await kr(),g)}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Me(),Dt));if(n.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(fo(),lo)),f=de(n.positional,"--socket")??o(process.cwd()).socketPath,_=r(process.cwd(),process.env,n.storeUri??de(n.positional,"--store-uri"));return _.enabled?(await g({socketPath:f,storeUri:_.storeUri,ttlDays:I(n.positional,"--ttl-days")??_.ttlDays,byteBudget:I(n.positional,"--byte-budget")??_.byteBudget,telemetryTtlDays:I(n.positional,"--telemetry-ttl-days")??_.telemetryTtlDays,telemetryByteBudget:I(n.positional,"--telemetry-byte-budget")??_.telemetryByteBudget,telemetryDrainIntervalMs:I(n.positional,"--telemetry-drain-interval-ms")??_.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:I(n.positional,"--telemetry-drain-timeout-ms")??_.telemetryDrainTimeoutMs,idleMs:I(n.positional,"--idle-ms"),residentVersion:de(n.positional,"--resident-version")??t.version}),0):(process.stdout.write(`${wr()}
67
+ `),0)}if(n.command==="warm-resident"){let g=o(process.cwd()),f=de(n.positional,"--socket")??g.socketPath,_=de(n.positional,"--wake-lock")??g.wakeLockPath,p=r(process.cwd(),process.env,n.storeUri??de(n.positional,"--store-uri"));if(!p.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>(Me(),Dt));return await E({...g,socketPath:f,wakeLockPath:_},{storeUri:p.storeUri,ttlDays:I(n.positional,"--ttl-days")??p.ttlDays,byteBudget:I(n.positional,"--byte-budget")??p.byteBudget,telemetryTtlDays:I(n.positional,"--telemetry-ttl-days")??p.telemetryTtlDays,telemetryByteBudget:I(n.positional,"--telemetry-byte-budget")??p.telemetryByteBudget,telemetryDrainIntervalMs:I(n.positional,"--telemetry-drain-interval-ms")??p.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:I(n.positional,"--telemetry-drain-timeout-ms")??p.telemetryDrainTimeoutMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),d=o(process.cwd());if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await zt(n,i,d.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
68
+ `),1);let m=()=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,clientVersion:t.version})),w=()=>c(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,clientVersion:t.version}),b=async()=>{let{RspElisionStore:g}=await Promise.resolve().then(()=>(Ct(),qn));return await g.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},T=()=>i.storeUri.endsWith("/red-skills.rdb")?m():b(),S;try{if(!n.command||n.command==="stats"){let g=await T();S=()=>g.close();let f=await g.stats(),_=nf(g)?await g.telemetryStats(br(n.positional,30)):No(br(n.positional,30));return process.stdout.write(df(f,_,lf(n.positional))),0}if(n.command==="gains"){let g=await T();if(S=()=>g.close(),!rf(g))return process.stdout.write(`error: rsp gains requires the shared RedDB store
69
+ `),1;let f=await g.telemetryGains(br(n.positional,28));return process.stdout.write(ff(f)),0}if(n.command==="git"){try{await Q(w)}catch(E){return await zt(n,i,d.rootDir,E)}if(Er(n.positional)){let E=process.hrtime.bigint();return await X(n,await kr(),E)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(dt(),ur)),f=new mt(()=>Q(m));S=()=>f.close();let _=process.hrtime.bigint(),p=await Q(()=>g(n.positional,{level:n.level,store:f,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await X(n,p,_,f)}if(n.command==="gh"){try{await Q(w)}catch(E){return await zt(n,i,d.rootDir,E)}let{runGhWrapper:g}=await Promise.resolve().then(()=>(pr(),mr)),f=new mt(()=>Q(m));S=()=>f.close();let _=process.hrtime.bigint(),p=await Q(()=>g(n.positional,{level:n.level,store:f}));return await X(n,p,_,f)}if(n.command==="vitest"||n.command==="cargo"){try{await Q(w)}catch(E){return await zt(n,i,d.rootDir,E)}let{runTestWrapper:g}=await Promise.resolve().then(()=>(hr(),gr)),f=new mt(()=>Q(m));S=()=>f.close();let _=process.hrtime.bigint(),p=await Q(()=>g(n.positional,{level:n.level,store:f}));return await X(n,p,_,f)}if(n.command==="show"&&n.handle){let g=await T();S=()=>g.close();let f=await g.get(n.handle);return f&&"original"in f&&f.original?(process.stdout.write(f.original),0):f?.status==="expired"?(process.stdout.write(`expired ${f.expired_at} \u2014 re-run: ${f.command}
69
70
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
70
71
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
71
- `),2}catch(g){if(s)return await He("wrapper failed",n.positional,g,l.rootDir);throw g}finally{await S?.()}}function ue(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function I(e,t){let n=ue(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function xo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ql(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Be(),Ot));return mr(t(e).socketPath)}async function Oo(){if(Fl(process.cwd()))return{stdout:Buffer.from(`git empty
72
+ `),2}catch(g){if(s)return await Qt("wrapper failed",n.positional,g,d.rootDir);throw g}finally{await S?.()}}function de(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function I(e,t){let n=de(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Er(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ef(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Me(),Dt));return _r(t(e).socketPath)}async function kr(){if(tf(process.cwd()))return{stdout:Buffer.from(`git empty
72
73
  `),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
73
74
  `),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
74
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function Fl(e){try{return!mr(`${e}/.git`)||mr(`${e}/.git/index`)?!1:Cl(e).every(t=>t===".git")}catch{return!1}}function Gl(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function Vl(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var lt=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}};async function dt(e,t,n,r){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let i=Number(process.hrtime.bigint()-n)/1e6;return r?await Jl(e,t,i,r.lastResponseMetrics()):Hl(e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Jl(e,t,n,r){let i=Buffer.concat([t.stdout,t.stderr]),s=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),{appendTelemetryEvent:o,RSP_TELEMETRY_INVOCATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(Gt(),Zn));await o(process.cwd(),{collection:a,ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,raw_text:s.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:n,store_open_count:r?.storeOpenCount,store_elapsed_ms:r?.storeElapsedMs})}function Hl(e,t,n){try{let r=Buffer.concat([t.stdout,t.stderr]),i=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),s=Ml(process.cwd(),".red","tmp","rsp-telemetry.spool.jsonl"),o=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:i.length,emitted_bytes:r.length,wrapper_ms:n})}
75
- `;try{vo(s,o,{encoding:"utf8",mode:384})}catch(a){if(a.code!=="ENOENT")return;Ll(jl(s),{recursive:!0}),vo(s,o,{encoding:"utf8",mode:384})}}catch{}}async function He(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
76
- `);let i=await Wl(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Gt(),Zn));await s(r,{collection:o,ts:new Date().toISOString(),command:t.join(" "),reason:e})}return i}function dr(){return"rsp is not enabled in this directory; run /red-setup"}async function Q(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Kl(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function Wl(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)}
77
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function Yl(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 lr(e,t){let n=ue(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 zl(e){return e.includes("--full")}function Ql(e,t=Do(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),i=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${t.savings.tokens_saved}`," daily_tokens_saved:",...Zl(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...ef(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${nf(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:",...tf(t.health.by_reason),"latency:",` wrapper_ms_p50: ${fr(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${fr(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: ${fr(t.latency.store_elapsed_ms_avg)}`,""].join(`
78
- `)}function Xl(e){return`${O(e)}
79
- `}function Zl(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function ef(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 tf(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function fr(e){return e==null?"none":String(e)}function nf(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Do(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function rf(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
80
- `)}import.meta.url===`file://${process.argv[1]}`&&Ul().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
81
- `),process.exit(1)});export{Ul as main,rf as renderSetupResult,Ql as renderStats};
75
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function tf(e){try{return!_r(`${e}/.git`)||_r(`${e}/.git/index`)?!1:zd(e).every(t=>t===".git")}catch{return!1}}function nf(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function rf(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var mt=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}},Sr=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function zt(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Sr,s=process.hrtime.bigint();try{if(e.command==="git"){if(Er(e.positional))return await X(e,await kr(),s,i);let{runGitWrapper:o}=await Promise.resolve().then(()=>(dt(),ur)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await X(e,a,s,i)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(pr(),mr)),a=await o(e.positional,{level:e.level,store:i});return await X(e,a,s,i)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(hr(),gr)),a=await o(e.positional,{level:e.level,store:i});return await X(e,a,s,i)}}catch(o){return await Qt("wrapper failed",e.positional,o,n)}finally{await i.close()}return await Qt("wrapper failed",e.positional,r,n)}async function X(e,t,n,r){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let i=Number(process.hrtime.bigint()-n)/1e6;return r?await sf(e,t,i,r.lastResponseMetrics()):of(e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function sf(e,t,n,r){let i=Buffer.concat([t.stdout,t.stderr]),s=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),{appendTelemetryEvent:o,RSP_TELEMETRY_INVOCATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(Vt(),nr));await o(process.cwd(),{collection:a,ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,raw_text:s.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:n,store_open_count:r?.storeOpenCount,store_elapsed_ms:r?.storeElapsedMs})}function of(e,t,n){try{let r=Buffer.concat([t.stdout,t.stderr]),i=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),s=Xd(process.cwd(),".red","tmp","rsp-telemetry.spool.jsonl"),o=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:i.length,emitted_bytes:r.length,wrapper_ms:n})}
76
+ `;try{Po(s,o,{encoding:"utf8",mode:384})}catch(a){if(a.code!=="ENOENT")return;Yd(Qd(s),{recursive:!0}),Po(s,o,{encoding:"utf8",mode:384})}}catch{}}async function Qt(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
77
+ `);let i=await cf(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Vt(),nr));await s(r,{collection:o,ts:new Date().toISOString(),command:t.join(" "),reason:e})}return i}function wr(){return"rsp is not enabled in this directory; run /red-setup"}async function Q(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function af(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function cf(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)}
78
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function uf(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 br(e,t){let n=de(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 lf(e){return e.includes("--full")}function df(e,t=No(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),i=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${t.savings.tokens_saved}`," daily_tokens_saved:",...mf(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...pf(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${gf(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:",...yf(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Rr(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Rr(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: ${Rr(t.latency.store_elapsed_ms_avg)}`,""].join(`
79
+ `)}function ff(e){return`${x(e)}
80
+ `}function mf(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function pf(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 yf(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Rr(e){return e==null?"none":String(e)}function gf(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function No(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,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 hf(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
81
+ `)}import.meta.url===`file://${process.argv[1]}`&&Zd().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
82
+ `),process.exit(1)});export{Zd as main,hf as renderSetupResult,df as renderStats};