@reddb-io/red-skills 2.52.1 → 2.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +40 -40
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +206 -206
- package/dist/memory.bundle.min.mjs +562 -562
- package/dist/rsp.bundle.min.mjs +120 -76
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,104 +1,148 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function At(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function bn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function M(e,t){try{return t()}catch(n){throw n instanceof j?n:n instanceof Error?new j(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function si(e){return e==="true"||e==="false"||e==="null"}function Ta(e){if(!e||!va.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function xt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=At(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let p=e.length-r.length+f+1;i=e.indexOf("[",p)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let f=e.slice(s+1,c);if(f!==""){if(n){let _=f.trim();throw new SyntaxError(_===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${_}" between bracket and fields segment`)}return}let p=e.indexOf("}",c);p!==-1&&(a=p+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let f=u.trim();throw new SyntaxError(f===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${f}" between bracket segment and colon`)}return}let d;if(i>0){let f=e.slice(0,i).trim();d=f.startsWith('"')?hn(f):f}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),g;try{g=Oa(w,t)}catch(f){if(n)throw f;return}let{length:S,delimiter:v}=g,T;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let p=e.slice(c+1,f),_=Aa(p,v);if(_!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Zr(v)}" but fields segment contains unquoted "${Zr(_)}"`);return}T=_n(p,v).map(E=>hn(E.trim()))}}return{header:{key:d,length:S,delimiter:v,fields:T},inlineValues:m||void 0}}function Oa(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Tt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Tt.pipe,n=n.slice(0,-1)),!xa.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}function Aa(e,t){for(let n of $a)if(n!==t&&bn(e,n)!==-1)return n}function Zr(e){return e===" "?"\\t":e}function _n(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function oi(e){return e.map(t=>Dt(t))}function Dt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return hn(t);if(si(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Ta(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function hn(e){let t=e.trim();if(t.startsWith('"')){let n=At(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return ii(t.slice(1,n))}return t}function Da(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function Ia(e,t){let n=At(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=ii(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function Pa(e,t){let n=e[t]==='"';return{...n?Ia(e,t):Da(e,t),isQuoted:n}}function ai(e){return e.trim().startsWith("[")&&bn(e,":")!==-1}function Na(e){return bn(e,":")!==-1}function Ba(){return{lineNumber:0,blankLines:[]}}function La(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=Xr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Xr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new j("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new j(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Ca(e,t,n,r){for(let i of e){let s=La(i,r,t,n);s!==void 0&&(yield s)}}function Xr(e,t){return Math.floor(e/t)}function rt(e,t,n,r,i){if(r.strict&&e!==t)throw new j(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Ma(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new j(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function ja(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ua(e.content,n.delimiter))throw new j(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function ci(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new j(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ua(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Fa(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=Ba(),i=new Ga(Ca(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(ai(s.content)){let a=M(s,()=>xt(s.content,q,n.strict));if(a){i.advanceSync(),yield*Ot(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!ti(s)){yield{type:"primitive",value:M(s,()=>Dt(s.content.trim()))};return}if(!ti(s)&&i.peekSync()?.depth===0)throw new j("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Me(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Me(a,i,0,n,o)}yield{type:"endObject"}}function ei(e,t,n){if(n){if(n.has(e))throw new j(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Me(e,t,n,r,i){let s=e.content,o=M(e,()=>xt(s,q,r.strict));if(o&&o.header.key!==void 0){ei(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ot(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=M(e,()=>Pa(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(ei(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*qa(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:M(e,()=>Dt(u))}}function*qa(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Me(s,e,r,n,i);else break}}function*Ot(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Ja(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Va(e,n,r,i,s),yield{type:"endArray"};return}yield*Ha(e,n,r,i,s),yield{type:"endArray"}}function*Ja(e,t,n,r){if(!t.trim()){rt(0,e.length,"inline array items",n,r);return}let i=M(r,()=>_n(t,e.delimiter)),s=M(r,()=>oi(i));rt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Va(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=M(u,()=>_n(u.content,e.delimiter));rt(d.length,e.fields.length,"tabular row values",r,u);let m=M(u,()=>oi(d));yield*Ka(e.fields,m),o++}else break}rt(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&ja(t.peekSync(),s,e)}function*Ha(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*Wa(t,s,r);let m=t.current();m&&(c=m.lineNumber,l=m),o++}else break}rt(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&ci(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Ma(t.peekSync(),s,e.length)}function*Wa(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new j('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(ai(i)){let a=M(s,()=>xt(i,q,n.strict));if(a){yield*Ot(a.header,a.inlineValues,e,t,n,s);return}}let o=M(s,()=>xt(i,q,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ot(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Me(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Na(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Me(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Me(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:M(s,()=>Dt(i))}}function ti(e){let t=e.content;if(t.startsWith('"')){let n=At(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Ka(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function Q(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return Q(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(Q);if(e instanceof Set)return Array.from(e).map(Q);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),Q(n)]));if(za(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=Q(e[n]));return t}return null}function ke(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function oe(e){return Array.isArray(e)}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function it(e){return Object.keys(e).length===0}function za(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function st(e){return e.length===0||e.every(t=>ke(t))}function Ya(e){return e.length===0||e.every(t=>oe(t))}function li(e){return e.length===0||e.every(t=>D(t))}function Xa(e){return/^[A-Z_][\w.]*$/i.test(e)}function ui(e){return/^[A-Z_]\w*$/i.test(e)}function ec(e,t=q){return!(!e||e!==e.trim()||si(e)||tc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function tc(e){return Qa.test(e)||Za.test(e)}function vt(e,t){if(Array.isArray(e))return e.map(n=>vt(n,t));if(D(e)){let n={},r=e[di];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>ui(l))){nc(n,c,vt(s,t),t);continue}}let a=vt(s,t);if(i in n){let c=n[i];if(En(c,a))Rn(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function nc(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(D(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(En(o,n))Rn(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Rn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(En(s,i))Rn(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function En(e,t){return D(e)&&D(t)}function rc(e){let t={stack:[],root:void 0};for(let n of e)ic(t,n);return sc(t)}function ic(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,di,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function sc(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function oc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!D(t))return;let{segments:a,tail:c,leafValue:l}=ac(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>ui(m)))return;let u=cc(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function ac(e,t,n){let r=[e],i=t;for(;r.length<n&&D(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!D(i)||it(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function cc(e){return e.join(".")}function Ue(e,t){return e===null?Sa:typeof e=="boolean"||typeof e=="number"?String(e):lc(e,t)}function lc(e,t=q){return ec(e,t)?e:`"${ri(e)}"`}function Ge(e){return Xa(e)?e:`"${ri(e)}"`}function fi(e,t=q){return e.map(n=>Ue(n,t)).join(t)}function Se(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ge(n)),s+=`[${e}${i!==q?i:""}]`,r){let o=r.map(a=>Ge(a));s+=`{${o.join(i)}}`}return s+=":",s}function*uc(e,t,n){if(ke(e)){let r=Ue(e,t.delimiter);r!==""&&(yield r);return}oe(e)?yield*wn(void 0,e,n,t):D(e)&&(yield*je(e,n,t))}function*je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*dc(c,l,t,n,o,r,i,a)}function*dc(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=oc(e,t,i,r,s,o,l);if(d){let{foldedKey:m,remainder:w,leafValue:g,segmentCount:S}=d,v=Ge(m);if(w===void 0){if(ke(g)){yield L(n,`${v}: ${Ue(g,r.delimiter)}`,r.indent);return}else if(oe(g)){yield*wn(m,g,n,r);return}else if(D(g)&&it(g)){yield L(n,`${v}:`,r.indent);return}}if(D(w)){yield L(n,`${v}:`,r.indent);let T=l-S,f=o?`${o}.${m}`:m;yield*je(w,n+1,r,s,f,T);return}}}let u=Ge(e);ke(t)?yield L(n,`${u}: ${Ue(t,r.delimiter)}`,r.indent):oe(t)?yield*wn(e,t,n,r):D(t)&&(yield L(n,`${u}:`,r.indent),it(t)||(yield*je(t,n+1,r,s,c,l)))}function*wn(e,t,n,r){if(t.length===0){yield L(n,e!=null?`${Ge(e)}: []`:"[]",r.indent);return}if(st(t)){yield L(n,It(t,r.delimiter,e),r.indent);return}if(Ya(t)&&t.every(i=>st(i))){yield*fc(e,t,n,r);return}if(li(t)){let i=mi(t);i?yield*mc(e,t,i,n,r):yield*ni(e,t,n,r);return}yield*ni(e,t,n,r)}function*fc(e,t,n,r){yield L(n,Se(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(st(i)){let s=It(i,r.delimiter);yield F(n+1,s,r.indent)}}function It(e,t,n){let r=Se(e.length,{key:n,delimiter:t}),i=fi(e,t);return e.length===0?r:`${r} ${i}`}function*mc(e,t,n,r,i){yield L(r,Se(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*pi(t,n,r+1,i)}function mi(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&pc(e,n))return n}function pc(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!ke(n[r]))return!1}return!0}function*pi(e,t,n,r){for(let i of e)yield L(n,fi(t.map(s=>i[s]),r.delimiter),r.indent)}function*ni(e,t,n,r){yield L(n,Se(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*kn(i,n+1,r)}function*yc(e,t,n){if(it(e)){yield L(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(oe(s)&&li(s)){let c=mi(s);if(c){yield F(t,Se(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*pi(s,c,t+2,n),o.length>0&&(yield*je(Object.fromEntries(o),t+1,n));return}}let a=Ge(i);if(ke(s))yield F(t,`${a}: ${Ue(s,n.delimiter)}`,n.indent);else if(oe(s))if(s.length===0)yield F(t,`${a}: []`,n.indent);else if(st(s))yield F(t,`${a}${It(s,n.delimiter)}`,n.indent);else{yield F(t,`${a}${Se(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*kn(c,t+2,n)}else D(s)&&(yield F(t,`${a}:`,n.indent),it(s)||(yield*je(s,t+2,n)));o.length>0&&(yield*je(Object.fromEntries(o),t+1,n))}function*kn(e,t,n){if(ke(e))yield F(t,Ue(e,n.delimiter),n.indent);else if(oe(e))if(st(e))yield F(t,It(e,n.delimiter),n.indent);else{yield F(t,Se(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*kn(r,t+1,n)}else D(e)&&(yield*yc(e,t,n))}function L(e,t,n){return" ".repeat(n*e)+t}function F(e,t,n){return L(e,"- "+t,n)}function gc(e,t){let n=t("",e,[]);return n===void 0?$t(e,t,[]):$t(Q(n),t,[])}function $t(e,t,n){return D(e)?hc(e,t,n):oe(e)?wc(e,t,n):e}function hc(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=$t(Q(a),t,o))}return r}function wc(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=Q(a);r.push($t(c,t,o))}return r}function $(e,t){return Array.from(yi(e,t)).join(`
|
|
5
|
-
`)}function
|
|
6
|
-
`),t)}function
|
|
7
|
-
`)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let l=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(
|
|
8
|
-
`)}),s.on("data",u=>{a+=u.toString("utf8");let
|
|
9
|
-
`);if(
|
|
10
|
-
`,status:0}:{stdout:"",status:1}}async function Xc(e){let t=e?Ui(e,"utf8"):Ui(0,"utf8"),n=await qi(t,{cwd:process.cwd()}),r=Ji(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function el(e){return ce(e,process.env).enabled}async function tl(e){let t=Z(e);return await xe(t.socketPath,50)}async function nl(e){let t=ce(e,process.env);if(!t.enabled||!il(t))return;let n=Z(e);await Bt(n,rl(t))}function rl(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function il(e){if(!e.storeUri.startsWith("file://"))return!0;try{return zc(Yc(e.storeUri))}catch{return!1}}function sl(e){return U(e,["tool_input","command"])||U(e,["tool_input","cmd"])||U(e,["tool_input","args","command"])||U(e,["input","command"])||U(e,["input","cmd"])||U(e,["arguments","command"])||U(e,["arguments","cmd"])||U(e,["command"])||U(e,["cmd"])}function ol(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&Hi(r))?null:n}function Ln(e){let t=e.trim();return al(t)?{kind:"rewrite",command:`rsp exec -- ${pl(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function al(e){return!(!e||!ll(e)||!dl(e)||ul(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||fl(e,"rsp")||Vi(e,cl)||ml(e))}function ll(e){return/&&|[;|]/.test(e)}function ul(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function dl(e){return Cn(e).some(t=>{let n=Mn(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,i)=>i>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function Vi(e,t){return Cn(e).some(n=>{let r=Mn(n)[0];return r?t.has(r):!1})}function fl(e,t){return Vi(e,new Set([t]))}function ml(e){return Cn(e).some(t=>{let n=Mn(t);return n[0]==="grep"&&n.includes("-q")})}function Cn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Mn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function pl(e){return`'${e.replace(/'/g,"'\\''")}'`}function Hi(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ct(e){return e.join("\0")}function yl(e){try{let t=JSON.parse(e);return Wi(t)?t:{}}catch{return{}}}function U(e,t){let n=e;for(let r of t){if(!Wi(n))return"";n=n[r]}return typeof n=="string"?n:""}function Wi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lt,Qc,cl,jn=k(()=>{"use strict";V();Je();lt=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],Qc=Gi(lt);cl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var as={};A(as,{NORMALIZATION_ALLOWLIST:()=>is,NORMALIZE_ANSI:()=>Zi,NORMALIZE_BLANK_LINES:()=>ts,NORMALIZE_CR_PROGRESS:()=>Xi,NORMALIZE_JSON_TOON:()=>rs,NORMALIZE_TRAILING_WHITESPACE:()=>es,formatNormalizeDecision:()=>os,hookDecisionFromClaudePostExecJson:()=>ss,normalizeOutput:()=>Ve,renderGenericJsonLane:()=>ut,runClaudePostExecHook:()=>wl,transcodeJsonToToon:()=>ns});import{readFileSync as zi}from"node:fs";function ns(e,t){let n=t?.encode??$,r=t?.decode??Sn,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return Un(s,a)?o:e}async function ut(e,t={}){let n=El(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:$(r),detected:!0,lossy:!1};let i=r.length,s=Qi(t.minTokens,gl),o=Qi(t.maxItems,hl);if(!(i>o&&xl(e)>=s))return{output:$(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=kl(r,o),l={items:c},u=`items: ${c.length} of ${i} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`;return{output:[u,m,$(l)].filter(Boolean).join(`
|
|
11
|
-
|
|
3
|
+
var qa=Object.defineProperty;var k=(e,t)=>()=>(e&&(t=e(e=0)),t);var $=(e,t)=>{for(var n in t)qa(e,n,{get:t[n],enumerable:!0})};function fi(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 mi(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 Mt(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function Dn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function U(e,t){try{return t()}catch(n){throw n instanceof G?n:n instanceof Error?new G(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function pi(e){return e==="true"||e==="false"||e==="null"}function Ha(e){if(!e||!Va.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function Bt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let d=Mt(r,0);if(d===-1||!r.slice(d+1).startsWith("["))return;let p=e.length-r.length+d+1;i=e.indexOf("[",p)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let d=e.slice(s+1,c);if(d!==""){if(n){let S=d.trim();throw new SyntaxError(S===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${S}" between bracket and fields segment`)}return}let p=e.indexOf("}",c);p!==-1&&(a=p+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let d=u.trim();throw new SyntaxError(d===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${d}" between bracket segment and colon`)}return}let f;if(i>0){let d=e.slice(0,i).trim();f=d.startsWith('"')?On(d):d}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),_;try{_=Ka(w,t)}catch(d){if(n)throw d;return}let{length:T,delimiter:v}=_,x;if(c!==-1&&c<o){let d=e.indexOf("}",c);if(d!==-1&&d<o){let p=e.slice(c+1,d),S=za(p,v);if(S!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${ai(v)}" but fields segment contains unquoted "${ai(S)}"`);return}x=$n(p,v).map(h=>On(h.trim()))}}return{header:{key:f,length:T,delimiter:v,fields:x},inlineValues:m||void 0}}function Ka(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Nt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Nt.pipe,n=n.slice(0,-1)),!Wa.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 za(e,t){for(let n of Ya)if(n!==t&&Dn(e,n)!==-1)return n}function ai(e){return e===" "?"\\t":e}function $n(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function yi(e){return e.map(t=>jt(t))}function jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return On(t);if(pi(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Ha(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function On(e){let t=e.trim();if(t.startsWith('"')){let n=Mt(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 mi(t.slice(1,n))}return t}function Qa(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 Xa(e,t){let n=Mt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=mi(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 Za(e,t){let n=e[t]==='"';return{...n?Xa(e,t):Qa(e,t),isQuoted:n}}function gi(e){return e.trim().startsWith("[")&&Dn(e,":")!==-1}function ec(e){return Dn(e,":")!==-1}function tc(){return{lineNumber:0,blankLines:[]}}function nc(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=ci(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=ci(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new G("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new G(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*rc(e,t,n,r){for(let i of e){let s=nc(i,r,t,n);s!==void 0&&(yield s)}}function ci(e,t){return Math.floor(e/t)}function lt(e,t,n,r,i){if(r.strict&&e!==t)throw new G(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function ic(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new G(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function sc(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&oc(e.content,n.delimiter))throw new G(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function hi(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new G(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function oc(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*cc(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=tc(),i=new ac(rc(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(gi(s.content)){let a=U(s,()=>Bt(s.content,W,n.strict));if(a){i.advanceSync(),yield*Lt(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!ui(s)){yield{type:"primitive",value:U(s,()=>jt(s.content.trim()))};return}if(!ui(s)&&i.peekSync()?.depth===0)throw new G("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Fe(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Fe(a,i,0,n,o)}yield{type:"endObject"}}function li(e,t,n){if(n){if(n.has(e))throw new G(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Fe(e,t,n,r,i){let s=e.content,o=U(e,()=>Bt(s,W,r.strict));if(o&&o.header.key!==void 0){li(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Lt(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=U(e,()=>Za(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(li(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let f=t.peekSync();if(f&&f.depth>n){yield{type:"startObject"},yield*lc(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:U(e,()=>jt(u))}}function*lc(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Fe(s,e,r,n,i);else break}}function*Lt(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*uc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*dc(e,n,r,i,s),yield{type:"endArray"};return}yield*fc(e,n,r,i,s),yield{type:"endArray"}}function*uc(e,t,n,r){if(!t.trim()){lt(0,e.length,"inline array items",n,r);return}let i=U(r,()=>$n(t,e.delimiter)),s=U(r,()=>yi(i));lt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*dc(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let f=U(u,()=>$n(u.content,e.delimiter));lt(f.length,e.fields.length,"tabular row values",r,u);let m=U(u,()=>yi(f));yield*pc(e.fields,m),o++}else break}lt(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&hi(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&sc(t.peekSync(),s,e)}function*fc(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let f=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&f){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*mc(t,s,r);let m=t.current();m&&(c=m.lineNumber,l=m),o++}else break}lt(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&hi(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&ic(t.peekSync(),s,e.length)}function*mc(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new G('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(gi(i)){let a=U(s,()=>Bt(i,W,n.strict));if(a){yield*Lt(a.header,a.inlineValues,e,t,n,s);return}}let o=U(s,()=>Bt(i,W,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Lt(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Fe(u,e,l,n,c);else break}yield{type:"endObject"};return}if(ec(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Fe(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Fe(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:U(s,()=>jt(i))}}function ui(e){let t=e.content;if(t.startsWith('"')){let n=Mt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*pc(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function te(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return te(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(te);if(e instanceof Set)return Array.from(e).map(te);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),te(n)]));if(yc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=te(e[n]));return t}return null}function De(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function fe(e){return Array.isArray(e)}function I(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ut(e){return Object.keys(e).length===0}function yc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function dt(e){return e.length===0||e.every(t=>De(t))}function gc(e){return e.length===0||e.every(t=>fe(t))}function wi(e){return e.length===0||e.every(t=>I(t))}function bc(e){return/^[A-Z_][\w.]*$/i.test(e)}function bi(e){return/^[A-Z_]\w*$/i.test(e)}function _c(e,t=W){return!(!e||e!==e.trim()||pi(e)||Rc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Rc(e){return hc.test(e)||wc.test(e)}function At(e,t){if(Array.isArray(e))return e.map(n=>At(n,t));if(I(e)){let n={},r=e[_i];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>bi(l))){Ec(n,c,At(s,t),t);continue}}let a=At(s,t);if(i in n){let c=n[i];if(An(c,a))In(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 Ec(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(I(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(An(o,n))In(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 In(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(An(s,i))In(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 An(e,t){return I(e)&&I(t)}function kc(e){let t={stack:[],root:void 0};for(let n of e)Sc(t,n);return vc(t)}function Sc(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,_i,{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 vc(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 Tc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!I(t))return;let{segments:a,tail:c,leafValue:l}=xc(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>bi(m)))return;let u=Oc(a),f=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(f)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function xc(e,t,n){let r=[e],i=t;for(;r.length<n&&I(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!I(i)||ut(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function Oc(e){return e.join(".")}function Je(e,t){return e===null?Ja:typeof e=="boolean"||typeof e=="number"?String(e):Pc(e,t)}function Pc(e,t=W){return _c(e,t)?e:`"${fi(e)}"`}function Ve(e){return bc(e)?e:`"${fi(e)}"`}function Ri(e,t=W){return e.map(n=>Je(n,t)).join(t)}function $e(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ve(n)),s+=`[${e}${i!==W?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*Dc(e,t,n){if(De(e)){let r=Je(e,t.delimiter);r!==""&&(yield r);return}fe(e)?yield*Pn(void 0,e,n,t):I(e)&&(yield*qe(e,n,t))}function*qe(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*$c(c,l,t,n,o,r,i,a)}function*$c(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let f=Tc(e,t,i,r,s,o,l);if(f){let{foldedKey:m,remainder:w,leafValue:_,segmentCount:T}=f,v=Ve(m);if(w===void 0){if(De(_)){yield C(n,`${v}: ${Je(_,r.delimiter)}`,r.indent);return}else if(fe(_)){yield*Pn(m,_,n,r);return}else if(I(_)&&ut(_)){yield C(n,`${v}:`,r.indent);return}}if(I(w)){yield C(n,`${v}:`,r.indent);let x=l-T,d=o?`${o}.${m}`:m;yield*qe(w,n+1,r,s,d,x);return}}}let u=Ve(e);De(t)?yield C(n,`${u}: ${Je(t,r.delimiter)}`,r.indent):fe(t)?yield*Pn(e,t,n,r):I(t)&&(yield C(n,`${u}:`,r.indent),ut(t)||(yield*qe(t,n+1,r,s,c,l)))}function*Pn(e,t,n,r){if(t.length===0){yield C(n,e!=null?`${Ve(e)}: []`:"[]",r.indent);return}if(dt(t)){yield C(n,Ut(t,r.delimiter,e),r.indent);return}if(gc(t)&&t.every(i=>dt(i))){yield*Ic(e,t,n,r);return}if(wi(t)){let i=Ei(t);i?yield*Ac(e,t,i,n,r):yield*di(e,t,n,r);return}yield*di(e,t,n,r)}function*Ic(e,t,n,r){yield C(n,$e(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(dt(i)){let s=Ut(i,r.delimiter);yield H(n+1,s,r.indent)}}function Ut(e,t,n){let r=$e(e.length,{key:n,delimiter:t}),i=Ri(e,t);return e.length===0?r:`${r} ${i}`}function*Ac(e,t,n,r,i){yield C(r,$e(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*ki(t,n,r+1,i)}function Ei(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Nc(e,n))return n}function Nc(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)||!De(n[r]))return!1}return!0}function*ki(e,t,n,r){for(let i of e)yield C(n,Ri(t.map(s=>i[s]),r.delimiter),r.indent)}function*di(e,t,n,r){yield C(n,$e(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Nn(i,n+1,r)}function*Bc(e,t,n){if(ut(e)){yield C(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(fe(s)&&wi(s)){let c=Ei(s);if(c){yield H(t,$e(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*ki(s,c,t+2,n),o.length>0&&(yield*qe(Object.fromEntries(o),t+1,n));return}}let a=Ve(i);if(De(s))yield H(t,`${a}: ${Je(s,n.delimiter)}`,n.indent);else if(fe(s))if(s.length===0)yield H(t,`${a}: []`,n.indent);else if(dt(s))yield H(t,`${a}${Ut(s,n.delimiter)}`,n.indent);else{yield H(t,`${a}${$e(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Nn(c,t+2,n)}else I(s)&&(yield H(t,`${a}:`,n.indent),ut(s)||(yield*qe(s,t+2,n)));o.length>0&&(yield*qe(Object.fromEntries(o),t+1,n))}function*Nn(e,t,n){if(De(e))yield H(t,Je(e,n.delimiter),n.indent);else if(fe(e))if(dt(e))yield H(t,Ut(e,n.delimiter),n.indent);else{yield H(t,$e(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Nn(r,t+1,n)}else I(e)&&(yield*Bc(e,t,n))}function C(e,t,n){return" ".repeat(n*e)+t}function H(e,t,n){return C(e,"- "+t,n)}function Lc(e,t){let n=t("",e,[]);return n===void 0?Ct(e,t,[]):Ct(te(n),t,[])}function Ct(e,t,n){return I(e)?Cc(e,t,n):fe(e)?Mc(e,t,n):e}function Cc(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]=Ct(te(a),t,o))}return r}function Mc(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=te(a);r.push(Ct(c,t,o))}return r}function D(e,t){return Array.from(Si(e,t)).join(`
|
|
5
|
+
`)}function Bn(e,t){return vi(e.split(`
|
|
6
|
+
`),t)}function Si(e,t){let n=te(e),r=jc(t);return Dc(r.replacer?Lc(n,r.replacer):n,r,0)}function vi(e,t){let n=Uc(t),r=kc(cc(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?At(r,n.strict):r}function jc(e){return{indent:e?.indent??2,delimiter:e?.delimiter??W,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function Uc(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Ja,Nt,W,G,Va,Wa,Ya,ac,hc,wc,_i,Ti=k(()=>{Ja="null",Nt={comma:",",tab:" ",pipe:"|"},W=Nt.comma;G=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};Va=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;Wa=/^(?:0|[1-9]\d*)$/;Ya=[","," ","|"];ac=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};hc=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,wc=/^0\d+$/;_i=Symbol("quotedKey")});var Ie=k(()=>{"use strict";Ti()});function Cn(e,t,n=Oi){let r=Math.max(0,Math.floor(e)),i=n in Pi?n:Oi,s=Pi[i],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:Ln(r,s),dollars_saved_low_usd:o==null?null:Ln(o,s),dollars_saved_high_usd:a==null?null:Ln(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:Fc}}function Ln(e,t){return qc(Math.max(0,e)/1e6*t)}function ft(e){return`$${e.toFixed(6)}`}function qc(e){return Math.round(e*1e6)/1e6}var Oi,Pi,Fc,Mn=k(()=>{"use strict";Oi="gpt-5",Pi={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15},Fc="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Jc,readFileSync as ey}from"node:fs";import{dirname as Vc,join as Hc}from"node:path";function Di(e,t){let n=e;for(let r=0;r<16;r++){let i=Hc(n,t);if(Jc(i))return i;let s=Vc(n);if(s===n)break;n=s}return null}function Wc(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function jn(e,t){let n=[];for(let r of e.split(`
|
|
7
|
+
`)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let l=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(f=>f.key).join(".")===t)return Wc(l)}}var $i=k(()=>{});import{createConnection as Kc}from"node:net";async function We(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Kc(e.socketPath),o=!1,a="",c=setTimeout(()=>{l(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function l(u){o||(o=!0,clearTimeout(c),u())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
|
|
8
|
+
`)}),s.on("data",u=>{a+=u.toString("utf8");let f=a.indexOf(`
|
|
9
|
+
`);if(f<0)return;let m=a.slice(0,f);l(()=>{try{r(JSON.parse(m))}catch(w){i(w)}}),s.end()}),s.on("error",u=>l(()=>i(u))),s.on("close",()=>{o||l(()=>i(new Error("resident rsp server closed without response")))})})}var Un=k(()=>{});import{createHash as Yc,randomUUID as Li}from"node:crypto";import{spawn as Ci}from"node:child_process";import{constants as Gn}from"node:fs";import{readFileSync as zc}from"node:fs";import{mkdir as Gt,open as Qc,readFile as Mi,rename as Xc,rm as K,stat as Zc,writeFile as el}from"node:fs/promises";import{tmpdir as tl}from"node:os";import{dirname as me,join as F,resolve as Ft}from"node:path";import{fileURLToPath as ji}from"node:url";function ne(e){let t=cl(e)??Ft(e),n=al(t);return{rootDir:t,socketPath:F(n,"rsp.sock"),pidPath:F(n,"rsp.pid"),lockPath:F(n,"rsp.lock"),wakeLockPath:F(t,".red","tmp","rsp.wake.lock"),summaryPath:F(t,".red","tmp","rsp-status-summary.json"),registryPath:F(t,".red","tmp","rsp-resident.pid.json")}}async function qt(e,t){if(await Gt(me(e.socketPath),{recursive:!0,mode:448}),await Ni(e.socketPath,t))return;await Ai(e,t);let n=await Ji(e.lockPath);if(n)try{if(await Ni(e.socketPath,t))return;await Ai(e,t),await rl(e.socketPath);let r=il(e,t);await Ii(e.socketPath,r);return}finally{await n.close(),await K(e.lockPath,{force:!0})}await Ii(e.socketPath)}async function re(e,t=200){try{return await Gi(e,t)!=null}catch{return!1}}async function Gi(e,t=200){let n=await We({socketPath:e,timeoutMs:t},{id:Li(),op:"ping"});return n.ok?Ki(n.value)?{version:fl(n.value.version)}:{}:null}async function Jt(e,t){if(await Gt(me(e.socketPath),{recursive:!0,mode:448}),await re(e.socketPath,50))return!1;let n=await Ji(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=Hi(t);return Ci(r,[...i,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Fi(e,t){try{await qt(e,t)}finally{await K(e.wakeLockPath,{force:!0})}}async function pt(e){try{let t=JSON.parse(await Mi(e,"utf8"));return ml(t)?t:null}catch{return null}}async function Vt(e,t){let n={version:Ui,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await Gt(me(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await el(r,`${JSON.stringify(n)}
|
|
10
|
+
`,{encoding:"utf8",mode:384}),await Xc(r,e)}async function Ht(e,t=process.pid){try{let n=await pt(e);if(n&&n.pid!==t)return;await K(e,{force:!0})}catch{}}async function mt(e){let t=await pt(e.registryPath);if(!t)try{return await Mi(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Ke(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await re(t.socket_path,100);return n&&await ol(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function qi(e){let t=await mt(e);return t.state==="registered-dead"||t.state==="invalid"?(await K(e.registryPath,{force:!0}),await mt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Vi(t.entry.pid),await K(e.registryPath,{force:!0}),await K(t.entry.socket_path,{force:!0}),await mt(e)):t}async function Ii(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await re(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function rl(e){await K(e,{force:!0})}async function Ji(e){await Gt(me(e),{recursive:!0,mode:448});try{return await Qc(e,Gn.O_CREAT|Gn.O_EXCL|Gn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function il(e,t){let[n,r]=Hi(t),i=Ci(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}async function Ai(e,t){try{let n=await pt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Ke(n.pid)){await K(e.registryPath,{force:!0});return}if(await re(n.socket_path,100))return;if(Wi(t.clientVersion,n.resident_version)&&(await sl(n.pid,1500),!Ke(n.pid))){await K(e.registryPath,{force:!0});return}await Vi(n.pid),await K(e.registryPath,{force:!0})}catch{}}function Ke(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Vi(e){if(!Ke(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Ke(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function sl(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function ol(e){if(!e.startsWith("file://"))return!1;try{return await Zc(ji(e)),!1}catch(t){return t.code==="ENOENT"}}function Hi(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Ft(process.argv[1]):ji(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function al(e){let t=Yc("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=F(n,"red-skills",t);if(F(i,"rsp.sock").length<nl)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return F(tl(),`red-skills-${r}`,t)}function cl(e){let t=Ft(e);for(let n=0;n<32;n++){try{let i=Fn(F(t,".git"));if(i!=null)return ll(t,i)??t;if(Fn(F(t,".git","HEAD"))!=null||Fn(F(t,".red","config.yaml"))!=null)return t}catch{}let r=me(t);if(r===t)return null;t=r}return null}function ll(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ft(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?me(me(me(r))):null}function Fn(e){try{return zc(e,"utf8")}catch{return null}}async function Ni(e,t){let n=await Gi(e).catch(()=>null);return n?Wi(t.clientVersion,n.version)?(await ul(e,t.clientVersion),await pl(e),!1):!0:!1}async function ul(e,t){try{await We({socketPath:e,timeoutMs:200},{id:Li(),op:"handover",clientVersion:t})}catch{}}function Wi(e,t){return!e||!t?!1:dl(e,t)>0}function dl(e,t){let n=Bi(e),r=Bi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Bi(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Ki(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function fl(e){return typeof e=="string"&&e.length>0?e:void 0}function ml(e){return Ki(e)&&e.version===Ui&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function pl(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await re(e,50))return;await new Promise(n=>setTimeout(n,50))}}var nl,Ui,Wt=k(()=>{Un();nl=108,Ui=1});var es={};$(es,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>se,DEFAULT_RSP_IDLE_MS:()=>Xt,DEFAULT_RSP_STORE_PATH:()=>Yt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Qt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Qi,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Xi,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zt,DEFAULT_RSP_TTL_DAYS:()=>oe,MIN_RSP_IDLE_MS:()=>Zi,resolveRspConfig:()=>ye});import{readFileSync as yl}from"node:fs";import{join as Yi,resolve as zi}from"node:path";function ye(e,t,n){let r=Di(zi(e),Yi(".red","config.yaml")),i=r?yl(r,"utf8"):"",s=jn(i,"rsp.enabled")==="true",o=pe(ie(i,"rsp.ttlDays"),oe),a=pe(ie(i,"rsp.byteBudget"),ae),c=pe(ie(i,"rsp.telemetryTtlDays"),zt),l=pe(ie(i,"rsp.telemetryByteBudget")??ie(i,"rsp.byteBudget"),Qt),u=pe(Kt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ie(i,"rsp.telemetryDrainIntervalMs"),Qi),f=pe(Kt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ie(i,"rsp.telemetryDrainTimeoutMs"),Xi),m=gl(Kt(t.RSP_IDLE_MS)??ie(i,"rsp.idleMs"),Xt,Zi),w=pe(Kt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ie(i,"rsp.heavyGitByteThreshold"),se),_=ne(e).rootDir,T=n??t.RSP_STORE_URI??`file://${Yi(zi(_),Yt)}`;return{enabled:s,storeUri:T,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:l,telemetryDrainIntervalMs:u,telemetryDrainTimeoutMs:f,idleMs:m,heavyGitByteThreshold:w}}function ie(e,t){let n=jn(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 gl(e,t,n){let r=pe(e,t);return Math.max(r,n)}function Kt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var se,Yt,oe,ae,zt,Qt,Qi,Xi,Xt,Zi,Y=k(()=>{"use strict";$i();Wt();se=8*1024,Yt=".red/tmp/red-skills.rdb",oe=7,ae=64*1024*1024,zt=90,Qt=4*1024*1024,Qi=3e4,Xi=2e3,Xt=5*6e4,Zi=5e3});var ts=k(()=>{"use strict";Un()});var Ye={};$(Ye,{ResidentRspElisionStore:()=>yt,ensureResidentServer:()=>qt,kickResidentServer:()=>Jt,pingResident:()=>re,readResidentRegistry:()=>pt,removeResidentRegistry:()=>Ht,residentRegistryStatus:()=>mt,resolveResidentPaths:()=>ne,sweepResidentRegistry:()=>qi,warmResidentServer:()=>Fi,writeResidentRegistry:()=>Vt});import{randomUUID as hl}from"node:crypto";function ns(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var yt,ge=k(()=>{"use strict";ts();Wt();yt=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?ns(n)&&n.status==="expired"?n:!ns(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 qt(this.paths,this.config);let n=await We(this.paths,{...t,id:hl()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var ds={};$(ds,{RSP_WRAPPER_CAPABILITIES:()=>ht,formatHookDecision:()=>as,hookDecisionFromClaudePreExecJson:()=>os,rewriteCommand:()=>ss,rewriteTableFromCapabilities:()=>is,runClaudePreExecHook:()=>El});import{readFileSync as rs}from"node:fs";import{existsSync as wl}from"node:fs";import{fileURLToPath as bl}from"node:url";function is(e){let t=new Map;for(let n of e)t.set(gt(n.command),["rsp",...n.wrapper]);return t}function ss(e){let t=Pl(e);if(!t||t.length>0&&ls(t[0]))return Jn(e);let n=Rl(t);if(n)return n;let r=_l.get(gt(t));if(!r)return Jn(e);let i=ht.find(s=>gt(s.command)===gt(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??gt(t)}}function Rl(e){let t=e[0];return t==="cat"&&e.length===2&&qn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&qn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&qn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function qn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function os(e,t){let n=Ml(e),r=q(n,["cwd"])||q(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??kl)(r))return{kind:"passthrough",reason:"disabled"};let s=Ol(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??ss)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Sl)(r)?o:(await(t.wakeResident??vl)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function as(e){return e.kind==="rewrite"?{stdout:`${e.command}
|
|
11
|
+
`,status:0}:{stdout:"",status:1}}async function El(e){let t=e?rs(e,"utf8"):rs(0,"utf8"),n=await os(t,{cwd:process.cwd()}),r=as(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function kl(e){return ye(e,process.env).enabled}async function Sl(e){let t=ne(e);return await re(t.socketPath,50)}async function vl(e){let t=ye(e,process.env);if(!t.enabled||!xl(t))return;let n=ne(e);await Jt(n,Tl(t))}function Tl(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function xl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return wl(bl(e.storeUri))}catch{return!1}}function Ol(e){return q(e,["tool_input","command"])||q(e,["tool_input","cmd"])||q(e,["tool_input","args","command"])||q(e,["input","command"])||q(e,["input","cmd"])||q(e,["arguments","command"])||q(e,["arguments","cmd"])||q(e,["command"])||q(e,["cmd"])}function Pl(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("=")&&ls(r))?null:n}function Jn(e){let t=e.trim();return Dl(t)?{kind:"rewrite",command:`rsp exec -- ${Cl(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Dl(e){return!(!e||!Il(e)||!Nl(e)||Al(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Bl(e,"rsp")||cs(e,$l)||Ll(e))}function Il(e){return/&&|[;|]/.test(e)}function Al(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function Nl(e){return Vn(e).some(t=>{let n=Hn(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,i)=>i>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function cs(e,t){return Vn(e).some(n=>{let r=Hn(n)[0];return r?t.has(r):!1})}function Bl(e,t){return cs(e,new Set([t]))}function Ll(e){return Vn(e).some(t=>{let n=Hn(t);return n[0]==="grep"&&n.includes("-q")})}function Vn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Hn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Cl(e){return`'${e.replace(/'/g,"'\\''")}'`}function ls(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function gt(e){return e.join("\0")}function Ml(e){try{let t=JSON.parse(e);return us(t)?t:{}}catch{return{}}}function q(e,t){let n=e;for(let r of t){if(!us(n))return"";n=n[r]}return typeof n=="string"?n:""}function us(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ht,_l,$l,Wn=k(()=>{"use strict";Y();ge();ht=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],_l=is(ht);$l=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Ss={};$(Ss,{NORMALIZATION_ALLOWLIST:()=>Rs,NORMALIZE_ANSI:()=>ys,NORMALIZE_BLANK_LINES:()=>ws,NORMALIZE_CR_PROGRESS:()=>gs,NORMALIZE_JSON_TOON:()=>_s,NORMALIZE_TRAILING_WHITESPACE:()=>hs,formatNormalizeDecision:()=>ks,hookDecisionFromClaudePostExecJson:()=>Es,normalizeOutput:()=>ze,renderGenericJsonLane:()=>wt,runClaudePostExecHook:()=>Gl,transcodeJsonToToon:()=>bs});import{readFileSync as fs}from"node:fs";function bs(e,t){let n=t?.encode??D,r=t?.decode??Bn,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 Kn(s,a)?o:e}async function wt(e,t={}){let n=Vl(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:D(r),detected:!0,lossy:!1};let i=r.length,s=ps(t.minTokens,jl),o=ps(t.maxItems,Ul);if(!(i>o&&zl(e)>=s))return{output:D(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=Hl(r,o),l={items:c},u=`items: ${c.length} of ${i} kept`,f;t.level&&t.level!=="lossless"&&(f=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=f?`original: rsp show ${f}`:`original: unavailable - re-run: ${t.command??"command"}`;return{output:[u,m,D(l)].filter(Boolean).join(`
|
|
12
|
+
`),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:f}}function ze(e){let t=e;for(let n of Rs)t=n.apply(t);return t}async function Es(e,t){let n=Jl(e),r=Ql(n,["cwd"])||t.cwd;if(!await(t.isEnabled??ql)(r))return{kind:"passthrough",reason:"disabled"};let s=Xl(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??ze)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function ks(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function Gl(e){let t=e?fs(e,"utf8"):fs(0,"utf8"),n=await Es(t,{cwd:process.cwd()}),r=ks(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Fl(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&&ms(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ms(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ms(e){return e>=32&&e<=63}function ql(e){return ye(e,process.env).enabled}function Jl(e){try{let t=JSON.parse(e);return he(t)?t:{}}catch{return{}}}function Vl(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return he(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 Hl(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++)Wl(e[s])&&n.add(s);for(let s of Kl(e))n.add(s);for(let s of Yl(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 Wl(e){if(!he(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function Kl(e){let t=new Map;e.forEach((r,i)=>{if(he(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 Yl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!he(r)||!he(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 zl(e){return Math.ceil(e.length/4)}function ps(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Ql(e,t){let n=e;for(let r of t){if(!he(n))return"";n=n[r]}return typeof n=="string"?n:""}function Xl(e,t){let n=e[t];return he(n)?n:null}function he(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Kn(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)=>Kn(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)&&Kn(n[o],r[o]))}var ys,gs,hs,ws,_s,jl,Ul,Rs,Zt=k(()=>{"use strict";Ie();Y();ys={id:"ansi",apply:Fl},gs={id:"cr-progress",apply:e=>e.split(`
|
|
12
13
|
`).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
|
|
13
|
-
`)},
|
|
14
|
+
`)},hs={id:"trailing-whitespace",apply:e=>e.split(`
|
|
14
15
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
15
|
-
`)},
|
|
16
|
+
`)},ws={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
16
17
|
|
|
17
|
-
`)};
|
|
18
|
+
`)};_s={id:"json-to-toon",apply:e=>bs(e)},jl=200,Ul=15;Rs=[ys,gs,hs,ws,_s]});async function vs(e,t){return Zl?nu(e,t):eu?iu(e,t):tu(e,t)}async function tu(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 nu(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:ru(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*ru(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function iu(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:su(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*su(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Zl,eu,Ts=k(()=>{Zl=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",eu=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as ou}from"node:fs";import{join as au}from"node:path";function xs(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=au(n,"bin",t);if(ou(s))return s;throw new Error(`reddb: binary "${t}" not found.
|
|
18
19
|
expected at: ${s}
|
|
19
20
|
override: set ${r}=/path/to/${t}
|
|
20
21
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
21
|
-
or check the postinstall log for a download error.`)}var
|
|
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(
|
|
22
|
+
or check the postinstall log for a download error.`)}var Os=k(()=>{});import{fileURLToPath as cu}from"node:url";import{dirname as lu,resolve as uu,join as My}from"node:path";function mu(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ps(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:xs({name:mu(),packageRoot:fu,envVar:"REDDB_BIN"})}var du,fu,Ds=k(()=>{Os();du=lu(cu(import.meta.url)),fu=uu(du,"..")});var pu,yu,b,en,we=k(()=>{pu=new TextEncoder,yu=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},en=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new b("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(pu.encode(i+`
|
|
23
|
+
`)).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(yu.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new b(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function zn(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:/"?gu(e):hu(e)}function gu(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(u){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${u.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=wu(i),a=n.port?Number(n.port):Yn(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function hu(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Yn(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Yn(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function wu(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Yn(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var Qn=k(()=>{we()});function _u(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $s(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $s(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $s(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function Ru(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var bu,bt,Xn=k(()=>{we();bu=new Set(["embedded"]),bt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&bu.has(this._transport))throw new b("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:Ru(r.value)}async put(t,n,r,i={}){this._guard("put");let s=_u(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 Zn(e,t){return`${er(e)}.${Eu(t)}`}function er(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Eu(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function ku(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 Is(e){return`'${String(e).replace(/'/g,"''")}'`}var Qe,tr=k(()=>{we();Qe=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Is).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Zn(i,t)} = ${ku(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 ${Zn(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 ${Zn(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new b("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${er(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(Is).join(", ")}] FROM ${er(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
|
|
23
24
|
|
|
24
25
|
`)){let u=l.split(`
|
|
25
|
-
`).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function tu(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=re(e),a=re(t),c=i!=null?` GROUP ${re(i)}`:"",l=s!=null?zn(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function re(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function zn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function nu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ru(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${nu(e.priority)}`),e.key!=null&&(t+=` KEY ${Yn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Yn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function iu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Yn(e):JSON.stringify(e)}function Yn(e){return`'${String(e).replace(/'/g,"''")}'`}function Kn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var ft,Qn=k(()=>{ue();ft=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${re(t)}`})}push(t,n,r={}){let i=ru(r);return this.client.call("query",{sql:`QUEUE PUSH ${re(t)} ${iu(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${re(t)}${zn(n)}`});return Kn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${re(t)}${zn(n)}`});return Kn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${re(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${re(t)}`})}async readWait(t,n,r={}){let i=tu(t,n,r),s=await this.client.call("query",{sql:i});return Kn(s)}}});function gs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function su(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function Jt(e){return String(e).split(".").map(hs).join(".")}function hs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function ou(e){return ws(JSON.stringify(e))}function au(e){return JSON.stringify(e)}function cu(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ou(e):ws(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}var mt,Zn=k(()=>{ue();mt=class{constructor(t){this.db=t}async insert(t,n){gs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Jt(t)} DOCUMENT VALUES (${au(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=su(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Jt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){gs(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${hs(c)} = ${cu(l)}`).join(", "),a=(await this.db.query(`UPDATE ${Jt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Jt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function lu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${de(n)}.${de(r)})`}return du(e)}function uu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function de(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function du(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):bs(e)}function bs(e){return`'${String(e).replace(/'/g,"''")}'`}var pt,Xn=k(()=>{pt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){uu(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(bs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${de(i)} ${de(t)} = ${lu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${de(r)} ${de(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${de(r)} ${de(t)}`})}}});function fu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function We(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function mu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):_s(e)}function _s(e){return`'${String(e).replace(/'/g,"''")}'`}var yt,er=k(()=>{yt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){fu(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(_s).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${We(i)}.${We(t)} = ${mu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${We(r)}.${We(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${We(r)}.${We(t)}`})}}});async function Es(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(pu)}async function ks(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gu(t)}`)).rows??[]).some(r=>r.name===String(t))}function pu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Rs(e){return String(e).split(".").map(yu).join(".")}function yu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function gu(e){return`'${String(e).replace(/'/g,"''")}'`}var gt,tr=k(()=>{ue();gt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new b("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Rs).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Rs(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function xs(e,t={}){let n=Fn(e);if(Tu(n),n.kind==="embedded"){let r=vu(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Su(n),s=t.binary??fs(),o=await cs(s,i),a=new qt(o);return await a.call("version",{}),new rr(a,{transport:"embedded"})}}function vs(e){return bu(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:Ru(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ku(e)?{$uuid:e}:e}function bu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function _u(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(vs):e.map(vs)}function Ru(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function Eu(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function ku(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Vt(e){if(Array.isArray(e))return e.map(Vt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Eu(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,i]of Object.entries(e))n[r]=Vt(i);return n}return e}function Su(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function vu(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");n.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");n.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");n.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function Tu(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",hu)}function ir(){return new b(Ss,`${Ss}: nested transactions are not supported on one connection`)}function Os(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function xu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Ts} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Ou(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Ts} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var hu,wu,Ts,Ss,Ht,nr,rr,$s=k(()=>{ls();ms();ue();qn();Jn();Wn();Qn();Zn();Xn();er();tr();Jn();Wn();Qn();Zn();Xn();er();tr();qn();hu="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",wu="1.0",Ts="1.0.9",Ss="NESTED_TX_NOT_SUPPORTED";Ht=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw ir()}},nr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ir();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Ht(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Os(n,r)}throw n}}},rr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=wu,this.cache=new dt(t,this.transport),this.queue=new ft(t),this.queues=this.queue,this.documents=new mt(this);let r=new He(t);this.kv=Object.assign((i="kv_default")=>new He(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new pt(t,i),this.vault=(i="red.vault")=>new yt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=_u(n);return r==null?this.client.call("query",{sql:t}).then(Vt):this.client.call("query",{sql:t,params:r}).then(Vt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return xu(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return Ou(r,n.length)}tx(){return new nr(this)}async transaction(t){if(this.inTransaction)throw ir();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new Ht(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Os(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ks(this,t)}list(){return Es(this)}from(t){return new gt(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});var cr={};A(cr,{DEFAULT_RSP_BYTE_BUDGET:()=>ne,DEFAULT_RSP_TTL_DAYS:()=>te,RSP_ELISION_COLLECTION:()=>$e,RspElisionStore:()=>wt});import{createHash as Ns}from"node:crypto";import{existsSync as $u}from"node:fs";import{mkdir as Au,readFile as or,readdir as Bs,rename as Du,writeFile as Iu}from"node:fs/promises";import{homedir as Pu}from"node:os";import{basename as ar,dirname as Ls,join as ze}from"node:path";import{fileURLToPath as Nu}from"node:url";function As(e,t){return`el:${Ns("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function Oe(e){return`record:${e.slice(3)}`}function Ke(e){return`expired:${e.slice(3)}`}function Ds(){return"index:v1"}function Kt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Bu(e){if(!ht(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:ht(e.scope)?e.scope:void 0,ranking:ht(e.ranking)?e.ranking:void 0}}}function Lu(e){if(!ht(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Cu(e,t,n){let r=[],i=new Set([".git","node_modules",".red",...n]);async function s(o){if(r.length>=t)return;let a=await Bs(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let l=ze(o,c.name);c.isDirectory()?await s(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await s(e),r}function Mu(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=ht(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function Is(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Wt(e){return fe(e)?e.collection===$e&&typeof e.handle=="string"&&Kt(e.handle)&&typeof e.original=="string"&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&ju(e.loss):!1}function Cs(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>fe(t)&&typeof t.handle=="string"&&Kt(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function sr(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function ju(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Uu(e){try{let t=await or(e,"utf8");if(t.trim()==="")return Ps();let n=JSON.parse(t);if(Vu(n))return n}catch(t){if(t.code==="ENOENT"){let n=Ps();return await js(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Gu(e){try{let t=await or(e);return Ms(e)?e:Fu(t)?qu(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Fu(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function qu(e){return ar(e)==="red.rdb"?ze(Ls(e),"tmp","rsp-elisions.json"):`${e}.json`}function Ms(e){return ar(e)==="red-skills.rdb"}async function Ju(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):ze(Pu(),".cache","red-skills","bundles")),t=ze(e,"reddb"),n;try{n=await Bs(t)}catch{return}n.sort().reverse();for(let r of n){let i=ze(t,r,process.platform==="win32"?"red.exe":"red");if($u(i)){process.env.REDDB_BIN=i;return}}}async function js(e,t){await Au(Ls(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Iu(n,`${JSON.stringify(t)}
|
|
26
|
-
`,"utf8"),await
|
|
27
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(
|
|
28
|
-
`),i=
|
|
26
|
+
`).find(f=>f.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Su(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ce(e),a=ce(t),c=i!=null?` GROUP ${ce(i)}`:"",l=s!=null?rr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function ce(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function rr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function vu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Tu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${vu(e.priority)}`),e.key!=null&&(t+=` KEY ${ir(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ir(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function xu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ir(e):JSON.stringify(e)}function ir(e){return`'${String(e).replace(/'/g,"''")}'`}function nr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var _t,sr=k(()=>{we();_t=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ce(t)}`})}push(t,n,r={}){let i=Tu(r);return this.client.call("query",{sql:`QUEUE PUSH ${ce(t)} ${xu(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ce(t)}${rr(n)}`});return nr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ce(t)}${rr(n)}`});return nr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ce(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ce(t)}`})}async readWait(t,n,r={}){let i=Su(t,n,r),s=await this.client.call("query",{sql:i});return nr(s)}}});function As(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function Ou(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function tn(e){return String(e).split(".").map(Ns).join(".")}function Ns(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Pu(e){return Bs(JSON.stringify(e))}function Du(e){return JSON.stringify(e)}function $u(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Pu(e):Bs(e)}function Bs(e){return`'${String(e).replace(/'/g,"''")}'`}var Rt,or=k(()=>{we();Rt=class{constructor(t){this.db=t}async insert(t,n){As(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${tn(t)} DOCUMENT VALUES (${Du(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new b("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Ou(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 ${tn(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){As(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${Ns(c)} = ${$u(l)}`).join(", "),a=(await this.db.query(`UPDATE ${tn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${tn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Iu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${be(n)}.${be(r)})`}return Nu(e)}function Au(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 be(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function Nu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ls(e)}function Ls(e){return`'${String(e).replace(/'/g,"''")}'`}var Et,ar=k(()=>{Et=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Au(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ls).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${be(i)} ${be(t)} = ${Iu(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${be(r)} ${be(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${be(r)} ${be(t)}`})}}});function Bu(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Xe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function Lu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Cs(e)}function Cs(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,cr=k(()=>{kt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Bu(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Cs).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Xe(i)}.${Xe(t)} = ${Lu(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Xe(r)}.${Xe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Xe(r)}.${Xe(t)}`})}}});async function js(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Cu)}async function Us(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${ju(t)}`)).rows??[]).some(r=>r.name===String(t))}function Cu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Ms(e){return String(e).split(".").map(Mu).join(".")}function Mu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function ju(e){return`'${String(e).replace(/'/g,"''")}'`}var St,lr=k(()=>{we();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 b("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Ms).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Ms(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 Js(e,t={}){let n=zn(e);if(Yu(n),n.kind==="embedded"){let r=Ku(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Wu(n),s=t.binary??Ps(),o=await vs(s,i),a=new en(o);return await a.call("version",{}),new dr(a,{transport:"embedded"})}}function Fs(e){return Fu(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:Ju(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Hu(e)?{$uuid:e}:e}function Fu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function qu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Fs):e.map(Fs)}function Ju(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 Vu(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 Hu(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function nn(e){if(Array.isArray(e))return e.map(nn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Vu(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]=nn(i);return n}return e}function Wu(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ku(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");n.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");n.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");n.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function Yu(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",Uu)}function fr(){return new b(Gs,`${Gs}: nested transactions are not supported on one connection`)}function Vs(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function zu(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qs} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Qu(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${qs} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Uu,Gu,qs,Gs,rn,ur,dr,Hs=k(()=>{Ts();Ds();we();Qn();Xn();tr();sr();or();ar();cr();lr();Xn();tr();sr();or();ar();cr();lr();Qn();Uu="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Gu="1.0",qs="1.0.9",Gs="NESTED_TX_NOT_SUPPORTED";rn=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 fr()}},ur=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw fr();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new b("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new rn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Vs(n,r)}throw n}}},dr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Gu,this.cache=new bt(t,this.transport),this.queue=new _t(t),this.queues=this.queue,this.documents=new Rt(this);let r=new Qe(t);this.kv=Object.assign((i="kv_default")=>new Qe(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new Et(t,i),this.vault=(i="red.vault")=>new kt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=qu(n);return r==null?this.client.call("query",{sql:t}).then(nn):this.client.call("query",{sql:t,params:r}).then(nn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return zu(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 Qu(r,n.length)}tx(){return new ur(this)}async transaction(t){if(this.inTransaction)throw fr();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 rn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Vs(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return Us(this,t)}list(){return js(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 hr={};$(hr,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_TTL_DAYS:()=>oe,RSP_ELISION_COLLECTION:()=>M,RspElisionStore:()=>vt});import{createHash as zs}from"node:crypto";import{existsSync as Xu}from"node:fs";import{mkdir as Zu,readFile as yr,readdir as Qs,rename as ed,writeFile as td}from"node:fs/promises";import{homedir as nd}from"node:os";import{basename as gr,dirname as Xs,join as Ze}from"node:path";import{fileURLToPath as rd}from"node:url";function Ws(e,t){return`el:${zs("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 le(e){return`record:${e.slice(3)}`}function Ae(e){return`expired:${e.slice(3)}`}function mr(){return"index:v1"}function Tt(e){return/^el:[a-f0-9]{12}$/.test(e)}function id(e){if(!tt(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:tt(e.scope)?e.scope:void 0,ranking:tt(e.ranking)?e.ranking:void 0}}}function sd(e){if(!tt(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function od(e){return tt(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:sn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:sn(e.value)}:et(e)?{key:le(e.handle),value:e}:on(e)&&typeof e.handle=="string"&&Tt(e.handle)?{key:Ae(e.handle),value:e}:null:null}function sn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function ad(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 Qs(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let l=Ze(o,c.name);c.isDirectory()?await s(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await s(e),r}function cd(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=tt(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function Ks(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function et(e){return _e(e)?e.collection===M&&typeof e.handle=="string"&&Tt(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"&&ld(e.loss):!1}function pr(e){return!_e(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>_e(t)&&typeof t.handle=="string"&&Tt(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 on(e){return _e(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function ld(e){return _e(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function _e(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ud(e){try{let t=await yr(e,"utf8");if(t.trim()==="")return Ys();let n=JSON.parse(t);if(yd(n))return n}catch(t){if(t.code==="ENOENT"){let n=Ys();return await eo(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function dd(e){try{let t=await yr(e);return Zs(e)?e:fd(t)?md(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function fd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function md(e){return gr(e)==="red.rdb"?Ze(Xs(e),"tmp","rsp-elisions.json"):`${e}.json`}function Zs(e){return gr(e)==="red-skills.rdb"}async function pd(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ze(nd(),".cache","red-skills","bundles")),t=Ze(e,"reddb"),n;try{n=await Qs(t)}catch{return}n.sort().reverse();for(let r of n){let i=Ze(t,r,process.platform==="win32"?"red.exe":"red");if(Xu(i)){process.env.REDDB_BIN=i;return}}}async function eo(e,t){await Zu(Xs(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await td(n,`${JSON.stringify(t)}
|
|
27
|
+
`,"utf8"),await ed(n,e)}function Ys(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function yd(e){return _e(e)&&e.version===1&&_e(e.records)&&Object.values(e.records).every(et)&&_e(e.tombstones)&&Object.values(e.tombstones).every(on)&&pr(e.index)}function gd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return rd(e)}var M,vt,an=k(()=>{"use strict";Hs();Y();M="rsp_elisions_v1",vt=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=gd(t.uri),r=await dd(n),i=new e(r,{uri:t.uri,ttlDays:Ks(t.ttlDays,oe),byteBudget:Ks(t.byteBudget,ae),now:t.now??(()=>new Date)});return Zs(r)?(await pd(),i.db=await Js(`file://${r}`),await i.ensureRedDbCollections(),await i.ensureRedDbStore()):i.document=await ud(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=Ws(r,n),c=le(a),l={collection:M,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};return delete this.document.tombstones[Ae(a)],this.document.records[c]=l,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!Tt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[le(t)];if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:le(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),await this.flush(),s}let i=this.readOriginal(r);return i?{collection:M,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(i=>i.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r})}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ae(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ae(t)];return on(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await eo(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(M)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===M);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${M}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${M}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${M}`),await this.db.query(`CREATE KV IF NOT EXISTS ${M}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${M}`),n=[];for(let r of t.rows){let i=od(r);i&&n.push(i)}return n}async ensureMigratedRedDbIndex(t){if(t.some(i=>i.key===mr()&&pr(sn(i.value))))return;let r=t.map(i=>{let s=sn(i.value);return et(s)?{handle:s.handle,key:le(s.handle),bytes:s.original_bytes,command:s.command,created_at:s.created_at,expires_at:s.expires_at}:null}).filter(i=>i!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=Ws(r,n),c=le(a),l={collection:M,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.kv().delete(Ae(a)),await this.kv().put(c,l);let f=(await this.readRedDbIndex()).records.filter(m=>m.handle!==a);return f.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:f}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!Tt(t))return null;let n=await this.kvGet(Ae(t));if(on(n))return n;let r=await this.kvGet(le(t));if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:le(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=this.readOriginal(r);return i?{collection:M,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:t.records.reduce((n,r)=>n+r.bytes,0),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget}}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=id(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=sd(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 ad(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await yr(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=gr(i),c=zs("sha256").update("resident-memory-v1\0").update(i).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let l=Date.now(),u={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:l,updated_at:l,accessed_at:l,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:l,updated_at:l}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,u),m=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(m)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,m),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),i=t.toLowerCase().split(/\s+/).filter(Boolean),s=r.rows.map(o=>cd(o,i)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:s,context_md:s.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
|
|
28
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(mr());return pr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(mr(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ae(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(le(t));if(!et(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let s=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!s||s.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var co={};$(co,{REPO_STORE_PATH:()=>br,mergeRspBlock:()=>so,provisionRspRepoStore:()=>Sd});import{constants as hd}from"node:fs";import{access as wd,copyFile as bd,mkdir as to,readFile as _d,writeFile as no}from"node:fs/promises";import{dirname as Rd,join as cn,resolve as Ed}from"node:path";async function Sd(e,t={}){let n=Ed(e),r=cn(n,".red"),i=cn(r,"config.yaml"),s=cn(n,br);await to(r,{recursive:!0}),await to(Rd(s),{recursive:!0});let o="";try{o=await _d(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=so(o,{enabled:!0,ttlDays:t.ttlDays??oe,byteBudget:t.byteBudget??ae,heavyGitByteThreshold:t.heavyGitByteThreshold??se}),c=a!==o;c&&await no(i,a,"utf8");let l=!await io(s),u=!1;if(l){let m=cn(n,kd);if(await io(m))await bd(m,s),u=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(an(),hr)),_=process.env.REDDB_BIN;try{await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??oe,byteBudget:t.byteBudget??ae,allowResidentOpen:!0})).close()}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let f=vd(a,br);return f!==a&&await no(i,f,"utf8"),{configPath:i,storePath:s,configChanged:c||f!==a,storeCreated:l,memoryStoreMigrated:u}}function so(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${wr(t.ttlDays,oe)}`,` byteBudget: ${wr(t.byteBudget,ae)}`,` heavyGitByteThreshold: ${wr(t.heavyGitByteThreshold,se)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
29
|
+
`),i=oo(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
|
|
29
30
|
`)}
|
|
30
|
-
`}let s=
|
|
31
|
+
`}let s=_r(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
|
|
31
32
|
`)}
|
|
32
|
-
`}function
|
|
33
|
-
`),r=
|
|
33
|
+
`}function oo(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Er(r)&&Rr(r)===0&&ao(r)===t)return n}return-1}function _r(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Er(e[i])&&Rr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Rr(e){return(e.match(/^ */)?.[0]??"").length}function Er(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function ao(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function wr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function vd(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
34
|
+
`),r=oo(n,"plugins");if(r===-1)return e;let i=_r(n,r,0),s=ro(n,"memory",r+1,i,2);if(s===-1)return e;let o=_r(n,s,2),a=[...n],c=ro(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
|
|
34
35
|
`)}
|
|
35
|
-
`}function
|
|
36
|
+
`}function ro(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Er(o)&&Rr(o)===i&&ao(o)===t)return s}return-1}async function io(e){try{return await wd(e,hd.F_OK),!0}catch{return!1}}var br,kd,lo=k(()=>{"use strict";Y();br=Yt,kd=".red/memory/graph.rdb"});var go={};$(go,{runRspMcpServer:()=>xd});import{createInterface as Td}from"node:readline";async function xd(){let e=ye(process.cwd(),process.env),t=Td({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let i=await Od(r,e);po({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){po({jsonrpc:"2.0",id:typeof yo(n)?.id>"u"?null:yo(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function Od(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:mo(t)}]};if(!t.enabled)return{content:[{type:"text",text:mo(t)}],isError:!0};let r=Nd(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await Pd(n.arguments,r)}]}}return{}}async function Pd(e,t){let n=Dd(e?.payload),r=$d(e?.level),i=await wt(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return uo(i.output);let s=ze(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return uo(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return Id(s,o.length,a,r)}function Dd(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function $d(e){return e==="terse"?"terse":"brief"}function Id(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=fo(s.subarray(0,o)),c=fo(s.subarray(Math.max(0,s.length-o))),l=["payload summary",`bytes: ${t}`,`lines: ${Ad(s)}`,"head:",a];return c&&c!==a&&l.push("tail:",c),l.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${l.join(`
|
|
36
37
|
`)}
|
|
37
|
-
`}function
|
|
38
|
+
`}function uo(e){return e.endsWith(`
|
|
38
39
|
`)?e:`${e}
|
|
39
|
-
`}function
|
|
40
|
-
`)}function
|
|
41
|
-
`)}function
|
|
42
|
-
`)}function Qt(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(Zt),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(Zt)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>no(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of pd(r)){let a=o.map(c=>c.map((l,u)=>`[ "$${u+2}" = '${gd(l)}' ]`).join(" && ")).join(" || ");i.push(` ${no(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function pd(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function yd(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Zt(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function Zt(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function no(e){return e.replace(/[\\|)&;]/g,"\\$&")}function gd(e){return e.replace(/'/g,"'\\''")}function hd(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var io=k(()=>{"use strict";jn()});function pr(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&wd(t.chosenOption)&&bd(t.outcome)&&_d(t.cost)}function wd(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function bd(e){return e==="success"||e==="failure"||e==="escalated"}function _d(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var so=k(()=>{});import{createHash as Rd}from"node:crypto";function wo(e,t){return new gr(e,t)}function oo(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES),r=bo(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let i=String(n.id??e.label??e.LABEL??t),s=String(n.title??e.label??e.LABEL??i),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??i),kind:r,properties:{...n,id:i,title:s,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function ao(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),i=_o(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:i,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:hr(e.properties??e.PROPERTIES)}}function Sd(e){let t=Number(e.red_entity_id??e.rid),n=hr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!pr(n)?null:{rid:t,event:n}}function hr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Xt(e)?e:{}}function bo(e){let t=e==="contact"?"person":e;if(Ed.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function _o(e){if(kd.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function vd(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function co(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function De(e){return Xt(e)?e:{}}function lo(e,t){return De(e)[t]}function uo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function fo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function mo(e){let t=De(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function N(e){return typeof e=="string"&&e.length>0?e:void 0}function Xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yr(e){return e!=null}function Td(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function xd(e){return Rd("sha256").update(JSON.stringify(e)).digest("hex")}function Od(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function po(e){return`artifact-hash:${e}`}function yo(e,t,n){return`connection:${e}:${t}:${n}`}function go(){return"model-tier-bandit:v1"}function $d(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ho(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Ro(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),i=e.properties.tags.map(o=>o.toLowerCase()),s=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+ho(n,a)*3+ho(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,l)=>c+(l===a?4:l.includes(a)||a.includes(l)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function Ad(e,t,n,r){let i=0;for(let s of n){let o=s.from_rid===e.rid?s.to_rid:s.to_rid===e.rid?s.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=Eo({...Ro(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ae(i)}function Eo(e){return{...e,lexical:Ae(e.lexical),tags:Ae(e.tags),kind:Ae(e.kind),connections:Ae(e.connections),vector:Ae(e.vector),total:Ae(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ae(e){return Math.round(e*1e3)/1e3}function Dd(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(s=>n.indexOf(s)).filter(s=>s>=0).sort((s,o)=>s-o)[0]??0,i=Math.max(0,r-80);return`${i>0?"...":""}${e.slice(i,i+220)}${i+220<e.length?"...":""}`}function Id(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((i,s)=>({ref:`B${s+1}`,rid:i.artifact.rid,id:i.artifact.properties.id,title:i.artifact.properties.title,kind:i.artifact.kind,score:i.score,score_breakdown:i.score_breakdown,excerpt:i.excerpt})),confidence:n,missing_evidence:r}}function Pd(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var H,Ed,kd,gr,ko=k(()=>{"use strict";so();H={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Ed=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),kd=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(De(n));if(t==="getArtifact")return await this.getArtifact(lo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=De(n);return await this.search(uo(r,"query"),fo(r,"limit")??10,mo(r.options))}if(t==="think"){let r=De(n);return await this.think(uo(r,"query"),fo(r,"limit")??8,mo(r.options))}if(t==="link")return await this.link(De(n));if(t==="backlinks")return await this.backlinks(lo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(De(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${H.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Pd(t.map(r=>r.kind))}}async capture(t){let n=N(t.title)||"Untitled artifact",r=N(t.content);if(!r)throw new Error("brain capture requires content");let i=bo(N(t.kind)||"note"),s=Td(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=xd([i,n,r,s,N(t.sourcePath),N(t.sourceSession)]),c=await this.kv().get(po(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let l=`${Od(n)}-${a.slice(0,8)}`,u={id:l,title:n,content:r,tags:s,source_agent:N(t.sourceAgent),source_runner:N(t.sourceRunner),source_session:N(t.sourceSession),source_path:N(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Xt(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${H.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,l,i,a,u)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let w=oo(m);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(po(a),w.rid),await this.materializeTagConnections(w),w}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${H.artifacts}`)).rows.map(oo).filter(yr)}async search(t,n,r={}){let i=$d(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(l=>[l.rid,l]));return o.filter(l=>!s.has(l.rid)).map(l=>{let u=Ro(l,i),d=Eo({...u,connections:Ad(l,i,a,c),vector:0});return{artifact:l,score:d.total,score_breakdown:d,excerpt:Dd(l.properties.content,i)}}).filter(l=>l.score>0).sort((l,u)=>u.score-l.score||u.artifact.properties.updated_at-l.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return Id(t,i)}async link(t){let n=await this.getArtifact(co(t.from)),r=await this.getArtifact(co(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let i=_o(N(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let u=(await this.listConnections()).find(d=>d.rid===s);if(u)return u}let o={reason:N(t.reason),confidence:N(t.confidence)||"explicit",created_at:Date.now(),metadata:Xt(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${H.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let l=ao(c);if(!l)throw new Error("INSERT connection returned invalid row");return await this.kv().put(yo(n.rid,r.rid,i),l.rid),l}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${H.connections}`)).rows.map(ao).filter(yr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=vd(N(t.interval)||"day"),i=N(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!pr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${H.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${H.outcomeEvents}`)).rows.map(Sd).filter(yr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(go());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(go(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let i=await this.kv().get(yo(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(H.kv)}}});var kr={};A(kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>ye,RSP_TELEMETRY_INDEX_COLLECTION:()=>Rt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>pe,RSP_TELEMETRY_SPOOL:()=>Ao,appendTelemetryEvent:()=>Md,drainTelemetrySpool:()=>_r,parseTelemetryEvent:()=>Rr,readTelemetryGainsReport:()=>Er,readTelemetryStats:()=>rn,takeTelemetrySpool:()=>jd,telemetrySpoolPath:()=>nn});import{appendFileSync as Nd,mkdirSync as Bd,readFileSync as Ld}from"node:fs";import{mkdir as To,readFile as Cd,rename as xo,rm as Oo,writeFile as wr}from"node:fs/promises";import{dirname as br,join as $o}from"node:path";function nn(e){return $o(e,Ao)}async function Md(e,t){try{let n=nn(e);Bd(br(n),{recursive:!0}),Nd(n,`${JSON.stringify(t)}
|
|
43
|
-
`,{encoding:"utf8",mode:384})}catch{}}async function
|
|
40
|
+
`}function fo(e){return e.toString("utf8").replace(/�$/g,"")}function Ad(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function Nd(e){return new yt(ne(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function mo(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function po(e){process.stdout.write(`${JSON.stringify(e)}
|
|
41
|
+
`)}function yo(e){try{return JSON.parse(e)}catch{return null}}var ho=k(()=>{"use strict";Y();Zt();ge()});var bo={};$(bo,{renderShellInit:()=>Bd});function Bd(e,t=ht){if(e==="fish")return Ld(t);if(e==="bash"||e==="zsh")return Cd(e,t);throw new Error(`unsupported shell: ${e}`)}function Ld(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(un))].map(n=>` abbr --add --position command -- ${n} '${Gd(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
|
|
42
|
+
`)}function Cd(e,t){let n=jd(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ln("git",n.get("git")??[]),...ln("gh",n.get("gh")??[]),...ln("vitest",n.get("vitest")??[]),...ln("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
|
|
43
|
+
`)}function ln(e,t){if(t.length===0)return[];if(t.some(s=>s.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(s=>s.command.slice(1)).filter(s=>s.length===1).map(s=>s[0]).filter(un),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(un)),i=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let s=n.map(o=>wo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of Md(r)){let a=o.map(c=>c.map((l,u)=>`[ "$${u+2}" = '${Ud(l)}' ]`).join(" && ")).join(" || ");i.push(` ${wo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function Md(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let i=t.get(n)??[];i.push(r),t.set(n,i)}return t}function jd(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!un(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function un(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Ud(e){return e.replace(/'/g,"'\\''")}function Gd(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var _o=k(()=>{"use strict";Wn()});function kr(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"&&Fd(t.chosenOption)&&qd(t.outcome)&&Jd(t.cost)}function Fd(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function qd(e){return e==="success"||e==="failure"||e==="escalated"}function Jd(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 Ro=k(()=>{});import{createHash as Vd}from"node:crypto";function Ao(e,t){return new vr(e,t)}function Eo(e){let t=Number(e.red_entity_id??e.rid),n=Tr(e.properties??e.PROPERTIES),r=No(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 ko(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=Bo(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:Tr(e.properties??e.PROPERTIES)}}function Kd(e){let t=Number(e.red_entity_id??e.rid),n=Tr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!kr(n)?null:{rid:t,event:n}}function Tr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):dn(e)?e:{}}function No(e){let t=e==="contact"?"person":e;if(Hd.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Bo(e){if(Wd.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Yd(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function So(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Be(e){return dn(e)?e:{}}function vo(e,t){return Be(e)[t]}function To(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function xo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Oo(e){let t=Be(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function B(e){return typeof e=="string"&&e.length>0?e:void 0}function dn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Sr(e){return e!=null}function zd(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Qd(e){return Vd("sha256").update(JSON.stringify(e)).digest("hex")}function Xd(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Po(e){return`artifact-hash:${e}`}function Do(e,t,n){return`connection:${e}:${t}:${n}`}function $o(){return"model-tier-bandit:v1"}function Zd(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Io(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Lo(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+Io(n,a)*3+Io(r,a),0),tags:t.reduce((o,a)=>o+i.reduce((c,l)=>c+(l===a?4:l.includes(a)||a.includes(l)?2:0),0),0),kind:t.reduce((o,a)=>o+(s===a?3:s.includes(a)||a.includes(s)?1:0),0)}}function ef(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=Co({...Lo(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ne(i)}function Co(e){return{...e,lexical:Ne(e.lexical),tags:Ne(e.tags),kind:Ne(e.kind),connections:Ne(e.connections),vector:Ne(e.vector),total:Ne(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ne(e){return Math.round(e*1e3)/1e3}function tf(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 nf(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 rf(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var z,Hd,Wd,vr,Mo=k(()=>{"use strict";Ro();z={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Hd=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Wd=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),vr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Be(n));if(t==="getArtifact")return await this.getArtifact(vo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Be(n);return await this.search(To(r,"query"),xo(r,"limit")??10,Oo(r.options))}if(t==="think"){let r=Be(n);return await this.think(To(r,"query"),xo(r,"limit")??8,Oo(r.options))}if(t==="link")return await this.link(Be(n));if(t==="backlinks")return await this.backlinks(vo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Be(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:rf(t.map(r=>r.kind))}}async capture(t){let n=B(t.title)||"Untitled artifact",r=B(t.content);if(!r)throw new Error("brain capture requires content");let i=No(B(t.kind)||"note"),s=zd(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Qd([i,n,r,s,B(t.sourcePath),B(t.sourceSession)]),c=await this.kv().get(Po(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let l=`${Xd(n)}-${a.slice(0,8)}`,u={id:l,title:n,content:r,tags:s,source_agent:B(t.sourceAgent),source_runner:B(t.sourceRunner),source_session:B(t.sourceSession),source_path:B(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:dn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${z.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,l,i,a,u)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let w=Eo(m);if(!w)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Po(a),w.rid),await this.materializeTagConnections(w),w}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${z.artifacts}`)).rows.map(Eo).filter(Sr)}async search(t,n,r={}){let i=Zd(t),s=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(l=>[l.rid,l]));return o.filter(l=>!s.has(l.rid)).map(l=>{let u=Lo(l,i),f=Co({...u,connections:ef(l,i,a,c),vector:0});return{artifact:l,score:f.total,score_breakdown:f,excerpt:tf(l.properties.content,i)}}).filter(l=>l.score>0).sort((l,u)=>u.score-l.score||u.artifact.properties.updated_at-l.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let i=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return nf(t,i)}async link(t){let n=await this.getArtifact(So(t.from)),r=await this.getArtifact(So(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=Bo(B(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let u=(await this.listConnections()).find(f=>f.rid===s);if(u)return u}let o={reason:B(t.reason),confidence:B(t.confidence)||"explicit",created_at:Date.now(),metadata:dn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${z.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let l=ko(c);if(!l)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Do(n.rid,r.rid,i),l.rid),l}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${z.connections}`)).rows.map(ko).filter(Sr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Yd(B(t.interval)||"day"),i=B(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!kr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${z.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${z.outcomeEvents}`)).rows.map(Kd).filter(Sr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get($o());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put($o(),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(Do(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(z.kv)}}});var Ir={};$(Ir,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>Pt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_SPOOL:()=>Vo,appendTelemetryEvent:()=>lf,drainTelemetrySpool:()=>Pr,parseTelemetryEvent:()=>Dr,readTelemetryGainsReport:()=>$r,readTelemetryStats:()=>yn,takeTelemetrySpool:()=>uf,telemetrySpoolPath:()=>pn});import{appendFileSync as sf,mkdirSync as of,readFileSync as af}from"node:fs";import{mkdir as Go,readFile as cf,rename as Fo,rm as qo,writeFile as xr}from"node:fs/promises";import{dirname as Or,join as Jo}from"node:path";function pn(e){return Jo(e,Vo)}async function lf(e,t){try{let n=pn(e);of(Or(n),{recursive:!0}),sf(n,`${JSON.stringify(t)}
|
|
44
|
+
`,{encoding:"utf8",mode:384})}catch{}}async function uf(e){let t=pn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Go(Or(t),{recursive:!0}),await Fo(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await xr(t,"",{flag:"wx"}).catch(()=>{}),(await Ho(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await qo(n,{force:!0})}}async function Pr(e,t){let n=pn(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await Go(Or(n),{recursive:!0}),await Fo(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await xr(n,"",{flag:"wx"}).catch(()=>{});let o=(await Ho(r)).split(/\r?\n/).filter(a=>a.trim()!=="");for(let a of o){try{if(await t(a))continue}catch{}i.push(a)}}finally{if(i.length>0){let s=df(n);await xr(n,`${i.join(`
|
|
44
45
|
`)}
|
|
45
|
-
${s}`,"utf8")}await
|
|
46
|
-
`),
|
|
47
|
-
|
|
48
|
-
`)
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
${s}`,"utf8")}await qo(r,{force:!0})}}function df(e){try{return af(e,"utf8")}catch{return""}}async function Ho(e){let t="";for(let n=0;n<5;n++){let r=await cf(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Dr(e){try{let t=JSON.parse(e);return!Wo(t)||t.collection!==Ee&&t.collection!==ke?null:t}catch{return null}}async function yn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await fn(e,Ee)).filter(g=>xt(g)>=i),o=(await fn(e,ke)).filter(g=>xt(g)>=i),a=0,c=0,l=0,u=0,f=!1,m=new Map,w=new Map,_=[],T=0,v=0,x=0;for(let g of s){g.elided===!0&&a++;let R=Q(g.raw_bytes),P=Q(g.emitted_bytes),ue=Math.max(0,R-P),V=Math.max(0,Q(g.tokens_raw)-Q(g.tokens_emitted));f||=g.estimated===!0&&V>0,c+=R,l+=P,u+=V;let Pe=Ot(g).slice(0,10);Pe&&m.set(Pe,(m.get(Pe)??0)+V);let y=Re(g.command)||"unknown",E=w.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};E.invocations++,E.bytes_saved+=ue,E.tokens_saved+=V,w.set(y,E);let je=mn(g.wrapper_ms);je!=null&&_.push(je),T+=Q(g.store_open_count);let Ue=mn(g.store_elapsed_ms);Ue!=null&&(v+=Ue,x++)}let d=new Map,p=null;for(let g of o){let R=Re(g.reason)||"unknown";d.set(R,(d.get(R)??0)+1);let P=Ot(g);(!p||P>p.timestamp)&&(p={timestamp:P,reason:R,command:Re(g.command)||"unknown"})}let S=s.length+o.length,h=Cn(u,f);return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:l,bytes_saved:Math.max(0,c-l),tokens_saved:u,tokens_saved_estimated:h.tokens_saved_estimated,token_estimate_range_pct:h.token_estimate_range_pct,tokens_saved_low:h.tokens_saved_low,tokens_saved_high:h.tokens_saved_high,dollars_saved_estimate_usd:h.dollars_saved_estimate_usd,dollars_saved_low_usd:h.dollars_saved_low_usd,dollars_saved_high_usd:h.dollars_saved_high_usd,pricing_model_family:h.pricing_model_family,pricing_input_usd_per_million_tokens:h.pricing_input_usd_per_million_tokens,pricing_note:h.pricing_note,daily_tokens_saved:[...m.entries()].sort(([g],[R])=>g.localeCompare(R)).map(([g,R])=>({date:g,tokens_saved:R})),top_commands:[...w.values()].sort((g,R)=>R.bytes_saved-g.bytes_saved||R.tokens_saved-g.tokens_saved||g.command.localeCompare(R.command))},health:{degradations:o.length,degradation_rate:S===0?0:o.length/S,by_reason:[...d.entries()].sort((g,R)=>R[1]-g[1]||g[0].localeCompare(R[0])).map(([g,R])=>({reason:g,count:R})),most_recent:p},latency:{wrapper_ms_p50:nt(_,.5),wrapper_ms_p95:nt(_,.95),store_open_count_sum:T,store_elapsed_ms_sum:rt(v),store_elapsed_ms_avg:x===0?null:rt(v/x)}}}async function $r(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 fn(e,Ee)).filter(y=>xt(y)>=o),c=(await fn(e,ke)).filter(y=>xt(y)>=o),l=[...a,...c].map(xt).filter(y=>Number.isFinite(y)&&y>0),u=l.length===0?null:Math.min(...l),f=u==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-u)/wf()))),m=[],w=new Map,_=new Map,T=new Map,v=new Map,x=new Map,d=new Map,p=0,S=!1,h=0,g=null,R=0,P=0;for(let y of a){let E=Ot(y),je=E.slice(0,10),Ue=E.slice(0,16),Ge=Uo(Re(y.command)),de=Math.max(0,Q(y.tokens_raw)-Q(y.tokens_emitted));p+=de,S||=y.estimated===!0&&de>0;let Sn=Math.max(0,Q(y.raw_bytes)-Q(y.emitted_bytes)),vn=mn(y.wrapper_ms);if(vn!=null){m.push(vn);let oi=w.get(Ge)??[];oi.push(vn),w.set(Ge,oi)}je&&_.set(je,(_.get(je)??0)+1),Ue&&T.set(Ue,(T.get(Ue)??0)+1);let Tn=mf(E);Tn&&v.set(Tn,(v.get(Tn)??0)+1);let xn=gf(E);xn&&x.set(xn,(x.get(xn)??0)+de);let It=d.get(Ge)??{command_family:Ge,invocations:0,tokens_saved:0,bytes_saved:0};It.invocations++,It.tokens_saved+=de,It.bytes_saved+=Sn,d.set(Ge,It),y.elided===!0&&h++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(R++,Q(y.store_open_count)>0&&P++),de>0&&(!g||de>g.tokens_saved||de===g.tokens_saved&&Sn>g.bytes_saved)&&(g={timestamp:E,command_family:Ge,tokens_saved:de,bytes_saved:Sn})}let ue=c.map(y=>({timestamp:Ot(y),command_family:Uo(Re(y.command)),reason:Re(y.reason)||"unknown"})).sort((y,E)=>y.timestamp.localeCompare(E.timestamp)),V=new Map;for(let y of ue)V.set(y.reason,(V.get(y.reason)??0)+1);let Pe=[...T.entries()].sort((y,E)=>E[1]-y[1]||y[0].localeCompare(E[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:f,since:s,until:i,label:`window: ${r}d, data: ${f}d`,empty:a.length===0&&c.length===0,invocations:a.length,degradations:c.length},latency:{global:jo(m),by_command_family:[...w.entries()].sort((y,E)=>E[1].length-y[1].length||y[0].localeCompare(E[0])).map(([y,E])=>({command_family:y,count:E.length,...jo(E)}))},throughput:{requests_per_day:[..._.entries()].sort(([y],[E])=>y.localeCompare(E)).map(([y,E])=>({date:y,requests:E})),active_minute_avg:T.size===0?null:rt([...T.values()].reduce((y,E)=>y+E,0)/T.size),peak_minute:Pe?{minute:Pe[0],requests:Pe[1]}:null,hour_weekday_heatmap:pf(v)},savings:{tokens:Cn(p,S),weekly_tokens_saved:hf(x),elision_rate:a.length===0?0:rt(h/a.length),top_commands_by_tokens_saved:[...d.values()].sort((y,E)=>E.tokens_saved-y.tokens_saved||E.bytes_saved-y.bytes_saved||y.command_family.localeCompare(E.command_family)).slice(0,10),top_commands_by_invocation_count:[...d.values()].sort((y,E)=>E.invocations-y.invocations||E.tokens_saved-y.tokens_saved||y.command_family.localeCompare(E.command_family)).slice(0,10),single_biggest_elision:g},health:{degradation_timeline:ue,degradations_by_reason:[...V.entries()].sort((y,E)=>E[1]-y[1]||y[0].localeCompare(E[0])).map(([y,E])=>({reason:y,count:E})),cold_boots:R===0?null:P,warm_hits:R===0?null:Math.max(0,R-P)}}}async function fn(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=>ff(r.value)).filter(r=>Wo(r))}function ff(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function xt(e){let t=Date.parse(Ot(e));return Number.isFinite(t)?t:0}function Ot(e){return Re(e.created_at)||Re(e.ts)||""}function Re(e){return typeof e=="string"?e:""}function Q(e){return mn(e)??0}function mn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function nt(e,t){if(e.length===0)return null;let n=[...e].sort((i,s)=>i-s),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return rt(n[r])}function jo(e){return{wrapper_ms_p50:nt(e,.5),wrapper_ms_p90:nt(e,.9),wrapper_ms_p95:nt(e,.95),wrapper_ms_p99:nt(e,.99)}}function rt(e){return Math.round(e*100)/100}function Uo(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 mf(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${yf(t.getUTCDay())}:${t.getUTCHours()}`:null}function pf(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 yf(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function gf(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 hf(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:rt((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function wf(){return 24*60*60*1e3}function Wo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vo,Ee,ke,Pt,gn=k(()=>{"use strict";Mn();Vo=Jo(".red","tmp","rsp-telemetry.spool.jsonl"),Ee="rsp_telemetry_invocations_v1",ke="rsp_telemetry_degradations_v1",Pt="rsp_telemetry_index_v1"});var oa={};$(oa,{runResidentServer:()=>Tf});import{randomUUID as Br}from"node:crypto";import{execFileSync as bf,spawn as _f}from"node:child_process";import{existsSync as Rf}from"node:fs";import{mkdir as ea,rename as Ef,rm as Ko,writeFile as ta}from"node:fs/promises";import{createServer as kf}from"node:net";import{dirname as Cr,join as Dt}from"node:path";import{fileURLToPath as Sf,pathToFileURL as vf}from"node:url";async function Tf(e){await ea(Cr(e.socketPath),{recursive:!0});let t=Mf();Cf();let n=process.hrtime.bigint(),r=await vt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),i=Number(process.hrtime.bigint()-n)/1e6,s=1,o=r.redDb()?await ra(r.redDb()):[],a=new Lr(r,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??zt,byteBudget:e.telemetryByteBudget??e.byteBudget??Qt,bootHeals:o}),c=e.telemetryDrainTimeoutMs??na;await Ar(a,c);let l=e.idleMs??Xt,u,f,m=!1,w=new Set,_=e.telemetryDrainIntervalMs??3e4,T=setInterval(()=>{Ar(a,c)},_);T.unref();let v=kf(R=>{w.add(R),R.once("close",()=>w.delete(R)),d(),Vf(R,async P=>{d();let ue=await Hf(r,P,e.storeUri,e.residentVersion??"0.0.0-dev"),V={id:P.id,ok:!0,value:ue,storeOpenCount:s,storeElapsedMs:i};R.write(`${JSON.stringify(V)}
|
|
47
|
+
`),P.op==="handover"&&setImmediate(()=>x())})});function x(){m=!0,f=Lf(f),v.close();for(let R of w)R.destroy()}function d(){u&&clearTimeout(u),u=setTimeout(()=>{x()},l),u.unref()}let S=["SIGINT","SIGTERM"].map(R=>{let P=()=>{hn(),v.close();for(let ue of w)ue.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,P),{signal:R,handler:P}});await new Promise((R,P)=>{v.once("error",P),v.listen(e.socketPath,()=>{v.off("error",P),R()})}),e.pidPath&&await ta(e.pidPath,`${process.pid}
|
|
48
|
+
`,{encoding:"utf8",mode:384});let h=e.residentVersion??"0.0.0-dev",g=e.registryPath??Dt(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await Vt(g,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:h})}catch{}d(),await new Promise(R=>v.once("close",R)),s=0,u&&clearTimeout(u),clearInterval(T),await Ko(e.socketPath,{force:!0}),await Ar(a,c,m),await r.close(),f&&clearTimeout(f);for(let{signal:R,handler:P}of S)process.off(R,P);t?.kill("SIGTERM"),hn(),e.pidPath&&await Ko(e.pidPath,{force:!0}),await Ht(g)}async function If(e,t,n=new Date){let r=await yn(e,1,n),i=n.toISOString().slice(0,10),s=r.savings.daily_tokens_saved.find(l=>l.date===i)?.tokens_saved??0,o=r.savings.tokens_saved>0?s/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Dt(t,Df),c=`${a}.${process.pid}.${Date.now()}.tmp`;await ea(Cr(a),{recursive:!0}),await ta(c,JSON.stringify({version:1,tokens_saved_today:s,dollars_saved_today_usd:Math.round(o*1e6)/1e6,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await Ef(c,a)}async function Ar(e,t=na,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await sa(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
|
|
49
|
+
`)}}async function ra(e){let t=[];for(let n of $f){let r=await Af(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Nf(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${ia(n)}`))}return t}async function Af(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let i=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(i?.[1])return{ok:!1,previousModel:i[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let s=(await e.list()).find(o=>o.name===t);if(s&&s.model!=="kv")return{ok:!1,previousModel:s.model};throw n}}async function Nf(e,t,n){let r=Bf(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${ia(t)}`)}function Bf(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function ia(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Lf(e){return e&&clearTimeout(e),setTimeout(()=>{hn(),process.exit(0)},Pf)}function Cf(){Yo||(Yo=!0,process.on("exit",()=>hn()))}function Mf(){if(process.platform==="win32")return;let t=_f(process.execPath,["-e",`
|
|
50
|
+
const { execFileSync } = require("node:child_process");
|
|
51
|
+
const parentPid = Number(process.argv[1]);
|
|
52
|
+
const known = new Set();
|
|
53
|
+
function rows() {
|
|
54
|
+
try {
|
|
55
|
+
return String(execFileSync("ps", ["-eo", "pid=,ppid=,args="], { encoding: "utf8" }))
|
|
56
|
+
.split(/\\n/)
|
|
57
|
+
.map((line) => /^\\s*(\\d+)\\s+(\\d+)\\s+([\\s\\S]*)$/.exec(line))
|
|
58
|
+
.filter(Boolean)
|
|
59
|
+
.map((m) => ({ pid: Number(m[1]), ppid: Number(m[2]), args: m[3] || "" }));
|
|
60
|
+
} catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function isRedRpc(args) {
|
|
65
|
+
return /(^|\\s)\\S*red(?:\\.exe)?\\s+rpc\\s+--stdio(\\s|$)/.test(args);
|
|
66
|
+
}
|
|
67
|
+
function alive(pid) {
|
|
68
|
+
try {
|
|
69
|
+
process.kill(pid, 0);
|
|
70
|
+
return true;
|
|
71
|
+
} catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const timer = setInterval(() => {
|
|
76
|
+
const parentAlive = alive(parentPid);
|
|
77
|
+
const snapshot = rows();
|
|
78
|
+
for (const row of snapshot) {
|
|
79
|
+
if (row.ppid === parentPid && isRedRpc(row.args)) known.add(row.pid);
|
|
80
|
+
}
|
|
81
|
+
if (parentAlive) return;
|
|
82
|
+
for (const row of snapshot) {
|
|
83
|
+
if (known.has(row.pid) && isRedRpc(row.args)) {
|
|
84
|
+
try { process.kill(row.pid, "SIGKILL"); } catch {}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
clearInterval(timer);
|
|
88
|
+
process.exit(0);
|
|
89
|
+
}, 500);
|
|
90
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function hn(){for(let e of jf())try{process.kill(e,"SIGTERM")}catch{}}function jf(){if(process.platform==="win32")return[];let e="";try{e=bf("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let i=Number(r[1]),s=Number(r[2]),o=r[3]??"";s===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(i)}return t}async function Uf(e){if(e.collection!==Ee)return e;let t=await zo(e.raw_text,Xo(e.raw_bytes)),n=await zo(e.emitted_text,Xo(e.emitted_bytes)),{raw_text:r,emitted_text:i,...s}=e;return{...s,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function zo(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=xf)try{return await sa((async()=>({tokens:(await Gf())("cl100k_base").encode(e).length,estimated:!1}))(),Of,"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 Gf(){return Qo??=import(vf(Ff()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Qo}function Ff(){let e=Cr(Sf(import.meta.url)),n=[Dt(e,"..","node_modules","js-tiktoken","dist","index.js"),Dt(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Rf(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Xo(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Nr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function sa(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 qf(e){try{return JSON.parse(e)}catch{return e}}function Jf(e){return Zo(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Zo(t)&&(t.collection===Ee||t.collection===ke)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Zo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vf(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
|
|
91
|
+
`);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let l={id:o?.id??Br(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(l)}
|
|
92
|
+
`)}finally{e.end()}})()})}async function Hf(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 yn(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 $r(i,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Kf(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);if(t.op==="brain")return await Wf(e,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Wf(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await Ao(i,t).request(n,r)}function Kf(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var xf,Of,na,Pf,Df,$f,Lr,Yo,Qo,aa=k(()=>{"use strict";Wt();an();Mo();gn();Y();xf=256*1024,Of=500,na=2e3,Pf=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Df=Dt(".red","tmp","rsp-status-summary.json"),$f=[Ee,ke,Pt],Lr=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pendingHeals;async drainAndSweep(){this.running??=this.drainAndSweepOnce().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await ra(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let i=[...(await this.readIndex(t)).records];for(let s of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:s.collection,error:`expected kv, got ${s.previousModel}`,bytes:0}));await Pr(this.opts.rootDir,async s=>{let o=Dr(s);if(!o){let a=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(s,"utf8")});return i.push(a),!0}try{let a=await this.writeEvent(t,o);return i.push(a),!0}catch(a){let c=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Nr(o.command)||"unknown",source_id:Nr(o.id),source_collection:Nr(o.collection),error:a instanceof Error?a.message:String(a),bytes:Buffer.byteLength(s,"utf8")});return i.push(c),!0}}),await this.prune(t,{version:1,records:i}),await If(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:Br(),a={...await Uf(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:ke,id:Br(),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(Pt).get("index:v1"),r=typeof n=="string"?qf(n):n;return Jf(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Pt).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})}};Yo=!1});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 ca(e,t){if(!t)return!0;let n=Mr(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function A(e,t){return t?e.filter(n=>ca(n,t)):[...e]}function it(e,t){if(!t)return e;let r=e.split(`
|
|
93
|
+
`).filter(i=>i&&ca(i,t));return r.length>0?`${r.join(`
|
|
51
94
|
`)}
|
|
52
|
-
`:""}function
|
|
53
|
-
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o
|
|
54
|
-
`;return{stdout:Buffer.from(`${
|
|
55
|
-
${u}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:l,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function
|
|
56
|
-
`;let s=
|
|
57
|
-
`)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),
|
|
58
|
-
`).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,
|
|
59
|
-
`),i=[],s=null;for(let c of r){let l=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(l){s={commit:l[1]??"",finalLine:Number(l[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let u=i.at(-1),
|
|
60
|
-
`).filter(Boolean).map(o=>{let[a,c,l,u,
|
|
61
|
-
`)){let p=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(
|
|
62
|
-
`).length:0,files:
|
|
63
|
-
`;return{stdout:Buffer.from(`${
|
|
64
|
-
${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:
|
|
95
|
+
`:""}function ve(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Mr(e){return Array.isArray(e)?e.map(Mr).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Mr).join(" "):String(e??"")}var wn=k(()=>{"use strict"});var jr={};$(jr,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>se,GIT_LOG_MACHINE_FIELDS:()=>la,recoveryInstruction:()=>J,renderGitContract:()=>ua,runGitWrapper:()=>zf});import{spawn as Yf}from"node:child_process";async function zf(e,t){let n=da(e),r=fa(n.argv),i=await em(r,n.argv.slice(1));return ua(e,i,t)}async function ua(e,t,n){let r=da(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=fa(r.argv),s=tm(i,r.argv,t.stdout,r.query);if(s===`git empty
|
|
96
|
+
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=D(s);if(Qf(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=fm(s);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Buffer.byteLength(o),l=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!l)throw new Error("terse git output requires an elision store");let u=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${J(l)}
|
|
97
|
+
`;return{stdout:Buffer.from(`${D(a.payload)}
|
|
98
|
+
${u}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:l,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function J(e){return e.startsWith("el:")?`rsp show ${e}`:e}function da(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 Qf(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Xf(e)||r.level!=="lossless")return!0;let i=dm(r.heavyGitByteThreshold,se);return Buffer.byteLength(t)<=i}function Xf(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function fa(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function Zf(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${la.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function em(e,t){let n=Yf("git",Zf(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 tm(e,t,n,r){switch(e){case"status":return nm(t,n,r);case"log":return rm(t,n,r);case"diff":return im(t,n,r);case"commit":return Te(sm(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Te(om(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return am(t,n,r);case"branch":return cm(t,n,r);case"show":return lm(t,n,r)}}function nm(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:um(l)})}if(i.length===0)return`git empty
|
|
99
|
+
`;let s=A(i,n),o=ma(s,"state");return Te({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 rm(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=A(r,n);return Te({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 im(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=A(i,n),o=s.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Te({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 sm(e,t){let n=t.split(`
|
|
100
|
+
`)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:f,summary:`commit ${c} on ${a}: ${l} files, +${u} -${f}`}}function om(e,t){let n=t.split(`
|
|
101
|
+
`).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,f=""]=c.split(" "),[m,w]=(u??"").split(":");return{flag:l??"",from:m??"",to:w??"",summary:f}}),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 am(e,t,n){let r=t.split(`
|
|
102
|
+
`),i=[],s=null;for(let c of r){let l=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(l){s={commit:l[1]??"",finalLine:Number(l[2]??0),author:"",path:""};continue}if(!s)continue;if(c.startsWith("author ")){s.author=c.slice(7);continue}if(c.startsWith("filename ")){s.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let u=i.at(-1),f=s.commit.slice(0,12);u&&u.commit===f&&u.author===s.author&&u.path===s.path&&u.line_end+1===s.finalLine?u.line_end=s.finalLine:i.push({line_start:s.finalLine,line_end:s.finalLine,author:s.author,commit:f,path:s.path}),s=null}let o=A(i,n),a=ma(o,"author");return Te({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${i.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function cm(e,t,n){let r=t.split(`
|
|
103
|
+
`).filter(Boolean).map(o=>{let[a,c,l,u,f,m]=o.split("\0");return{current:a==="*",name:c??"",commit:l??"",upstream:u||null,worktree:f||null,subject:m??""}}),i=A(r,n),s=i.find(o=>o.current)?.name??"";return Te({command:e.join(" "),branches:i,summary:`${n?`${i.length}/${r.length}`:i.length} branches${s?`, current ${s}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function lm(e,t,n){let r=t.indexOf(""),i=r>=0?t.indexOf("",r+1):-1,s=r>=0&&i>=0?t.slice(r+1,i):"",o=i>=0?t.slice(i+1):t,[a,c,l,u,f,m=""]=s.split(""),w=[];for(let d of o.split(`
|
|
104
|
+
`)){let p=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(d);if(!p)continue;let S=p[3]??"";w.push({path:(p[1]??"").trim(),changed:Number(p[2]??0),added:[...S].filter(h=>h==="+").length,deleted:[...S].filter(h=>h==="-").length,binary:S.startsWith("Bin")})}let _=A(w,n),T=0,v=0,x=0;for(let d of _)T+=typeof d.changed=="number"?d.changed:0,v+=typeof d.added=="number"?d.added:0,x+=typeof d.deleted=="number"?d.deleted:0;return Te({command:e.join(" "),commit:a??"",short:c??"",author:l??"",date:u??"",subject:f??"",body_lines:m.trim()?m.trim().split(`
|
|
105
|
+
`).length:0,files:_,summary:`${n?`${_.length}/${w.length}`:_.length} files, ${T} changed, +${v} -${x}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Te(e,t,n){return t?ve(e,n):e}function um(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function ma(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function dm(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fm(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var la,Le=k(()=>{"use strict";Ie();Y();wn();Y();la=["%h","%an","%as","%s"]});var qr={};$(qr,{renderGhContract:()=>ga,runGhWrapper:()=>gm});import{spawn as ya}from"node:child_process";async function gm(e,t){let n=ha(e),r=await wm(n);return ga(e,r,t)}async function ga(e,t,n){let r=Se(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=ha(e),s=bn(t.stdout),o=_m(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=xm(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let _=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=_}let c=a?.target.truncated.handle||void 0,l=D(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=Om(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let f=Buffer.byteLength(l),m=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:f}});if(!m)throw new Error("terse gh output requires an elision store");let w=`\u2026 elided ${u.rowsElided} rows (+${f}) \u2014 ${J(m)}
|
|
106
|
+
`;return{stdout:Buffer.from(`${D(u.payload)}
|
|
107
|
+
${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:f,rowsElided:u.rowsElided,rawOutput:Buffer.from(l)}}function ha(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 l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function hm(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?pm[t]:mm[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function wm(e){if(e.action==="combined")return await bm(e);let t=ya("gh",hm(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 bm(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Ur(["pr","view",t,"--json",n.join(",")]),Ur(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Ur(["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:bn(i.stdout),checks:bn(s.stdout),comments:bn(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Ur(e){let t=ya("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 _m(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Sm(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ot(n).map(o=>wa(o,e.wide)),s=A(i,e.query);return st({...r,prs:s,summary:`${Gr(s.length,i.length,e.query)} ${pa(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return st({...r,pr:ba(X(n),e),summary:`PR #${Ce(X(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Rm(e,t,X(n));case"issue:list":{let i=ot(n).map(o=>_a(o,e.wide)),s=A(i,e.query);return st({...r,issues:s,summary:`${Gr(s.length,i.length,e.query)} ${pa(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return st({...r,issue:vm(X(n),e),summary:`issue #${Ce(X(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ot(n).map(o=>Ra(o,e.wide)),s=A(i,e.query);return st({...r,runs:s,summary:`${Gr(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return st({...r,run:Tm(X(n),e),summary:`run ${Ce(X(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Rm(e,t,n){let r=ba(X(n.view),{...e,action:"view",wide:!0}),i=A(ot(n.checks).map(Em),e.query),s=X(n.comments).comments,o=A(ot(s).map(km).slice(-3),e.query);return ve({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Ce(X(n.view),"number")}: ${i.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Em(e){return{name:O(e,"name"),state:$t(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function km(e){return{author:Sa(e.author),body:_n(e,"body",Fr,!1),created:O(e,"createdAt")}}function Sm(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
|
|
65
108
|
`:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
|
|
66
109
|
`:`0 runs \u2014 try: rsp gh run list --limit 20
|
|
67
|
-
`}function
|
|
68
|
-
${
|
|
110
|
+
`}function wa(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:$t(e),draft:!!e.isDraft};return t&&Object.assign(n,Ea(e)),n}function ba(e,t){let n=wa(e,t.wide);return n.body=_n(e,"body",Fr,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function _a(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:$t(e),labels:ka(e.labels)};return t&&Object.assign(n,Ea(e)),n}function vm(e,t){let n=_a(e,t.wide);return n.body=_n(e,"body",Fr,t.full),n}function Ra(e,t){let n={id:Ce(e,"databaseId"),name:O(e,"name"),status:$t(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function Tm(e,t){let n=Ra(e,t.wide),r=ot(e.jobs).map(i=>({name:O(i,"name"),status:$t(i),conclusion:O(i,"conclusion"),log:_n(i,"log",ym,t.full)}));return n.jobs=r,n}function _n(e,t,n,r){let i=O(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function xm(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(at(n)){if(at(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function Om(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 pa(e,t){return e.every(n=>n.state===t)?t:"returned"}function Gr(e,t,n){return n?`${e}/${t}`:String(e)}function st(e,t,n){return t.query?ve(e,n):e}function $t(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function Ea(e){return{author:Sa(e.author),labels:ka(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function ka(e){return Array.isArray(e)?e.map(t=>at(t)?O(t,"name"):String(t)).filter(Boolean):[]}function Sa(e){return at(e)?O(e,"login"):""}function bn(e){return e.trim()?JSON.parse(e):null}function ot(e){return Array.isArray(e)?e.filter(at):[]}function X(e){return at(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Ce(e,t){let n=e[t];return typeof n=="number"?n:0}function at(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mm,pm,Fr,ym,Jr=k(()=>{"use strict";Ie();Le();wn();mm={"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"]},pm={"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,ym=160});var Hr={};$(Hr,{renderTestContract:()=>va,runTestWrapper:()=>Am});import{spawn as Pm}from"node:child_process";async function Am(e,t){let n=Se(e),r=await Mm(n.argv);return await va(e,r,t)}async function va(e,t,n){let r=Se(e),s=Ta(r.argv)==="vitest"?jm(t.stdout):Um(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${qm(s.durationSeconds)}`,c=A(s.failures,r.query);if(n.level==="terse")return await Nm(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,f=0;for(let _ of c){let T=await Gm(_.excerpt,r.argv.join(" "),n.store);l.push({suite:_.suite,name:_.name,excerpt:T.text}),u??=T.handle,f+=T.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(m.failures=l);let w=r.query?ve(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(D(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:u,bytesElided:f>0?f:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function Nm(e,t,n,r,i,s,o){let a=Bm(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?ve(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=D(l),f=Math.max(0,n.failures.length-a.length),m=a.some((p,S)=>p.excerpt!==n.failures[S].excerpt);if(f===0&&!m)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(p=>({suite:p.suite,name:p.name,excerpt:p.excerpt})));let _=D(w),T=Buffer.byteLength(_),v=await s.store?.mint(Buffer.from(_),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!v)throw new Error("terse test output requires an elision store");let d=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${T}) \u2014 ${J(v)}`;return{stdout:Buffer.from(`${u}
|
|
111
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:v,bytesElided:T,rowsElided:f,rawOutput:Buffer.from(_)}}function Bm(e){let t=[],n=$m;for(let r of e.slice(0,Im)){let i=Lm(r.excerpt,Math.min(Dm,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Lm(e,t){if(t<=0)return"";let n=e.split(`
|
|
69
112
|
`),r=n.length<=2?e:`${n[0]}
|
|
70
113
|
\u2026
|
|
71
|
-
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
72
|
-
`).filter(Boolean).map(c=>
|
|
73
|
-
`)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function
|
|
74
|
-
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${
|
|
75
|
-
`):""}function
|
|
76
|
-
`;if(!o&&Buffer.byteLength(c)<=
|
|
77
|
-
`;return{stdout:Buffer.from(`${c}${u}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:l,bytesElided:n.length,rawOutput:n}}function
|
|
78
|
-
`),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??
|
|
114
|
+
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Ta(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 Cm(e){if(Ta(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 Mm(e){let t=Cm(e),n=Pm(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 jm(e){let t=xa(e);if(!xe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=Oe(t.numTotalTests),s=Oe(t.numFailedTests),o=Jm(Oe(t.startTime),Oe(t.endTime));for(let a of n){if(!xe(a))continue;let c=Z(a.name)||Z(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)xe(u)&&u.status==="failed"&&r.push({suite:c,name:Z(u.fullName)||Z(u.title)||Z(u.name),excerpt:Fm(u.failureMessages)||Z(u.failureMessage)})}return i||=n.reduce((a,c)=>!xe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>xe(c)?a+Oe(c.perfStats&&xe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Um(e){let t=e.split(`
|
|
115
|
+
`).filter(Boolean).map(c=>xa(c)).filter(xe);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+=Oe(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=Oe(c.failed),o+=Oe(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Z(c.name).split("::").slice(0,-1).join("::"),name:Z(c.name),excerpt:Z(c.stdout)});continue}if(c.reason==="compiler-message"&&xe(c.message)){let l=Z(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
|
|
116
|
+
`)}),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 Gm(e,t,n){let r=Buffer.from(e);if(r.length<=Vr)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,Vr).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
|
|
117
|
+
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${J(i)}`,handle:i,bytesElided:r.length}}function xa(e){try{return JSON.parse(e)}catch{return null}}function Fm(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
118
|
+
`):""}function qm(e){return`${Number(e.toFixed(1))}s`}function Jm(e,t){return e>0&&t>e?(t-e)/1e3:0}function Oe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Z(e){return typeof e=="string"?e:""}function xe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vr,Dm,$m,Im,Wr=k(()=>{"use strict";Ie();Le();wn();Vr=320,Dm=160,$m=Vr,Im=3});var zr={};$(zr,{parseCatCommand:()=>Yr,renderCatContract:()=>Xm,runCatWrapper:()=>Qm});import{isUtf8 as Vm}from"node:buffer";import{readFile as Hm}from"node:fs/promises";import{extname as Wm}from"node:path";async function Qm(e,t){let n=Yr(e),r=await Hm(n.file);return Aa(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await Ia(e,n,r,t)}async function Xm(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Yr(e),i=Buffer.from(t.stdout,"utf8");return Aa(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await Ia(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Yr(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=$a(t[++s],Kr);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=$a(c,Kr);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function Ia(e,t,n,r){let i=n.toString("utf8"),s=tp(i,t),o=r.level!=="lossless"||n.length>Da(r.heavyByteThreshold,Oa)||s.truncated;if(!Pa(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Pa(t.file)?Zm(e,t.file,n,i,r.level,s):ep(e,t.file,n,i,s),c=`${D(a)}
|
|
119
|
+
`;if(!o&&Buffer.byteLength(c)<=Da(r.heavyByteThreshold,Oa))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let l=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!l)throw new Error("rsp cat elision requires an elision store");let u=`\u2026 elided file bytes (+${n.length}) \u2014 ${J(l)}
|
|
120
|
+
`;return{stdout:Buffer.from(`${c}${u}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:l,bytesElided:n.length,rawOutput:n}}function Zm(e,t,n,r,i,s){let o=Rn(r),a=i==="terse"?Ym:Km,c=Rn(s.text),l=c.slice(0,a),u=c.slice(Math.max(l.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:np(o),content:{head:l,tail:u,truncated:s.truncated||l.length+u.length<o.length}}}function ep(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Rn(r).length,content:Rn(i.text),truncated:i.truncated}}function tp(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
121
|
+
`),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??Kr,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
|
|
79
122
|
`)}${r&&o.length>0?`
|
|
80
|
-
`:""}`,truncated:o.length<i.length}}function
|
|
81
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
123
|
+
`:""}`,truncated:o.length<i.length}}function np(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!rp(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function Rn(e){let t=e.split(`
|
|
124
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function Aa(e){return e.includes(0)||!Vm(e)}function Pa(e){return zm.has(Wm(e).toLowerCase())}function rp(e){return["for","if","switch","while"].includes(e)}function Da(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $a(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Oa,Kr,Km,Ym,zm,Qr=k(()=>{"use strict";Ie();Le();Oa=8*1024,Kr=10,Km=8,Ym=2,zm=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var En={};$(En,{parseExecCommandLine:()=>La,renderExecContract:()=>Ba,runExecWrapper:()=>lp});import{isUtf8 as ip}from"node:buffer";import{spawn as sp}from"node:child_process";async function lp(e,t){let n=La(e),r=await up(n);return await Ba(n,r,t)}async function Ba(e,t,n){let r=Buffer.from(t.stdout,"binary"),i=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let s=dp(r);if(s.kind==="text"){let f=await wt(s.text,{level:n.level,command:e,store:n.store?{mint:async(...m)=>await n.store.mint(...m)}:void 0});if(f.detected)return{stdout:Buffer.from(f.output),stderr:i,status:t.status,signal:t.signal,mintedHandle:f.handle,bytesElided:f.lossy?r.length:void 0,rawOutput:r}}let o=s.kind==="text"?Buffer.from(s.text):r,a=pp(n.heavyByteThreshold,op);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:i,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,l=n.level==="lossless"?"terse":n.level,u=await n.store?.mint(r,{command:e,loss:{level:l,bytes_elided:c}});if(!u)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(fp(o,r.length,u,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:u,bytesElided:c,rawOutput:r}}function La(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function up(e){let t=sp(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function dp(e){return ip(e)?{kind:"text",text:ze(e.toString("utf8"))}:{kind:"bytes"}}function fp(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?cp:ap)/2)),o=Na(e.subarray(0,s)),a=Na(e.subarray(Math.max(0,e.length-s))),c=mp(e),l=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&l.push("tail:",a),l.push(`\u2026 elided stdout (+${t}) \u2014 ${J(n)}`),`${l.join(`
|
|
82
125
|
`)}
|
|
83
|
-
`}function
|
|
84
|
-
`),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(
|
|
85
|
-
`),0);let o=n.command==="git"&&
|
|
86
|
-
`),0)}if(n.command==="warm-resident"){let
|
|
87
|
-
`),
|
|
88
|
-
`),1;let
|
|
126
|
+
`}function Na(e){return e.toString("utf8").replace(/�$/g,"")}function mp(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function pp(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var op,ap,cp,kn=k(()=>{"use strict";Le();Zt();op=8*1024,ap=2*1024,cp=1024});Ie();import{appendFileSync as Ca,existsSync as ei,mkdirSync as yp,readFileSync as gp,readdirSync as hp,statSync as wp}from"node:fs";import{dirname as bp,join as Ma}from"node:path";function xi(e){let t={app:e,version:Gc(He("__RED_BUILD_VERSION__",()=>"2.53.0")??"0.0.0-dev"),gitSha:He("__RED_BUILD_GIT_SHA__",()=>"8885f5d33d4e25de45c3c22cd429e5cba4b0b17c")??"unknown",buildTime:He("__RED_BUILD_TIME__",()=>"2026-07-13T13:15:00-03:00")??"unknown",bundleAsset:He("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=He("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=He("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Gc(e){return e.startsWith("v")?e.slice(1):e}function He(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Mn();async function _p(e=process.argv.slice(2)){let t=xi("rsp"),n=Ip(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:d}=await Promise.resolve().then(()=>(Wn(),ds));return await d()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:d}=await Promise.resolve().then(()=>(Zt(),Ss));return await d()}if(n.command==="setup"){let{provisionRspRepoStore:d}=await Promise.resolve().then(()=>(lo(),co)),p=await d(process.cwd());return process.stdout.write(Fp(p)),0}if(n.command==="mcp"){let{runRspMcpServer:d}=await Promise.resolve().then(()=>(ho(),go));return await d(),0}if(n.command==="shell-init"){let d=n.positional[1];if(d!=="fish"&&d!=="bash"&&d!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
|
|
127
|
+
`),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(_o(),bo));return process.stdout.write(p(d)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Y(),es)),i=r(process.cwd(),process.env,n.storeUri),s=Dp(n.command);if(!i.enabled)return s?await Pp(n.positional):(process.stdout.write(`${si()}
|
|
128
|
+
`),0);let o=n.command==="git"&&ti(n.positional)?await Rp(process.cwd()):null;if(o){let d=process.hrtime.bigint();return await j(n,await ni(),d,void 0,o.rootDir)}let{resolveResidentPaths:a,ResidentRspElisionStore:c,ensureResidentServer:l}=await Promise.resolve().then(()=>(ge(),Ye));if(n.command==="server"){let{runResidentServer:d}=await Promise.resolve().then(()=>(aa(),oa)),p=a(process.cwd()),S=ee(n.positional,"--socket")??p.socketPath,h=r(process.cwd(),process.env,n.storeUri??ee(n.positional,"--store-uri"));return h.enabled?(await d({socketPath:S,pidPath:ee(n.positional,"--pid-file")??a(process.cwd()).pidPath,rootDir:p.rootDir,storeUri:h.storeUri,ttlDays:L(n.positional,"--ttl-days")??h.ttlDays,byteBudget:L(n.positional,"--byte-budget")??h.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??h.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??h.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??h.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??h.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??h.idleMs,residentVersion:ee(n.positional,"--resident-version")??t.version,registryPath:ee(n.positional,"--registry")??p.registryPath}),0):(process.stdout.write(`${si()}
|
|
129
|
+
`),0)}if(n.command==="warm-resident"){let d=a(process.cwd()),p=ee(n.positional,"--socket")??d.socketPath,S=ee(n.positional,"--wake-lock")??d.wakeLockPath,h=r(process.cwd(),process.env,n.storeUri??ee(n.positional,"--store-uri"));if(!h.enabled)return 0;let{warmResidentServer:g}=await Promise.resolve().then(()=>(ge(),Ye));return await g({...d,socketPath:p,wakeLockPath:S},{storeUri:h.storeUri,ttlDays:L(n.positional,"--ttl-days")??h.ttlDays,byteBudget:L(n.positional,"--byte-budget")??h.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??h.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??h.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??h.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??h.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??h.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:f}=await import("node:url"),m=a(process.cwd());if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:d,sweepResidentRegistry:p}=await Promise.resolve().then(()=>(ge(),Ye)),S=n.command==="sweep"?await p(m):await d(m);return process.stdout.write(`${D(S)}
|
|
130
|
+
`),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(f(i.storeUri)))return s?await ct(n,i,m.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
|
|
131
|
+
`),1);let w=()=>Promise.resolve(new c(m,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version})),_=()=>l(m,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),T=async()=>{let{RspElisionStore:d}=await Promise.resolve().then(()=>(an(),hr));return await d.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},v=()=>i.storeUri.endsWith("/red-skills.rdb")?w():T(),x;try{if(!n.command||n.command==="stats"){let d=await v();x=()=>d.close();let p=await d.stats(),S=kp(d)?await d.telemetryStats(Xr(n.positional,30)):Fa(Xr(n.positional,30));return process.stdout.write(Np(p,S,Ap(n.positional))),0}if(n.command==="gains"){let d=await v();if(x=()=>d.close(),!Sp(d))return process.stdout.write(`error: rsp gains requires the shared RedDB store
|
|
132
|
+
`),1;let p=await d.telemetryGains(Xr(n.positional,28));return process.stdout.write(Bp(p)),0}if(n.command==="git"){try{await N(_)}catch(g){return await ct(n,i,m.rootDir,g)}if(ti(n.positional)){let g=process.hrtime.bigint();return await j(n,await ni(),g,void 0,m.rootDir)}let{runGitWrapper:d}=await Promise.resolve().then(()=>(Le(),jr)),p=new Me(()=>N(w));x=()=>p.close();let S=process.hrtime.bigint(),h=await N(()=>d(n.positional,{level:n.level,store:p,heavyGitByteThreshold:i.heavyGitByteThreshold}));return await j(n,h,S,p,m.rootDir)}if(n.command==="gh"){try{await N(_)}catch(g){return await ct(n,i,m.rootDir,g)}let{runGhWrapper:d}=await Promise.resolve().then(()=>(Jr(),qr)),p=new Me(()=>N(w));x=()=>p.close();let S=process.hrtime.bigint(),h=await N(()=>d(n.positional,{level:n.level,store:p}));return await j(n,h,S,p,m.rootDir)}if(n.command==="vitest"||n.command==="cargo"){try{await N(_)}catch(g){return await ct(n,i,m.rootDir,g)}let{runTestWrapper:d}=await Promise.resolve().then(()=>(Wr(),Hr)),p=new Me(()=>N(w));x=()=>p.close();let S=process.hrtime.bigint(),h=await N(()=>d(n.positional,{level:n.level,store:p}));return await j(n,h,S,p,m.rootDir)}if(n.command==="cat"){try{await N(_)}catch(g){return await ct(n,i,m.rootDir,g)}let{runCatWrapper:d}=await Promise.resolve().then(()=>(Qr(),zr)),p=new Me(()=>N(w));x=()=>p.close();let S=process.hrtime.bigint(),h=await N(()=>d(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await j(n,h,S,p,m.rootDir)}if(n.command==="exec"){try{await N(_)}catch(g){return await ct(n,i,m.rootDir,g)}let{runExecWrapper:d}=await Promise.resolve().then(()=>(kn(),En)),p=new Me(()=>N(w));x=()=>p.close();let S=process.hrtime.bigint(),h=await N(()=>d(n.positional,{level:n.level,store:p,heavyByteThreshold:i.heavyGitByteThreshold}));return await j(n,h,S,p)}if(n.command==="show"&&n.handle){let d=await v();x=()=>d.close();let p=await d.get(n.handle);return p&&"original"in p&&p.original?(process.stdout.write(p.original),0):p?.status==="expired"?(process.stdout.write(`expired ${p.expired_at} \u2014 re-run: ${p.command}
|
|
89
133
|
`),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
|
|
90
134
|
`),1)}return process.stdout.write(`error: usage rsp show el:<id>
|
|
91
|
-
`),2}catch(
|
|
135
|
+
`),2}catch(d){if(s)return await ii("wrapper failed",n.positional,d,m.rootDir);throw d}finally{await x?.()}}function ee(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function L(e,t){let n=ee(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function ti(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Rp(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(ge(),Ye)),n=t(e);return ei(n.socketPath)?n:null}async function ni(){if(Ep(process.cwd()))return{stdout:Buffer.from(`git empty
|
|
92
136
|
`),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Buffer.from(`git empty
|
|
93
137
|
`),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?Buffer.from(`git empty
|
|
94
|
-
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function
|
|
95
|
-
`;try{
|
|
96
|
-
`);let i=await
|
|
97
|
-
`),await
|
|
98
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function
|
|
138
|
+
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function Ep(e){try{return!ei(`${e}/.git`)||ei(`${e}/.git/index`)?!1:hp(e).every(t=>t===".git")}catch{return!1}}function kp(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function Sp(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Me=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},ri=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function ct(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new ri,s=process.hrtime.bigint();try{if(e.command==="git"){if(ti(e.positional))return await j(e,await ni(),s,i,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Le(),jr)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Jr(),qr)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Wr(),Hr)),a=await o(e.positional,{level:e.level,store:i});return await j(e,a,s,i,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Qr(),zr)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(kn(),En)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await j(e,a,s,i)}}catch(o){return await ii("wrapper failed",e.positional,o,n)}finally{await i.close()}return await ii("wrapper failed",e.positional,r,n)}async function j(e,t,n,r,i=process.cwd(),s){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(await xp(i,e,t,o,r.lastResponseMetrics()),s&&await vp(i,s)):Op(i,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function vp(e,t){try{let n=Ma(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=wp(n),i=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Tp(n,Date.now()-i))return;let{kickResidentServer:s,resolveResidentPaths:o}=await Promise.resolve().then(()=>(ge(),Ye));await s(o(e),{storeUri:t.storeUri,ttlDays:t.ttlDays,byteBudget:t.byteBudget,telemetryTtlDays:t.telemetryTtlDays,telemetryByteBudget:t.telemetryByteBudget,telemetryDrainIntervalMs:t.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:t.telemetryDrainTimeoutMs,idleMs:t.idleMs})}catch{}}function Tp(e,t){try{let n=gp(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let i=JSON.parse(r),s=typeof i.created_at=="string"?i.created_at:i.ts;if(typeof s=="string"){let o=Date.parse(s);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function xp(e,t,n,r,i){let s=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(gn(),Ir));await a(e,{collection:c,ts:new Date().toISOString(),command:Ua(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,raw_text:o.toString("utf8"),emitted_text:s.toString("utf8"),wrapper_ms:r,store_open_count:i?.storeOpenCount,store_elapsed_ms:i?.storeElapsedMs})}function Op(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Ma(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ua(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
|
|
139
|
+
`;try{Ca(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;yp(bp(o),{recursive:!0}),Ca(o,a,{encoding:"utf8",mode:384})}}catch{}}async function ii(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
|
|
140
|
+
`);let i=await ja(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(gn(),Ir));await s(r,{collection:o,ts:new Date().toISOString(),command:Ga(t),reason:e})}return i}async function Pp(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${si()}, passing through
|
|
141
|
+
`),await ja(e)}function si(){return"rsp is not enabled in this directory; run /red-setup"}async function N(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Dp(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function ja(e){if(e[0]==="exec")return await $p(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)}
|
|
142
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function $p(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(kn(),En));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
|
|
99
143
|
`),2}let{spawn:n}=await import("node:child_process"),r=n(t,{shell:!0,stdio:"inherit"});return await new Promise(i=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
100
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function
|
|
101
|
-
`)}function
|
|
102
|
-
`}function
|
|
103
|
-
`)}import.meta.url===`file://${process.argv[1]}`&&
|
|
104
|
-
`),process.exit(1)});export{
|
|
144
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function Ua(e){return Ga(e.positional)}function Ga(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function Ip(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function Xr(e,t){let n=ee(e,"--since")??e.find(s=>s.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let i=Number(r[1]);return Number.isFinite(i)&&i>0?i:t}function Ap(e){return e.includes("--full")}function Np(e,t=Fa(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: ${Lp(t.savings)}`,` dollars_saved_estimate_usd: ${Cp(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...Mp(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...jp(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Gp(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:",...Up(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Zr(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Zr(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: ${Zr(t.latency.store_elapsed_ms_avg)}`,""].join(`
|
|
145
|
+
`)}function Bp(e){return`${D(e)}
|
|
146
|
+
`}function Lp(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function Cp(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?ft(e.dollars_saved_estimate_usd):`${ft(e.dollars_saved_low_usd)}-${ft(e.dollars_saved_high_usd)} (estimate_midpoint: ${ft(e.dollars_saved_estimate_usd)})`}function Mp(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function jp(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 Up(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Zr(e){return e==null?"none":String(e)}function Gp(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Fa(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function Fp(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
|
|
147
|
+
`)}import.meta.url===`file://${process.argv[1]}`&&_p().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
|
|
148
|
+
`),process.exit(1)});export{_p as main,Fp as renderSetupResult,Np as renderStats};
|