@reddb-io/red-skills 2.55.4 → 2.55.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +32 -30
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +384 -384
- package/dist/memory.bundle.min.mjs +507 -505
- package/dist/rsp.bundle.min.mjs +85 -80
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,55 +1,60 @@
|
|
|
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 Ft(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 jn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function j(e,t){try{return t()}catch(n){throw n instanceof U?n:n instanceof Error?new U(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function $i(e){return e==="true"||e==="false"||e==="null"}function bc(e){if(!e||!wc.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function jt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=Ft(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let w=e.length-r.length+f+1;i=e.indexOf("[",w)}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 g=f.trim();throw new SyntaxError(g===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${g}" between bracket and fields segment`)}return}let w=e.indexOf("}",c);w!==-1&&(a=w+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('"')?Cn(f):f}let m=e.slice(o+1).trim(),b=e.slice(i+1,s),_;try{_=Rc(b,t)}catch(f){if(n)throw f;return}let{length:T,delimiter:v}=_,p;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let w=e.slice(c+1,f),g=kc(w,v);if(g!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Si(v)}" but fields segment contains unquoted "${Si(g)}"`);return}p=Un(w,v).map(E=>Cn(E.trim()))}}return{header:{key:d,length:T,delimiter:v,fields:p},inlineValues:m||void 0}}function Rc(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Mt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Mt.pipe,n=n.slice(0,-1)),!_c.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 kc(e,t){for(let n of Ec)if(n!==t&&jn(e,n)!==-1)return n}function Si(e){return e===" "?"\\t":e}function Un(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 Ii(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Cn(t);if($i(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(bc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Cn(e){let t=e.trim();if(t.startsWith('"')){let n=Ft(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 Di(t.slice(1,n))}return t}function Sc(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 vc(e,t){let n=Ft(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Di(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 Tc(e,t){let n=e[t]==='"';return{...n?vc(e,t):Sc(e,t),isQuoted:n}}function Ai(e){return e.trim().startsWith("[")&&jn(e,":")!==-1}function xc(e){return jn(e,":")!==-1}function Oc(){return{lineNumber:0,blankLines:[]}}function Pc(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=vi(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=vi(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new U("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new U(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Dc(e,t,n,r){for(let i of e){let s=Pc(i,r,t,n);s!==void 0&&(yield s)}}function vi(e,t){return Math.floor(e/t)}function ct(e,t,n,r,i){if(r.strict&&e!==t)throw new U(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function $c(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new U(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Ic(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ac(e.content,n.delimiter))throw new U(`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 U(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ac(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Bc(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=Oc(),i=new Nc(Dc(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(Ai(s.content)){let a=j(s,()=>jt(s.content,W,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!xi(s)){yield{type:"primitive",value:j(s,()=>Jt(s.content.trim()))};return}if(!xi(s)&&i.peekSync()?.depth===0)throw new U("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Fe(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Fe(a,i,0,n,o)}yield{type:"endObject"}}function Ti(e,t,n){if(n){if(n.has(e))throw new U(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Fe(e,t,n,r,i){let s=e.content,o=j(e,()=>jt(s,W,r.strict));if(o&&o.header.key!==void 0){Ti(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ut(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=j(e,()=>Tc(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Ti(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*Lc(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:j(e,()=>Jt(l))}}function*Lc(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Fe(s,e,r,n,i);else break}}function*Ut(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Cc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Mc(e,n,r,i,s),yield{type:"endArray"};return}yield*jc(e,n,r,i,s),yield{type:"endArray"}}function*Cc(e,t,n,r){if(!t.trim()){ct(0,e.length,"inline array items",n,r);return}let i=j(r,()=>Un(t,e.delimiter)),s=j(r,()=>Ii(i));ct(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Mc(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=j(l,()=>Un(l.content,e.delimiter));ct(d.length,e.fields.length,"tabular row values",r,l);let m=j(l,()=>Ii(d));yield*Gc(e.fields,m),o++}else break}ct(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&&Ic(t.peekSync(),s,e)}function*jc(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*Uc(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}ct(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&&$c(t.peekSync(),s,e.length)}function*Uc(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new U('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(Ai(i)){let a=j(s,()=>jt(i,W,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=j(s,()=>jt(i,W,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ut(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*Fe(l,e,u,n,c);else break}yield{type:"endObject"};return}if(xc(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Fe(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<c)break;if(u.depth===c&&!u.content.startsWith("- "))e.advanceSync(),yield*Fe(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:j(s,()=>Jt(i))}}function xi(e){let t=e.content;if(t.startsWith('"')){let n=Ft(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Gc(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 ee(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 ee(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(ee);if(e instanceof Set)return Array.from(e).map(ee);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),ee(n)]));if(Fc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=ee(e[n]));return t}return null}function Pe(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function de(e){return Array.isArray(e)}function $(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ut(e){return Object.keys(e).length===0}function Fc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function lt(e){return e.length===0||e.every(t=>Pe(t))}function Jc(e){return e.length===0||e.every(t=>de(t))}function Bi(e){return e.length===0||e.every(t=>$(t))}function Wc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Li(e){return/^[A-Z_]\w*$/i.test(e)}function Hc(e,t=W){return!(!e||e!==e.trim()||$i(e)||Kc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Kc(e){return qc.test(e)||Vc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if($(e)){let n={},r=e[Ci];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=>Li(u))){zc(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Fn(c,a))Gn(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function zc(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($(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(Fn(o,n))Gn(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Gn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Fn(s,i))Gn(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Fn(e,t){return $(e)&&$(t)}function Yc(e){let t={stack:[],root:void 0};for(let n of e)Qc(t,n);return Xc(t)}function Qc(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,Ci,{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 Xc(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 Zc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!$(t))return;let{segments:a,tail:c,leafValue:u}=eu(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Li(m)))return;let l=tu(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 eu(e,t,n){let r=[e],i=t;for(;r.length<n&&$(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!$(i)||ut(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function tu(e){return e.join(".")}function qe(e,t){return e===null?hc:typeof e=="boolean"||typeof e=="number"?String(e):nu(e,t)}function nu(e,t=W){return Hc(e,t)?e:`"${Pi(e)}"`}function Ve(e){return Wc(e)?e:`"${Pi(e)}"`}function Mi(e,t=W){return e.map(n=>qe(n,t)).join(t)}function De(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ve(n)),s+=`[${e}${i!==W?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*ru(e,t,n){if(Pe(e)){let r=qe(e,t.delimiter);r!==""&&(yield r);return}de(e)?yield*Mn(void 0,e,n,t):$(e)&&(yield*Je(e,n,t))}function*Je(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*iu(c,u,t,n,o,r,i,a)}function*iu(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=Zc(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:b,leafValue:_,segmentCount:T}=d,v=Ve(m);if(b===void 0){if(Pe(_)){yield B(n,`${v}: ${qe(_,r.delimiter)}`,r.indent);return}else if(de(_)){yield*Mn(m,_,n,r);return}else if($(_)&&ut(_)){yield B(n,`${v}:`,r.indent);return}}if($(b)){yield B(n,`${v}:`,r.indent);let p=u-T,f=o?`${o}.${m}`:m;yield*Je(b,n+1,r,s,f,p);return}}}let l=Ve(e);Pe(t)?yield B(n,`${l}: ${qe(t,r.delimiter)}`,r.indent):de(t)?yield*Mn(e,t,n,r):$(t)&&(yield B(n,`${l}:`,r.indent),ut(t)||(yield*Je(t,n+1,r,s,c,u)))}function*Mn(e,t,n,r){if(t.length===0){yield B(n,e!=null?`${Ve(e)}: []`:"[]",r.indent);return}if(lt(t)){yield B(n,qt(t,r.delimiter,e),r.indent);return}if(Jc(t)&&t.every(i=>lt(i))){yield*su(e,t,n,r);return}if(Bi(t)){let i=ji(t);i?yield*ou(e,t,i,n,r):yield*Oi(e,t,n,r);return}yield*Oi(e,t,n,r)}function*su(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(lt(i)){let s=qt(i,r.delimiter);yield V(n+1,s,r.indent)}}function qt(e,t,n){let r=De(e.length,{key:n,delimiter:t}),i=Mi(e,t);return e.length===0?r:`${r} ${i}`}function*ou(e,t,n,r,i){yield B(r,De(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Ui(t,n,r+1,i)}function ji(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&au(e,n))return n}function au(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)||!Pe(n[r]))return!1}return!0}function*Ui(e,t,n,r){for(let i of e)yield B(n,Mi(t.map(s=>i[s]),r.delimiter),r.indent)}function*Oi(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Jn(i,n+1,r)}function*cu(e,t,n){if(ut(e)){yield B(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(de(s)&&Bi(s)){let c=ji(s);if(c){yield V(t,De(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Ui(s,c,t+2,n),o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n));return}}let a=Ve(i);if(Pe(s))yield V(t,`${a}: ${qe(s,n.delimiter)}`,n.indent);else if(de(s))if(s.length===0)yield V(t,`${a}: []`,n.indent);else if(lt(s))yield V(t,`${a}${qt(s,n.delimiter)}`,n.indent);else{yield V(t,`${a}${De(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Jn(c,t+2,n)}else $(s)&&(yield V(t,`${a}:`,n.indent),ut(s)||(yield*Je(s,t+2,n)));o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n))}function*Jn(e,t,n){if(Pe(e))yield V(t,qe(e,n.delimiter),n.indent);else if(de(e))if(lt(e))yield V(t,qt(e,n.delimiter),n.indent);else{yield V(t,De(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Jn(r,t+1,n)}else $(e)&&(yield*cu(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function V(e,t,n){return B(e,"- "+t,n)}function uu(e,t){let n=t("",e,[]);return n===void 0?Gt(e,t,[]):Gt(ee(n),t,[])}function Gt(e,t,n){return $(e)?lu(e,t,n):de(e)?du(e,t,n):e}function lu(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]=Gt(ee(a),t,o))}return r}function du(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=ee(a);r.push(Gt(c,t,o))}return r}function P(e,t){return Array.from(Gi(e,t)).join(`
|
|
5
|
-
`)}function qn(e,t){return
|
|
6
|
-
`),t)}function Gi(e,t){let n=
|
|
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 Rc=Object.defineProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>{for(var n in t)Rc(e,n,{get:t[n],enumerable:!0})};function Di(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 $i(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 Gt(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 jn(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function j(e,t){try{return t()}catch(n){throw n instanceof U?n:n instanceof Error?new U(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Ii(e){return e==="true"||e==="false"||e==="null"}function Sc(e){if(!e||!kc.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function jt(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let f=Gt(r,0);if(f===-1||!r.slice(f+1).startsWith("["))return;let w=e.length-r.length+f+1;i=e.indexOf("[",w)}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 g=f.trim();throw new SyntaxError(g===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${g}" between bracket and fields segment`)}return}let w=e.indexOf("}",c);w!==-1&&(a=w+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('"')?Cn(f):f}let m=e.slice(o+1).trim(),_=e.slice(i+1,s),R;try{R=Tc(_,t)}catch(f){if(n)throw f;return}let{length:T,delimiter:v}=R,p;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let w=e.slice(c+1,f),g=Oc(w,v);if(g!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${vi(v)}" but fields segment contains unquoted "${vi(g)}"`);return}p=Un(w,v).map(k=>Cn(k.trim()))}}return{header:{key:d,length:T,delimiter:v,fields:p},inlineValues:m||void 0}}function Tc(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Mt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Mt.pipe,n=n.slice(0,-1)),!vc.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 Oc(e,t){for(let n of xc)if(n!==t&&jn(e,n)!==-1)return n}function vi(e){return e===" "?"\\t":e}function Un(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 Ai(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Cn(t);if(Ii(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Sc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Cn(e){let t=e.trim();if(t.startsWith('"')){let n=Gt(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 $i(t.slice(1,n))}return t}function Pc(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 Dc(e,t){let n=Gt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=$i(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 $c(e,t){let n=e[t]==='"';return{...n?Dc(e,t):Pc(e,t),isQuoted:n}}function Ni(e){return e.trim().startsWith("[")&&jn(e,":")!==-1}function Ic(e){return jn(e,":")!==-1}function Ac(){return{lineNumber:0,blankLines:[]}}function Nc(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=Ti(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Ti(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new U("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new U(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Bc(e,t,n,r){for(let i of e){let s=Nc(i,r,t,n);s!==void 0&&(yield s)}}function Ti(e,t){return Math.floor(e/t)}function ut(e,t,n,r,i){if(r.strict&&e!==t)throw new U(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Lc(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new U(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Cc(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Mc(e.content,n.delimiter))throw new U(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Bi(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new U(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Mc(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Uc(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=Ac(),i=new jc(Bc(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(Ni(s.content)){let a=j(s,()=>jt(s.content,W,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Oi(s)){yield{type:"primitive",value:j(s,()=>Jt(s.content.trim()))};return}if(!Oi(s)&&i.peekSync()?.depth===0)throw new U("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Je(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Je(a,i,0,n,o)}yield{type:"endObject"}}function xi(e,t,n){if(n){if(n.has(e))throw new U(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Je(e,t,n,r,i){let s=e.content,o=j(e,()=>jt(s,W,r.strict));if(o&&o.header.key!==void 0){xi(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ut(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=j(e,()=>$c(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(xi(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*Fc(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:j(e,()=>Jt(l))}}function*Fc(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*Je(s,e,r,n,i);else break}}function*Ut(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Gc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Jc(e,n,r,i,s),yield{type:"endArray"};return}yield*qc(e,n,r,i,s),yield{type:"endArray"}}function*Gc(e,t,n,r){if(!t.trim()){ut(0,e.length,"inline array items",n,r);return}let i=j(r,()=>Un(t,e.delimiter)),s=j(r,()=>Ai(i));ut(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Jc(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=j(l,()=>Un(l.content,e.delimiter));ut(d.length,e.fields.length,"tabular row values",r,l);let m=j(l,()=>Ai(d));yield*Wc(e.fields,m),o++}else break}ut(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Bi(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Cc(t.peekSync(),s,e)}function*qc(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*Vc(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}ut(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Bi(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Lc(t.peekSync(),s,e.length)}function*Vc(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new U('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(Ni(i)){let a=j(s,()=>jt(i,W,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=j(s,()=>jt(i,W,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ut(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*Je(l,e,u,n,c);else break}yield{type:"endObject"};return}if(Ic(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Je(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*Je(u,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:j(s,()=>Jt(i))}}function Oi(e){let t=e.content;if(t.startsWith('"')){let n=Gt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Wc(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function te(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return te(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(te);if(e instanceof Set)return Array.from(e).map(te);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),te(n)]));if(Hc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=te(e[n]));return t}return null}function Pe(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function le(e){return Array.isArray(e)}function $(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function lt(e){return Object.keys(e).length===0}function Hc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function dt(e){return e.length===0||e.every(t=>Pe(t))}function Kc(e){return e.length===0||e.every(t=>le(t))}function Li(e){return e.length===0||e.every(t=>$(t))}function Qc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Ci(e){return/^[A-Z_]\w*$/i.test(e)}function Xc(e,t=W){return!(!e||e!==e.trim()||Ii(e)||Zc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Zc(e){return zc.test(e)||Yc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if($(e)){let n={},r=e[Mi];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=>Ci(u))){eu(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Gn(c,a))Fn(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 eu(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($(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(Gn(o,n))Fn(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 Fn(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Gn(s,i))Fn(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 Gn(e,t){return $(e)&&$(t)}function tu(e){let t={stack:[],root:void 0};for(let n of e)nu(t,n);return ru(t)}function nu(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,Mi,{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 ru(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 iu(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!$(t))return;let{segments:a,tail:c,leafValue:u}=su(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Ci(m)))return;let l=ou(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 su(e,t,n){let r=[e],i=t;for(;r.length<n&&$(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!$(i)||lt(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ou(e){return e.join(".")}function Ve(e,t){return e===null?Ec:typeof e=="boolean"||typeof e=="number"?String(e):au(e,t)}function au(e,t=W){return Xc(e,t)?e:`"${Di(e)}"`}function We(e){return Qc(e)?e:`"${Di(e)}"`}function ji(e,t=W){return e.map(n=>Ve(n,t)).join(t)}function De(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=We(n)),s+=`[${e}${i!==W?i:""}]`,r){let o=r.map(a=>We(a));s+=`{${o.join(i)}}`}return s+=":",s}function*cu(e,t,n){if(Pe(e)){let r=Ve(e,t.delimiter);r!==""&&(yield r);return}le(e)?yield*Mn(void 0,e,n,t):$(e)&&(yield*qe(e,n,t))}function*qe(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,u]of Object.entries(e))yield*uu(c,u,t,n,o,r,i,a)}function*uu(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=iu(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:_,leafValue:R,segmentCount:T}=d,v=We(m);if(_===void 0){if(Pe(R)){yield B(n,`${v}: ${Ve(R,r.delimiter)}`,r.indent);return}else if(le(R)){yield*Mn(m,R,n,r);return}else if($(R)&<(R)){yield B(n,`${v}:`,r.indent);return}}if($(_)){yield B(n,`${v}:`,r.indent);let p=u-T,f=o?`${o}.${m}`:m;yield*qe(_,n+1,r,s,f,p);return}}}let l=We(e);Pe(t)?yield B(n,`${l}: ${Ve(t,r.delimiter)}`,r.indent):le(t)?yield*Mn(e,t,n,r):$(t)&&(yield B(n,`${l}:`,r.indent),lt(t)||(yield*qe(t,n+1,r,s,c,u)))}function*Mn(e,t,n,r){if(t.length===0){yield B(n,e!=null?`${We(e)}: []`:"[]",r.indent);return}if(dt(t)){yield B(n,qt(t,r.delimiter,e),r.indent);return}if(Kc(t)&&t.every(i=>dt(i))){yield*lu(e,t,n,r);return}if(Li(t)){let i=Ui(t);i?yield*du(e,t,i,n,r):yield*Pi(e,t,n,r);return}yield*Pi(e,t,n,r)}function*lu(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(dt(i)){let s=qt(i,r.delimiter);yield V(n+1,s,r.indent)}}function qt(e,t,n){let r=De(e.length,{key:n,delimiter:t}),i=ji(e,t);return e.length===0?r:`${r} ${i}`}function*du(e,t,n,r,i){yield B(r,De(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Fi(t,n,r+1,i)}function Ui(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&fu(e,n))return n}function fu(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)||!Pe(n[r]))return!1}return!0}function*Fi(e,t,n,r){for(let i of e)yield B(n,ji(t.map(s=>i[s]),r.delimiter),r.indent)}function*Pi(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Jn(i,n+1,r)}function*mu(e,t,n){if(lt(e)){yield B(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(le(s)&&Li(s)){let c=Ui(s);if(c){yield V(t,De(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Fi(s,c,t+2,n),o.length>0&&(yield*qe(Object.fromEntries(o),t+1,n));return}}let a=We(i);if(Pe(s))yield V(t,`${a}: ${Ve(s,n.delimiter)}`,n.indent);else if(le(s))if(s.length===0)yield V(t,`${a}: []`,n.indent);else if(dt(s))yield V(t,`${a}${qt(s,n.delimiter)}`,n.indent);else{yield V(t,`${a}${De(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Jn(c,t+2,n)}else $(s)&&(yield V(t,`${a}:`,n.indent),lt(s)||(yield*qe(s,t+2,n)));o.length>0&&(yield*qe(Object.fromEntries(o),t+1,n))}function*Jn(e,t,n){if(Pe(e))yield V(t,Ve(e,n.delimiter),n.indent);else if(le(e))if(dt(e))yield V(t,qt(e,n.delimiter),n.indent);else{yield V(t,De(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Jn(r,t+1,n)}else $(e)&&(yield*mu(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function V(e,t,n){return B(e,"- "+t,n)}function pu(e,t){let n=t("",e,[]);return n===void 0?Ft(e,t,[]):Ft(te(n),t,[])}function Ft(e,t,n){return $(e)?gu(e,t,n):le(e)?yu(e,t,n):e}function gu(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]=Ft(te(a),t,o))}return r}function yu(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=te(a);r.push(Ft(c,t,o))}return r}function P(e,t){return Array.from(Gi(e,t)).join(`
|
|
5
|
+
`)}function qn(e,t){return Ji(e.split(`
|
|
6
|
+
`),t)}function Gi(e,t){let n=te(e),r=hu(t);return cu(r.replacer?pu(n,r.replacer):n,r,0)}function Ji(e,t){let n=wu(t),r=tu(Uc(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ct(r,n.strict):r}function hu(e){return{indent:e?.indent??2,delimiter:e?.delimiter??W,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function wu(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Ec,Mt,W,U,kc,vc,xc,jc,zc,Yc,Mi,qi=S(()=>{Ec="null",Mt={comma:",",tab:" ",pipe:"|"},W=Mt.comma;U=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};kc=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;vc=/^(?:0|[1-9]\d*)$/;xc=[","," ","|"];jc=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}};zc=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Yc=/^0\d+$/;Mi=Symbol("quotedKey")});var de=S(()=>{"use strict";qi()});function Wn(e,t,n=Wi){let r=Math.max(0,Math.floor(e)),i=n in Hi?n:Wi,s=Hi[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:Vn(r,s),dollars_saved_low_usd:o==null?null:Vn(o,s),dollars_saved_high_usd:a==null?null:Vn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:_u}}function Vn(e,t){return Ru(Math.max(0,e)/1e6*t)}function ft(e){return`$${e.toFixed(6)}`}function Ru(e){return Math.round(e*1e6)/1e6}var Wi,Hi,_u,Hn=S(()=>{"use strict";Wi="gpt-5",Hi={"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},_u="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Eu,readFileSync as Ey}from"node:fs";import{dirname as ku,join as Su}from"node:path";function Ki(e,t){let n=e;for(let r=0;r<16;r++){let i=Su(n,t);if(Eu(i))return i;let s=ku(n);if(s===n)break;n=s}return null}function vu(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Kn(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 vu(u)}}var zi=S(()=>{});import{createConnection as Tu}from"node:net";async function Ke(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Tu(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
|
|
8
8
|
`)}),s.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
|
|
9
|
-
`);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(
|
|
10
|
-
`,{encoding:"utf8",mode:384}),await vu(r,e)}async function Yt(e,t=process.pid){try{let n=await mt(e);if(n&&n.pid!==t)return;await H(e,{force:!0})}catch{}}async function ft(e){let t=await mt(e.registryPath);if(!t)try{return await ts(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Ke(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await ne(t.socket_path,100);return n&&await Au(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function os(e){let t=await ft(e);return t.state==="registered-dead"||t.state==="invalid"?(await H(e.registryPath,{force:!0}),await ft(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await cs(t.entry.pid),await H(e.registryPath,{force:!0}),await H(t.entry.socket_path,{force:!0}),await ft(e)):t}async function zi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await ne(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 Du(e){await H(e,{force:!0})}async function as(e){await Vt(me(e),{recursive:!0,mode:448});try{return await Su(e,Yn.O_CREAT|Yn.O_EXCL|Yn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function $u(e,t){let[n,r]=us(t),i=es(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}async function Yi(e,t){try{let n=await mt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Ke(n.pid)){await H(e.registryPath,{force:!0});return}if(await ne(n.socket_path,100))return;if(ls(t.clientVersion,n.resident_version)&&(await Iu(n.pid,1500),!Ke(n.pid))){await H(e.registryPath,{force:!0});return}await cs(n.pid),await H(e.registryPath,{force:!0})}catch{}}function Ke(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function cs(e){if(!Ke(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Ke(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Iu(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function Au(e){if(!e.startsWith("file://"))return!1;try{return await Tu(ns(e)),!1}catch(t){return t.code==="ENOENT"}}function us(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Wt(process.argv[1]):ns(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Nu(e){let t=Eu("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=G(n,"red-skills",t);if(G(i,"rsp.sock").length<Pu)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return G(Ou(),`red-skills-${r}`,t)}function Bu(e){let t=Wt(e);for(let n=0;n<32;n++){try{let i=Qn(G(t,".git"));if(i!=null)return Lu(t,i)??t;if(Qn(G(t,".git","HEAD"))!=null||Qn(G(t,".red","config.yaml"))!=null)return t}catch{}let r=me(t);if(r===t)return null;t=r}return null}function Lu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Wt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?me(me(me(r))):null}function Qn(e){try{return ku(e,"utf8")}catch{return null}}async function Qi(e,t){let n=await is(e).catch(()=>null);return n?ls(t.clientVersion,n.version)?(await Cu(e,t.clientVersion),await Gu(e),!1):!0:!1}async function Cu(e,t){try{await He({socketPath:e,timeoutMs:200},{id:Zi(),op:"handover",clientVersion:t})}catch{}}function ls(e,t){return!e||!t?!1:Mu(e,t)>0}function Mu(e,t){let n=Xi(e),r=Xi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Xi(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 ds(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ju(e){return typeof e=="string"&&e.length>0?e:void 0}function Uu(e){return ds(e)&&e.version===rs&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function Gu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await ne(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Pu,rs,Qt=S(()=>{zn();Pu=108,rs=1});var hs={};D(hs,{DEFAULT_RSP_BYTE_BUDGET:()=>oe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ie,DEFAULT_RSP_IDLE_MS:()=>nn,DEFAULT_RSP_STORE_PATH:()=>Zt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ps,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>gs,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>se,MIN_RSP_IDLE_MS:()=>ys,resolveRspConfig:()=>ge});import{readFileSync as Fu}from"node:fs";import{join as fs,resolve as ms}from"node:path";function ge(e,t,n){let r=Hi(ms(e),fs(".red","config.yaml")),i=r?Fu(r,"utf8"):"",s=Kn(i,"rsp.enabled")==="true",o=pe(re(i,"rsp.ttlDays"),se),a=pe(re(i,"rsp.byteBudget"),oe),c=pe(re(i,"rsp.telemetryTtlDays"),en),u=pe(re(i,"rsp.telemetryByteBudget")??re(i,"rsp.byteBudget"),tn),l=pe(Xt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??re(i,"rsp.telemetryDrainIntervalMs"),ps),d=pe(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??re(i,"rsp.telemetryDrainTimeoutMs"),gs),m=Ju(Xt(t.RSP_IDLE_MS)??re(i,"rsp.idleMs"),nn,ys),b=pe(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??re(i,"rsp.heavyGitByteThreshold"),ie),_=te(e).rootDir,T=n??t.RSP_STORE_URI??`file://${fs(ms(_),Zt)}`;return{enabled:s,storeUri:T,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:b}}function re(e,t){let n=Kn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function pe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ju(e,t,n){let r=pe(e,t);return Math.max(r,n)}function Xt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ie,Zt,se,oe,en,tn,ps,gs,nn,ys,K=S(()=>{"use strict";Ki();Qt();ie=8*1024,Zt=".red/tmp/red-skills.rdb",se=7,oe=64*1024*1024,en=90,tn=4*1024*1024,ps=3e4,gs=2e3,nn=5*6e4,ys=5e3});var ws=S(()=>{"use strict";zn()});var gt={};D(gt,{ResidentRspElisionStore:()=>pt,ensureResidentServer:()=>Ht,kickResidentServer:()=>Kt,pingResident:()=>ne,readResidentRegistry:()=>mt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>ft,resolveResidentPaths:()=>te,sweepResidentRegistry:()=>os,warmResidentServer:()=>ss,writeResidentRegistry:()=>zt});import{randomUUID as qu}from"node:crypto";function bs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pt,$e=S(()=>{"use strict";ws();Qt();pt=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}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?bs(n)&&n.status==="expired"?n:!bs(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){this.opts.ensureResident!==!1&&await Ht(this.paths,this.config);let n=await He(this.paths,{...t,id:qu()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var nr={};D(nr,{RSP_WRAPPER_CAPABILITIES:()=>ht,formatCodexHookDecision:()=>Ts,formatHookDecision:()=>vs,hookDecisionFromClaudePreExecJson:()=>Es,hookDecisionFromCodexPreExecJson:()=>ks,rewriteCommand:()=>Rs,rewriteTableFromCapabilities:()=>_s,runClaudePreExecHook:()=>zu,runCodexPreExecHook:()=>Yu});import{readFileSync as rn}from"node:fs";import{existsSync as Vu}from"node:fs";import{fileURLToPath as Wu}from"node:url";function _s(e){let t=new Map;for(let n of e)t.set(yt(n.command),["rsp",...n.wrapper]);return t}function Rs(e){let t=rl(e);if(!t||t.length>0&&Os(t[0]))return Zn(e);let n=Ku(t);if(n)return n;let r=Hu.get(yt(t));if(!r)return Zn(e);let i=ht.find(s=>yt(s.command)===yt(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??yt(t)}}function Ku(e){let t=e[0];return t==="cat"&&e.length===2&&Xn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Xn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Xn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Xn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function Es(e,t){return await Ss(e,t)}async function ks(e,t){return await Ss(e,t)}async function Ss(e,t){let n=fl(e),r=F(n,["cwd"])||F(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Qu)(r))return{kind:"passthrough",reason:"disabled"};let s=nl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??Rs)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Xu)(r)?o:(await(t.wakeResident??Zu)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function vs(e){return e.kind==="rewrite"?{stdout:`${e.command}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
`);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(_){i(_)}}),s.end()}),s.on("error",l=>u(()=>i(l))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var zn=S(()=>{});import{createHash as xu,randomUUID as es}from"node:crypto";import{spawn as ts}from"node:child_process";import{constants as Yn}from"node:fs";import{readFileSync as Ou}from"node:fs";import{mkdir as Vt,open as Pu,readFile as ns,rename as Du,rm as H,stat as $u,writeFile as Iu}from"node:fs/promises";import{tmpdir as Au}from"node:os";import{dirname as fe,join as F,resolve as Wt}from"node:path";import{fileURLToPath as rs}from"node:url";function me(e){let t=qu(e)??Wt(e),n=Ju(t);return{rootDir:t,socketPath:F(n,"rsp.sock"),pidPath:F(n,"rsp.pid"),lockPath:F(n,"rsp.lock"),wakeLockPath:F(t,".red","tmp","rsp.wake.lock"),summaryPath:F(t,".red","tmp","rsp-status-summary.json"),registryPath:F(t,".red","tmp","rsp-resident.pid.json")}}async function Ht(e,t){if(await Vt(fe(e.socketPath),{recursive:!0,mode:448}),await Xi(e.socketPath,t))return;await Qi(e,t);let n=await cs(e.lockPath);if(n)try{if(await Xi(e.socketPath,t))return;await Qi(e,t),await Cu(e.socketPath);let r=Mu(e,t);await Yi(e.socketPath,r);return}finally{await n.close(),await H(e.lockPath,{force:!0})}await Yi(e.socketPath)}async function $e(e,t=200){try{return await ss(e,t)!=null}catch{return!1}}async function ss(e,t=200){let n=await Ke({socketPath:e,timeoutMs:t},{id:es(),op:"ping"});return n.ok?fs(n.value)?{version:Ku(n.value.version)}:{}:null}async function Kt(e,t){if(await Vt(fe(e.socketPath),{recursive:!0,mode:448}),await $e(e.socketPath,50))return!1;let n=await cs(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=ls(t);return ts(r,[...i,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function os(e,t){try{await Ht(e,t)}finally{await H(e.wakeLockPath,{force:!0})}}async function pt(e){try{let t=JSON.parse(await ns(e,"utf8"));return zu(t)?t:null}catch{return null}}async function zt(e,t){let n={version:is,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await Vt(fe(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Iu(r,`${JSON.stringify(n)}
|
|
10
|
+
`,{encoding:"utf8",mode:384}),await Du(r,e)}async function Yt(e,t=process.pid){try{let n=await pt(e);if(n&&n.pid!==t)return;await H(e,{force:!0})}catch{}}async function mt(e){let t=await pt(e.registryPath);if(!t)try{return await ns(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!ze(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await $e(t.socket_path,100);return n&&await Gu(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function as(e){let t=await mt(e);return t.state==="registered-dead"||t.state==="invalid"?(await H(e.registryPath,{force:!0}),await mt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await us(t.entry.pid),await H(e.registryPath,{force:!0}),await H(t.entry.socket_path,{force:!0}),await mt(e)):t}async function Yi(e,t){let n=Date.now()+Lu(),r;for(;Date.now()<n;){if(await $e(e))return;if(t){let i=t.spawnError();if(i)throw new Error(Qn("resident rsp server spawn failed",t,i));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Qn("resident rsp server exited before ready",t))}await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error(t?Qn("resident rsp server did not start",t):"resident rsp server did not start")}function Lu(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Bu}async function Cu(e){await H(e,{force:!0})}async function cs(e){await Vt(fe(e),{recursive:!0,mode:448});try{return await Pu(e,Yn.O_CREAT|Yn.O_EXCL|Yn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Mu(e,t){let[n,r]=ls(t),i=process.env.RSP_DEBUG==="1",s,o="",a=ts(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:i?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{s=c}),i&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Uu(`${o}${c}`,ju)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>s}}function Qn(e,t,n){let r=[e];n&&r.push(`error: ${n.message}`),t.child.exitCode!=null&&r.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&r.push(`signal: ${t.child.signalCode}`);let i=t.stderrTail().trimEnd();return i&&r.push(`stderr tail:
|
|
11
|
+
${i}`),r.join(`
|
|
12
|
+
`)}function Uu(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}async function Qi(e,t){try{let n=await pt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!ze(n.pid)){await H(e.registryPath,{force:!0});return}if(await $e(n.socket_path,100))return;if(ds(t.clientVersion,n.resident_version)&&(await Fu(n.pid,1500),!ze(n.pid))){await H(e.registryPath,{force:!0});return}await us(n.pid),await H(e.registryPath,{force:!0})}catch{}}function ze(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function us(e){if(!ze(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!ze(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Fu(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!ze(e))return;await new Promise(r=>setTimeout(r,50))}}async function Gu(e){if(!e.startsWith("file://"))return!1;try{return await $u(rs(e)),!1}catch(t){return t.code==="ENOENT"}}function ls(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Wt(process.argv[1]):rs(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Ju(e){let t=xu("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<Nu)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return F(Au(),`red-skills-${r}`,t)}function qu(e){let t=Wt(e);for(let n=0;n<32;n++){try{let i=Xn(F(t,".git"));if(i!=null)return Vu(t,i)??t;if(Xn(F(t,".git","HEAD"))!=null||Xn(F(t,".red","config.yaml"))!=null)return t}catch{}let r=fe(t);if(r===t)return null;t=r}return null}function Vu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Wt(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?fe(fe(fe(r))):null}function Xn(e){try{return Ou(e,"utf8")}catch{return null}}async function Xi(e,t){let n=await ss(e).catch(()=>null);return n?ds(t.clientVersion,n.version)?(await Wu(e,t.clientVersion),await Yu(e),!1):!0:!1}async function Wu(e,t){try{await Ke({socketPath:e,timeoutMs:200},{id:es(),op:"handover",clientVersion:t})}catch{}}function ds(e,t){return!e||!t?!1:Hu(e,t)>0}function Hu(e,t){let n=Zi(e),r=Zi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Zi(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 fs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ku(e){return typeof e=="string"&&e.length>0?e:void 0}function zu(e){return fs(e)&&e.version===is&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function Yu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await $e(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Nu,is,Bu,ju,Qt=S(()=>{zn();Nu=108,is=1,Bu=5e3;ju=8*1024});var ws={};D(ws,{DEFAULT_RSP_BYTE_BUDGET:()=>se,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>re,DEFAULT_RSP_IDLE_MS:()=>nn,DEFAULT_RSP_STORE_PATH:()=>Zt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>gs,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>ys,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>ie,MIN_RSP_IDLE_MS:()=>hs,resolveRspConfig:()=>ge});import{readFileSync as Qu}from"node:fs";import{join as ms,resolve as ps}from"node:path";function ge(e,t,n){let r=Ki(ps(e),ms(".red","config.yaml")),i=r?Qu(r,"utf8"):"",s=Kn(i,"rsp.enabled")==="true",o=pe(ne(i,"rsp.ttlDays"),ie),a=pe(ne(i,"rsp.byteBudget"),se),c=pe(ne(i,"rsp.telemetryTtlDays"),en),u=pe(ne(i,"rsp.telemetryByteBudget")??ne(i,"rsp.byteBudget"),tn),l=pe(Xt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ne(i,"rsp.telemetryDrainIntervalMs"),gs),d=pe(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ne(i,"rsp.telemetryDrainTimeoutMs"),ys),m=Xu(Xt(t.RSP_IDLE_MS)??ne(i,"rsp.idleMs"),nn,hs),_=pe(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ne(i,"rsp.heavyGitByteThreshold"),re),R=me(e).rootDir,T=n??t.RSP_STORE_URI??`file://${ms(ps(R),Zt)}`;return{enabled:s,storeUri:T,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:_}}function ne(e,t){let n=Kn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function pe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Xu(e,t,n){let r=pe(e,t);return Math.max(r,n)}function Xt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var re,Zt,ie,se,en,tn,gs,ys,nn,hs,K=S(()=>{"use strict";zi();Qt();re=8*1024,Zt=".red/tmp/red-skills.rdb",ie=7,se=64*1024*1024,en=90,tn=4*1024*1024,gs=3e4,ys=2e3,nn=5*6e4,hs=5e3});var bs=S(()=>{"use strict";zn()});var yt={};D(yt,{ResidentRspElisionStore:()=>gt,ensureResidentServer:()=>Ht,kickResidentServer:()=>Kt,pingResident:()=>$e,readResidentRegistry:()=>pt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>mt,resolveResidentPaths:()=>me,sweepResidentRegistry:()=>as,warmResidentServer:()=>os,writeResidentRegistry:()=>zt});import{randomUUID as Zu}from"node:crypto";function _s(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var gt,Ie=S(()=>{"use strict";bs();Qt();gt=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}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?_s(n)&&n.status==="expired"?n:!_s(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){this.opts.ensureResident!==!1&&await Ht(this.paths,this.config);let n=await Ke(this.paths,{...t,id:Zu()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var rr={};D(rr,{RSP_WRAPPER_CAPABILITIES:()=>wt,formatCodexHookDecision:()=>xs,formatHookDecision:()=>Ts,hookDecisionFromClaudePreExecJson:()=>ks,hookDecisionFromCodexPreExecJson:()=>Ss,rewriteCommand:()=>Es,rewriteTableFromCapabilities:()=>Rs,runClaudePreExecHook:()=>il,runCodexPreExecHook:()=>sl});import{readFileSync as rn}from"node:fs";import{existsSync as el}from"node:fs";import{fileURLToPath as tl}from"node:url";function Rs(e){let t=new Map;for(let n of e)t.set(ht(n.command),["rsp",...n.wrapper]);return t}function Es(e){let t=ml(e);if(!t||t.length>0&&As(t[0]))return er(e);let n=rl(t);if(n)return n;let r=nl.get(ht(t));if(!r)return er(e);let i=wt.find(s=>ht(s.command)===ht(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??ht(t)}}function rl(e){let t=e[0];return t==="cat"&&e.length===2&&Zn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Zn(e[1])?{kind:"rewrite",command:`rsp cat --${t} 10 ${e[1]}`,capabilityId:`cat:${t}`}:(t==="head"||t==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Zn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Zn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function ks(e,t){return await vs(e,t)}async function Ss(e,t){return await vs(e,t)}async function vs(e,t){let n=El(e);if(!n.ok)return{kind:"passthrough",reason:n.reason};let r=n.payload,i=G(r,["cwd"])||G(r,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ol)(i))return{kind:"passthrough",reason:"disabled"};let o=fl(r);if(!o)return{kind:"passthrough",reason:"missing-command"};let a=(t.rewrite??Es)(o);return a.kind!=="rewrite"?a.reason?a:{...a,reason:"unsupported-command"}:(await cl(i,t.wakeResident??al),a)}function Ts(e){return e.kind==="rewrite"?Os(e.command):{stdout:"",status:0}}function xs(e){return e.kind==="rewrite"?Os(e.command):{stdout:"",status:0}}function Os(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
13
|
+
`,status:0}}async function il(e){try{let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await ks(t,{cwd:process.cwd()});Ps("claude-pre-exec",n);let r=Ts(n);return r.stdout&&process.stdout.write(r.stdout),r.status}catch(t){return Ds("claude-pre-exec",t),0}}async function sl(e){try{let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await Ss(t,{cwd:process.cwd()});Ps("codex-pre-exec",n);let r=xs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}catch(t){return Ds("codex-pre-exec",t),0}}function ol(e){return ge(e,process.env).enabled}async function al(e){let t=ge(e,process.env);if(!t.enabled||!dl(t))return;let n=me(e);await Kt(n,ll(t))}async function cl(e,t){try{await Promise.resolve(t(e))}catch(n){ul(n)}}function Ps(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
14
|
+
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
15
|
+
`)}}function Ds(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${$s(t)}
|
|
16
|
+
`)}function ul(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${$s(e)}
|
|
17
|
+
`)}function $s(e){return e instanceof Error?e.name||"Error":typeof e}function ll(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function dl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return el(tl(e.storeUri))}catch{return!1}}function fl(e){return G(e,["tool_input","command"])||G(e,["tool_input","cmd"])||G(e,["tool_input","args","command"])||G(e,["input","command"])||G(e,["input","cmd"])||G(e,["arguments","command"])||G(e,["arguments","cmd"])||G(e,["command"])||G(e,["cmd"])}function ml(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&As(r))?null:n}function er(e){let t=e.trim();return pl(t)?{kind:"rewrite",command:`rsp exec -- ${Rl(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function pl(e){return!(!e||!yl(e)||!wl(e)||hl(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||bl(e,"rsp")||Is(e,gl)||_l(e))}function yl(e){return/&&|[;|]/.test(e)}function hl(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function wl(e){return tr(e).some(t=>{let n=nr(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 Is(e,t){return tr(e).some(n=>{let r=nr(n)[0];return r?t.has(r):!1})}function bl(e,t){return Is(e,new Set([t]))}function _l(e){return tr(e).some(t=>{let n=nr(t);return n[0]==="grep"&&n.includes("-q")})}function tr(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function nr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Rl(e){return`'${e.replace(/'/g,"'\\''")}'`}function As(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ht(e){return e.join("\0")}function El(e){try{let t=JSON.parse(e);return Ns(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function G(e,t){let n=e;for(let r of t){if(!Ns(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ns(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wt,nl,gl,sn=S(()=>{"use strict";K();Ie();wt=[{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"]}],nl=Rs(wt);gl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var sr={};D(sr,{NORMALIZATION_ALLOWLIST:()=>Js,NORMALIZE_ANSI:()=>Cs,NORMALIZE_BLANK_LINES:()=>Us,NORMALIZE_CR_PROGRESS:()=>Ms,NORMALIZE_JSON_TOON:()=>Gs,NORMALIZE_TRAILING_WHITESPACE:()=>js,formatCodexNormalizeDecision:()=>Ks,formatNormalizeDecision:()=>Hs,hookDecisionFromClaudePostExecJson:()=>qs,hookDecisionFromCodexPostExecJson:()=>Vs,normalizeOutput:()=>Ye,renderGenericJsonLane:()=>bt,runClaudePostExecHook:()=>vl,runCodexPostExecHook:()=>Tl,transcodeJsonToToon:()=>Fs});import{readFileSync as on}from"node:fs";function Fs(e,t){let n=t?.encode??P,r=t?.decode??qn,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 ir(s,a)?o:e}async function bt(e,t={}){let n=Dl(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:P(r),detected:!0,lossy:!1};let i=r.length,s=Ls(t.minTokens,kl),o=Ls(t.maxItems,Sl);if(!(i>o&&Bl(e)>=s))return{output:P(r),detected:!0,lossy:!1,totalItems:i,keptItems:i};let c=$l(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,P(u)].filter(Boolean).join(`
|
|
18
|
+
`),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function Ye(e){let t=e;for(let n of Js)t=n.apply(t);return t}async function qs(e,t){return await Ws(e,t)}async function Vs(e,t){return await Ws(e,t)}async function Ws(e,t){let n=Pl(e),r=Ll(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Ol)(r))return{kind:"passthrough",reason:"disabled"};let s=Cl(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??Ye)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Hs(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Ks(e){return{stdout:"",status:0}}async function vl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await qs(t,{cwd:process.cwd()}),r=Hs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Tl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await Vs(t,{cwd:process.cwd()}),r=Ks(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function xl(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&&Bs(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Bs(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Bs(e){return e>=32&&e<=63}function Ol(e){return ge(e,process.env).enabled}function Pl(e){try{let t=JSON.parse(e);return ye(t)?t:{}}catch{return{}}}function Dl(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return ye(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function $l(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let s=0;s<r;s++)n.add(s),n.add(e.length-1-s);for(let s=0;s<e.length;s++)Il(e[s])&&n.add(s);for(let s of Al(e))n.add(s);for(let s of Nl(e))n.add(s);let i=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let s=0;n.size<t&&s<i;s++)for(let o=s;n.size<t&&o<e.length;o+=i)n.add(o);return[...n].sort((s,o)=>s-o).slice(0,t).map(s=>e[s])}function Il(e){if(!ye(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function Al(e){let t=new Map;e.forEach((r,i)=>{if(ye(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 Nl(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(!(!ye(r)||!ye(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 Bl(e){return Math.ceil(e.length/4)}function Ls(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Ll(e,t){let n=e;for(let r of t){if(!ye(n))return"";n=n[r]}return typeof n=="string"?n:""}function Cl(e,t){let n=e[t];return ye(n)?n:null}function ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ir(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)=>ir(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)&&ir(n[o],r[o]))}var Cs,Ms,js,Us,Gs,kl,Sl,Js,_t=S(()=>{"use strict";de();K();Cs={id:"ansi",apply:xl},Ms={id:"cr-progress",apply:e=>e.split(`
|
|
14
19
|
`).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(`
|
|
15
|
-
`)},
|
|
20
|
+
`)},js={id:"trailing-whitespace",apply:e=>e.split(`
|
|
16
21
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
17
|
-
`)},
|
|
22
|
+
`)},Us={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
18
23
|
|
|
19
|
-
`)};
|
|
24
|
+
`)};Gs={id:"json-to-toon",apply:e=>Fs(e)},kl=200,Sl=15;Js=[Cs,Ms,js,Us,Gs]});async function zs(e,t){return Ml?Fl(e,t):jl?Jl(e,t):Ul(e,t)}async function Ul(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 Fl(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:Gl(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Gl(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Jl(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:ql(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*ql(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Ml,jl,Ys=S(()=>{Ml=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",jl=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Vl}from"node:fs";import{join as Wl}from"node:path";function Qs(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=Wl(n,"bin",t);if(Vl(s))return s;throw new Error(`reddb: binary "${t}" not found.
|
|
20
25
|
expected at: ${s}
|
|
21
26
|
override: set ${r}=/path/to/${t}
|
|
22
27
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
23
|
-
or check the postinstall log for a download error.`)}var
|
|
24
|
-
`)).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(
|
|
28
|
+
or check the postinstall log for a download error.`)}var Xs=S(()=>{});import{fileURLToPath as Hl}from"node:url";import{dirname as Kl,resolve as zl,join as oh}from"node:path";function Xl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Zs(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Qs({name:Xl(),packageRoot:Ql,envVar:"REDDB_BIN"})}var Yl,Ql,eo=S(()=>{Xs();Yl=Kl(Hl(import.meta.url)),Ql=zl(Yl,"..")});var Zl,ed,h,an,he=S(()=>{Zl=new TextEncoder,ed=new TextDecoder("utf-8"),h=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},an=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new h("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Zl.encode(i+`
|
|
29
|
+
`)).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(ed.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new h(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new h("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function ar(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:/"?td(e):nd(e)}function td(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(l){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=rd(i),a=n.port?Number(n.port):or(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 nd(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):or(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):or(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new h("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function rd(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new h("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function or(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 cr=S(()=>{he()});function sd(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return to(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return to(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function to(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 od(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 id,Rt,ur=S(()=>{he();id=new Set(["embedded"]),Rt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&id.has(this._transport))throw new h("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:od(r.value)}async put(t,n,r,i={}){this._guard("put");let s=sd(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 lr(e,t){return`${dr(e)}.${ad(t)}`}function dr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new h("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function ad(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function cd(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 no(e){return`'${String(e).replace(/'/g,"''")}'`}var Qe,fr=S(()=>{he();Qe=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(no).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${lr(i,t)} = ${cd(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 ${lr(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 ${lr(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new h("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${dr(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(no).join(", ")}] FROM ${dr(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new h("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new h("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
|
|
25
30
|
|
|
26
31
|
`)){let l=u.split(`
|
|
27
|
-
`).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Zl(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ae(e),a=ae(t),c=i!=null?` GROUP ${ae(i)}`:"",u=s!=null?mr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ae(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function mr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ed(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function td(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new h("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ed(e.priority)}`),e.key!=null&&(t+=` KEY ${pr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${pr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function nd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?pr(e):JSON.stringify(e)}function pr(e){return`'${String(e).replace(/'/g,"''")}'`}function fr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Rt,gr=S(()=>{he();Rt=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ae(t)}`})}push(t,n,r={}){let i=td(r);return this.client.call("query",{sql:`QUEUE PUSH ${ae(t)} ${nd(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ae(t)}${mr(n)}`});return fr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ae(t)}${mr(n)}`});return fr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ae(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ae(t)}`})}async readWait(t,n,r={}){let i=Zl(t,n,r),s=await this.client.call("query",{sql:i});return fr(s)}}});function Xs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function rd(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(Zs).join(".")}function Zs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function id(e){return eo(JSON.stringify(e))}function sd(e){return JSON.stringify(e)}function od(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?id(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var Et,yr=S(()=>{he();Et=class{constructor(t){this.db=t}async insert(t,n){Xs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${sd(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new h("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=rd(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 ${cn(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Xs(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Zs(c)} = ${od(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${cn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function ad(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${we(n)}.${we(r)})`}return ud(e)}function cd(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function we(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function ud(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):to(e)}function to(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,hr=S(()=>{kt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){cd(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(to).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${we(i)} ${we(t)} = ${ad(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${we(r)} ${we(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${we(r)} ${we(t)}`})}}});function ld(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Qe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function dd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):no(e)}function no(e){return`'${String(e).replace(/'/g,"''")}'`}var St,wr=S(()=>{St=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ld(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(no).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Qe(i)}.${Qe(t)} = ${dd(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Qe(r)}.${Qe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Qe(r)}.${Qe(t)}`})}}});async function io(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fd)}async function so(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${pd(t)}`)).rows??[]).some(r=>r.name===String(t))}function fd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ro(e){return String(e).split(".").map(md).join(".")}function md(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function pd(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,br=S(()=>{he();vt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new h("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(ro).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ro(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 uo(e,t={}){let n=or(e);if(Sd(n),n.kind==="embedded"){let r=kd(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Ed(n),s=t.binary??Ks(),o=await qs(s,i),a=new an(o);return await a.call("version",{}),new Rr(a,{transport:"embedded"})}}function ao(e){return hd(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:bd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Rd(e)?{$uuid:e}:e}function hd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new h("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function wd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ao):e.map(ao)}function bd(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 _d(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 Rd(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return _d(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]=un(i);return n}return e}function Ed(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function kd(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 Sd(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",gd)}function Er(){return new h(oo,`${oo}: nested transactions are not supported on one connection`)}function lo(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${co} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Td(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${co} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var gd,yd,co,oo,ln,_r,Rr,fo=S(()=>{Vs();zs();he();ar();cr();dr();gr();yr();hr();wr();br();cr();dr();gr();yr();hr();wr();br();ar();gd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yd="1.0",co="1.0.9",oo="NESTED_TX_NOT_SUPPORTED";ln=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 Er()}},_r=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Er();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new ln(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){lo(n,r)}throw n}}},Rr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=yd,this.cache=new _t(t,this.transport),this.queue=new Rt(t),this.queues=this.queue,this.documents=new Et(this);let r=new Ye(t);this.kv=Object.assign((i="kv_default")=>new Ye(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 kt(t,i),this.vault=(i="red.vault")=>new St(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=wd(n);return r==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:r}).then(un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return vd(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 Td(r,n.length)}tx(){return new _r(this)}async transaction(t){if(this.inTransaction)throw Er();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 ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){lo(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return so(this,t)}list(){return io(this)}from(t){return new vt(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 xr={};D(xr,{DEFAULT_RSP_BYTE_BUDGET:()=>oe,DEFAULT_RSP_TTL_DAYS:()=>se,RSP_ELISION_COLLECTION:()=>L,RspElisionStore:()=>Tt});import{createHash as yo}from"node:crypto";import{existsSync as xd}from"node:fs";import{mkdir as Od,readFile as vr,readdir as ho,rename as Pd,writeFile as Dd}from"node:fs/promises";import{homedir as $d}from"node:os";import{basename as Tr,dirname as wo,join as Xe}from"node:path";import{fileURLToPath as Id}from"node:url";function mo(e,t){return`el:${yo("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 ce(e){return`record:${e.slice(3)}`}function Ie(e){return`expired:${e.slice(3)}`}function kr(){return"index:v1"}function xt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ad(e){if(!et(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:et(e.scope)?e.scope:void 0,ranking:et(e.ranking)?e.ranking:void 0}}}function Nd(e){if(!et(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 et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bd(e){return et(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:dn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:dn(e.value)}:Ze(e)?{key:ce(e.handle),value:e}:fn(e)&&typeof e.handle=="string"&&xt(e.handle)?{key:Ie(e.handle),value:e}:null:null}function dn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Ld(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 ho(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Xe(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 Cd(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=et(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 po(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ze(e){return be(e)?e.collection===L&&typeof e.handle=="string"&&xt(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"&&Md(e.loss):!1}function Sr(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>be(t)&&typeof t.handle=="string"&&xt(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 fn(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Md(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function jd(e){try{let t=await vr(e,"utf8");if(t.trim()==="")return go();let n=JSON.parse(t);if(qd(n))return n}catch(t){if(t.code==="ENOENT"){let n=go();return await _o(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Ud(e){try{let t=await vr(e);return bo(e)?e:Gd(t)?Fd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Gd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Fd(e){return Tr(e)==="red.rdb"?Xe(wo(e),"tmp","rsp-elisions.json"):`${e}.json`}function bo(e){return Tr(e)==="red-skills.rdb"}async function Jd(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Xe(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Xe($d(),".cache","red-skills","bundles")),t=Xe(e,"reddb"),n;try{n=await ho(t)}catch{return}n.sort().reverse();for(let r of n){let i=Xe(t,r,process.platform==="win32"?"red.exe":"red");if(xd(i)){process.env.REDDB_BIN=i;return}}}async function _o(e,t){await Od(wo(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Dd(n,`${JSON.stringify(t)}
|
|
28
|
-
`,"utf8"),await
|
|
29
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(
|
|
30
|
-
`),i
|
|
32
|
+
`).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function ud(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=oe(e),a=oe(t),c=i!=null?` GROUP ${oe(i)}`:"",u=s!=null?pr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function oe(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function pr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ld(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function dd(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new h("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ld(e.priority)}`),e.key!=null&&(t+=` KEY ${gr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${gr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function fd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?gr(e):JSON.stringify(e)}function gr(e){return`'${String(e).replace(/'/g,"''")}'`}function mr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Et,yr=S(()=>{he();Et=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${oe(t)}`})}push(t,n,r={}){let i=dd(r);return this.client.call("query",{sql:`QUEUE PUSH ${oe(t)} ${fd(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${oe(t)}${pr(n)}`});return mr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${oe(t)}${pr(n)}`});return mr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${oe(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${oe(t)}`})}async readWait(t,n,r={}){let i=ud(t,n,r),s=await this.client.call("query",{sql:i});return mr(s)}}});function ro(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function md(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(io).join(".")}function io(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function pd(e){return so(JSON.stringify(e))}function gd(e){return JSON.stringify(e)}function yd(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?pd(e):so(e)}function so(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,hr=S(()=>{he();kt=class{constructor(t){this.db=t}async insert(t,n){ro(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${gd(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new h("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=md(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 ${cn(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){ro(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${io(c)} = ${yd(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${cn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function hd(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${we(n)}.${we(r)})`}return bd(e)}function wd(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function we(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function bd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):oo(e)}function oo(e){return`'${String(e).replace(/'/g,"''")}'`}var St,wr=S(()=>{St=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){wd(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(oo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${we(i)} ${we(t)} = ${hd(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${we(r)} ${we(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${we(r)} ${we(t)}`})}}});function _d(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Xe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function Rd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):ao(e)}function ao(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,br=S(()=>{vt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){_d(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(ao).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Xe(i)}.${Xe(t)} = ${Rd(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Xe(r)}.${Xe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Xe(r)}.${Xe(t)}`})}}});async function uo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Ed)}async function lo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Sd(t)}`)).rows??[]).some(r=>r.name===String(t))}function Ed(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function co(e){return String(e).split(".").map(kd).join(".")}function kd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Sd(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,_r=S(()=>{he();Tt=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new h("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(co).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${co(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 go(e,t={}){let n=ar(e);if(Nd(n),n.kind==="embedded"){let r=Ad(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Id(n),s=t.binary??Zs(),o=await zs(s,i),a=new an(o);return await a.call("version",{}),new Er(a,{transport:"embedded"})}}function mo(e){return xd(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:Pd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&$d(e)?{$uuid:e}:e}function xd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new h("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Od(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(mo):e.map(mo)}function Pd(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 Dd(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 $d(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Dd(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]=un(i);return n}return e}function Id(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ad(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 Nd(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",vd)}function kr(){return new h(fo,`${fo}: nested transactions are not supported on one connection`)}function yo(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Bd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${po} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Ld(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${po} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var vd,Td,po,fo,ln,Rr,Er,ho=S(()=>{Ys();eo();he();cr();ur();fr();yr();hr();wr();br();_r();ur();fr();yr();hr();wr();br();_r();cr();vd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Td="1.0",po="1.0.9",fo="NESTED_TX_NOT_SUPPORTED";ln=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 kr()}},Rr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw kr();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new h("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new ln(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){yo(n,r)}throw n}}},Er=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Td,this.cache=new Rt(t,this.transport),this.queue=new Et(t),this.queues=this.queue,this.documents=new kt(this);let r=new Qe(t);this.kv=Object.assign((i="kv_default")=>new Qe(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new St(t,i),this.vault=(i="red.vault")=>new vt(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Od(n);return r==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:r}).then(un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Bd(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 Ld(r,n.length)}tx(){return new Rr(this)}async transaction(t){if(this.inTransaction)throw kr();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 ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){yo(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return lo(this,t)}list(){return uo(this)}from(t){return new Tt(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={};D(Or,{DEFAULT_RSP_BYTE_BUDGET:()=>se,DEFAULT_RSP_TTL_DAYS:()=>ie,RSP_ELISION_COLLECTION:()=>L,RspElisionStore:()=>xt});import{createHash as Ro}from"node:crypto";import{existsSync as Cd}from"node:fs";import{mkdir as Md,readFile as Tr,readdir as Eo,rename as jd,writeFile as Ud}from"node:fs/promises";import{homedir as Fd}from"node:os";import{basename as xr,dirname as ko,join as Ze}from"node:path";import{fileURLToPath as Gd}from"node:url";function wo(e,t){return`el:${Ro("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 ae(e){return`record:${e.slice(3)}`}function Ae(e){return`expired:${e.slice(3)}`}function Sr(){return"index:v1"}function Ot(e){return/^el:[a-f0-9]{12}$/.test(e)}function Jd(e){if(!tt(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:tt(e.scope)?e.scope:void 0,ranking:tt(e.ranking)?e.ranking:void 0}}}function qd(e){if(!tt(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vd(e){return tt(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:dn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:dn(e.value)}:et(e)?{key:ae(e.handle),value:e}:fn(e)&&typeof e.handle=="string"&&Ot(e.handle)?{key:Ae(e.handle),value:e}:null:null}function dn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Wd(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 Eo(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let u=Ze(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 Hd(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=tt(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),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 bo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function et(e){return be(e)?e.collection===L&&typeof e.handle=="string"&&Ot(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"&&Kd(e.loss):!1}function vr(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>be(t)&&typeof t.handle=="string"&&Ot(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 fn(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Kd(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function zd(e){try{let t=await Tr(e,"utf8");if(t.trim()==="")return _o();let n=JSON.parse(t);if(ef(n))return n}catch(t){if(t.code==="ENOENT"){let n=_o();return await vo(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Yd(e){try{let t=await Tr(e);return So(e)?e:Qd(t)?Xd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Qd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Xd(e){return xr(e)==="red.rdb"?Ze(ko(e),"tmp","rsp-elisions.json"):`${e}.json`}function So(e){return xr(e)==="red-skills.rdb"}async function Zd(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ze(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ze(Fd(),".cache","red-skills","bundles")),t=Ze(e,"reddb"),n;try{n=await Eo(t)}catch{return}n.sort().reverse();for(let r of n){let i=Ze(t,r,process.platform==="win32"?"red.exe":"red");if(Cd(i)){process.env.REDDB_BIN=i;return}}}async function vo(e,t){await Md(ko(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Ud(n,`${JSON.stringify(t)}
|
|
33
|
+
`,"utf8"),await jd(n,e)}function _o(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function ef(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(et)&&be(e.tombstones)&&Object.values(e.tombstones).every(fn)&&vr(e.index)}function tf(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Gd(e)}var L,xt,mn=S(()=>{"use strict";ho();K();L="rsp_elisions_v1",xt=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;dirty=!1;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=tf(t.uri),r=await Yd(n),i=new e(r,{uri:t.uri,ttlDays:bo(t.ttlDays,ie),byteBudget:bo(t.byteBudget,se),now:t.now??(()=>new Date)});return So(r)?(await Zd(),i.db=await go(`file://${r}`),await i.ensureRedDbCollections(),await i.ensureRedDbStore()):i.document=await zd(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=wo(r,n),c=ae(a),u={collection:L,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};return delete this.document.tombstones[Ae(a)],this.document.records[c]=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(!Ot(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[ae(t)];if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:ae(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:L,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}),this.dirty=!0}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)}i.length<r.records.length&&this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ae(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ae(t)];return fn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){this.dirty&&(await vo(this.path,this.document),this.dirty=!1)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(L)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===L);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${L}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${L}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${L}`),await this.db.query(`CREATE KV IF NOT EXISTS ${L}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${L}`),n=[];for(let r of t.rows){let i=Vd(r);i&&n.push(i)}return n}async ensureMigratedRedDbIndex(t){if(t.some(i=>i.key===Sr()&&vr(dn(i.value))))return;let r=t.map(i=>{let s=dn(i.value);return et(s)?{handle:s.handle,key:ae(s.handle),bytes:s.original_bytes,command:s.command,created_at:s.created_at,expires_at:s.expires_at}:null}).filter(i=>i!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=wo(r,n),c=ae(a),u={collection:L,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.kv().delete(Ae(a)),await this.kv().put(c,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},!0),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!Ot(t))return null;let n=await this.kvGet(Ae(t));if(fn(n))return n;let r=await this.kvGet(ae(t));if(!et(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:ae(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:L,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=Jd(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=qd(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 Wd(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await Tr(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=xr(i),c=Ro("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=>Hd(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(`
|
|
34
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Sr());return vr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Sr(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),i=new Date(r).toISOString(),s=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):s.push(c);let o=s.reduce((c,u)=>c+u.bytes,0);for(s.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&s.length>0;){let c=s.shift();o-=c.bytes,await this.expireRedDbEntry(c,i)}let a={version:1,records:s};return(n||s.length<t.records.length)&&await this.writeRedDbIndex(a),a}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ae(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(ae(t));if(!et(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let s=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!s||s.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Ao={};D(Ao,{REPO_STORE_PATH:()=>Dr,mergeRspBlock:()=>Do,provisionRspRepoStore:()=>lf});import{constants as nf}from"node:fs";import{access as rf,copyFile as sf,mkdir as To,readFile as of,writeFile as xo}from"node:fs/promises";import{dirname as af,join as pn,resolve as cf}from"node:path";async function lf(e,t={}){let n=cf(e),r=pn(n,".red"),i=pn(r,"config.yaml"),s=pn(n,Dr);await To(r,{recursive:!0}),await To(af(s),{recursive:!0});let o="";try{o=await of(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Do(o,{enabled:!0,ttlDays:t.ttlDays??ie,byteBudget:t.byteBudget??se,heavyGitByteThreshold:t.heavyGitByteThreshold??re}),c=a!==o;c&&await xo(i,a,"utf8");let u=!await Po(s),l=!1;if(u){let m=pn(n,uf);if(await Po(m))await sf(m,s),l=!0;else{let{RspElisionStore:_}=await Promise.resolve().then(()=>(mn(),Or)),R=process.env.REDDB_BIN;try{await(await _.open({uri:`file://${s}`,ttlDays:t.ttlDays??ie,byteBudget:t.byteBudget??se,allowResidentOpen:!0})).close()}finally{R===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=R}}}let d=df(a,Dr);return d!==a&&await xo(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function Do(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Pr(t.ttlDays,ie)}`,` byteBudget: ${Pr(t.byteBudget,se)}`,` heavyGitByteThreshold: ${Pr(t.heavyGitByteThreshold,re)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
35
|
+
`),i=$o(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
|
|
31
36
|
`)}
|
|
32
|
-
`}let s
|
|
37
|
+
`}let s=$r(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
|
|
33
38
|
`)}
|
|
34
|
-
`}function
|
|
35
|
-
`),r
|
|
39
|
+
`}function $o(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Ar(r)&&Ir(r)===0&&Io(r)===t)return n}return-1}function $r(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Ar(e[i])&&Ir(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Ir(e){return(e.match(/^ */)?.[0]??"").length}function Ar(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Io(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Pr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function df(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
40
|
+
`),r=$o(n,"plugins");if(r===-1)return e;let i=$r(n,r,0),s=Oo(n,"memory",r+1,i,2);if(s===-1)return e;let o=$r(n,s,2),a=[...n],c=Oo(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
|
|
36
41
|
`)}
|
|
37
|
-
`}function
|
|
42
|
+
`}function Oo(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Ar(o)&&Ir(o)===i&&Io(o)===t)return s}return-1}async function Po(e){try{return await rf(e,nf.F_OK),!0}catch{return!1}}var Dr,uf,No=S(()=>{"use strict";K();Dr=Zt,uf=".red/memory/graph.rdb"});var Uo={};D(Uo,{runRspMcpServer:()=>mf});import{createInterface as ff}from"node:readline";async function mf(){let e=ge(process.cwd(),process.env),t=ff({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 pf(r,e);Mo({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Mo({jsonrpc:"2.0",id:typeof jo(n)?.id>"u"?null:jo(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function pf(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp elision store stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Co(t)}]};if(!t.enabled)return{content:[{type:"text",text:Co(t)}],isError:!0};let r=_f(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await gf(n.arguments,r)}]}}return{}}async function gf(e,t){let n=yf(e?.payload),r=hf(e?.level),i=await bt(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return Bo(i.output);let s=Ye(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return Bo(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return wf(s,o.length,a,r)}function yf(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function hf(e){return e==="terse"?"terse":"brief"}function wf(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=Lo(s.subarray(0,o)),c=Lo(s.subarray(Math.max(0,s.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${bf(s)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
|
|
38
43
|
`)}
|
|
39
|
-
`}function
|
|
44
|
+
`}function Bo(e){return e.endsWith(`
|
|
40
45
|
`)?e:`${e}
|
|
41
|
-
`}function
|
|
42
|
-
`)}function
|
|
43
|
-
`),0;if(!
|
|
44
|
-
`),await
|
|
45
|
-
`)}function
|
|
46
|
-
`)}function
|
|
47
|
-
`)}function hn(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(wn),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(wn)),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=>qo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of jf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Gf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${qo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function jf(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 Uf(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!wn(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function wn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function qo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Gf(e){return e.replace(/'/g,"'\\''")}function Ff(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Wo=S(()=>{"use strict";sn()});function Ur(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"&&Jf(t.chosenOption)&&qf(t.outcome)&&Vf(t.cost)}function Jf(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function qf(e){return e==="success"||e==="failure"||e==="escalated"}function Vf(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 Ho=S(()=>{});import{createHash as Wf}from"node:crypto";function sa(e,t){return new Fr(e,t)}function Ko(e){let t=Number(e.red_entity_id??e.rid),n=Jr(e.properties??e.PROPERTIES),r=oa(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 zo(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=aa(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:Jr(e.properties??e.PROPERTIES)}}function zf(e){let t=Number(e.red_entity_id??e.rid),n=Jr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ur(n)?null:{rid:t,event:n}}function Jr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function oa(e){let t=e==="contact"?"person":e;if(Hf.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function aa(e){if(Kf.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Yf(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Yo(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ne(e){return bn(e)?e:{}}function Qo(e,t){return Ne(e)[t]}function Xo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Zo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function ea(e){let t=Ne(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function A(e){return typeof e=="string"&&e.length>0?e:void 0}function bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gr(e){return e!=null}function Qf(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Xf(e){return Wf("sha256").update(JSON.stringify(e)).digest("hex")}function Zf(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ta(e){return`artifact-hash:${e}`}function na(e,t,n){return`connection:${e}:${t}:${n}`}function ra(){return"model-tier-bandit:v1"}function em(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ia(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function ca(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+ia(n,a)*3+ia(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 tm(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=ua({...ca(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ae(i)}function ua(e){return{...e,lexical:Ae(e.lexical),tags:Ae(e.tags),kind:Ae(e.kind),connections:Ae(e.connections),vector:Ae(e.vector),total:Ae(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ae(e){return Math.round(e*1e3)/1e3}function nm(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 rm(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 im(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var z,Hf,Kf,Fr,la=S(()=>{"use strict";Ho();z={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Hf=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Kf=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fr=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(Ne(n));if(t==="getArtifact")return await this.getArtifact(Qo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ne(n);return await this.search(Xo(r,"query"),Zo(r,"limit")??10,ea(r.options))}if(t==="think"){let r=Ne(n);return await this.think(Xo(r,"query"),Zo(r,"limit")??8,ea(r.options))}if(t==="link")return await this.link(Ne(n));if(t==="backlinks")return await this.backlinks(Qo(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ne(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:im(t.map(r=>r.kind))}}async capture(t){let n=A(t.title)||"Untitled artifact",r=A(t.content);if(!r)throw new Error("brain capture requires content");let i=oa(A(t.kind)||"note"),s=Qf(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Xf([i,n,r,s,A(t.sourcePath),A(t.sourceSession)]),c=await this.kv().get(ta(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let u=`${Zf(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:A(t.sourceAgent),source_runner:A(t.sourceRunner),source_session:A(t.sourceSession),source_path:A(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:bn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${z.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let b=Ko(m);if(!b)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ta(a),b.rid),await this.materializeTagConnections(b),b}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${z.artifacts}`)).rows.map(Ko).filter(Gr)}async search(t,n,r={}){let i=em(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=ca(u,i),d=ua({...l,connections:tm(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:nm(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 rm(t,i)}async link(t){let n=await this.getArtifact(Yo(t.from)),r=await this.getArtifact(Yo(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=aa(A(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let l=(await this.listConnections()).find(d=>d.rid===s);if(l)return l}let o={reason:A(t.reason),confidence:A(t.confidence)||"explicit",created_at:Date.now(),metadata:bn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${z.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=zo(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(na(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 ${z.connections}`)).rows.map(zo).filter(Gr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=Yf(A(t.interval)||"day"),i=A(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Ur(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${z.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${z.outcomeEvents}`)).rows.map(zf).filter(Gr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ra());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ra(),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(na(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(z.kv)}}});var zr={};D(zr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_INDEX_COLLECTION:()=>It,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Re,RSP_TELEMETRY_SPOOL:()=>wa,appendTelemetryEvent:()=>fm,drainTelemetrySpool:()=>Wr,parseTelemetryEvent:()=>Hr,readTelemetryGainsReport:()=>Kr,readTelemetryStats:()=>Sn,takeTelemetrySpool:()=>pm,telemetrySpoolPath:()=>kn});import{appendFileSync as sm,mkdirSync as om,readFileSync as am}from"node:fs";import{mkdir as ga,readdir as cm,readFile as um,rename as ya,rm as ha,writeFile as qr}from"node:fs/promises";import{basename as lm,dirname as En,join as Vr}from"node:path";function kn(e){return Vr(e,wa)}async function fm(e,t){try{let n=kn(e);om(En(n),{recursive:!0}),sm(n,`${JSON.stringify(mm(t))}
|
|
48
|
-
`,{encoding:"utf8",mode:384})}catch{}}function
|
|
46
|
+
`}function Lo(e){return e.toString("utf8").replace(/�$/g,"")}function bf(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 _f(e){return new gt(me(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 Co(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Mo(e){process.stdout.write(`${JSON.stringify(e)}
|
|
47
|
+
`)}function jo(e){try{return JSON.parse(e)}catch{return null}}var Fo=S(()=>{"use strict";K();_t();Ie()});var Ho={};D(Ho,{renderWaitHelp:()=>Cr,runWait:()=>Tf});import{spawn as jr}from"node:child_process";import{existsSync as Lr}from"node:fs";import{mkdir as Rf,readdir as Ef,readFile as kf,rm as qo,writeFile as Vo}from"node:fs/promises";import{join as Dt,resolve as Nr}from"node:path";import{randomUUID as Sf}from"node:crypto";async function Tf(e,t=process.cwd()){let n=Of(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Cr()),0;if(n.kind==="ls")return process.stdout.write(`${P({waits:await Bf(t)})}
|
|
48
|
+
`),0;if(!xf(n.kind))return process.stdout.write(Cr()),2;let r=n.kind,i={id:Sf(),target:jf(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:vf[n.kind],status:"running"},s=Dt(await Mr(t),`${i.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await Rf(await Mr(t),{recursive:!0}),await Vo(s,JSON.stringify(i,null,2),"utf8"),o=await Pf({...n,kind:r},t,s,i),process.stdout.write(`${P(Mf(r,i,o))}
|
|
49
|
+
`),await Cf(n.options),o.exitCode}finally{await qo(s,{force:!0})}}function xf(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Cr(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
|
|
50
|
+
`)}function Of(e){let t=e[1],n={timeoutMs:Go.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Go[t];let i=e.indexOf("--"),s=i>=0?i:e.length;for(let o=2;o<s;o++){let a=e[o];a==="--timeout"?n.timeoutMs=Ff(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=Gf(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=i>=0?e.slice(i+1).join(" "):""),r}async function Pf(e,t,n,r){switch(e.kind){case"cmd":return await Df(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Br(()=>$f(e.target??"",t),e.options.timeoutMs,15e3,n,r);case"run":return await Br(()=>If(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Br(()=>Nf(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function Df(e,t,n,r,i){return e.trim()?await new Promise(s=>{let o=!1,a=l=>{o||(o=!0,s(l))},c=jr(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Pt(r,i,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Wo(t)}`})},t);c.once("error",l=>{clearTimeout(u),Pt(r,i,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let m=l===0;Pt(r,i,m?"success":"failure"),a({status:m?"success":"failure",exitCode:m?0:1,summary:m?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Br(e,t,n,r,i){let s=Date.now()+t,o=0;for(;Date.now()<s;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await Pt(r,i,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Vf(Math.min(c,Math.max(0,s-Date.now())))}return await Pt(r,i,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Wo(t)}`}}async function $f(e,t){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let n=await gn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh pr view failed"};let r=Ur(n.stdout),i=Array.isArray(r.statusCheckRollup)?r.statusCheckRollup:[],s=i.map(Uf),o=s.filter(c=>c==="failure").length,a=s.filter(c=>c==="pending").length;return String(r.state)!=="OPEN"?nt("failure",`PR #${e} is ${String(r.state).toLowerCase()}`,{mergeable:String(r.mergeable??"")}):o>0?nt("failure",`PR #${e} has failing checks`,{failing:o,pending:a,mergeable:String(r.mergeable??"")}):a>0?{status:"running",exitCode:2,summary:`PR #${e} has ${a} pending checks`}:nt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:String(r.mergeable??"")})}async function If(e,t){let n=e.target??(e.latest&&e.branch?await Af(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await gn(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let i=Ur(r.stdout),s=String(i.status??"").toLowerCase(),o=String(i.conclusion??"").toLowerCase();return s!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${s||"pending"}`}:o==="success"?nt("success",`run ${n} succeeded`,Jo(i)):nt("failure",`run ${n} concluded ${o||"unknown"}`,Jo(i))}async function Af(e,t){let n=await gn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),i=Array.isArray(r)?r[0]:void 0;return yn(i)&&i.databaseId!=null?String(i.databaseId):""}async function Nf(e,t,n){let r=await gn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let i=JSON.parse(r.stdout),o=(Array.isArray(i)?i.filter(yn):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Jf(e,c))&&u>=t});return o?nt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function gn(e,t){return await new Promise(n=>{let r=jr("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],s=[];r.stdout.on("data",o=>i.push(Buffer.from(o))),r.stderr.on("data",o=>s.push(Buffer.from(o))),r.once("error",o=>n({status:1,stdout:"",stderr:o.message})),r.once("close",o=>{n({status:o??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(s).toString("utf8").trim()})})})}async function Bf(e){let t=await Mr(e);if(!Lr(t))return[];let n=await Ef(t).catch(()=>[]),r=[];for(let i of n.filter(s=>s.endsWith(".json"))){let s=Dt(t,i),o=Ur(await kf(s,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!qf(a)){await qo(s,{force:!0});continue}r.push(o)}return r}async function Mr(e){return Dt(await Lf(e),".red","tmp","waits")}async function Lf(e){let t=Nr(e);for(;;){if(Lr(Dt(t,".red"))||Lr(Dt(t,".git")))return t;let n=Nr(t,"..");if(n===t)return Nr(e);t=n}}async function Pt(e,t,n){await Vo(e,JSON.stringify({...t,status:n},null,2),"utf8").catch(()=>{})}async function Cf(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=jr(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function Mf(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function nt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function jf(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function Uf(e){let t=yn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Jo(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function Ur(e){let t=JSON.parse(e);if(!yn(t))throw new Error("expected JSON object");return t}function yn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ff(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Gf(e){return e.startsWith("SIG")?e:`SIG${e}`}function Wo(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Jf(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function qf(e){try{return process.kill(e,0),!0}catch{return!1}}async function Vf(e){await new Promise(t=>setTimeout(t,e))}var Go,vf,Ko=S(()=>{"use strict";de();Go={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},vf={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Yo={};D(Yo,{renderShellInit:()=>Wf});function Wf(e,t=wt){if(e==="fish")return Hf(t);if(e==="bash"||e==="zsh")return Kf(e,t);throw new Error(`unsupported shell: ${e}`)}function Hf(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(wn))].map(n=>` abbr --add --position command -- ${n} '${Xf(`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(`
|
|
51
|
+
`)}function Kf(e,t){let n=Yf(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...hn("git",n.get("git")??[]),...hn("gh",n.get("gh")??[]),...hn("vitest",n.get("vitest")??[]),...hn("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(`
|
|
52
|
+
`)}function hn(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(wn),r=t.map(s=>s.command.slice(1)).filter(s=>s.length>1&&s.every(wn)),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=>zo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of zf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Qf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${zo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function zf(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 Yf(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!wn(r))continue;let i=t.get(r)??[];i.push(n),t.set(r,i)}return t}function wn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function zo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Qf(e){return e.replace(/'/g,"'\\''")}function Xf(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Qo=S(()=>{"use strict";sn()});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"&&Zf(t.chosenOption)&&em(t.outcome)&&tm(t.cost)}function Zf(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function em(e){return e==="success"||e==="failure"||e==="escalated"}function tm(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 Xo=S(()=>{});import{createHash as nm}from"node:crypto";function la(e,t){return new Jr(e,t)}function Zo(e){let t=Number(e.red_entity_id??e.rid),n=qr(e.properties??e.PROPERTIES),r=da(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 ea(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=fa(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:qr(e.properties??e.PROPERTIES)}}function sm(e){let t=Number(e.red_entity_id??e.rid),n=qr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Fr(n)?null:{rid:t,event:n}}function qr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function da(e){let t=e==="contact"?"person":e;if(rm.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function fa(e){if(im.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function om(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function ta(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Be(e){return bn(e)?e:{}}function na(e,t){return Be(e)[t]}function ra(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function ia(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function sa(e){let t=Be(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function A(e){return typeof e=="string"&&e.length>0?e:void 0}function bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gr(e){return e!=null}function am(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function cm(e){return nm("sha256").update(JSON.stringify(e)).digest("hex")}function um(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function oa(e){return`artifact-hash:${e}`}function aa(e,t,n){return`connection:${e}:${t}:${n}`}function ca(){return"model-tier-bandit:v1"}function lm(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ua(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function ma(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+ua(n,a)*3+ua(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 dm(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=pa({...ma(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ne(i)}function pa(e){return{...e,lexical:Ne(e.lexical),tags:Ne(e.tags),kind:Ne(e.kind),connections:Ne(e.connections),vector:Ne(e.vector),total:Ne(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ne(e){return Math.round(e*1e3)/1e3}function fm(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 mm(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 pm(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var z,rm,im,Jr,ga=S(()=>{"use strict";Xo();z={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},rm=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),im=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Jr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Be(n));if(t==="getArtifact")return await this.getArtifact(na(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Be(n);return await this.search(ra(r,"query"),ia(r,"limit")??10,sa(r.options))}if(t==="think"){let r=Be(n);return await this.think(ra(r,"query"),ia(r,"limit")??8,sa(r.options))}if(t==="link")return await this.link(Be(n));if(t==="backlinks")return await this.backlinks(na(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Be(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${z.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:pm(t.map(r=>r.kind))}}async capture(t){let n=A(t.title)||"Untitled artifact",r=A(t.content);if(!r)throw new Error("brain capture requires content");let i=da(A(t.kind)||"note"),s=am(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=cm([i,n,r,s,A(t.sourcePath),A(t.sourceSession)]),c=await this.kv().get(oa(a));if(c!=null){let R=await this.getArtifact(Number(c));if(R)return R}let u=`${um(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:A(t.sourceAgent),source_runner:A(t.sourceRunner),source_session:A(t.sourceSession),source_path:A(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:bn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${z.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let _=Zo(m);if(!_)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(oa(a),_.rid),await this.materializeTagConnections(_),_}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${z.artifacts}`)).rows.map(Zo).filter(Gr)}async search(t,n,r={}){let i=lm(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=ma(u,i),d=pa({...l,connections:dm(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:fm(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 mm(t,i)}async link(t){let n=await this.getArtifact(ta(t.from)),r=await this.getArtifact(ta(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=fa(A(t.kind)||"related_to"),s=await this.findConnection(n.rid,r.rid,i);if(s!=null){let l=(await this.listConnections()).find(d=>d.rid===s);if(l)return l}let o={reason:A(t.reason),confidence:A(t.confidence)||"explicit",created_at:Date.now(),metadata:bn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${z.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,i,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=ea(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(aa(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 ${z.connections}`)).rows.map(ea).filter(Gr)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=om(A(t.interval)||"day"),i=A(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Fr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${z.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${z.outcomeEvents}`)).rows.map(sm).filter(Gr).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ca());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ca(),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(aa(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(z.kv)}}});var Yr={};D(Yr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_INDEX_COLLECTION:()=>At,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Re,RSP_TELEMETRY_SPOOL:()=>ka,appendTelemetryEvent:()=>Em,drainTelemetrySpool:()=>Hr,parseTelemetryEvent:()=>Kr,readTelemetryGainsReport:()=>zr,readTelemetryStats:()=>Sn,takeTelemetrySpool:()=>Sm,telemetrySpoolPath:()=>kn});import{appendFileSync as gm,mkdirSync as ym,readFileSync as hm}from"node:fs";import{mkdir as _a,readdir as wm,readFile as bm,rename as Ra,rm as Ea,writeFile as Vr}from"node:fs/promises";import{basename as _m,dirname as En,join as Wr}from"node:path";function kn(e){return Wr(e,ka)}async function Em(e,t){try{let n=kn(e);ym(En(n),{recursive:!0}),gm(n,`${JSON.stringify(km(t))}
|
|
53
|
+
`,{encoding:"utf8",mode:384})}catch{}}function km(e){return ya(ya(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function ya(e,t,n){let r=e[t];if(typeof r!="string")return e;let i=Buffer.byteLength(r,"utf8");if(i<=Rm)return e;let s={...e};return delete s[t],J(s[n])===0&&(s[n]=i),s.estimated=!0,s}async function Sm(e){let t=kn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await _a(En(t),{recursive:!0}),await Ra(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Vr(t,"",{flag:"wx"}).catch(()=>{}),(await Sa(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await Ea(n,{force:!0})}}async function Hr(e,t){let n=kn(e);await _a(En(n),{recursive:!0}).catch(()=>{});for(let i of await vm(n))await ha(n,i,t);let r=`${n}.${process.pid}.${Date.now()}.drain`;try{await Ra(n,r)}catch{return}await Vr(n,"",{flag:"wx"}).catch(()=>{}),await ha(n,r,t)}async function vm(e){let t=En(e),n=`${_m(e)}.`;return(await wm(t).catch(()=>[])).filter(i=>i.startsWith(n)&&i.endsWith(".drain")).filter(i=>{let s=Number(i.slice(n.length).split(".")[0]);return!(Number.isInteger(s)&&s!==process.pid&&Tm(s))}).sort().map(i=>Wr(t,i))}function Tm(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ha(e,t,n){let r=[];try{let s=(await Sa(t)).split(/\r?\n/).filter(o=>o.trim()!=="");for(let o of s){try{if(await n(o))continue}catch{}r.push(o)}}finally{if(r.length>0){let i=xm(e);await Vr(e,`${r.join(`
|
|
49
54
|
`)}
|
|
50
|
-
${i}`,"utf8")}await ha(t,{force:!0})}}function hm(e){try{return am(e,"utf8")}catch{return""}}async function ba(e){let t="";for(let n=0;n<5;n++){let r=await um(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Hr(e){try{let t=JSON.parse(e);return!_a(t)||t.collection!==Re&&t.collection!==Ee?null:t}catch{return null}}async function Sn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await _n(e,Re)).filter(R=>Dt(R)>=i),o=(await _n(e,Ee)).filter(R=>Dt(R)>=i),a=0,c=0,u=0,l=0,d=!1,m=new Map,b=new Map,_=[],T=0,v=0,p=0;for(let R of s){R.elided===!0&&a++;let x=J(R.raw_bytes),M=J(R.emitted_bytes),Bt=Math.max(0,x-M),ue=Math.max(0,J(R.tokens_raw)-J(R.tokens_emitted));d||=R.estimated===!0&&ue>0,c+=x,u+=M,l+=ue;let Oe=$t(R).slice(0,10);Oe&&m.set(Oe,(m.get(Oe)??0)+ue);let y=_e(R.command)||"unknown",k=b.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};k.invocations++,k.bytes_saved+=Bt,k.tokens_saved+=ue,b.set(y,k);let je=Rn(R.wrapper_ms);je!=null&&_.push(je),T+=J(R.store_open_count);let Ue=Rn(R.store_elapsed_ms);Ue!=null&&(v+=Ue,p++)}let f=new Map,w=null;for(let R of o){let x=_e(R.reason)||"unknown";f.set(x,(f.get(x)??0)+1);let M=$t(R);(!w||M>w.timestamp)&&(w={timestamp:M,reason:x,command:_e(R.command)||"unknown"})}let g=s.length+o.length,E=Wn(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(([R],[x])=>R.localeCompare(x)).map(([R,x])=>({date:R,tokens_saved:x})),top_commands:[...b.values()].sort((R,x)=>x.bytes_saved-R.bytes_saved||x.tokens_saved-R.tokens_saved||R.command.localeCompare(x.command))},health:{degradations:o.length,degradation_rate:g===0?0:o.length/g,by_reason:[...f.entries()].sort((R,x)=>x[1]-R[1]||R[0].localeCompare(x[0])).map(([R,x])=>({reason:R,count:x})),most_recent:w},latency:{wrapper_ms_p50:nt(_,.5),wrapper_ms_p95:nt(_,.95),store_open_count_sum:T,store_elapsed_ms_sum:rt(v),store_elapsed_ms_avg:p===0?null:rt(v/p)}}}async function Kr(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 _n(e,Re)).filter(y=>Dt(y)>=o),c=(await _n(e,Ee)).filter(y=>Dt(y)>=o),u=[...a,...c].map(Dt).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)/Sm()))),m=[],b=new Map,_=new Map,T=new Map,v=new Map,p=new Map,f=new Map,w=0,g=!1,E=0,R=null,x=0,M=0;for(let y of a){let k=$t(y),je=k.slice(0,10),Ue=k.slice(0,16),Ge=pa(_e(y.command)),le=Math.max(0,J(y.tokens_raw)-J(y.tokens_emitted));w+=le,g||=y.estimated===!0&&le>0;let An=Math.max(0,J(y.raw_bytes)-J(y.emitted_bytes)),Nn=Rn(y.wrapper_ms);if(Nn!=null){m.push(Nn);let ki=b.get(Ge)??[];ki.push(Nn),b.set(Ge,ki)}je&&_.set(je,(_.get(je)??0)+1),Ue&&T.set(Ue,(T.get(Ue)??0)+1);let Bn=bm(k);Bn&&v.set(Bn,(v.get(Bn)??0)+1);let Ln=Em(k);Ln&&p.set(Ln,(p.get(Ln)??0)+le);let Lt=f.get(Ge)??{command_family:Ge,invocations:0,tokens_saved:0,bytes_saved:0};Lt.invocations++,Lt.tokens_saved+=le,Lt.bytes_saved+=An,f.set(Ge,Lt),y.elided===!0&&E++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(x++,J(y.store_open_count)>0&&M++),le>0&&(!R||le>R.tokens_saved||le===R.tokens_saved&&An>R.bytes_saved)&&(R={timestamp:k,command_family:Ge,tokens_saved:le,bytes_saved:An})}let Bt=c.map(y=>({timestamp:$t(y),command_family:pa(_e(y.command)),reason:_e(y.reason)||"unknown"})).sort((y,k)=>y.timestamp.localeCompare(k.timestamp)),ue=new Map;for(let y of Bt)ue.set(y.reason,(ue.get(y.reason)??0)+1);let Oe=[...T.entries()].sort((y,k)=>k[1]-y[1]||y[0].localeCompare(k[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:ma(m),by_command_family:[...b.entries()].sort((y,k)=>k[1].length-y[1].length||y[0].localeCompare(k[0])).map(([y,k])=>({command_family:y,count:k.length,...ma(k)}))},throughput:{requests_per_day:[..._.entries()].sort(([y],[k])=>y.localeCompare(k)).map(([y,k])=>({date:y,requests:k})),active_minute_avg:T.size===0?null:rt([...T.values()].reduce((y,k)=>y+k,0)/T.size),peak_minute:Oe?{minute:Oe[0],requests:Oe[1]}:null,hour_weekday_heatmap:_m(v)},savings:{tokens:Wn(w,g),weekly_tokens_saved:km(p),elision_rate:a.length===0?0:rt(E/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,k)=>k.tokens_saved-y.tokens_saved||k.bytes_saved-y.bytes_saved||y.command_family.localeCompare(k.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,k)=>k.invocations-y.invocations||k.tokens_saved-y.tokens_saved||y.command_family.localeCompare(k.command_family)).slice(0,10),single_biggest_elision:R},health:{degradation_timeline:Bt,degradations_by_reason:[...ue.entries()].sort((y,k)=>k[1]-y[1]||y[0].localeCompare(k[0])).map(([y,k])=>({reason:y,count:k})),cold_boots:x===0?null:M,warm_hits:x===0?null:Math.max(0,x-M)}}}async function _n(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=>wm(r.value)).filter(r=>_a(r))}function wm(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dt(e){let t=Date.parse($t(e));return Number.isFinite(t)?t:0}function $t(e){return _e(e.created_at)||_e(e.ts)||""}function _e(e){return typeof e=="string"?e:""}function J(e){return Rn(e)??0}function Rn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function nt(e,t){if(e.length===0)return null;let n=[...e].sort((i,s)=>i-s),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return rt(n[r])}function ma(e){return{wrapper_ms_p50:nt(e,.5),wrapper_ms_p90:nt(e,.9),wrapper_ms_p95:nt(e,.95),wrapper_ms_p99:nt(e,.99)}}function rt(e){return Math.round(e*100)/100}function pa(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 bm(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Rm(t.getUTCDay())}:${t.getUTCHours()}`:null}function _m(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 Rm(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Em(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 km(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:rt((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Sm(){return 24*60*60*1e3}function _a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wa,Re,Ee,It,dm,vn=S(()=>{"use strict";Hn();wa=Vr(".red","tmp","rsp-telemetry.spool.jsonl"),Re="rsp_telemetry_invocations_v1",Ee="rsp_telemetry_degradations_v1",It="rsp_telemetry_index_v1",dm=64*1024});var Aa={};D(Aa,{runResidentServer:()=>Im});import{randomUUID as Xr}from"node:crypto";import{execFileSync as vm,spawn as Tm}from"node:child_process";import{existsSync as xm}from"node:fs";import{mkdir as xa,rename as Om,rm as Ra,writeFile as Oa}from"node:fs/promises";import{createServer as Pm}from"node:net";import{dirname as ei,join as At}from"node:path";import{fileURLToPath as Dm,pathToFileURL as $m}from"node:url";async function Im(e){await xa(ei(e.socketPath),{recursive:!0});let t=Vm();qm();let n=e.telemetryDrainTimeoutMs??Pa,r={kind:"opening",startedAt:process.hrtime.bigint()},i,s=!1,o=e.idleMs??nn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,m=Pm(g=>{l.add(g),g.once("close",()=>l.delete(g)),_(),Xm(g,async E=>{_();let R=await Zm(r,E,e.storeUri,e.residentVersion??"0.0.0-dev"),x={id:E.id,ok:!0,value:R,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Ia(g,x),E.op==="handover"&&setImmediate(()=>b())})});function b(){s=!0,u=!0,c=Jm(c),m.close();for(let g of l)g.destroy()}function _(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{b()},o),a.unref())}let v=["SIGINT","SIGTERM"].map(g=>{let E=()=>{Tn(),m.close();for(let R of l)R.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(g,E),{signal:g,handler:E}});await new Promise((g,E)=>{m.once("error",E),m.listen(e.socketPath,()=>{m.off("error",E),g()})}),(async()=>{let g=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let E=await Tt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),R=Number(process.hrtime.bigint()-g)/1e6,x=new Zr(E,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??en,byteBudget:e.telemetryByteBudget??e.byteBudget??tn});if(s){await E.close();return}if(await Yr(x,n),s){await E.close();return}r={kind:"ready",store:E,telemetry:x,storeOpenCount:1,storeElapsedMs:R},i=setInterval(()=>{let M=r.kind==="ready"?r:void 0;M&&Yr(M.telemetry,n)},d),i.unref(),_()})().catch(g=>{r={kind:"failed",error:g instanceof Error?g:new Error(String(g))},_()}),e.pidPath&&await Oa(e.pidPath,`${process.pid}
|
|
51
|
-
`,{encoding:"utf8",mode:384});let p=e.residentVersion??"0.0.0-dev",f=e.registryPath??
|
|
52
|
-
`)}}async function
|
|
55
|
+
${i}`,"utf8")}await Ea(t,{force:!0})}}function xm(e){try{return hm(e,"utf8")}catch{return""}}async function Sa(e){let t="";for(let n=0;n<5;n++){let r=await bm(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(i=>setTimeout(i,2))}return t}function Kr(e){try{let t=JSON.parse(e);return!va(t)||t.collection!==Re&&t.collection!==Ee?null:t}catch{return null}}async function Sn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await _n(e,Re)).filter(b=>$t(b)>=i),o=(await _n(e,Ee)).filter(b=>$t(b)>=i),a=0,c=0,u=0,l=0,d=!1,m=new Map,_=new Map,R=[],T=0,v=0,p=0;for(let b of s){b.elided===!0&&a++;let x=J(b.raw_bytes),M=J(b.emitted_bytes),ee=Math.max(0,x-M),ce=Math.max(0,J(b.tokens_raw)-J(b.tokens_emitted));d||=b.estimated===!0&&ce>0,c+=x,u+=M,l+=ce;let Oe=It(b).slice(0,10);Oe&&m.set(Oe,(m.get(Oe)??0)+ce);let y=_e(b.command)||"unknown",E=_.get(y)??{command:y,invocations:0,bytes_saved:0,tokens_saved:0};E.invocations++,E.bytes_saved+=ee,E.tokens_saved+=ce,_.set(y,E);let Ue=Rn(b.wrapper_ms);Ue!=null&&R.push(Ue),T+=J(b.store_open_count);let Fe=Rn(b.store_elapsed_ms);Fe!=null&&(v+=Fe,p++)}let f=new Map,w=null;for(let b of o){let x=_e(b.reason)||"unknown";f.set(x,(f.get(x)??0)+1);let M=It(b);(!w||M>w.timestamp)&&(w={timestamp:M,reason:x,command:_e(b.command)||"unknown"})}let g=s.length+o.length,k=Wn(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:k.tokens_saved_estimated,token_estimate_range_pct:k.token_estimate_range_pct,tokens_saved_low:k.tokens_saved_low,tokens_saved_high:k.tokens_saved_high,dollars_saved_estimate_usd:k.dollars_saved_estimate_usd,dollars_saved_low_usd:k.dollars_saved_low_usd,dollars_saved_high_usd:k.dollars_saved_high_usd,pricing_model_family:k.pricing_model_family,pricing_input_usd_per_million_tokens:k.pricing_input_usd_per_million_tokens,pricing_note:k.pricing_note,daily_tokens_saved:[...m.entries()].sort(([b],[x])=>b.localeCompare(x)).map(([b,x])=>({date:b,tokens_saved:x})),top_commands:[..._.values()].sort((b,x)=>x.bytes_saved-b.bytes_saved||x.tokens_saved-b.tokens_saved||b.command.localeCompare(x.command))},health:{degradations:o.length,degradation_rate:g===0?0:o.length/g,by_reason:[...f.entries()].sort((b,x)=>x[1]-b[1]||b[0].localeCompare(x[0])).map(([b,x])=>({reason:b,count:x})),most_recent:w},latency:{wrapper_ms_p50:rt(R,.5),wrapper_ms_p95:rt(R,.95),store_open_count_sum:T,store_elapsed_ms_sum:it(v),store_elapsed_ms_avg:p===0?null:it(v/p)}}}async function zr(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 _n(e,Re)).filter(y=>$t(y)>=o),c=(await _n(e,Ee)).filter(y=>$t(y)>=o),u=[...a,...c].map($t).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)/Nm()))),m=[],_=new Map,R=new Map,T=new Map,v=new Map,p=new Map,f=new Map,w=0,g=!1,k=0,b=null,x=0,M=0;for(let y of a){let E=It(y),Ue=E.slice(0,10),Fe=E.slice(0,16),Ge=ba(_e(y.command)),ue=Math.max(0,J(y.tokens_raw)-J(y.tokens_emitted));w+=ue,g||=y.estimated===!0&&ue>0;let An=Math.max(0,J(y.raw_bytes)-J(y.emitted_bytes)),Nn=Rn(y.wrapper_ms);if(Nn!=null){m.push(Nn);let Si=_.get(Ge)??[];Si.push(Nn),_.set(Ge,Si)}Ue&&R.set(Ue,(R.get(Ue)??0)+1),Fe&&T.set(Fe,(T.get(Fe)??0)+1);let Bn=Pm(E);Bn&&v.set(Bn,(v.get(Bn)??0)+1);let Ln=Im(E);Ln&&p.set(Ln,(p.get(Ln)??0)+ue);let Lt=f.get(Ge)??{command_family:Ge,invocations:0,tokens_saved:0,bytes_saved:0};Lt.invocations++,Lt.tokens_saved+=ue,Lt.bytes_saved+=An,f.set(Ge,Lt),y.elided===!0&&k++,(y.store_open_count!=null||y.store_elapsed_ms!=null)&&(x++,J(y.store_open_count)>0&&M++),ue>0&&(!b||ue>b.tokens_saved||ue===b.tokens_saved&&An>b.bytes_saved)&&(b={timestamp:E,command_family:Ge,tokens_saved:ue,bytes_saved:An})}let ee=c.map(y=>({timestamp:It(y),command_family:ba(_e(y.command)),reason:_e(y.reason)||"unknown"})).sort((y,E)=>y.timestamp.localeCompare(E.timestamp)),ce=new Map;for(let y of ee)ce.set(y.reason,(ce.get(y.reason)??0)+1);let Oe=[...T.entries()].sort((y,E)=>E[1]-y[1]||y[0].localeCompare(E[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days: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:wa(m),by_command_family:[..._.entries()].sort((y,E)=>E[1].length-y[1].length||y[0].localeCompare(E[0])).map(([y,E])=>({command_family:y,count:E.length,...wa(E)}))},throughput:{requests_per_day:[...R.entries()].sort(([y],[E])=>y.localeCompare(E)).map(([y,E])=>({date:y,requests:E})),active_minute_avg:T.size===0?null:it([...T.values()].reduce((y,E)=>y+E,0)/T.size),peak_minute:Oe?{minute:Oe[0],requests:Oe[1]}:null,hour_weekday_heatmap:Dm(v)},savings:{tokens:Wn(w,g),weekly_tokens_saved:Am(p),elision_rate:a.length===0?0:it(k/a.length),top_commands_by_tokens_saved:[...f.values()].sort((y,E)=>E.tokens_saved-y.tokens_saved||E.bytes_saved-y.bytes_saved||y.command_family.localeCompare(E.command_family)).slice(0,10),top_commands_by_invocation_count:[...f.values()].sort((y,E)=>E.invocations-y.invocations||E.tokens_saved-y.tokens_saved||y.command_family.localeCompare(E.command_family)).slice(0,10),single_biggest_elision:b},health:{degradation_timeline:ee,degradations_by_reason:[...ce.entries()].sort((y,E)=>E[1]-y[1]||y[0].localeCompare(E[0])).map(([y,E])=>({reason:y,count:E})),cold_boots:x===0?null:M,warm_hits:x===0?null:Math.max(0,x-M)}}}async function _n(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=>Om(r.value)).filter(r=>va(r))}function Om(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function $t(e){let t=Date.parse(It(e));return Number.isFinite(t)?t:0}function It(e){return _e(e.created_at)||_e(e.ts)||""}function _e(e){return typeof e=="string"?e:""}function J(e){return Rn(e)??0}function Rn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function rt(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 it(n[r])}function wa(e){return{wrapper_ms_p50:rt(e,.5),wrapper_ms_p90:rt(e,.9),wrapper_ms_p95:rt(e,.95),wrapper_ms_p99:rt(e,.99)}}function it(e){return Math.round(e*100)/100}function ba(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 Pm(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${$m(t.getUTCDay())}:${t.getUTCHours()}`:null}function Dm(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 $m(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Im(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 Am(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let i=t==null||t===0?null:it((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:i}})}function Nm(){return 24*60*60*1e3}function va(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ka,Re,Ee,At,Rm,vn=S(()=>{"use strict";Hn();ka=Wr(".red","tmp","rsp-telemetry.spool.jsonl"),Re="rsp_telemetry_invocations_v1",Ee="rsp_telemetry_degradations_v1",At="rsp_telemetry_index_v1",Rm=64*1024});var Ma={};D(Ma,{runResidentServer:()=>Gm});import{randomUUID as Zr}from"node:crypto";import{execFileSync as Bm,spawn as Lm}from"node:child_process";import{existsSync as Cm}from"node:fs";import{mkdir as Ia,rename as Mm,rm as Ta,writeFile as Aa}from"node:fs/promises";import{createServer as jm}from"node:net";import{dirname as ti,join as Nt}from"node:path";import{fileURLToPath as Um,pathToFileURL as Fm}from"node:url";async function Gm(e){await Ia(ti(e.socketPath),{recursive:!0});let t=tp();ep();let n=e.telemetryDrainTimeoutMs??Na,r={kind:"opening",startedAt:process.hrtime.bigint()},i,s=!1,o=e.idleMs??nn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,m=jm(g=>{l.add(g),g.once("close",()=>l.delete(g)),R(),cp(g,async k=>{R();let b=await up(r,k,e.storeUri,e.residentVersion??"0.0.0-dev"),x={id:k.id,ok:!0,value:b,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Ca(g,x),k.op==="handover"&&setImmediate(()=>_())})});function _(){s=!0,u=!0,c=Zm(c),m.close();for(let g of l)g.destroy()}function R(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{_()},o),a.unref())}let v=["SIGINT","SIGTERM"].map(g=>{let k=()=>{Tn(),m.close();for(let b of l)b.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(g,k),{signal:g,handler:k}});await new Promise((g,k)=>{m.once("error",k),m.listen(e.socketPath,()=>{m.off("error",k),g()})}),(async()=>{let g=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let k=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(k)&&k>0&&await new Promise(ee=>setTimeout(ee,k));let b=await xt.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),x=Number(process.hrtime.bigint()-g)/1e6,M=new ei(b,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??en,byteBudget:e.telemetryByteBudget??e.byteBudget??tn});if(s){await b.close();return}if(await Qr(M,n),s){await b.close();return}r={kind:"ready",store:b,telemetry:M,storeOpenCount:1,storeElapsedMs:x},i=setInterval(()=>{let ee=r.kind==="ready"?r:void 0;ee&&Qr(ee.telemetry,n)},d),i.unref(),R()})().catch(g=>{r={kind:"failed",error:g instanceof Error?g:new Error(String(g))},R()}),e.pidPath&&await Aa(e.pidPath,`${process.pid}
|
|
56
|
+
`,{encoding:"utf8",mode:384});let p=e.residentVersion??"0.0.0-dev",f=e.registryPath??Nt(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await zt(f,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:p})}catch{}await new Promise(g=>m.once("close",g)),a&&clearTimeout(a),i&&clearInterval(i),await Ta(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Qr(w.telemetry,n,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:g,handler:k}of v)process.off(g,k);t?.kill("SIGTERM"),Tn(),e.pidPath&&await Ta(e.pidPath,{force:!0}),await Yt(f)}async function Km(e,t,n=new Date){let r=await Sn(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=Nt(t,Wm),c=`${a}.${process.pid}.${Date.now()}.tmp`;await Ia(ti(a),{recursive:!0}),await Aa(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 Mm(c,a)}async function Qr(e,t=Na,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await La(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
|
|
57
|
+
`)}}async function zm(e){let t=[];for(let n of Hm){let r=await Ym(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Qm(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ba(n)}`))}return t}async function Ym(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let i=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(i?.[1])return{ok:!1,previousModel:i[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let s=(await e.list()).find(o=>o.name===t);if(s&&s.model!=="kv")return{ok:!1,previousModel:s.model};throw n}}async function Qm(e,t,n){let r=Xm(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Ba(t)}`)}function Xm(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function Ba(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Zm(e){return e&&clearTimeout(e),setTimeout(()=>{Tn(),process.exit(0)},Vm)}function ep(){xa||(xa=!0,process.on("exit",()=>Tn()))}function tp(){if(process.platform==="win32")return;let t=Lm(process.execPath,["-e",`
|
|
53
58
|
const { execFileSync } = require("node:child_process");
|
|
54
59
|
const parentPid = Number(process.argv[1]);
|
|
55
60
|
const known = new Set();
|
|
@@ -90,62 +95,62 @@ const timer = setInterval(() => {
|
|
|
90
95
|
clearInterval(timer);
|
|
91
96
|
process.exit(0);
|
|
92
97
|
}, 500);
|
|
93
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Tn(){for(let e of
|
|
94
|
-
`);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??
|
|
95
|
-
`)}catch{}}async function
|
|
96
|
-
`).filter(i=>i&&
|
|
98
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Tn(){for(let e of np())try{process.kill(e,"SIGTERM")}catch{}}function np(){if(process.platform==="win32")return[];let e="";try{e=Bm("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let i=Number(r[1]),s=Number(r[2]),o=r[3]??"";s===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(i)}return t}async function rp(e){if(e.collection!==Re)return e;let t=await Oa(e.raw_text,Da(e.raw_bytes)),n=await Oa(e.emitted_text,Da(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 Oa(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Jm)try{return await La((async()=>({tokens:(await ip())("cl100k_base").encode(e).length,estimated:!1}))(),qm,"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 ip(){return Pa??=import(Fm(sp()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Pa}function sp(){let e=ti(Um(import.meta.url)),n=[Nt(e,"..","node_modules","js-tiktoken","dist","index.js"),Nt(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Cm(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Da(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Xr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function La(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 op(e){try{return JSON.parse(e)}catch{return e}}function ap(e){return $a(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>$a(t)&&(t.collection===Re||t.collection===Ee)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function $a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function cp(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let i=n.indexOf(`
|
|
99
|
+
`);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??Zr(),ok:!1,error:a instanceof Error?a.message:String(a)};Ca(e,u)}finally{e.end()}})()})}function Ca(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
100
|
+
`)}catch{}}async function up(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let i=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await i.stats();if(t.op==="telemetry-stats"){let s=i.redDb();if(!s)throw new Error("rsp telemetry stats require the shared RedDB store");return await Sn(s,t.sinceDays)}if(t.op==="telemetry-gains"){let s=i.redDb();if(!s)throw new Error("rsp telemetry gains require the shared RedDB store");return await zr(s,t.sinceDays)}if(t.op==="mint")return{handle:await i.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return dp(await i.get(t.handle));if(t.op==="memory")return await i.memory(t.action,t.payload);if(t.op==="brain")return await lp(i,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function lp(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await la(i,t).request(n,r)}function dp(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Jm,qm,Na,Vm,Wm,Hm,ei,xa,Pa,ja=S(()=>{"use strict";Qt();mn();ga();vn();K();Jm=256*1024,qm=500,Na=2e3,Vm=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Wm=Nt(".red","tmp","rsp-status-summary.json"),Hm=[Re,Ee,At],ei=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await zm(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),i=r.records.length,s=[...r.records];for(let a of n)s.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await Hr(this.opts.rootDir,async a=>{let c=Kr(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return s.push(u),!0}try{let u=await this.writeEvent(t,c);return s.push(u),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Xr(c.command)||"unknown",source_id:Xr(c.id),source_collection:Xr(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return s.push(l),!0}});let o=s.length>i;await this.prune(t,{version:1,records:s},o),await Km(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:Zr(),a={...await rp(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:Ee,id:Zr(),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(At).get("index:v1"),r=typeof n=="string"?op(n):n;return ap(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(At).put("index:v1",n)}async prune(t,n,r=!1){let i=Date.now(),s=[];for(let a of n.records)Date.parse(a.expires_at)<=i?await t.kv(a.collection).delete(a.key):s.push(a);let o=s.reduce((a,c)=>a+c.bytes,0);for(s.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&s.length>0;){let a=s.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||s.length<n.records.length)&&await this.writeIndex(t,{version:1,records:s})}};xa=!1});function ke(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 Ua(e,t){if(!t)return!0;let n=ni(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>Ua(n,t)):[...e]}function st(e,t){if(!t)return e;let r=e.split(`
|
|
101
|
+
`).filter(i=>i&&Ua(i,t));return r.length>0?`${r.join(`
|
|
97
102
|
`)}
|
|
98
|
-
`:""}function Se(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function
|
|
99
|
-
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(
|
|
103
|
+
`:""}function Se(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function ni(e){return Array.isArray(e)?e.map(ni).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ni).join(" "):String(e??"")}var xn=S(()=>{"use strict"});var ri={};D(ri,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>re,GIT_LOG_MACHINE_FIELDS:()=>Fa,recoveryInstruction:()=>q,renderGitContract:()=>Ga,runGitWrapper:()=>mp});import{spawn as fp}from"node:child_process";async function mp(e,t){let n=Ja(e),r=qa(n.argv),i=await hp(r,n.argv.slice(1));return Ga(e,i,t)}async function Ga(e,t,n){let r=Ja(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(st(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=qa(r.argv),s=wp(i,r.argv,t.stdout,r.query);if(s===`git empty
|
|
104
|
+
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(pp(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=Pp(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 ${q(u)}
|
|
100
105
|
`;return{stdout:Buffer.from(`${P(a.payload)}
|
|
101
|
-
${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 q(e){return e.startsWith("el:")?`rsp show ${e}`:e}function
|
|
102
|
-
`;let s=I(i,n),o=
|
|
103
|
-
`)[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
|
|
104
|
-
`).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,
|
|
105
|
-
`),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(i,n),a=
|
|
106
|
-
`).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=I(r,n),s=i.find(o=>o.current)?.name??"";return ve({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
|
|
107
|
-
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!w)continue;let g=w[3]??"";
|
|
108
|
-
`).length:0,files:
|
|
106
|
+
${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 q(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ja(e){let t=ke(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 pp(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!gp(e)||r.level!=="lossless")return!0;let i=Op(r.heavyGitByteThreshold,re);return Buffer.byteLength(t)<=i}function gp(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function qa(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 yp(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Fa.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 hp(e,t){let n=fp("git",yp(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 wp(e,t,n,r){switch(e){case"status":return bp(t,n,r);case"log":return _p(t,n,r);case"diff":return Rp(t,n,r);case"commit":return ve(Ep(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ve(kp(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Sp(t,n,r);case"branch":return vp(t,n,r);case"show":return Tp(t,n,r)}}function bp(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:xp(u)})}if(i.length===0)return`git empty
|
|
107
|
+
`;let s=I(i,n),o=Va(s,"state");return ve({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 _p(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=I(r,n);return ve({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 Rp(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(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 ve({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 Ep(e,t){let n=t.split(`
|
|
108
|
+
`)[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 kp(e,t){let n=t.split(`
|
|
109
|
+
`).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,_]=(l??"").split(":");return{flag:u??"",from:m??"",to:_??"",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 Sp(e,t,n){let r=t.split(`
|
|
110
|
+
`),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(i,n),a=Va(o,"author");return ve({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 vp(e,t,n){let r=t.split(`
|
|
111
|
+
`).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=I(r,n),s=i.find(o=>o.current)?.name??"";return ve({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 Tp(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(""),_=[];for(let f of o.split(`
|
|
112
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!w)continue;let g=w[3]??"";_.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...g].filter(k=>k==="+").length,deleted:[...g].filter(k=>k==="-").length,binary:g.startsWith("Bin")})}let R=I(_,n),T=0,v=0,p=0;for(let f of R)T+=typeof f.changed=="number"?f.changed:0,v+=typeof f.added=="number"?f.added:0,p+=typeof f.deleted=="number"?f.deleted:0;return ve({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:m.trim()?m.trim().split(`
|
|
113
|
+
`).length:0,files:R,summary:`${n?`${R.length}/${_.length}`:R.length} files, ${T} changed, +${v} -${p}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ve(e,t,n){return t?Se(e,n):e}function xp(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Va(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Op(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Pp(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 Fa,Le=S(()=>{"use strict";de();K();xn();K();Fa=["%h","%an","%as","%s"]});var ai={};D(ai,{renderGhContract:()=>Ka,runGhWrapper:()=>Ap});import{spawn as Ha}from"node:child_process";async function Ap(e,t){let n=za(e),r=await Bp(n);return Ka(e,r,t)}async function Ka(e,t,n){let r=ke(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(st(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=za(e),s=On(t.stdout),o=Cp(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=qp(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let R=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=R}let c=a?.target.truncated.handle||void 0,u=P(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=Vp(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 _=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${q(m)}
|
|
109
114
|
`;return{stdout:Buffer.from(`${P(l.payload)}
|
|
110
|
-
${
|
|
115
|
+
${_}`),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 za(e){let t=ke(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 Np(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?$p[t]:Dp[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Bp(e){if(e.action==="combined")return await Lp(e);let t=Ha("gh",Np(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 Lp(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([ii(["pr","view",t,"--json",n.join(",")]),ii(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),ii(["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 ii(e){let t=Ha("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 Cp(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Fp(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=at(n).map(o=>Ya(o,e.wide)),s=I(i,e.query);return ot({...r,prs:s,summary:`${si(s.length,i.length,e.query)} ${Wa(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ot({...r,pr:Qa(Y(n),e),summary:`PR #${Ce(Y(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Mp(e,t,Y(n));case"issue:list":{let i=at(n).map(o=>Xa(o,e.wide)),s=I(i,e.query);return ot({...r,issues:s,summary:`${si(s.length,i.length,e.query)} ${Wa(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ot({...r,issue:Gp(Y(n),e),summary:`issue #${Ce(Y(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=at(n).map(o=>Za(o,e.wide)),s=I(i,e.query);return ot({...r,runs:s,summary:`${si(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 ot({...r,run:Jp(Y(n),e),summary:`run ${Ce(Y(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Mp(e,t,n){let r=Qa(Y(n.view),{...e,action:"view",wide:!0}),i=I(at(n.checks).map(jp),e.query),s=Y(n.comments).comments,o=I(at(s).map(Up).slice(-3),e.query);return Se({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Ce(Y(n.view),"number")}: ${i.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function jp(e){return{name:O(e,"name"),state:Bt(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function Up(e){return{author:nc(e.author),body:Pn(e,"body",oi,!1),created:O(e,"createdAt")}}function Fp(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
|
|
111
116
|
`:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
|
|
112
117
|
`:`0 runs \u2014 try: rsp gh run list --limit 20
|
|
113
|
-
`}function
|
|
114
|
-
${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:v,bytesElided:T,rowsElided:d,rawOutput:Buffer.from(
|
|
118
|
+
`}function Ya(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:Bt(e),draft:!!e.isDraft};return t&&Object.assign(n,ec(e)),n}function Qa(e,t){let n=Ya(e,t.wide);return n.body=Pn(e,"body",oi,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Xa(e,t){let n={number:Ce(e,"number"),title:O(e,"title"),state:Bt(e),labels:tc(e.labels)};return t&&Object.assign(n,ec(e)),n}function Gp(e,t){let n=Xa(e,t.wide);return n.body=Pn(e,"body",oi,t.full),n}function Za(e,t){let n={id:Ce(e,"databaseId"),name:O(e,"name"),status:Bt(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function Jp(e,t){let n=Za(e,t.wide),r=at(e.jobs).map(i=>({name:O(i,"name"),status:Bt(i),conclusion:O(i,"conclusion"),log:Pn(i,"log",Ip,t.full)}));return n.jobs=r,n}function Pn(e,t,n,r){let i=O(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function qp(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(ct(n)){if(ct(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 Vp(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 Wa(e,t){return e.every(n=>n.state===t)?t:"returned"}function si(e,t,n){return n?`${e}/${t}`:String(e)}function ot(e,t,n){return t.query?Se(e,n):e}function Bt(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function ec(e){return{author:nc(e.author),labels:tc(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function tc(e){return Array.isArray(e)?e.map(t=>ct(t)?O(t,"name"):String(t)).filter(Boolean):[]}function nc(e){return ct(e)?O(e,"login"):""}function On(e){return e.trim()?JSON.parse(e):null}function at(e){return Array.isArray(e)?e.filter(ct):[]}function Y(e){return ct(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Ce(e,t){let n=e[t];return typeof n=="number"?n:0}function ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dp,$p,oi,Ip,ci=S(()=>{"use strict";de();Le();xn();Dp={"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"]},$p={"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"]},oi=160,Ip=160});var li={};D(li,{renderTestContract:()=>rc,runTestWrapper:()=>Yp});import{spawn as Wp}from"node:child_process";async function Yp(e,t){let n=ke(e),r=await tg(n.argv);return await rc(e,r,t)}async function rc(e,t,n){let r=ke(e),s=ic(r.argv)==="vitest"?ng(t.stdout):rg(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(st(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 ${og(s.durationSeconds)}`,c=I(s.failures,r.query);if(n.level==="terse")return await Qp(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let R of c){let T=await ig(R.excerpt,r.argv.join(" "),n.store);u.push({suite:R.suite,name:R.name,excerpt:T.text}),l??=T.handle,d+=T.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 _=r.query?Se(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(P(_)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:_,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Qp(e,t,n,r,i,s,o){let a=Xp(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?Se(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=P(u),d=Math.max(0,n.failures.length-a.length),m=a.some((w,g)=>w.excerpt!==n.failures[g].excerpt);if(d===0&&!m)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let _={exit_code:r,summary:i};n.failures.length>0&&(_.failures=n.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let R=P(_),T=Buffer.byteLength(R),v=await s.store?.mint(Buffer.from(R),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!v)throw new Error("terse test output requires an elision store");let f=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${T}) \u2014 ${q(v)}`;return{stdout:Buffer.from(`${l}
|
|
119
|
+
${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:v,bytesElided:T,rowsElided:d,rawOutput:Buffer.from(R)}}function Xp(e){let t=[],n=Kp;for(let r of e.slice(0,zp)){let i=Zp(r.excerpt,Math.min(Hp,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Zp(e,t){if(t<=0)return"";let n=e.split(`
|
|
115
120
|
`),r=n.length<=2?e:`${n[0]}
|
|
116
121
|
\u2026
|
|
117
|
-
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
118
|
-
`).filter(Boolean).map(c=>
|
|
119
|
-
`)}),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
|
|
120
|
-
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${q(i)}`,handle:i,bytesElided:r.length}}function
|
|
121
|
-
`):""}function
|
|
122
|
-
`;if(!o&&Buffer.byteLength(c)<=
|
|
123
|
-
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function
|
|
124
|
-
`),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??
|
|
122
|
+
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function ic(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 eg(e){if(ic(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 tg(e){let t=eg(e),n=Wp(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 ng(e){let t=sc(e);if(!Te(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=xe(t.numTotalTests),s=xe(t.numFailedTests),o=ag(xe(t.startTime),xe(t.endTime));for(let a of n){if(!Te(a))continue;let c=Q(a.name)||Q(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Te(l)&&l.status==="failed"&&r.push({suite:c,name:Q(l.fullName)||Q(l.title)||Q(l.name),excerpt:sg(l.failureMessages)||Q(l.failureMessage)})}return i||=n.reduce((a,c)=>!Te(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>Te(c)?a+xe(c.perfStats&&Te(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function rg(e){let t=e.split(`
|
|
123
|
+
`).filter(Boolean).map(c=>sc(c)).filter(Te);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+=xe(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=xe(c.failed),o+=xe(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Q(c.name).split("::").slice(0,-1).join("::"),name:Q(c.name),excerpt:Q(c.stdout)});continue}if(c.reason==="compiler-message"&&Te(c.message)){let u=Q(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(`
|
|
124
|
+
`)}),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 ig(e,t,n){let r=Buffer.from(e);if(r.length<=ui)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,ui).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
|
|
125
|
+
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${q(i)}`,handle:i,bytesElided:r.length}}function sc(e){try{return JSON.parse(e)}catch{return null}}function sg(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
126
|
+
`):""}function og(e){return`${Number(e.toFixed(1))}s`}function ag(e,t){return e>0&&t>e?(t-e)/1e3:0}function xe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Q(e){return typeof e=="string"?e:""}function Te(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ui,Hp,Kp,zp,di=S(()=>{"use strict";de();Le();xn();ui=320,Hp=160,Kp=ui,zp=3});var pi={};D(pi,{parseCatCommand:()=>mi,renderCatContract:()=>gg,runCatWrapper:()=>pg});import{isUtf8 as cg}from"node:buffer";import{readFile as ug}from"node:fs/promises";import{extname as lg}from"node:path";async function pg(e,t){let n=mi(e),r=await ug(n.file);return dc(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await lc(e,n,r,t)}async function gg(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=mi(e),i=Buffer.from(t.stdout,"utf8");return dc(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await lc(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function mi(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=!1,s=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){i=!0;continue}if(a==="--head"||a==="--tail"){n=a.slice(2),r=uc(t[++o],fi);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=uc(u,fi);continue}s.push(a)}if(s.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:s[0],mode:n,...r?{limit:r}:{},...i?{inlineFull:i}:{}}}async function lc(e,t,n,r){let i=n.toString("utf8"),s=wg(i,t);if(t.inlineFull)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let o=r.level!=="lossless"||n.length>cc(r.heavyByteThreshold,oc)||s.truncated;if(!ac(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ac(t.file)?yg(e,t.file,n,i,r.level,s):hg(e,t.file,n,i,s),c=`${P(a)}
|
|
127
|
+
`;if(!o&&Buffer.byteLength(c)<=cc(r.heavyByteThreshold,oc))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${q(u)}
|
|
128
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function yg(e,t,n,r,i,s){let o=Dn(r),a=i==="terse"?fg:dg,c=Dn(s.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:bg(o),content:{head:u,tail:l,truncated:s.truncated||u.length+l.length<o.length}}}function hg(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Dn(r).length,content:Dn(i.text),truncated:i.truncated}}function wg(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
129
|
+
`),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??fi,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
|
|
125
130
|
`)}${r&&o.length>0?`
|
|
126
|
-
`:""}`,truncated:o.length<i.length}}function
|
|
127
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
131
|
+
`:""}`,truncated:o.length<i.length}}function bg(e){let t=[];for(let n=0;n<e.length;n++){let i=e[n].trim(),s=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(i);if(s){t.push({kind:s[1],name:s[2],line:n+1,signature:i});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(i);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:i});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(i);a&&!_g(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function Dn(e){let t=e.split(`
|
|
132
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function dc(e){return e.includes(0)||!cg(e)}function ac(e){return mg.has(lg(e).toLowerCase())}function _g(e){return["for","if","switch","while"].includes(e)}function cc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function uc(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var oc,fi,dg,fg,mg,gi=S(()=>{"use strict";de();Le();oc=8*1024,fi=10,dg=8,fg=2,mg=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var $n={};D($n,{parseExecCommandLine:()=>pc,renderExecContract:()=>mc,runExecWrapper:()=>Tg});import{isUtf8 as Rg}from"node:buffer";import{spawn as Eg}from"node:child_process";async function Tg(e,t){let n=pc(e),r=await xg(n);return await mc(n,r,t)}async function mc(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=Og(r);if(s.kind==="text"){let d=await bt(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=$g(n.heavyByteThreshold,kg);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(Pg(o,r.length,l,n.level)),stderr:i,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function pc(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 xg(e){let t=Eg(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 Og(e){return Rg(e)?{kind:"text",text:Ye(e.toString("utf8"))}:{kind:"bytes"}}function Pg(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?vg:Sg)/2)),o=fc(e.subarray(0,s)),a=fc(e.subarray(Math.max(0,e.length-s))),c=Dg(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 ${q(n)}`),`${u.join(`
|
|
128
133
|
`)}
|
|
129
|
-
`}function
|
|
130
|
-
`),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(
|
|
131
|
-
`),0);if(n.command==="git"&&
|
|
132
|
-
`),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),f=X(n.positional,"--socket")??p.socketPath,w=X(n.positional,"--wake-lock")??p.wakeLockPath,g=r(process.cwd(),process.env,n.storeUri??X(n.positional,"--store-uri"));if(!g.enabled)return 0;let{warmResidentServer:
|
|
133
|
-
`),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await
|
|
134
|
-
`),1);let m=(p=!0)=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version},{ensureResident:p})),
|
|
135
|
-
`),1;let f=await p.telemetryGains(
|
|
134
|
+
`}function fc(e){return e.toString("utf8").replace(/�$/g,"")}function Dg(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 $g(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var kg,Sg,vg,In=S(()=>{"use strict";Le();_t();kg=8*1024,Sg=2*1024,vg=1024});de();import{spawn as Ig}from"node:child_process";import{createHash as Ag}from"node:crypto";import{appendFileSync as gc,existsSync as wi,mkdirSync as Ng,readFileSync as Bg,readdirSync as Lg,statSync as Cg}from"node:fs";import{tmpdir as Mg}from"node:os";import{dirname as yc,join as Z}from"node:path";function Vi(e){let t={app:e,version:bu(He("__RED_BUILD_VERSION__",()=>"2.55.6")??"0.0.0-dev"),gitSha:He("__RED_BUILD_GIT_SHA__",()=>"e2ee7701007c700297ce5326a0cfa799eeff0b17")??"unknown",buildTime:He("__RED_BUILD_TIME__",()=>"2026-07-14T08:59:46-03:00")??"unknown",bundleAsset:He("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=He("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=He("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function bu(e){return e.startsWith("v")?e.slice(1):e}function He(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Hn();async function jg(e=process.argv.slice(2)){let t=Vi("rsp"),n=ey(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(sn(),rr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(sn(),rr));return await p()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(_t(),sr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(_t(),sr));return await p()}if(n.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(No(),Ao)),f=await p(process.cwd());return process.stdout.write(ly(f)),0}if(n.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Fo(),Uo));return await p(),0}if(n.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Ko(),Ho));return await p(n.positional)}if(n.command==="shell-init"){let p=n.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
|
|
135
|
+
`),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(Qo(),Yo));return process.stdout.write(f(p)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(K(),ws)),i=r(process.cwd(),process.env,n.storeUri),s=Xg(n.command);if(!i.enabled)return s?await Qg(n.positional):(process.stdout.write(`${ki()}
|
|
136
|
+
`),0);if(n.command==="git"&&bi(n.positional)){let p=process.hrtime.bigint();return await C(n,await _i(),p,void 0,await Ug(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ie(),yt));if(n.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(ja(),Ma)),f=o(process.cwd()),w=X(n.positional,"--socket")??f.socketPath,g=r(process.cwd(),process.env,n.storeUri??X(n.positional,"--store-uri"));return g.enabled?(await p({socketPath:w,pidPath:X(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:f.rootDir,storeUri:g.storeUri,ttlDays:N(n.positional,"--ttl-days")??g.ttlDays,byteBudget:N(n.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??g.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??g.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??g.idleMs,residentVersion:X(n.positional,"--resident-version")??t.version,registryPath:X(n.positional,"--registry")??f.registryPath}),0):(process.stdout.write(`${ki()}
|
|
137
|
+
`),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),f=X(n.positional,"--socket")??p.socketPath,w=X(n.positional,"--wake-lock")??p.wakeLockPath,g=r(process.cwd(),process.env,n.storeUri??X(n.positional,"--store-uri"));if(!g.enabled)return 0;let{warmResidentServer:k}=await Promise.resolve().then(()=>(Ie(),yt));return await k({...p,socketPath:f,wakeLockPath:w},{storeUri:g.storeUri,ttlDays:N(n.positional,"--ttl-days")??g.ttlDays,byteBudget:N(n.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:N(n.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:N(n.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,telemetryDrainIntervalMs:N(n.positional,"--telemetry-drain-interval-ms")??g.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:N(n.positional,"--telemetry-drain-timeout-ms")??g.telemetryDrainTimeoutMs,idleMs:N(n.positional,"--idle-ms")??g.idleMs,clientVersion:t.version}),0}let{existsSync:u}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),d=o(process.cwd());if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:f}=await Promise.resolve().then(()=>(Ie(),yt)),w=n.command==="sweep"?await f(d):await p(d);return process.stdout.write(`${P(w)}
|
|
138
|
+
`),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await qg(n,i,d.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
|
|
139
|
+
`),1);let m=(p=!0)=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version},{ensureResident:p})),_=()=>c(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version}),R=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(mn(),Or));return await p.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},T=()=>i.storeUri.endsWith("/red-skills.rdb")?m():R(),v;try{if(!n.command||n.command==="stats"){let p=await T();v=()=>p.close();let f=await p.stats(),w=Gg(p)?await p.telemetryStats(yi(n.positional,30)):_c(yi(n.positional,30));return process.stdout.write(ny(f,w,ty(n.positional))),0}if(n.command==="gains"){let p=await T();if(v=()=>p.close(),!Jg(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
|
|
140
|
+
`),1;let f=await p.telemetryGains(yi(n.positional,28));return process.stdout.write(ry(f)),0}if(n.command==="git"){if(je(_()),bi(n.positional)){let k=process.hrtime.bigint();return await C(n,await _i(),k,void 0,d.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Le(),ri)),f=new Me(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyGitByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="gh"){je(_());let{runGhWrapper:p}=await Promise.resolve().then(()=>(ci(),ai)),f=new Me(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f});return await C(n,g,w,f,d.rootDir)}if(n.command==="vitest"||n.command==="cargo"){je(_());let{runTestWrapper:p}=await Promise.resolve().then(()=>(di(),li)),f=new Me(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f});return await C(n,g,w,f,d.rootDir)}if(n.command==="cat"){je(_());let{runCatWrapper:p}=await Promise.resolve().then(()=>(gi(),pi)),f=new Me(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="exec"){je(_());let{runExecWrapper:p}=await Promise.resolve().then(()=>(In(),$n)),f=new Me(()=>m(!1));v=()=>f.close();let w=process.hrtime.bigint(),g=await p(n.positional,{level:n.level,store:f,heavyByteThreshold:i.heavyGitByteThreshold});return await C(n,g,w,f,d.rootDir)}if(n.command==="show"&&n.handle){let p=await T();v=()=>p.close();let f=await p.get(n.handle);return f&&"original"in f&&f.original?(process.stdout.write(f.original),0):f?.status==="expired"?(process.stdout.write(`expired ${f.expired_at} \u2014 re-run: ${f.command}
|
|
136
141
|
`),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
|
|
137
142
|
`),1)}return process.stdout.write(`error: usage rsp show el:<id>
|
|
138
|
-
`),2}catch(p){if(s)return await
|
|
143
|
+
`),2}catch(p){if(s)return await Ei("wrapper failed",n.positional,p,d.rootDir);throw p}finally{await v?.()}}function X(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function N(e,t){let n=X(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function bi(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function _i(){if(Fg(process.cwd()))return{stdout:Buffer.from(`git empty
|
|
139
144
|
`),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
|
|
140
145
|
`),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
|
|
141
|
-
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function
|
|
142
|
-
`;try{
|
|
143
|
-
`);let i=await
|
|
144
|
-
`),await
|
|
145
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function
|
|
146
|
+
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Ug(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ie(),yt));return t(e).rootDir}catch{return e}}function Fg(e){try{return!wi(`${e}/.git`)||wi(`${e}/.git/index`)?!1:Lg(e).every(t=>t===".git")}catch{return!1}}function Gg(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function Jg(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Me=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Ri=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function qg(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new Ri,s=process.hrtime.bigint();try{if(e.command==="git"){if(bi(e.positional))return await C(e,await _i(),s,i,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Le(),ri)),a=await o(e.positional,{level:e.level,store:i,heavyGitByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(ci(),ai)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(di(),li)),a=await o(e.positional,{level:e.level,store:i});return await C(e,a,s,i,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(gi(),pi)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(In(),$n)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i)}}catch(o){return await Ei("wrapper failed",e.positional,o,n)}finally{await i.close()}return await Ei("wrapper failed",e.positional,r,n)}async function C(e,t,n,r,i=process.cwd(),s){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(je(zg(i,e,t,o,r.lastResponseMetrics())),s&&Vg(i,s)):Yg(i,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Vg(e,t){try{let n=Z(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=Cg(n),i=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Kg(n,Date.now()-i))return;let s=Wg(e),o=Hg(s),a=Z(o,"rsp.sock"),c=Z(o,"rsp.pid"),u=Z(s,".red","tmp","rsp-resident.pid.json"),l=Z(s,".red","tmp","rsp.wake.lock");Ig(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:s,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Wg(e){let t=e;for(;;){if(wi(Z(t,".git")))return t;let n=yc(t);if(n===t)return e;t=n}}function Hg(e){let t=Ag("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=Z(n,"red-skills",t);if(Z(i,"rsp.sock").length<108)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Z(Mg(),`red-skills-${r}`,t)}function Kg(e,t){try{let n=Bg(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let i=JSON.parse(r),s=typeof i.created_at=="string"?i.created_at:i.ts;if(typeof s=="string"){let o=Date.parse(s);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function zg(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(()=>(vn(),Yr));await a(e,{collection:c,ts:new Date().toISOString(),command:wc(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 Yg(e,t,n,r){try{let i=Buffer.concat([n.stdout,n.stderr]),s=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=Z(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:wc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
|
|
147
|
+
`;try{gc(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;Ng(yc(o),{recursive:!0}),gc(o,a,{encoding:"utf8",mode:384})}}catch{}}async function Ei(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
|
|
148
|
+
`);let i=await hc(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(vn(),Yr));je(s(r,{collection:o,ts:new Date().toISOString(),command:bc(t),reason:e}))}return i}function je(e){e.catch(()=>{})}async function Qg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${ki()}, passing through
|
|
149
|
+
`),await hc(e)}function ki(){return"rsp is not enabled in this directory; run /red-setup"}function Xg(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function hc(e){if(e[0]==="exec")return await Zg(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)}
|
|
150
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Zg(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>(In(),$n));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
|
|
146
151
|
`),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)}
|
|
147
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function
|
|
148
|
-
`)}function
|
|
149
|
-
`}function
|
|
150
|
-
`)}import.meta.url===`file://${process.argv[1]}`&&
|
|
151
|
-
`),process.exit(1)});export{
|
|
152
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function wc(e){return bc(e.positional)}function bc(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 ey(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 yi(e,t){let n=X(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 ty(e){return e.includes("--full")}function ny(e,t=_c(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: ${iy(t.savings)}`,` dollars_saved_estimate_usd: ${sy(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:",...oy(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...ay(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${uy(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:",...cy(t.health.by_reason),"latency:",` wrapper_ms_p50: ${hi(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${hi(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: ${hi(t.latency.store_elapsed_ms_avg)}`,""].join(`
|
|
153
|
+
`)}function ry(e){return`${P(e)}
|
|
154
|
+
`}function iy(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 sy(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?ft(e.dollars_saved_estimate_usd):`${ft(e.dollars_saved_low_usd)}-${ft(e.dollars_saved_high_usd)} (estimate_midpoint: ${ft(e.dollars_saved_estimate_usd)})`}function oy(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function ay(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 cy(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function hi(e){return e==null?"none":String(e)}function uy(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function _c(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 ly(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
|
|
155
|
+
`)}import.meta.url===`file://${process.argv[1]}`&&jg().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
|
|
156
|
+
`),process.exit(1)});export{jg as main,ly as renderSetupResult,ny as renderStats};
|