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