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