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