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