@reddb-io/red-skills 2.55.0 → 2.55.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,56 +1,55 @@
|
|
|
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 Mn(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 U(e,t){try{return t()}catch(n){throw n instanceof G?n:n instanceof Error?new G(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function Pi(e){return e==="true"||e==="false"||e==="null"}function wc(e){if(!e||!hc.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 b=e.length-r.length+f+1;i=e.indexOf("[",b)}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 w=f.trim();throw new SyntaxError(w===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${w}" between bracket and fields segment`)}return}let b=e.indexOf("}",c);b!==-1&&(a=b+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('"')?Ln(f):f}let m=e.slice(o+1).trim(),h=e.slice(i+1,s),_;try{_=_c(h,t)}catch(f){if(n)throw f;return}let{length:x,delimiter:k}=_,p;if(c!==-1&&c<o){let f=e.indexOf("}",c);if(f!==-1&&f<o){let b=e.slice(c+1,f),w=Ec(b,k);if(w!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Ei(k)}" but fields segment contains unquoted "${Ei(w)}"`);return}p=jn(b,k).map(T=>Ln(T.trim()))}}return{header:{key:d,length:x,delimiter:k,fields:p},inlineValues:m||void 0}}function _c(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)),!bc.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 Ec(e,t){for(let n of Rc)if(n!==t&&Mn(e,n)!==-1)return n}function Ei(e){return e===" "?"\\t":e}function jn(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 Di(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Ln(t);if(Pi(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(wc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Ln(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 Oi(t.slice(1,n))}return t}function kc(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 Sc(e,t){let n=Ft(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Oi(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 vc(e,t){let n=e[t]==='"';return{...n?Sc(e,t):kc(e,t),isQuoted:n}}function $i(e){return e.trim().startsWith("[")&&Mn(e,":")!==-1}function Tc(e){return Mn(e,":")!==-1}function xc(){return{lineNumber:0,blankLines:[]}}function Oc(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=ki(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=ki(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new G("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new G(`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*Pc(e,t,n,r){for(let i of e){let s=Oc(i,r,t,n);s!==void 0&&(yield s)}}function ki(e,t){return Math.floor(e/t)}function lt(e,t,n,r,i){if(r.strict&&e!==t)throw new G(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Dc(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new G(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function $c(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ic(e.content,n.delimiter))throw new G(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Ii(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new G(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ic(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Nc(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=xc(),i=new Ac(Pc(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($i(s.content)){let a=U(s,()=>jt(s.content,K,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!vi(s)){yield{type:"primitive",value:U(s,()=>Jt(s.content.trim()))};return}if(!vi(s)&&i.peekSync()?.depth===0)throw new G("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 Si(e,t,n){if(n){if(n.has(e))throw new G(`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=U(e,()=>jt(s,K,r.strict));if(o&&o.header.key!==void 0){Si(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}=U(e,()=>vc(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(Si(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*Bc(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:U(e,()=>Jt(l))}}function*Bc(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*Lc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Cc(e,n,r,i,s),yield{type:"endArray"};return}yield*Mc(e,n,r,i,s),yield{type:"endArray"}}function*Lc(e,t,n,r){if(!t.trim()){lt(0,e.length,"inline array items",n,r);return}let i=U(r,()=>jn(t,e.delimiter)),s=U(r,()=>Di(i));lt(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Cc(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=U(l,()=>jn(l.content,e.delimiter));lt(d.length,e.fields.length,"tabular row values",r,l);let m=U(l,()=>Di(d));yield*Uc(e.fields,m),o++}else break}lt(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Ii(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&$c(t.peekSync(),s,e)}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;let d=l.content.startsWith("- ")||l.content==="-";if(l.depth===s&&d){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,yield*jc(t,s,r);let m=t.current();m&&(c=m.lineNumber,u=m),o++}else break}lt(o,e.length,"list array items",r,u),r.strict&&a!==void 0&&c!==void 0&&Ii(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Dc(t.peekSync(),s,e.length)}function*jc(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 G('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($i(i)){let a=U(s,()=>jt(i,K,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=U(s,()=>jt(i,K,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(Tc(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:U(s,()=>Jt(i))}}function vi(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*Uc(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(Gc(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=te(e[n]));return t}return null}function $e(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function fe(e){return Array.isArray(e)}function I(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function dt(e){return Object.keys(e).length===0}function Gc(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function ft(e){return e.length===0||e.every(t=>$e(t))}function Fc(e){return e.length===0||e.every(t=>fe(t))}function Ai(e){return e.length===0||e.every(t=>I(t))}function Vc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Ni(e){return/^[A-Z_]\w*$/i.test(e)}function Hc(e,t=K){return!(!e||e!==e.trim()||Pi(e)||Wc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Wc(e){return Jc.test(e)||qc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if(I(e)){let n={},r=e[Bi];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=>Ni(u))){Kc(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Gn(c,a))Un(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function Kc(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(I(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))Un(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Un(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Gn(s,i))Un(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Gn(e,t){return I(e)&&I(t)}function zc(e){let t={stack:[],root:void 0};for(let n of e)Yc(t,n);return Qc(t)}function Yc(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,Bi,{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 Qc(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 Xc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!I(t))return;let{segments:a,tail:c,leafValue:u}=Zc(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Ni(m)))return;let l=eu(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 Zc(e,t,n){let r=[e],i=t;for(;r.length<n&&I(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!I(i)||dt(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function eu(e){return e.join(".")}function qe(e,t){return e===null?gc:typeof e=="boolean"||typeof e=="number"?String(e):tu(e,t)}function tu(e,t=K){return Hc(e,t)?e:`"${xi(e)}"`}function Ve(e){return Vc(e)?e:`"${xi(e)}"`}function Li(e,t=K){return e.map(n=>qe(n,t)).join(t)}function Ie(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=Ve(n)),s+=`[${e}${i!==K?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*nu(e,t,n){if($e(e)){let r=qe(e,t.delimiter);r!==""&&(yield r);return}fe(e)?yield*Cn(void 0,e,n,t):I(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*ru(c,u,t,n,o,r,i,a)}function*ru(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=Xc(e,t,i,r,s,o,u);if(d){let{foldedKey:m,remainder:h,leafValue:_,segmentCount:x}=d,k=Ve(m);if(h===void 0){if($e(_)){yield C(n,`${k}: ${qe(_,r.delimiter)}`,r.indent);return}else if(fe(_)){yield*Cn(m,_,n,r);return}else if(I(_)&&dt(_)){yield C(n,`${k}:`,r.indent);return}}if(I(h)){yield C(n,`${k}:`,r.indent);let p=u-x,f=o?`${o}.${m}`:m;yield*Je(h,n+1,r,s,f,p);return}}}let l=Ve(e);$e(t)?yield C(n,`${l}: ${qe(t,r.delimiter)}`,r.indent):fe(t)?yield*Cn(e,t,n,r):I(t)&&(yield C(n,`${l}:`,r.indent),dt(t)||(yield*Je(t,n+1,r,s,c,u)))}function*Cn(e,t,n,r){if(t.length===0){yield C(n,e!=null?`${Ve(e)}: []`:"[]",r.indent);return}if(ft(t)){yield C(n,qt(t,r.delimiter,e),r.indent);return}if(Fc(t)&&t.every(i=>ft(i))){yield*iu(e,t,n,r);return}if(Ai(t)){let i=Ci(t);i?yield*su(e,t,i,n,r):yield*Ti(e,t,n,r);return}yield*Ti(e,t,n,r)}function*iu(e,t,n,r){yield C(n,Ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(ft(i)){let s=qt(i,r.delimiter);yield W(n+1,s,r.indent)}}function qt(e,t,n){let r=Ie(e.length,{key:n,delimiter:t}),i=Li(e,t);return e.length===0?r:`${r} ${i}`}function*su(e,t,n,r,i){yield C(r,Ie(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Mi(t,n,r+1,i)}function Ci(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&ou(e,n))return n}function ou(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)||!$e(n[r]))return!1}return!0}function*Mi(e,t,n,r){for(let i of e)yield C(n,Li(t.map(s=>i[s]),r.delimiter),r.indent)}function*Ti(e,t,n,r){yield C(n,Ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Fn(i,n+1,r)}function*au(e,t,n){if(dt(e)){yield C(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(fe(s)&&Ai(s)){let c=Ci(s);if(c){yield W(t,Ie(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*Mi(s,c,t+2,n),o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n));return}}let a=Ve(i);if($e(s))yield W(t,`${a}: ${qe(s,n.delimiter)}`,n.indent);else if(fe(s))if(s.length===0)yield W(t,`${a}: []`,n.indent);else if(ft(s))yield W(t,`${a}${qt(s,n.delimiter)}`,n.indent);else{yield W(t,`${a}${Ie(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Fn(c,t+2,n)}else I(s)&&(yield W(t,`${a}:`,n.indent),dt(s)||(yield*Je(s,t+2,n)));o.length>0&&(yield*Je(Object.fromEntries(o),t+1,n))}function*Fn(e,t,n){if($e(e))yield W(t,qe(e,n.delimiter),n.indent);else if(fe(e))if(ft(e))yield W(t,qt(e,n.delimiter),n.indent);else{yield W(t,Ie(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Fn(r,t+1,n)}else I(e)&&(yield*au(e,t,n))}function C(e,t,n){return" ".repeat(n*e)+t}function W(e,t,n){return C(e,"- "+t,n)}function cu(e,t){let n=t("",e,[]);return n===void 0?Gt(e,t,[]):Gt(te(n),t,[])}function Gt(e,t,n){return I(e)?uu(e,t,n):fe(e)?lu(e,t,n):e}function uu(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(te(a),t,o))}return r}function lu(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(Gt(c,t,o))}return r}function P(e,t){return Array.from(ji(e,t)).join(`
|
|
5
|
-
`)}function Jn(e,t){return
|
|
6
|
-
`),t)}function
|
|
7
|
-
`)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let u=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return bu(u)}}var
|
|
3
|
+
var gc=Object.defineProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>{for(var n in t)gc(e,n,{get:t[n],enumerable:!0})};function Oi(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 Pi(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 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 Mn(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 Di(e){return e==="true"||e==="false"||e==="null"}function wc(e){if(!e||!hc.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('"')?Ln(f):f}let m=e.slice(o+1).trim(),b=e.slice(i+1,s),_;try{_=_c(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=Ec(w,v);if(g!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${ki(v)}" but fields segment contains unquoted "${ki(g)}"`);return}p=jn(w,v).map(E=>Ln(E.trim()))}}return{header:{key:d,length:T,delimiter:v,fields:p},inlineValues:m||void 0}}function _c(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)),!bc.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 Ec(e,t){for(let n of Rc)if(n!==t&&Mn(e,n)!==-1)return n}function ki(e){return e===" "?"\\t":e}function jn(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 $i(e){return e.map(t=>Jt(t))}function Jt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Ln(t);if(Di(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(wc(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Ln(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 Pi(t.slice(1,n))}return t}function kc(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 Sc(e,t){let n=Ft(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=Pi(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 vc(e,t){let n=e[t]==='"';return{...n?Sc(e,t):kc(e,t),isQuoted:n}}function Ii(e){return e.trim().startsWith("[")&&Mn(e,":")!==-1}function Tc(e){return Mn(e,":")!==-1}function xc(){return{lineNumber:0,blankLines:[]}}function Oc(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=Si(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Si(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*Pc(e,t,n,r){for(let i of e){let s=Oc(i,r,t,n);s!==void 0&&(yield s)}}function Si(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 Dc(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 $c(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ic(e.content,n.delimiter))throw new U(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Ai(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 Ic(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Nc(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=xc(),i=new Ac(Pc(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(Ii(s.content)){let a=j(s,()=>jt(s.content,H,n.strict));if(a){i.advanceSync(),yield*Ut(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Ti(s)){yield{type:"primitive",value:j(s,()=>Jt(s.content.trim()))};return}if(!Ti(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 vi(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,H,r.strict));if(o&&o.header.key!==void 0){vi(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,()=>vc(s,0)),u=s.indexOf(":",a.length),l=u>=0?s.slice(u+1).trim():"";if(vi(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*Bc(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*Bc(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*Lc(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Cc(e,n,r,i,s),yield{type:"endArray"};return}yield*Mc(e,n,r,i,s),yield{type:"endArray"}}function*Lc(e,t,n,r){if(!t.trim()){ct(0,e.length,"inline array items",n,r);return}let i=j(r,()=>jn(t,e.delimiter)),s=j(r,()=>$i(i));ct(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Cc(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,()=>jn(l.content,e.delimiter));ct(d.length,e.fields.length,"tabular row values",r,l);let m=j(l,()=>$i(d));yield*Uc(e.fields,m),o++}else break}ct(o,e.length,"tabular rows",r,u),r.strict&&a!==void 0&&c!==void 0&&Ai(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&$c(t.peekSync(),s,e)}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;let d=l.content.startsWith("- ")||l.content==="-";if(l.depth===s&&d){a===void 0&&(a=l.lineNumber),c=l.lineNumber,u=l,yield*jc(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&&Ai(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Dc(t.peekSync(),s,e.length)}function*jc(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(Ii(i)){let a=j(s,()=>jt(i,H,n.strict));if(a){yield*Ut(a.header,a.inlineValues,e,t,n,s);return}}let o=j(s,()=>jt(i,H,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*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(Tc(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 Ti(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*Uc(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(Gc(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 Gc(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 Fc(e){return e.length===0||e.every(t=>de(t))}function Ni(e){return e.length===0||e.every(t=>$(t))}function Vc(e){return/^[A-Z_][\w.]*$/i.test(e)}function Bi(e){return/^[A-Z_]\w*$/i.test(e)}function Hc(e,t=H){return!(!e||e!==e.trim()||Di(e)||Wc(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Wc(e){return Jc.test(e)||qc.test(e)}function Ct(e,t){if(Array.isArray(e))return e.map(n=>Ct(n,t));if($(e)){let n={},r=e[Li];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=>Bi(u))){Kc(n,c,Ct(s,t),t);continue}}let a=Ct(s,t);if(i in n){let c=n[i];if(Gn(c,a))Un(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function Kc(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))Un(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function Un(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Gn(s,i))Un(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Gn(e,t){return $(e)&&$(t)}function zc(e){let t={stack:[],root:void 0};for(let n of e)Yc(t,n);return Qc(t)}function Yc(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,Li,{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 Qc(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 Xc(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!$(t))return;let{segments:a,tail:c,leafValue:u}=Zc(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Bi(m)))return;let l=eu(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 Zc(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 eu(e){return e.join(".")}function qe(e,t){return e===null?yc:typeof e=="boolean"||typeof e=="number"?String(e):tu(e,t)}function tu(e,t=H){return Hc(e,t)?e:`"${Oi(e)}"`}function Ve(e){return Vc(e)?e:`"${Oi(e)}"`}function Ci(e,t=H){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!==H?i:""}]`,r){let o=r.map(a=>Ve(a));s+=`{${o.join(i)}}`}return s+=":",s}function*nu(e,t,n){if(Pe(e)){let r=qe(e,t.delimiter);r!==""&&(yield r);return}de(e)?yield*Cn(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*ru(c,u,t,n,o,r,i,a)}function*ru(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=Xc(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*Cn(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*Cn(e,t,n,r):$(t)&&(yield B(n,`${l}:`,r.indent),ut(t)||(yield*Je(t,n+1,r,s,c,u)))}function*Cn(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(Fc(t)&&t.every(i=>lt(i))){yield*iu(e,t,n,r);return}if(Ni(t)){let i=Mi(t);i?yield*su(e,t,i,n,r):yield*xi(e,t,n,r);return}yield*xi(e,t,n,r)}function*iu(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=Ci(e,t);return e.length===0?r:`${r} ${i}`}function*su(e,t,n,r,i){yield B(r,De(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*ji(t,n,r+1,i)}function Mi(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&ou(e,n))return n}function ou(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*ji(e,t,n,r){for(let i of e)yield B(n,Ci(t.map(s=>i[s]),r.delimiter),r.indent)}function*xi(e,t,n,r){yield B(n,De(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Fn(i,n+1,r)}function*au(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)&&Ni(s)){let c=Mi(s);if(c){yield V(t,De(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*ji(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*Fn(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*Fn(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*Fn(r,t+1,n)}else $(e)&&(yield*au(e,t,n))}function B(e,t,n){return" ".repeat(n*e)+t}function V(e,t,n){return B(e,"- "+t,n)}function cu(e,t){let n=t("",e,[]);return n===void 0?Gt(e,t,[]):Gt(ee(n),t,[])}function Gt(e,t,n){return $(e)?uu(e,t,n):de(e)?lu(e,t,n):e}function uu(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 lu(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(Ui(e,t)).join(`
|
|
5
|
+
`)}function Jn(e,t){return Gi(e.split(`
|
|
6
|
+
`),t)}function Ui(e,t){let n=ee(e),r=du(t);return nu(r.replacer?cu(n,r.replacer):n,r,0)}function Gi(e,t){let n=fu(t),r=zc(Nc(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ct(r,n.strict):r}function du(e){return{indent:e?.indent??2,delimiter:e?.delimiter??H,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function fu(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var yc,Mt,H,U,hc,bc,Rc,Ac,Jc,qc,Li,Fi=S(()=>{yc="null",Mt={comma:",",tab:" ",pipe:"|"},H=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}};hc=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;bc=/^(?:0|[1-9]\d*)$/;Rc=[","," ","|"];Ac=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}};Jc=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,qc=/^0\d+$/;Li=Symbol("quotedKey")});var fe=S(()=>{"use strict";Fi()});function Vn(e,t,n=qi){let r=Math.max(0,Math.floor(e)),i=n in Vi?n:qi,s=Vi[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:qn(r,s),dollars_saved_low_usd:o==null?null:qn(o,s),dollars_saved_high_usd:a==null?null:qn(a,s),pricing_model_family:i,pricing_input_usd_per_million_tokens:s,pricing_note:pu}}function qn(e,t){return gu(Math.max(0,e)/1e6*t)}function dt(e){return`$${e.toFixed(6)}`}function gu(e){return Math.round(e*1e6)/1e6}var qi,Vi,pu,Hn=S(()=>{"use strict";qi="gpt-5",Vi={"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},pu="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as yu,readFileSync as ay}from"node:fs";import{dirname as hu,join as wu}from"node:path";function Hi(e,t){let n=e;for(let r=0;r<16;r++){let i=wu(n,t);if(yu(i))return i;let s=hu(n);if(s===n)break;n=s}return null}function bu(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Wn(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 bu(u)}}var Wi=S(()=>{});import{createConnection as _u}from"node:net";async function We(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=_u(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 Su(r,e)}async function Yt(e,t=process.pid){try{let n=await yt(e);if(n&&n.pid!==t)return;await z(e,{force:!0})}catch{}}async function pt(e){let t=await yt(e.registryPath);if(!t)try{return await Zi(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 re(t.socket_path,100);return n&&await Iu(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 is(e){let t=await pt(e);return t.state==="registered-dead"||t.state==="invalid"?(await z(e.registryPath,{force:!0}),await pt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await os(t.entry.pid),await z(e.registryPath,{force:!0}),await z(t.entry.socket_path,{force:!0}),await pt(e)):t}async function Wi(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await re(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 Pu(e){await z(e,{force:!0})}async function ss(e){await Vt(pe(e),{recursive:!0,mode:448});try{return await ku(e,zn.O_CREAT|zn.O_EXCL|zn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Du(e,t){let[n,r]=as(t),i=Xi(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 Ki(e,t){try{let n=await yt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Ke(n.pid)){await z(e.registryPath,{force:!0});return}if(await re(n.socket_path,100))return;if(cs(t.clientVersion,n.resident_version)&&(await $u(n.pid,1500),!Ke(n.pid))){await z(e.registryPath,{force:!0});return}await os(n.pid),await z(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 os(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 $u(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function Iu(e){if(!e.startsWith("file://"))return!1;try{return await vu(es(e)),!1}catch(t){return t.code==="ENOENT"}}function as(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Ht(process.argv[1]):es(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Au(e){let t=Ru("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<Ou)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return F(xu(),`red-skills-${r}`,t)}function Nu(e){let t=Ht(e);for(let n=0;n<32;n++){try{let i=Yn(F(t,".git"));if(i!=null)return Bu(t,i)??t;if(Yn(F(t,".git","HEAD"))!=null||Yn(F(t,".red","config.yaml"))!=null)return t}catch{}let r=pe(t);if(r===t)return null;t=r}return null}function Bu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ht(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?pe(pe(pe(r))):null}function Yn(e){try{return Eu(e,"utf8")}catch{return null}}async function zi(e,t){let n=await ns(e).catch(()=>null);return n?cs(t.clientVersion,n.version)?(await Lu(e,t.clientVersion),await Uu(e),!1):!0:!1}async function Lu(e,t){try{await We({socketPath:e,timeoutMs:200},{id:Qi(),op:"handover",clientVersion:t})}catch{}}function cs(e,t){return!e||!t?!1:Cu(e,t)>0}function Cu(e,t){let n=Yi(e),r=Yi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Yi(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 us(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mu(e){return typeof e=="string"&&e.length>0?e:void 0}function ju(e){return us(e)&&e.version===ts&&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 Uu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await re(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ou,ts,Qt=v(()=>{Kn();Ou=108,ts=1});var ys={};$(ys,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>se,DEFAULT_RSP_IDLE_MS:()=>nn,DEFAULT_RSP_STORE_PATH:()=>Zt,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>fs,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>ms,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>oe,MIN_RSP_IDLE_MS:()=>ps,resolveRspConfig:()=>ge});import{readFileSync as Gu}from"node:fs";import{join as ls,resolve as ds}from"node:path";function ge(e,t,n){let r=Vi(ds(e),ls(".red","config.yaml")),i=r?Gu(r,"utf8"):"",s=Wn(i,"rsp.enabled")==="true",o=ye(ie(i,"rsp.ttlDays"),oe),a=ye(ie(i,"rsp.byteBudget"),ae),c=ye(ie(i,"rsp.telemetryTtlDays"),en),u=ye(ie(i,"rsp.telemetryByteBudget")??ie(i,"rsp.byteBudget"),tn),l=ye(Xt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ie(i,"rsp.telemetryDrainIntervalMs"),fs),d=ye(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ie(i,"rsp.telemetryDrainTimeoutMs"),ms),m=Fu(Xt(t.RSP_IDLE_MS)??ie(i,"rsp.idleMs"),nn,ps),h=ye(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ie(i,"rsp.heavyGitByteThreshold"),se),_=ne(e).rootDir,x=n??t.RSP_STORE_URI??`file://${ls(ds(_),Zt)}`;return{enabled:s,storeUri:x,ttlDays:o,byteBudget:a,telemetryTtlDays:c,telemetryByteBudget:u,telemetryDrainIntervalMs:l,telemetryDrainTimeoutMs:d,idleMs:m,heavyGitByteThreshold:h}}function ie(e,t){let n=Wn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ye(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Fu(e,t,n){let r=ye(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 se,Zt,oe,ae,en,tn,fs,ms,nn,ps,Y=v(()=>{"use strict";Hi();Qt();se=8*1024,Zt=".red/tmp/red-skills.rdb",oe=7,ae=64*1024*1024,en=90,tn=4*1024*1024,fs=3e4,ms=2e3,nn=5*6e4,ps=5e3});var gs=v(()=>{"use strict";Kn()});var ze={};$(ze,{ResidentRspElisionStore:()=>gt,ensureResidentServer:()=>Wt,kickResidentServer:()=>Kt,pingResident:()=>re,readResidentRegistry:()=>yt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>pt,resolveResidentPaths:()=>ne,sweepResidentRegistry:()=>is,warmResidentServer:()=>rs,writeResidentRegistry:()=>zt});import{randomUUID as Ju}from"node:crypto";function hs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var gt,he=v(()=>{"use strict";gs();Qt();gt=class{constructor(t,n){this.paths=t;this.config=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let i=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!i?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return i}async get(t){let n=await this.request({op:"get",handle:t});return n?hs(n)&&n.status==="expired"?n:!hs(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){await Wt(this.paths,this.config);let n=await We(this.paths,{...t,id:Ju()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var tr={};$(tr,{RSP_WRAPPER_CAPABILITIES:()=>wt,formatCodexHookDecision:()=>Ss,formatHookDecision:()=>ks,hookDecisionFromClaudePreExecJson:()=>_s,hookDecisionFromCodexPreExecJson:()=>Rs,rewriteCommand:()=>bs,rewriteTableFromCapabilities:()=>ws,runClaudePreExecHook:()=>Ku,runCodexPreExecHook:()=>zu});import{readFileSync as rn}from"node:fs";import{existsSync as qu}from"node:fs";import{fileURLToPath as Vu}from"node:url";function ws(e){let t=new Map;for(let n of e)t.set(ht(n.command),["rsp",...n.wrapper]);return t}function bs(e){let t=nl(e);if(!t||t.length>0&&Ts(t[0]))return Xn(e);let n=Wu(t);if(n)return n;let r=Hu.get(ht(t));if(!r)return Xn(e);let i=wt.find(s=>ht(s.command)===ht(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??ht(t)}}function Wu(e){let t=e[0];return t==="cat"&&e.length===2&&Qn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Qn(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])&&Qn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Qn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function _s(e,t){return await Es(e,t)}async function Rs(e,t){return await Es(e,t)}async function Es(e,t){let n=dl(e),r=J(n,["cwd"])||J(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Yu)(r))return{kind:"passthrough",reason:"disabled"};let s=tl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??bs)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Qu)(r)?o:(await(t.wakeResident??Xu)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function ks(e){return e.kind==="rewrite"?{stdout:`${e.command}
|
|
11
|
-
`,status:0}:{stdout:"",status:1}}function
|
|
12
|
-
`,status:0}}async function Ku(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await
|
|
13
|
-
`),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function
|
|
9
|
+
`);if(d<0)return;let m=a.slice(0,d);u(()=>{try{r(JSON.parse(m))}catch(b){i(b)}}),s.end()}),s.on("error",l=>u(()=>i(l))),s.on("close",()=>{o||u(()=>i(new Error("resident rsp server closed without response")))})})}var Kn=S(()=>{});import{createHash as Ru,randomUUID as Xi}from"node:crypto";import{spawn as Zi}from"node:child_process";import{constants as zn}from"node:fs";import{readFileSync as Eu}from"node:fs";import{mkdir as Vt,open as ku,readFile as es,rename as Su,rm as W,stat as vu,writeFile as Tu}from"node:fs/promises";import{tmpdir as xu}from"node:os";import{dirname as me,join as G,resolve as Ht}from"node:path";import{fileURLToPath as ts}from"node:url";function te(e){let t=Nu(e)??Ht(e),n=Au(t);return{rootDir:t,socketPath:G(n,"rsp.sock"),pidPath:G(n,"rsp.pid"),lockPath:G(n,"rsp.lock"),wakeLockPath:G(t,".red","tmp","rsp.wake.lock"),summaryPath:G(t,".red","tmp","rsp-status-summary.json"),registryPath:G(t,".red","tmp","rsp-resident.pid.json")}}async function Wt(e,t){if(await Vt(me(e.socketPath),{recursive:!0,mode:448}),await Yi(e.socketPath,t))return;await zi(e,t);let n=await os(e.lockPath);if(n)try{if(await Yi(e.socketPath,t))return;await zi(e,t),await Pu(e.socketPath);let r=Du(e,t);await Ki(e.socketPath,r);return}finally{await n.close(),await W(e.lockPath,{force:!0})}await Ki(e.socketPath)}async function ne(e,t=200){try{return await rs(e,t)!=null}catch{return!1}}async function rs(e,t=200){let n=await We({socketPath:e,timeoutMs:t},{id:Xi(),op:"ping"});return n.ok?ls(n.value)?{version:Mu(n.value.version)}:{}:null}async function Kt(e,t){if(await Vt(me(e.socketPath),{recursive:!0,mode:448}),await ne(e.socketPath,50))return!1;let n=await os(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=cs(t);return Zi(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 is(e,t){try{await Wt(e,t)}finally{await W(e.wakeLockPath,{force:!0})}}async function mt(e){try{let t=JSON.parse(await es(e,"utf8"));return ju(t)?t:null}catch{return null}}async function zt(e,t){let n={version:ns,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(me(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Tu(r,`${JSON.stringify(n)}
|
|
10
|
+
`,{encoding:"utf8",mode:384}),await Su(r,e)}async function Yt(e,t=process.pid){try{let n=await mt(e);if(n&&n.pid!==t)return;await W(e,{force:!0})}catch{}}async function ft(e){let t=await mt(e.registryPath);if(!t)try{return await es(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 Iu(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 ss(e){let t=await ft(e);return t.state==="registered-dead"||t.state==="invalid"?(await W(e.registryPath,{force:!0}),await ft(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await as(t.entry.pid),await W(e.registryPath,{force:!0}),await W(t.entry.socket_path,{force:!0}),await ft(e)):t}async function Ki(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 Pu(e){await W(e,{force:!0})}async function os(e){await Vt(me(e),{recursive:!0,mode:448});try{return await ku(e,zn.O_CREAT|zn.O_EXCL|zn.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Du(e,t){let[n,r]=cs(t),i=Zi(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 zi(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 W(e.registryPath,{force:!0});return}if(await ne(n.socket_path,100))return;if(us(t.clientVersion,n.resident_version)&&(await $u(n.pid,1500),!Ke(n.pid))){await W(e.registryPath,{force:!0});return}await as(n.pid),await W(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 as(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 $u(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Ke(e))return;await new Promise(r=>setTimeout(r,50))}}async function Iu(e){if(!e.startsWith("file://"))return!1;try{return await vu(ts(e)),!1}catch(t){return t.code==="ENOENT"}}function cs(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Ht(process.argv[1]):ts(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Au(e){let t=Ru("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<Ou)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return G(xu(),`red-skills-${r}`,t)}function Nu(e){let t=Ht(e);for(let n=0;n<32;n++){try{let i=Yn(G(t,".git"));if(i!=null)return Bu(t,i)??t;if(Yn(G(t,".git","HEAD"))!=null||Yn(G(t,".red","config.yaml"))!=null)return t}catch{}let r=me(t);if(r===t)return null;t=r}return null}function Bu(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ht(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?me(me(me(r))):null}function Yn(e){try{return Eu(e,"utf8")}catch{return null}}async function Yi(e,t){let n=await rs(e).catch(()=>null);return n?us(t.clientVersion,n.version)?(await Lu(e,t.clientVersion),await Uu(e),!1):!0:!1}async function Lu(e,t){try{await We({socketPath:e,timeoutMs:200},{id:Xi(),op:"handover",clientVersion:t})}catch{}}function us(e,t){return!e||!t?!1:Cu(e,t)>0}function Cu(e,t){let n=Qi(e),r=Qi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Qi(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 ls(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mu(e){return typeof e=="string"&&e.length>0?e:void 0}function ju(e){return ls(e)&&e.version===ns&&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 Uu(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await ne(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ou,ns,Qt=S(()=>{Kn();Ou=108,ns=1});var ys={};D(ys,{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:()=>ms,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>ps,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>en,DEFAULT_RSP_TTL_DAYS:()=>se,MIN_RSP_IDLE_MS:()=>gs,resolveRspConfig:()=>ge});import{readFileSync as Gu}from"node:fs";import{join as ds,resolve as fs}from"node:path";function ge(e,t,n){let r=Hi(fs(e),ds(".red","config.yaml")),i=r?Gu(r,"utf8"):"",s=Wn(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"),ms),d=pe(Xt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??re(i,"rsp.telemetryDrainTimeoutMs"),ps),m=Fu(Xt(t.RSP_IDLE_MS)??re(i,"rsp.idleMs"),nn,gs),b=pe(Xt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??re(i,"rsp.heavyGitByteThreshold"),ie),_=te(e).rootDir,T=n??t.RSP_STORE_URI??`file://${ds(fs(_),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=Wn(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 Fu(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,ms,ps,nn,gs,K=S(()=>{"use strict";Wi();Qt();ie=8*1024,Zt=".red/tmp/red-skills.rdb",se=7,oe=64*1024*1024,en=90,tn=4*1024*1024,ms=3e4,ps=2e3,nn=5*6e4,gs=5e3});var hs=S(()=>{"use strict";Kn()});var gt={};D(gt,{ResidentRspElisionStore:()=>pt,ensureResidentServer:()=>Wt,kickResidentServer:()=>Kt,pingResident:()=>ne,readResidentRegistry:()=>mt,removeResidentRegistry:()=>Yt,residentRegistryStatus:()=>ft,resolveResidentPaths:()=>te,sweepResidentRegistry:()=>ss,warmResidentServer:()=>is,writeResidentRegistry:()=>zt});import{randomUUID as Ju}from"node:crypto";function ws(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pt,$e=S(()=>{"use strict";hs();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?ws(n)&&n.status==="expired"?n:!ws(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 Wt(this.paths,this.config);let n=await We(this.paths,{...t,id:Ju()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var tr={};D(tr,{RSP_WRAPPER_CAPABILITIES:()=>ht,formatCodexHookDecision:()=>vs,formatHookDecision:()=>Ss,hookDecisionFromClaudePreExecJson:()=>Rs,hookDecisionFromCodexPreExecJson:()=>Es,rewriteCommand:()=>_s,rewriteTableFromCapabilities:()=>bs,runClaudePreExecHook:()=>Ku,runCodexPreExecHook:()=>zu});import{readFileSync as rn}from"node:fs";import{existsSync as qu}from"node:fs";import{fileURLToPath as Vu}from"node:url";function bs(e){let t=new Map;for(let n of e)t.set(yt(n.command),["rsp",...n.wrapper]);return t}function _s(e){let t=nl(e);if(!t||t.length>0&&xs(t[0]))return Xn(e);let n=Wu(t);if(n)return n;let r=Hu.get(yt(t));if(!r)return Xn(e);let i=ht.find(s=>yt(s.command)===yt(t));return{kind:"rewrite",command:r.join(" "),capabilityId:i?.id??yt(t)}}function Wu(e){let t=e[0];return t==="cat"&&e.length===2&&Qn(e[1])?{kind:"rewrite",command:`rsp cat ${e[1]}`,capabilityId:"cat:file"}:(t==="head"||t==="tail")&&e.length===2&&Qn(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])&&Qn(e[3])?{kind:"rewrite",command:`rsp cat --${t} ${e[2]} ${e[3]}`,capabilityId:`cat:${t}`}:null}function Qn(e){return!!e&&!e.startsWith("-")&&!/[ \t]/.test(e)}async function Rs(e,t){return await ks(e,t)}async function Es(e,t){return await ks(e,t)}async function ks(e,t){let n=dl(e),r=F(n,["cwd"])||F(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Yu)(r))return{kind:"passthrough",reason:"disabled"};let s=tl(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??_s)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??Qu)(r)?o:(await(t.wakeResident??Xu)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function Ss(e){return e.kind==="rewrite"?{stdout:`${e.command}
|
|
11
|
+
`,status:0}:{stdout:"",status:1}}function vs(e){return e.kind!=="rewrite"?{stdout:"",status:0}:{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e.command}}})}
|
|
12
|
+
`,status:0}}async function Ku(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await Rs(t,{cwd:process.cwd()}),r=Ss(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function zu(e){let t=e?rn(e,"utf8"):rn(0,"utf8"),n=await Es(t,{cwd:process.cwd()}),r=vs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Yu(e){return ge(e,process.env).enabled}async function Qu(e){let t=te(e);return await ne(t.socketPath,50)}async function Xu(e){let t=ge(e,process.env);if(!t.enabled||!el(t))return;let n=te(e);await Kt(n,Zu(t))}function Zu(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 el(e){if(!e.storeUri.startsWith("file://"))return!0;try{return qu(Vu(e.storeUri))}catch{return!1}}function tl(e){return F(e,["tool_input","command"])||F(e,["tool_input","cmd"])||F(e,["tool_input","args","command"])||F(e,["input","command"])||F(e,["input","cmd"])||F(e,["arguments","command"])||F(e,["arguments","cmd"])||F(e,["command"])||F(e,["cmd"])}function nl(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("=")&&xs(r))?null:n}function Xn(e){let t=e.trim();return rl(t)?{kind:"rewrite",command:`rsp exec -- ${ll(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function rl(e){return!(!e||!sl(e)||!al(e)||ol(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||cl(e,"rsp")||Ts(e,il)||ul(e))}function sl(e){return/&&|[;|]/.test(e)}function ol(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&"))return!0;return!1}function al(e){return Zn(e).some(t=>{let n=er(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 Ts(e,t){return Zn(e).some(n=>{let r=er(n)[0];return r?t.has(r):!1})}function cl(e,t){return Ts(e,new Set([t]))}function ul(e){return Zn(e).some(t=>{let n=er(t);return n[0]==="grep"&&n.includes("-q")})}function Zn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function er(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ll(e){return`'${e.replace(/'/g,"'\\''")}'`}function xs(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function yt(e){return e.join("\0")}function dl(e){try{let t=JSON.parse(e);return Os(t)?t:{}}catch{return{}}}function F(e,t){let n=e;for(let r of t){if(!Os(n))return"";n=n[r]}return typeof n=="string"?n:""}function Os(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ht,Hu,il,sn=S(()=>{"use strict";K();$e();ht=[{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"]}],Hu=bs(ht);il=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var rr={};D(rr,{NORMALIZATION_ALLOWLIST:()=>Cs,NORMALIZE_ANSI:()=>$s,NORMALIZE_BLANK_LINES:()=>Ns,NORMALIZE_CR_PROGRESS:()=>Is,NORMALIZE_JSON_TOON:()=>Ls,NORMALIZE_TRAILING_WHITESPACE:()=>As,formatCodexNormalizeDecision:()=>Fs,formatNormalizeDecision:()=>Gs,hookDecisionFromClaudePostExecJson:()=>Ms,hookDecisionFromCodexPostExecJson:()=>js,normalizeOutput:()=>ze,renderGenericJsonLane:()=>wt,runClaudePostExecHook:()=>pl,runCodexPostExecHook:()=>gl,transcodeJsonToToon:()=>Bs});import{readFileSync as on}from"node:fs";function Bs(e,t){let n=t?.encode??P,r=t?.decode??Jn,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 nr(s,a)?o:e}async function wt(e,t={}){let n=bl(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=Ds(t.minTokens,fl),o=Ds(t.maxItems,ml);if(!(i>o&&Sl(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(`
|
|
13
|
+
`),detected:!0,lossy:!0,totalItems:i,keptItems:c.length,handle:d}}function ze(e){let t=e;for(let n of Cs)t=n.apply(t);return t}async function Ms(e,t){return await Us(e,t)}async function js(e,t){return await Us(e,t)}async function Us(e,t){let n=wl(e),r=vl(n,["cwd"])||t.cwd;if(!await(t.isEnabled??hl)(r))return{kind:"passthrough",reason:"disabled"};let s=Tl(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??ze)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Gs(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Fs(e){return{stdout:"",status:0}}async function pl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await Ms(t,{cwd:process.cwd()}),r=Gs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function gl(e){let t=e?on(e,"utf8"):on(0,"utf8"),n=await js(t,{cwd:process.cwd()}),r=Fs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function yl(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&&Ps(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Ps(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Ps(e){return e>=32&&e<=63}function hl(e){return ge(e,process.env).enabled}function wl(e){try{let t=JSON.parse(e);return ye(t)?t:{}}catch{return{}}}function bl(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++)Rl(e[s])&&n.add(s);for(let s of El(e))n.add(s);for(let s of kl(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 Rl(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 El(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 kl(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 Sl(e){return Math.ceil(e.length/4)}function Ds(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function vl(e,t){let n=e;for(let r of t){if(!ye(n))return"";n=n[r]}return typeof n=="string"?n:""}function Tl(e,t){let n=e[t];return ye(n)?n:null}function ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(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)=>nr(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)&&nr(n[o],r[o]))}var $s,Is,As,Ns,Ls,fl,ml,Cs,bt=S(()=>{"use strict";fe();K();$s={id:"ansi",apply:yl},Is={id:"cr-progress",apply:e=>e.split(`
|
|
14
14
|
`).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
|
-
`)},
|
|
15
|
+
`)},As={id:"trailing-whitespace",apply:e=>e.split(`
|
|
16
16
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
17
|
-
`)},
|
|
17
|
+
`)},Ns={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
18
18
|
|
|
19
|
-
`)};
|
|
19
|
+
`)};Ls={id:"json-to-toon",apply:e=>Bs(e)},fl=200,ml=15;Cs=[$s,Is,As,Ns,Ls]});async function Js(e,t){return xl?Dl(e,t):Ol?Il(e,t):Pl(e,t)}async function Pl(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 Dl(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:$l(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*$l(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 Il(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:Al(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Al(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var xl,Ol,qs=S(()=>{xl=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Ol=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Nl}from"node:fs";import{join as Bl}from"node:path";function Vs(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=Bl(n,"bin",t);if(Nl(s))return s;throw new Error(`reddb: binary "${t}" not found.
|
|
20
20
|
expected at: ${s}
|
|
21
21
|
override: set ${r}=/path/to/${t}
|
|
22
22
|
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(Jl.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
|
|
23
|
+
or check the postinstall log for a download error.`)}var Hs=S(()=>{});import{fileURLToPath as Ll}from"node:url";import{dirname as Cl,resolve as Ml,join as Vy}from"node:path";function Gl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ws(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Vs({name:Gl(),packageRoot:Ul,envVar:"REDDB_BIN"})}var jl,Ul,Ks=S(()=>{Hs();jl=Cl(Ll(import.meta.url)),Ul=Ml(jl,"..")});var Fl,Jl,h,an,he=S(()=>{Fl=new TextEncoder,Jl=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(Fl.encode(i+`
|
|
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(Jl.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 sr(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:/"?ql(e):Vl(e)}function ql(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=Hl(i),a=n.port?Number(n.port):ir(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 Vl(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):ir(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):ir(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 Hl(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 ir(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 or=S(()=>{he()});function Kl(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return zs(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return zs(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function zs(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 zl(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 Wl,_t,ar=S(()=>{he();Wl=new Set(["embedded"]),_t=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Wl.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:zl(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Kl(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 cr(e,t){return`${ur(e)}.${Yl(t)}`}function ur(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 Yl(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Ql(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 Ys(e){return`'${String(e).replace(/'/g,"''")}'`}var Ye,lr=S(()=>{he();Ye=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(Ys).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${cr(i,t)} = ${Ql(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 ${cr(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 ${cr(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 ${ur(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(Ys).join(", ")}] FROM ${ur(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
25
|
|
|
26
26
|
`)){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 Xl(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new g("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ce(e),a=ce(t),c=i!=null?` GROUP ${ce(i)}`:"",u=s!=null?fr(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ce(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function fr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new g("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Zl(e){if(!Number.isInteger(e))throw new g("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ed(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new g("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Zl(e.priority)}`),e.key!=null&&(t+=` KEY ${mr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${mr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function td(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?mr(e):JSON.stringify(e)}function mr(e){return`'${String(e).replace(/'/g,"''")}'`}function dr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Et,pr=v(()=>{be();Et=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ce(t)}`})}push(t,n,r={}){let i=ed(r);return this.client.call("query",{sql:`QUEUE PUSH ${ce(t)} ${td(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ce(t)}${fr(n)}`});return dr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ce(t)}${fr(n)}`});return dr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ce(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ce(t)}`})}async readWait(t,n,r={}){let i=Xl(t,n,r),s=await this.client.call("query",{sql:i});return dr(s)}}});function Ys(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new g("INVALID_ARGUMENT",`${t} must be an object`)}function nd(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new g("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(Qs).join(".")}function Qs(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function rd(e){return Xs(JSON.stringify(e))}function id(e){return JSON.stringify(e)}function sd(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?rd(e):Xs(e)}function Xs(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,yr=v(()=>{be();kt=class{constructor(t){this.db=t}async insert(t,n){Ys(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${id(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new g("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 g("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=nd(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){Ys(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new g("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new g("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,u])=>`${Qs(c)} = ${sd(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new g("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 od(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${_e(n)}.${_e(r)})`}return cd(e)}function ad(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 _e(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 cd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zs(e)}function Zs(e){return`'${String(e).replace(/'/g,"''")}'`}var St,gr=v(()=>{St=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){ad(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Zs).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${_e(i)} ${_e(t)} = ${od(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${_e(r)} ${_e(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${_e(r)} ${_e(t)}`})}}});function ud(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 ld(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,hr=v(()=>{vt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ud(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(eo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Xe(i)}.${Xe(t)} = ${ld(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 no(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(dd)}async function ro(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${md(t)}`)).rows??[]).some(r=>r.name===String(t))}function dd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function to(e){return String(e).split(".").map(fd).join(".")}function fd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new g("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function md(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,wr=v(()=>{be();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 g("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(to).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${to(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 ao(e,t={}){let n=sr(e);if(kd(n),n.kind==="embedded"){let r=Ed(n,t.auth);if(r.token||r.username)throw new g("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Rd(n),s=t.binary??Hs(),o=await Fs(s,i),a=new an(o);return await a.call("version",{}),new _r(a,{transport:"embedded"})}}function so(e){return gd(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:wd(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 gd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new g("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 g("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new g("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function hd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(so):e.map(so)}function wd(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 bd(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 bd(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 Rd(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ed(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 kd(e){if(e.kind!=="embedded")throw new g("EMBEDDED_ONLY",pd)}function Rr(){return new g(io,`${io}: nested transactions are not supported on one connection`)}function co(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Sd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new g("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${oo} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function vd(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new g("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${oo} 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 g("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var pd,yd,oo,io,ln,br,_r,uo=v(()=>{Js();Ws();be();or();ar();lr();pr();yr();gr();hr();wr();ar();lr();pr();yr();gr();hr();wr();or();pd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yd="1.0",oo="1.0.9",io="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 Rr()}},br=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Rr();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new g("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 g("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 g("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){co(n,r)}throw n}}},_r=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=yd,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 g("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=hd(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 Sd(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 vd(r,n.length)}tx(){return new br(this)}async transaction(t){if(this.inTransaction)throw Rr();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){co(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ro(this,t)}list(){return no(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 Tr={};$(Tr,{DEFAULT_RSP_BYTE_BUDGET:()=>ae,DEFAULT_RSP_TTL_DAYS:()=>oe,RSP_ELISION_COLLECTION:()=>M,RspElisionStore:()=>xt});import{createHash as po}from"node:crypto";import{existsSync as Td}from"node:fs";import{mkdir as xd,readFile as Sr,readdir as yo,rename as Od,writeFile as Pd}from"node:fs/promises";import{homedir as Dd}from"node:os";import{basename as vr,dirname as go,join as Ze}from"node:path";import{fileURLToPath as $d}from"node:url";function lo(e,t){return`el:${po("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 ue(e){return`record:${e.slice(3)}`}function Ae(e){return`expired:${e.slice(3)}`}function Er(){return"index:v1"}function Ot(e){return/^el:[a-f0-9]{12}$/.test(e)}function Id(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 Ad(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 Nd(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:ue(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 Bd(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 yo(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 Ld(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 fo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function et(e){return Re(e)?e.collection===M&&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"&&Cd(e.loss):!1}function kr(e){return!Re(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>Re(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 Re(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Cd(e){return Re(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Md(e){try{let t=await Sr(e,"utf8");if(t.trim()==="")return mo();let n=JSON.parse(t);if(Jd(n))return n}catch(t){if(t.code==="ENOENT"){let n=mo();return await wo(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function jd(e){try{let t=await Sr(e);return ho(e)?e:Ud(t)?Gd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ud(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Gd(e){return vr(e)==="red.rdb"?Ze(go(e),"tmp","rsp-elisions.json"):`${e}.json`}function ho(e){return vr(e)==="red-skills.rdb"}async function Fd(){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(Dd(),".cache","red-skills","bundles")),t=Ze(e,"reddb"),n;try{n=await yo(t)}catch{return}n.sort().reverse();for(let r of n){let i=Ze(t,r,process.platform==="win32"?"red.exe":"red");if(Td(i)){process.env.REDDB_BIN=i;return}}}async function wo(e,t){await xd(go(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Pd(n,`${JSON.stringify(t)}
|
|
28
|
-
`,"utf8"),await Od(n,e)}function
|
|
29
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Er());return kr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Er(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(
|
|
30
|
-
`),i=
|
|
27
|
+
`).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Xl(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?fr(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 fr(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 Zl(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ed(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 ${Zl(e.priority)}`),e.key!=null&&(t+=` KEY ${mr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${mr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function td(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?mr(e):JSON.stringify(e)}function mr(e){return`'${String(e).replace(/'/g,"''")}'`}function dr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Rt,pr=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=ed(r);return this.client.call("query",{sql:`QUEUE PUSH ${ae(t)} ${td(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ae(t)}${fr(n)}`});return dr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ae(t)}${fr(n)}`});return dr(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=Xl(t,n,r),s=await this.client.call("query",{sql:i});return dr(s)}}});function Qs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function nd(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(Xs).join(".")}function Xs(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 rd(e){return Zs(JSON.stringify(e))}function id(e){return JSON.stringify(e)}function sd(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?rd(e):Zs(e)}function Zs(e){return`'${String(e).replace(/'/g,"''")}'`}var Et,gr=S(()=>{he();Et=class{constructor(t){this.db=t}async insert(t,n){Qs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${id(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=nd(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){Qs(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])=>`${Xs(c)} = ${sd(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 od(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${we(n)}.${we(r)})`}return cd(e)}function ad(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 cd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,yr=S(()=>{kt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){ad(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(eo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${we(i)} ${we(t)} = ${od(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 ud(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 ld(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 St,hr=S(()=>{St=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ud(r,"vault");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:`VAULT PUT ${Qe(i)}.${Qe(t)} = ${ld(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 ro(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(dd)}async function io(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${md(t)}`)).rows??[]).some(r=>r.name===String(t))}function dd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function no(e){return String(e).split(".").map(fd).join(".")}function fd(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 md(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,wr=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(no).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${no(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 co(e,t={}){let n=sr(e);if(kd(n),n.kind==="embedded"){let r=Ed(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=Rd(n),s=t.binary??Ws(),o=await Js(s,i),a=new an(o);return await a.call("version",{}),new _r(a,{transport:"embedded"})}}function oo(e){return yd(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:wd(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 yd(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 hd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(oo):e.map(oo)}function wd(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 bd(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 bd(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 Rd(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ed(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 kd(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",pd)}function Rr(){return new h(so,`${so}: nested transactions are not supported on one connection`)}function uo(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Sd(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ao} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function vd(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 >= ${ao} 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 pd,gd,ao,so,ln,br,_r,lo=S(()=>{qs();Ks();he();or();ar();lr();pr();gr();yr();hr();wr();ar();lr();pr();gr();yr();hr();wr();or();pd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",gd="1.0",ao="1.0.9",so="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 Rr()}},br=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Rr();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new 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){uo(n,r)}throw n}}},_r=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=gd,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=hd(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 Sd(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 vd(r,n.length)}tx(){return new br(this)}async transaction(t){if(this.inTransaction)throw Rr();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){uo(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return io(this,t)}list(){return ro(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 Tr={};D(Tr,{DEFAULT_RSP_BYTE_BUDGET:()=>oe,DEFAULT_RSP_TTL_DAYS:()=>se,RSP_ELISION_COLLECTION:()=>L,RspElisionStore:()=>Tt});import{createHash as go}from"node:crypto";import{existsSync as Td}from"node:fs";import{mkdir as xd,readFile as Sr,readdir as yo,rename as Od,writeFile as Pd}from"node:fs/promises";import{homedir as Dd}from"node:os";import{basename as vr,dirname as ho,join as Xe}from"node:path";import{fileURLToPath as $d}from"node:url";function fo(e,t){return`el:${go("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 Er(){return"index:v1"}function xt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Id(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 Ad(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 Nd(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 Bd(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 yo(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 Ld(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 mo(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"&&Cd(e.loss):!1}function kr(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 Cd(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 Md(e){try{let t=await Sr(e,"utf8");if(t.trim()==="")return po();let n=JSON.parse(t);if(Jd(n))return n}catch(t){if(t.code==="ENOENT"){let n=po();return await bo(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function jd(e){try{let t=await Sr(e);return wo(e)?e:Ud(t)?Gd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ud(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Gd(e){return vr(e)==="red.rdb"?Xe(ho(e),"tmp","rsp-elisions.json"):`${e}.json`}function wo(e){return vr(e)==="red-skills.rdb"}async function Fd(){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(Dd(),".cache","red-skills","bundles")),t=Xe(e,"reddb"),n;try{n=await yo(t)}catch{return}n.sort().reverse();for(let r of n){let i=Xe(t,r,process.platform==="win32"?"red.exe":"red");if(Td(i)){process.env.REDDB_BIN=i;return}}}async function bo(e,t){await xd(ho(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Pd(n,`${JSON.stringify(t)}
|
|
28
|
+
`,"utf8"),await Od(n,e)}function po(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Jd(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(Ze)&&be(e.tombstones)&&Object.values(e.tombstones).every(fn)&&kr(e.index)}function qd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return $d(e)}var L,Tt,mn=S(()=>{"use strict";lo();K();L="rsp_elisions_v1",Tt=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=qd(t.uri),r=await jd(n),i=new e(r,{uri:t.uri,ttlDays:mo(t.ttlDays,se),byteBudget:mo(t.byteBudget,oe),now:t.now??(()=>new Date)});return wo(r)?(await Fd(),i.db=await co(`file://${r}`),await i.ensureRedDbCollections(),await i.ensureRedDbStore()):i.document=await Md(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=fo(r,n),c=ce(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[Ie(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(!xt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[ce(t)];if(!Ze(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:ce(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})}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ie(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[Ie(t)];return fn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await bo(this.path,this.document)}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=Nd(r);i&&n.push(i)}return n}async ensureMigratedRedDbIndex(t){if(t.some(i=>i.key===Er()&&kr(dn(i.value))))return;let r=t.map(i=>{let s=dn(i.value);return Ze(s)?{handle:s.handle,key:ce(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=fo(r,n),c=ce(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(Ie(a)),await this.kv().put(c,u);let d=(await this.readRedDbIndex()).records.filter(m=>m.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!xt(t))return null;let n=await this.kvGet(Ie(t));if(fn(n))return n;let r=await this.kvGet(ce(t));if(!Ze(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:ce(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=Id(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Ad(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 Bd(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await Sr(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=vr(i),c=go("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=>Ld(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(`
|
|
29
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Er());return kr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Er(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ie(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(ce(t));if(!Ze(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 xo={};D(xo,{REPO_STORE_PATH:()=>Or,mergeRspBlock:()=>So,provisionRspRepoStore:()=>Xd});import{constants as Vd}from"node:fs";import{access as Hd,copyFile as Wd,mkdir as _o,readFile as Kd,writeFile as Ro}from"node:fs/promises";import{dirname as zd,join as pn,resolve as Yd}from"node:path";async function Xd(e,t={}){let n=Yd(e),r=pn(n,".red"),i=pn(r,"config.yaml"),s=pn(n,Or);await _o(r,{recursive:!0}),await _o(zd(s),{recursive:!0});let o="";try{o=await Kd(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=So(o,{enabled:!0,ttlDays:t.ttlDays??se,byteBudget:t.byteBudget??oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ie}),c=a!==o;c&&await Ro(i,a,"utf8");let u=!await ko(s),l=!1;if(u){let m=pn(n,Qd);if(await ko(m))await Wd(m,s),l=!0;else{let{RspElisionStore:b}=await Promise.resolve().then(()=>(mn(),Tr)),_=process.env.REDDB_BIN;try{await(await b.open({uri:`file://${s}`,ttlDays:t.ttlDays??se,byteBudget:t.byteBudget??oe,allowResidentOpen:!0})).close()}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=Zd(a,Or);return d!==a&&await Ro(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function So(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${xr(t.ttlDays,se)}`,` byteBudget: ${xr(t.byteBudget,oe)}`,` heavyGitByteThreshold: ${xr(t.heavyGitByteThreshold,ie)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
30
|
+
`),i=vo(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
31
|
`)}
|
|
32
32
|
`}let s=Pr(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
|
|
33
33
|
`)}
|
|
34
|
-
`}function
|
|
35
|
-
`),r=
|
|
34
|
+
`}function vo(e,t){for(let n=0;n<e.length;n++){let r=e[n];if($r(r)&&Dr(r)===0&&To(r)===t)return n}return-1}function Pr(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if($r(e[i])&&Dr(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Dr(e){return(e.match(/^ */)?.[0]??"").length}function $r(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function To(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function xr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Zd(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
35
|
+
`),r=vo(n,"plugins");if(r===-1)return e;let i=Pr(n,r,0),s=Eo(n,"memory",r+1,i,2);if(s===-1)return e;let o=Pr(n,s,2),a=[...n],c=Eo(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
|
|
36
36
|
`)}
|
|
37
|
-
`}function
|
|
37
|
+
`}function Eo(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if($r(o)&&Dr(o)===i&&To(o)===t)return s}return-1}async function ko(e){try{return await Hd(e,Vd.F_OK),!0}catch{return!1}}var Or,Qd,Oo=S(()=>{"use strict";K();Or=Zt,Qd=".red/memory/graph.rdb"});var No={};D(No,{runRspMcpServer:()=>tf});import{createInterface as ef}from"node:readline";async function tf(){let e=ge(process.cwd(),process.env),t=ef({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 nf(r,e);Io({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Io({jsonrpc:"2.0",id:typeof Ao(n)?.id>"u"?null:Ao(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function nf(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:$o(t)}]};if(!t.enabled)return{content:[{type:"text",text:$o(t)}],isError:!0};let r=uf(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 rf(n.arguments,r)}]}}return{}}async function rf(e,t){let n=sf(e?.payload),r=of(e?.level),i=await wt(n,{level:r,command:"rsp mcp compress",store:t});if(i.detected)return Po(i.output);let s=ze(n);if(r==="brief"&&Buffer.byteLength(s)<=2*1024)return Po(s);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return af(s,o.length,a,r)}function sf(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function of(e){return e==="terse"?"terse":"brief"}function af(e,t,n,r){let i=r==="terse"?1024:2048,s=Buffer.from(e),o=Math.max(1,Math.floor(i/2)),a=Do(s.subarray(0,o)),c=Do(s.subarray(Math.max(0,s.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${cf(s)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
|
|
38
38
|
`)}
|
|
39
|
-
`}function
|
|
39
|
+
`}function Po(e){return e.endsWith(`
|
|
40
40
|
`)?e:`${e}
|
|
41
|
-
`}function
|
|
42
|
-
`)}function
|
|
43
|
-
`),0;if(!
|
|
44
|
-
`),await Tf(n.options),o.exitCode}finally{await
|
|
45
|
-
`)}function hf(e){let t=e[1],n={timeoutMs:
|
|
41
|
+
`}function Do(e){return e.toString("utf8").replace(/�$/g,"")}function cf(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 uf(e){return new pt(te(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 $o(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Io(e){process.stdout.write(`${JSON.stringify(e)}
|
|
42
|
+
`)}function Ao(e){try{return JSON.parse(e)}catch{return null}}var Bo=S(()=>{"use strict";K();bt();$e()});var Go={};D(Go,{renderWaitHelp:()=>Br,runWait:()=>gf});import{spawn as Cr}from"node:child_process";import{existsSync as Nr}from"node:fs";import{mkdir as lf,readdir as df,readFile as ff,rm as Mo,writeFile as jo}from"node:fs/promises";import{join as Pt,resolve as Ir}from"node:path";import{randomUUID as mf}from"node:crypto";async function gf(e,t=process.cwd()){let n=hf(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Br()),0;if(n.kind==="ls")return process.stdout.write(`${P({waits:await Sf(t)})}
|
|
43
|
+
`),0;if(!yf(n.kind))return process.stdout.write(Br()),2;let r=n.kind,i={id:mf(),target:Of(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:pf[n.kind],status:"running"},s=Pt(await Lr(t),`${i.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await lf(await Lr(t),{recursive:!0}),await jo(s,JSON.stringify(i,null,2),"utf8"),o=await wf({...n,kind:r},t,s,i),process.stdout.write(`${P(xf(r,i,o))}
|
|
44
|
+
`),await Tf(n.options),o.exitCode}finally{await Mo(s,{force:!0})}}function yf(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Br(){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(`
|
|
45
|
+
`)}function hf(e){let t=e[1],n={timeoutMs:Lo.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=Lo[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=Df(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=$f(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 wf(e,t,n,r){switch(e.kind){case"cmd":return await bf(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ar(()=>_f(e.target??"",t),e.options.timeoutMs,15e3,n,r);case"run":return await Ar(()=>Rf(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ar(()=>kf(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function bf(e,t,n,r,i){return e.trim()?await new Promise(s=>{let o=!1,a=l=>{o||(o=!0,s(l))},c=Cr(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Ot(r,i,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Uo(t)}`})},t);c.once("error",l=>{clearTimeout(u),Ot(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;Ot(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 Ar(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 Ot(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 Nf(Math.min(c,Math.max(0,s-Date.now())))}return await Ot(r,i,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Uo(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=Mr(n.stdout),i=Array.isArray(r.statusCheckRollup)?r.statusCheckRollup:[],s=i.map(Pf),o=s.filter(c=>c==="failure").length,a=s.filter(c=>c==="pending").length;return String(r.state)!=="OPEN"?tt("failure",`PR #${e} is ${String(r.state).toLowerCase()}`,{mergeable:String(r.mergeable??"")}):o>0?tt("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`}:tt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:String(r.mergeable??"")})}async function Rf(e,t){let n=e.target??(e.latest&&e.branch?await Ef(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=Mr(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"?tt("success",`run ${n} succeeded`,Co(i)):tt("failure",`run ${n} concluded ${o||"unknown"}`,Co(i))}async function Ef(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 kf(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||If(e,c))&&u>=t});return o?tt("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=Cr("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 Sf(e){let t=await Lr(e);if(!Nr(t))return[];let n=await df(t).catch(()=>[]),r=[];for(let i of n.filter(s=>s.endsWith(".json"))){let s=Pt(t,i),o=Mr(await ff(s,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Af(a)){await Mo(s,{force:!0});continue}r.push(o)}return r}async function Lr(e){return Pt(await vf(e),".red","tmp","waits")}async function vf(e){let t=Ir(e);for(;;){if(Nr(Pt(t,".red"))||Nr(Pt(t,".git")))return t;let n=Ir(t,"..");if(n===t)return Ir(e);t=n}}async function Ot(e,t,n){await jo(e,JSON.stringify({...t,status:n},null,2),"utf8").catch(()=>{})}async function Tf(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=Cr(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function xf(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 tt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Of(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 Pf(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 Co(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 Mr(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 Df(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 $f(e){return e.startsWith("SIG")?e:`SIG${e}`}function Uo(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function If(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Af(e){try{return process.kill(e,0),!0}catch{return!1}}async function Nf(e){await new Promise(t=>setTimeout(t,e))}var Lo,pf,Fo=S(()=>{"use strict";fe();Lo={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},pf={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var qo={};D(qo,{renderShellInit:()=>Bf});function Bf(e,t=ht){if(e==="fish")return Lf(t);if(e==="bash"||e==="zsh")return Cf(e,t);throw new Error(`unsupported shell: ${e}`)}function Lf(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} '${Gf(`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(`
|
|
46
46
|
`)}function Cf(e,t){let n=jf(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(`
|
|
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=>Fo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of Mf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Uf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${Fo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function Mf(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 jf(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 Fo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Uf(e){return e.replace(/'/g,"'\\''")}function Gf(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var qo=v(()=>{"use strict";sn()});function jr(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"&&Ff(t.chosenOption)&&Jf(t.outcome)&&qf(t.cost)}function Ff(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Jf(e){return e==="success"||e==="failure"||e==="escalated"}function qf(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 Vo=v(()=>{});import{createHash as Vf}from"node:crypto";function ra(e,t){return new Gr(e,t)}function Ho(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES),r=ia(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 Wo(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=sa(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:Fr(e.properties??e.PROPERTIES)}}function Kf(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!jr(n)?null:{rid:t,event:n}}function Fr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function ia(e){let t=e==="contact"?"person":e;if(Hf.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function sa(e){if(Wf.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zf(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Ko(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 zo(e,t){return Be(e)[t]}function Yo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Qo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Xo(e){let t=Be(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function B(e){return typeof e=="string"&&e.length>0?e:void 0}function bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ur(e){return e!=null}function Yf(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Qf(e){return Vf("sha256").update(JSON.stringify(e)).digest("hex")}function Xf(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Zo(e){return`artifact-hash:${e}`}function ea(e,t,n){return`connection:${e}:${t}:${n}`}function ta(){return"model-tier-bandit:v1"}function Zf(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function na(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function oa(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+na(n,a)*3+na(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 em(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=aa({...oa(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ne(i)}function aa(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 tm(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 nm(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 rm(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var Q,Hf,Wf,Gr,ca=v(()=>{"use strict";Vo();Q={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"]),Wf=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Be(n));if(t==="getArtifact")return await this.getArtifact(zo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Be(n);return await this.search(Yo(r,"query"),Qo(r,"limit")??10,Xo(r.options))}if(t==="think"){let r=Be(n);return await this.think(Yo(r,"query"),Qo(r,"limit")??8,Xo(r.options))}if(t==="link")return await this.link(Be(n));if(t==="backlinks")return await this.backlinks(zo(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 ${Q.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Q.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Q.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:rm(t.map(r=>r.kind))}}async capture(t){let n=B(t.title)||"Untitled artifact",r=B(t.content);if(!r)throw new Error("brain capture requires content");let i=ia(B(t.kind)||"note"),s=Yf(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Qf([i,n,r,s,B(t.sourcePath),B(t.sourceSession)]),c=await this.kv().get(Zo(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let u=`${Xf(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:s,source_agent:B(t.sourceAgent),source_runner:B(t.sourceRunner),source_session:B(t.sourceSession),source_path:B(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:bn(t.metadata)?t.metadata:void 0},m=(await this.db.query(`INSERT INTO ${Q.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,i,a,l)).rows[0];if(!m)throw new Error("INSERT artifact returned no row");let h=Ho(m);if(!h)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Zo(a),h.rid),await this.materializeTagConnections(h),h}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Q.artifacts}`)).rows.map(Ho).filter(Ur)}async search(t,n,r={}){let i=Zf(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=oa(u,i),d=aa({...l,connections:em(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:tm(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 nm(t,i)}async link(t){let n=await this.getArtifact(Ko(t.from)),r=await this.getArtifact(Ko(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=sa(B(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:B(t.reason),confidence:B(t.confidence)||"explicit",created_at:Date.now(),metadata:bn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Q.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=Wo(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ea(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 ${Q.connections}`)).rows.map(Wo).filter(Ur)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=zf(B(t.interval)||"day"),i=B(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:i,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!jr(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Q.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 ${Q.outcomeEvents}`)).rows.map(Kf).filter(Ur).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ta());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ta(),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(ea(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(Q.kv)}}});var Kr={};$(Kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_INDEX_COLLECTION:()=>At,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_SPOOL:()=>ga,appendTelemetryEvent:()=>um,drainTelemetrySpool:()=>Vr,parseTelemetryEvent:()=>Hr,readTelemetryGainsReport:()=>Wr,readTelemetryStats:()=>kn,takeTelemetrySpool:()=>dm,telemetrySpoolPath:()=>En});import{appendFileSync as im,mkdirSync as sm,readFileSync as om}from"node:fs";import{mkdir as fa,readFile as am,rename as ma,rm as pa,writeFile as Jr}from"node:fs/promises";import{dirname as qr,join as ya}from"node:path";function En(e){return ya(e,ga)}async function um(e,t){try{let n=En(e);sm(qr(n),{recursive:!0}),im(n,`${JSON.stringify(lm(t))}
|
|
48
|
-
`,{encoding:"utf8",mode:384})}catch{}}function lm(e){return
|
|
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=>Jo(o)).join("|");i.push(` ${s}) command rsp ${e} "$@" ;;`)}for(let[s,o]of Mf(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Uf(u)}' ]`).join(" && ")).join(" || ");i.push(` ${Jo(s)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return i.push(` *) command ${e} "$@" ;;`," esac","}"),i}function Mf(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 jf(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 Jo(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Uf(e){return e.replace(/'/g,"'\\''")}function Gf(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Vo=S(()=>{"use strict";sn()});function jr(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"&&Ff(t.chosenOption)&&Jf(t.outcome)&&qf(t.cost)}function Ff(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Jf(e){return e==="success"||e==="failure"||e==="escalated"}function qf(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 Vf}from"node:crypto";function ia(e,t){return new Gr(e,t)}function Wo(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES),r=sa(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 Ko(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=oa(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:Fr(e.properties??e.PROPERTIES)}}function Kf(e){let t=Number(e.red_entity_id??e.rid),n=Fr(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!jr(n)?null:{rid:t,event:n}}function Fr(e){return e==null?{}:typeof e=="string"?JSON.parse(e):bn(e)?e:{}}function sa(e){let t=e==="contact"?"person":e;if(Hf.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function oa(e){if(Wf.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zf(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function zo(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 Yo(e,t){return Ne(e)[t]}function Qo(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Xo(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Zo(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 Ur(e){return e!=null}function Yf(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Qf(e){return Vf("sha256").update(JSON.stringify(e)).digest("hex")}function Xf(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ea(e){return`artifact-hash:${e}`}function ta(e,t,n){return`connection:${e}:${t}:${n}`}function na(){return"model-tier-bandit:v1"}function Zf(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ra(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function aa(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+ra(n,a)*3+ra(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 em(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=ca({...aa(a,t),connections:0,vector:0}).total;c>0&&(i+=Math.min(c,12)*.35)}return Ae(i)}function ca(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 tm(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 nm(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 rm(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var z,Hf,Wf,Gr,ua=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"]),Wf=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Gr=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Ne(n));if(t==="getArtifact")return await this.getArtifact(Yo(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ne(n);return await this.search(Qo(r,"query"),Xo(r,"limit")??10,Zo(r.options))}if(t==="think"){let r=Ne(n);return await this.think(Qo(r,"query"),Xo(r,"limit")??8,Zo(r.options))}if(t==="link")return await this.link(Ne(n));if(t==="backlinks")return await this.backlinks(Yo(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:rm(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=sa(A(t.kind)||"note"),s=Yf(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Qf([i,n,r,s,A(t.sourcePath),A(t.sourceSession)]),c=await this.kv().get(ea(a));if(c!=null){let _=await this.getArtifact(Number(c));if(_)return _}let u=`${Xf(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=Wo(m);if(!b)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ea(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(Wo).filter(Ur)}async search(t,n,r={}){let i=Zf(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=aa(u,i),d=ca({...l,connections:em(u,i,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:tm(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 nm(t,i)}async link(t){let n=await this.getArtifact(zo(t.from)),r=await this.getArtifact(zo(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=oa(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=Ko(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ta(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(Ko).filter(Ur)}async eventKpis(t){let n=(await this.listArtifacts()).filter(s=>s.kind==="event"),r=zf(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(!jr(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(Kf).filter(Ur).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(na());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(na(),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(ta(t,n,r));return i!=null?Number(i):null}kv(){return this.db.kv(z.kv)}}});var Kr={};D(Kr,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ee,RSP_TELEMETRY_INDEX_COLLECTION:()=>It,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Re,RSP_TELEMETRY_SPOOL:()=>ha,appendTelemetryEvent:()=>um,drainTelemetrySpool:()=>Vr,parseTelemetryEvent:()=>Hr,readTelemetryGainsReport:()=>Wr,readTelemetryStats:()=>kn,takeTelemetrySpool:()=>dm,telemetrySpoolPath:()=>En});import{appendFileSync as im,mkdirSync as sm,readFileSync as om}from"node:fs";import{mkdir as ma,readFile as am,rename as pa,rm as ga,writeFile as Jr}from"node:fs/promises";import{dirname as qr,join as ya}from"node:path";function En(e){return ya(e,ha)}async function um(e,t){try{let n=En(e);sm(qr(n),{recursive:!0}),im(n,`${JSON.stringify(lm(t))}
|
|
48
|
+
`,{encoding:"utf8",mode:384})}catch{}}function lm(e){return la(la(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function la(e,t,n){let r=e[t];if(typeof r!="string")return e;let i=Buffer.byteLength(r,"utf8");if(i<=cm)return e;let s={...e};return delete s[t],J(s[n])===0&&(s[n]=i),s.estimated=!0,s}async function dm(e){let t=En(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await ma(qr(t),{recursive:!0}),await pa(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Jr(t,"",{flag:"wx"}).catch(()=>{}),(await wa(n)).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await ga(n,{force:!0})}}async function Vr(e,t){let n=En(e),r=`${n}.${process.pid}.${Date.now()}.drain`;try{await ma(qr(n),{recursive:!0}),await pa(n,r)}catch(s){return s.code==="ENOENT",void 0}let i=[];try{await Jr(n,"",{flag:"wx"}).catch(()=>{});let o=(await wa(r)).split(/\r?\n/).filter(a=>a.trim()!=="");for(let a of o){try{if(await t(a))continue}catch{}i.push(a)}}finally{if(i.length>0){let s=fm(n);await Jr(n,`${i.join(`
|
|
49
49
|
`)}
|
|
50
|
-
${s}`,"utf8")}await
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`)}}async function Oa(e){let t=[];for(let n of Im){let r=await Nm(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Bm(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Pa(n)}`))}return t}async function Nm(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 Bm(e,t,n){let r=Lm(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Pa(t)}`)}function Lm(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 Pa(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Cm(e){return e&&clearTimeout(e),setTimeout(()=>{vn(),process.exit(0)},Dm)}function Mm(){_a||(_a=!0,process.on("exit",()=>vn()))}function jm(){if(process.platform==="win32")return;let t=Rm(process.execPath,["-e",`
|
|
50
|
+
${s}`,"utf8")}await ga(r,{force:!0})}}function fm(e){try{return om(e,"utf8")}catch{return""}}async function wa(e){let t="";for(let n=0;n<5;n++){let r=await am(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!ba(t)||t.collection!==Re&&t.collection!==Ee?null:t}catch{return null}}async function kn(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=Vn(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 Wr(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)/bm()))),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=fa(_e(y.command)),le=Math.max(0,J(y.tokens_raw)-J(y.tokens_emitted));w+=le,g||=y.estimated===!0&&le>0;let In=Math.max(0,J(y.raw_bytes)-J(y.emitted_bytes)),An=Rn(y.wrapper_ms);if(An!=null){m.push(An);let Ei=b.get(Ge)??[];Ei.push(An),b.set(Ge,Ei)}je&&_.set(je,(_.get(je)??0)+1),Ue&&T.set(Ue,(T.get(Ue)??0)+1);let Nn=pm(k);Nn&&v.set(Nn,(v.get(Nn)??0)+1);let Bn=hm(k);Bn&&p.set(Bn,(p.get(Bn)??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+=In,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&&In>R.bytes_saved)&&(R={timestamp:k,command_family:Ge,tokens_saved:le,bytes_saved:In})}let Bt=c.map(y=>({timestamp:$t(y),command_family:fa(_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:da(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,...da(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:gm(v)},savings:{tokens:Vn(w,g),weekly_tokens_saved:wm(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=>mm(r.value)).filter(r=>ba(r))}function mm(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 da(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 fa(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())?`${ym(t.getUTCDay())}:${t.getUTCHours()}`:null}function gm(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 ym(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function hm(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 wm(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 bm(){return 24*60*60*1e3}function ba(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ha,Re,Ee,It,cm,Sn=S(()=>{"use strict";Hn();ha=ya(".red","tmp","rsp-telemetry.spool.jsonl"),Re="rsp_telemetry_invocations_v1",Ee="rsp_telemetry_degradations_v1",It="rsp_telemetry_index_v1",cm=64*1024});var Ia={};D(Ia,{runResidentServer:()=>xm});import{randomUUID as Qr}from"node:crypto";import{execFileSync as _m,spawn as Rm}from"node:child_process";import{existsSync as Em}from"node:fs";import{mkdir as Ta,rename as km,rm as _a,writeFile as xa}from"node:fs/promises";import{createServer as Sm}from"node:net";import{dirname as Zr,join as At}from"node:path";import{fileURLToPath as vm,pathToFileURL as Tm}from"node:url";async function xm(e){await Ta(Zr(e.socketPath),{recursive:!0});let t=Um();jm();let n=e.telemetryDrainTimeoutMs??Oa,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=Sm(g=>{l.add(g),g.once("close",()=>l.delete(g)),_(),Wm(g,async E=>{_();let R=await Km(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};$a(g,x),E.op==="handover"&&setImmediate(()=>b())})});function b(){s=!0,u=!0,c=Mm(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=()=>{vn(),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 Xr(E,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??en,byteBudget:e.telemetryByteBudget??e.byteBudget??tn});if(s){await E.close();return}if(await zr(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&&zr(M.telemetry,n)},d),i.unref(),_()})().catch(g=>{r={kind:"failed",error:g instanceof Error?g:new Error(String(g))},_()}),e.pidPath&&await xa(e.pidPath,`${process.pid}
|
|
51
|
+
`,{encoding:"utf8",mode:384});let p=e.residentVersion??"0.0.0-dev",f=e.registryPath??At(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 _a(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await zr(w.telemetry,n,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:g,handler:E}of v)process.off(g,E);t?.kill("SIGTERM"),vn(),e.pidPath&&await _a(e.pidPath,{force:!0}),await Yt(f)}async function Am(e,t,n=new Date){let r=await kn(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=At(t,$m),c=`${a}.${process.pid}.${Date.now()}.tmp`;await Ta(Zr(a),{recursive:!0}),await xa(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 km(c,a)}async function zr(e,t=Oa,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Da(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
|
|
52
|
+
`)}}async function Nm(e){let t=[];for(let n of Im){let r=await Bm(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Lm(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Pa(n)}`))}return t}async function Bm(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 Lm(e,t,n){let r=Cm(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Pa(t)}`)}function Cm(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 Pa(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Mm(e){return e&&clearTimeout(e),setTimeout(()=>{vn(),process.exit(0)},Dm)}function jm(){Ra||(Ra=!0,process.on("exit",()=>vn()))}function Um(){if(process.platform==="win32")return;let t=Rm(process.execPath,["-e",`
|
|
54
53
|
const { execFileSync } = require("node:child_process");
|
|
55
54
|
const parentPid = Number(process.argv[1]);
|
|
56
55
|
const known = new Set();
|
|
@@ -91,62 +90,62 @@ const timer = setInterval(() => {
|
|
|
91
90
|
clearInterval(timer);
|
|
92
91
|
process.exit(0);
|
|
93
92
|
}, 500);
|
|
94
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function vn(){for(let e of
|
|
95
|
-
`);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??Qr(),ok:!1,error:a instanceof Error?a.message:String(a)}
|
|
96
|
-
`)}
|
|
97
|
-
`).filter(i=>i&&
|
|
93
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function vn(){for(let e of Gm())try{process.kill(e,"SIGTERM")}catch{}}function Gm(){if(process.platform==="win32")return[];let e="";try{e=_m("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 Fm(e){if(e.collection!==Re)return e;let t=await Ea(e.raw_text,Sa(e.raw_bytes)),n=await Ea(e.emitted_text,Sa(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 Ea(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Om)try{return await Da((async()=>({tokens:(await Jm())("cl100k_base").encode(e).length,estimated:!1}))(),Pm,"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 Jm(){return ka??=import(Tm(qm()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await ka}function qm(){let e=Zr(vm(import.meta.url)),n=[At(e,"..","node_modules","js-tiktoken","dist","index.js"),At(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Em(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Sa(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Yr(e){return typeof e=="string"&&e.trim()!==""?e:void 0}async function Da(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 Vm(e){try{return JSON.parse(e)}catch{return e}}function Hm(e){return va(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>va(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 va(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wm(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let i=n.indexOf(`
|
|
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??Qr(),ok:!1,error:a instanceof Error?a.message:String(a)};$a(e,u)}finally{e.end()}})()})}function $a(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
95
|
+
`)}catch{}}async function Km(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 kn(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 Wr(s,t.sinceDays)}if(t.op==="mint")return{handle:await i.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Ym(await i.get(t.handle));if(t.op==="memory")return await i.memory(t.action,t.payload);if(t.op==="brain")return await zm(i,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function zm(e,t,n,r){let i=e.redDb();if(!i)throw new Error("resident brain operations require the shared RedDB store");return await ia(i,t).request(n,r)}function Ym(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Om,Pm,Oa,Dm,$m,Im,Xr,Ra,ka,Aa=S(()=>{"use strict";Qt();mn();ua();Sn();K();Om=256*1024,Pm=500,Oa=2e3,Dm=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),$m=At(".red","tmp","rsp-status-summary.json"),Im=[Re,Ee,It],Xr=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 Nm(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let i=[...(await this.readIndex(t)).records];for(let s of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:s.collection,error:`expected kv, got ${s.previousModel}`,bytes:0}));await Vr(this.opts.rootDir,async s=>{let o=Hr(s);if(!o){let a=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(s,"utf8")});return i.push(a),!0}try{let a=await this.writeEvent(t,o);return i.push(a),!0}catch(a){let c=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:Yr(o.command)||"unknown",source_id:Yr(o.id),source_collection:Yr(o.collection),error:a instanceof Error?a.message:String(a),bytes:Buffer.byteLength(s,"utf8")});return i.push(c),!0}}),await this.prune(t,{version:1,records:i}),await Am(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:Qr(),a={...await Fm(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:Qr(),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(It).get("index:v1"),r=typeof n=="string"?Vm(n):n;return Hm(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(It).put("index:v1",n)}async prune(t,n){let r=Date.now(),i=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:i})}};Ra=!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 Na(e,t){if(!t)return!0;let n=ei(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>Na(n,t)):[...e]}function it(e,t){if(!t)return e;let r=e.split(`
|
|
96
|
+
`).filter(i=>i&&Na(i,t));return r.length>0?`${r.join(`
|
|
98
97
|
`)}
|
|
99
|
-
`:""}function
|
|
100
|
-
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(
|
|
98
|
+
`:""}function Se(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function ei(e){return Array.isArray(e)?e.map(ei).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ei).join(" "):String(e??"")}var Tn=S(()=>{"use strict"});var ti={};D(ti,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ie,GIT_LOG_MACHINE_FIELDS:()=>Ba,recoveryInstruction:()=>q,renderGitContract:()=>La,runGitWrapper:()=>Xm});import{spawn as Qm}from"node:child_process";async function Xm(e,t){let n=Ca(e),r=Ma(n.argv),i=await np(r,n.argv.slice(1));return La(e,i,t)}async function La(e,t,n){let r=Ca(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Ma(r.argv),s=rp(i,r.argv,t.stdout,r.query);if(s===`git empty
|
|
99
|
+
`)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=P(s);if(Zm(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)}
|
|
101
100
|
`;return{stdout:Buffer.from(`${P(a.payload)}
|
|
102
|
-
${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
|
|
103
|
-
`;let s=
|
|
104
|
-
`)[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
|
|
105
|
-
`).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,
|
|
106
|
-
`),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=
|
|
107
|
-
`).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=
|
|
108
|
-
`)){let
|
|
109
|
-
`).length:0,files:_,summary:`${n?`${_.length}/${
|
|
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 Ca(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 Zm(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!ep(e)||r.level!=="lossless")return!0;let i=mp(r.heavyGitByteThreshold,ie);return Buffer.byteLength(t)<=i}function ep(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ma(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 tp(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Ba.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 np(e,t){let n=Qm("git",tp(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 rp(e,t,n,r){switch(e){case"status":return ip(t,n,r);case"log":return sp(t,n,r);case"diff":return op(t,n,r);case"commit":return ve(ap(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return ve(cp(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return up(t,n,r);case"branch":return lp(t,n,r);case"show":return dp(t,n,r)}}function ip(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:fp(u)})}if(i.length===0)return`git empty
|
|
102
|
+
`;let s=I(i,n),o=ja(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 sp(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 op(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 ap(e,t){let n=t.split(`
|
|
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 cp(e,t){let n=t.split(`
|
|
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,b]=(l??"").split(":");return{flag:u??"",from:m??"",to:b??"",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 up(e,t,n){let r=t.split(`
|
|
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=ja(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 lp(e,t,n){let r=t.split(`
|
|
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 dp(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(""),b=[];for(let f of o.split(`
|
|
107
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(f);if(!w)continue;let g=w[3]??"";b.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...g].filter(E=>E==="+").length,deleted:[...g].filter(E=>E==="-").length,binary:g.startsWith("Bin")})}let _=I(b,n),T=0,v=0,p=0;for(let f of _)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(`
|
|
108
|
+
`).length:0,files:_,summary:`${n?`${_.length}/${b.length}`:_.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 fp(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function ja(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function mp(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 Ba,Be=S(()=>{"use strict";fe();K();Tn();K();Ba=["%h","%an","%as","%s"]});var si={};D(si,{renderGhContract:()=>Fa,runGhWrapper:()=>wp});import{spawn as Ga}from"node:child_process";async function wp(e,t){let n=Ja(e),r=await _p(n);return Fa(e,r,t)}async function Fa(e,t,n){let r=ke(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(it(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Ja(e),s=xn(t.stdout),o=Ep(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=Pp(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let _=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=_}let c=a?.target.truncated.handle||void 0,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=Dp(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 b=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${q(m)}
|
|
110
109
|
`;return{stdout:Buffer.from(`${P(l.payload)}
|
|
111
|
-
${
|
|
110
|
+
${b}`),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 Ja(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 bp(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?yp[t]:gp[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function _p(e){if(e.action==="combined")return await Rp(e);let t=Ga("gh",bp(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 Rp(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([ni(["pr","view",t,"--json",n.join(",")]),ni(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),ni(["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:xn(i.stdout),checks:xn(s.stdout),comments:xn(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function ni(e){let t=Ga("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 Ep(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Tp(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ot(n).map(o=>qa(o,e.wide)),s=I(i,e.query);return st({...r,prs:s,summary:`${ri(s.length,i.length,e.query)} ${Ua(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return st({...r,pr:Va(Y(n),e),summary:`PR #${Le(Y(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return kp(e,t,Y(n));case"issue:list":{let i=ot(n).map(o=>Ha(o,e.wide)),s=I(i,e.query);return st({...r,issues:s,summary:`${ri(s.length,i.length,e.query)} ${Ua(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return st({...r,issue:xp(Y(n),e),summary:`issue #${Le(Y(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ot(n).map(o=>Wa(o,e.wide)),s=I(i,e.query);return st({...r,runs:s,summary:`${ri(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 st({...r,run:Op(Y(n),e),summary:`run ${Le(Y(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function kp(e,t,n){let r=Va(Y(n.view),{...e,action:"view",wide:!0}),i=I(ot(n.checks).map(Sp),e.query),s=Y(n.comments).comments,o=I(ot(s).map(vp).slice(-3),e.query);return Se({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${Le(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 Sp(e){return{name:O(e,"name"),state:Nt(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function vp(e){return{author:Ya(e.author),body:On(e,"body",ii,!1),created:O(e,"createdAt")}}function Tp(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
|
|
112
111
|
`:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
|
|
113
112
|
`:`0 runs \u2014 try: rsp gh run list --limit 20
|
|
114
|
-
`}function
|
|
115
|
-
${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:
|
|
113
|
+
`}function qa(e,t){let n={number:Le(e,"number"),title:O(e,"title"),state:Nt(e),draft:!!e.isDraft};return t&&Object.assign(n,Ka(e)),n}function Va(e,t){let n=qa(e,t.wide);return n.body=On(e,"body",ii,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Ha(e,t){let n={number:Le(e,"number"),title:O(e,"title"),state:Nt(e),labels:za(e.labels)};return t&&Object.assign(n,Ka(e)),n}function xp(e,t){let n=Ha(e,t.wide);return n.body=On(e,"body",ii,t.full),n}function Wa(e,t){let n={id:Le(e,"databaseId"),name:O(e,"name"),status:Nt(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 Op(e,t){let n=Wa(e,t.wide),r=ot(e.jobs).map(i=>({name:O(i,"name"),status:Nt(i),conclusion:O(i,"conclusion"),log:On(i,"log",hp,t.full)}));return n.jobs=r,n}function On(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 Pp(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(at(n)){if(at(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 Dp(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 Ua(e,t){return e.every(n=>n.state===t)?t:"returned"}function ri(e,t,n){return n?`${e}/${t}`:String(e)}function st(e,t,n){return t.query?Se(e,n):e}function Nt(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function Ka(e){return{author:Ya(e.author),labels:za(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function za(e){return Array.isArray(e)?e.map(t=>at(t)?O(t,"name"):String(t)).filter(Boolean):[]}function Ya(e){return at(e)?O(e,"login"):""}function xn(e){return e.trim()?JSON.parse(e):null}function ot(e){return Array.isArray(e)?e.filter(at):[]}function Y(e){return at(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Le(e,t){let n=e[t];return typeof n=="number"?n:0}function at(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var gp,yp,ii,hp,oi=S(()=>{"use strict";fe();Be();Tn();gp={"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"]},yp={"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"]},ii=160,hp=160});var ci={};D(ci,{renderTestContract:()=>Qa,runTestWrapper:()=>Bp});import{spawn as $p}from"node:child_process";async function Bp(e,t){let n=ke(e),r=await Up(n.argv);return await Qa(e,r,t)}async function Qa(e,t,n){let r=ke(e),s=Xa(r.argv)==="vitest"?Gp(t.stdout):Fp(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(it(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 ${Vp(s.durationSeconds)}`,c=I(s.failures,r.query);if(n.level==="terse")return await Lp(r.argv,t,{...s,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let _ of c){let T=await Jp(_.excerpt,r.argv.join(" "),n.store);u.push({suite:_.suite,name:_.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 b=r.query?Se(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(P(b)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:b,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,s.total-u.length):void 0}}async function Lp(e,t,n,r,i,s,o){let a=Cp(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 b={exit_code:r,summary:i};n.failures.length>0&&(b.failures=n.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let _=P(b),T=Buffer.byteLength(_),v=await s.store?.mint(Buffer.from(_),{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}
|
|
114
|
+
${f}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:v,bytesElided:T,rowsElided:d,rawOutput:Buffer.from(_)}}function Cp(e){let t=[],n=Ap;for(let r of e.slice(0,Np)){let i=Mp(r.excerpt,Math.min(Ip,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Mp(e,t){if(t<=0)return"";let n=e.split(`
|
|
116
115
|
`),r=n.length<=2?e:`${n[0]}
|
|
117
116
|
\u2026
|
|
118
|
-
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
119
|
-
`).filter(Boolean).map(c=>
|
|
120
|
-
`)}),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
|
|
121
|
-
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${
|
|
122
|
-
`):""}function
|
|
123
|
-
`;if(!o&&Buffer.byteLength(c)<=
|
|
124
|
-
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function
|
|
117
|
+
${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Xa(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 jp(e){if(Xa(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 Up(e){let t=jp(e),n=$p(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 Gp(e){let t=Za(e);if(!Te(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=xe(t.numTotalTests),s=xe(t.numFailedTests),o=Hp(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:qp(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 Fp(e){let t=e.split(`
|
|
118
|
+
`).filter(Boolean).map(c=>Za(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(`
|
|
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 Jp(e,t,n){let r=Buffer.from(e);if(r.length<=ai)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,ai).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
|
|
120
|
+
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${q(i)}`,handle:i,bytesElided:r.length}}function Za(e){try{return JSON.parse(e)}catch{return null}}function qp(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
121
|
+
`):""}function Vp(e){return`${Number(e.toFixed(1))}s`}function Hp(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 ai,Ip,Ap,Np,ui=S(()=>{"use strict";fe();Be();Tn();ai=320,Ip=160,Ap=ai,Np=3});var fi={};D(fi,{parseCatCommand:()=>di,renderCatContract:()=>eg,runCatWrapper:()=>Zp});import{isUtf8 as Wp}from"node:buffer";import{readFile as Kp}from"node:fs/promises";import{extname as zp}from"node:path";async function Zp(e,t){let n=di(e),r=await Kp(n.file);return sc(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ic(e,n,r,t)}async function eg(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=di(e),i=Buffer.from(t.stdout,"utf8");return sc(i)?{stdout:i,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:i}:{...await ic(e,r,i,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function di(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,i=[];for(let s=0;s<t.length;s++){let o=t[s];if(o==="--head"||o==="--tail"){n=o.slice(2),r=rc(t[++s],li);continue}if(o.startsWith("--head=")||o.startsWith("--tail=")){let[a,c]=o.split("=",2);n=a.slice(2),r=rc(c,li);continue}i.push(o)}if(i.length!==1)throw new Error("usage: rsp cat [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{}}}async function ic(e,t,n,r){let i=n.toString("utf8"),s=rg(i,t),o=r.level!=="lossless"||n.length>nc(r.heavyByteThreshold,ec)||s.truncated;if(!tc(t.file)&&!o)return{stdout:Buffer.from(s.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=tc(t.file)?tg(e,t.file,n,i,r.level,s):ng(e,t.file,n,i,s),c=`${P(a)}
|
|
122
|
+
`;if(!o&&Buffer.byteLength(c)<=nc(r.heavyByteThreshold,ec))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)}
|
|
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 tg(e,t,n,r,i,s){let o=Pn(r),a=i==="terse"?Qp:Yp,c=Pn(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:ig(o),content:{head:u,tail:l,truncated:s.truncated||u.length+l.length<o.length}}}function ng(e,t,n,r,i){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Pn(r).length,content:Pn(i.text),truncated:i.truncated}}function rg(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
125
124
|
`),r=n.at(-1)==="",i=r?n.slice(0,-1):n,s=t.limit??li,o=t.mode==="head"?i.slice(0,s):i.slice(Math.max(0,i.length-s));return{text:`${o.join(`
|
|
126
125
|
`)}${r&&o.length>0?`
|
|
127
|
-
`:""}`,truncated:o.length<i.length}}function
|
|
128
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
126
|
+
`:""}`,truncated:o.length<i.length}}function ig(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&&!sg(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:i})}return t}function Pn(e){let t=e.split(`
|
|
127
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function sc(e){return e.includes(0)||!Wp(e)}function tc(e){return Xp.has(zp(e).toLowerCase())}function sg(e){return["for","if","switch","while"].includes(e)}function nc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function rc(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var ec,li,Yp,Qp,Xp,mi=S(()=>{"use strict";fe();Be();ec=8*1024,li=10,Yp=8,Qp=2,Xp=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Dn={};D(Dn,{parseExecCommandLine:()=>cc,renderExecContract:()=>ac,runExecWrapper:()=>dg});import{isUtf8 as og}from"node:buffer";import{spawn as ag}from"node:child_process";async function dg(e,t){let n=cc(e),r=await fg(n);return await ac(n,r,t)}async function ac(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=mg(r);if(s.kind==="text"){let d=await wt(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=yg(n.heavyByteThreshold,cg);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 cc(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 fg(e){let t=ag(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 mg(e){return og(e)?{kind:"text",text:ze(e.toString("utf8"))}:{kind:"bytes"}}function pg(e,t,n,r){let s=Math.max(1,Math.floor((r==="terse"?lg:ug)/2)),o=oc(e.subarray(0,s)),a=oc(e.subarray(Math.max(0,e.length-s))),c=gg(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(`
|
|
129
128
|
`)}
|
|
130
|
-
`}function
|
|
131
|
-
`),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(
|
|
132
|
-
`),0);if(n.command==="git"&&
|
|
133
|
-
`),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),f=
|
|
134
|
-
`),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await
|
|
135
|
-
`),1);let m=()=>Promise.resolve(new a(d,{storeUri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget,telemetryTtlDays:i.telemetryTtlDays,telemetryByteBudget:i.telemetryByteBudget,telemetryDrainIntervalMs:i.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:i.telemetryDrainTimeoutMs,idleMs:i.idleMs,clientVersion:t.version})),
|
|
136
|
-
`),1;let f=await p.telemetryGains(pi(n.positional,28));return process.stdout.write(
|
|
129
|
+
`}function oc(e){return e.toString("utf8").replace(/�$/g,"")}function gg(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 yg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var cg,ug,lg,$n=S(()=>{"use strict";Be();bt();cg=8*1024,ug=2*1024,lg=1024});fe();import{spawn as hg}from"node:child_process";import{createHash as wg}from"node:crypto";import{appendFileSync as uc,existsSync as yi,mkdirSync as bg,readFileSync as _g,readdirSync as Rg,statSync as Eg}from"node:fs";import{tmpdir as kg}from"node:os";import{dirname as lc,join as Z}from"node:path";function Ji(e){let t={app:e,version:mu(He("__RED_BUILD_VERSION__",()=>"2.55.1")??"0.0.0-dev"),gitSha:He("__RED_BUILD_GIT_SHA__",()=>"5a485505968e6a8d2175130853630e6d08e86457")??"unknown",buildTime:He("__RED_BUILD_TIME__",()=>"2026-07-13T23:10:07-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 mu(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 Sg(e=process.argv.slice(2)){let t=Ji("rsp"),n=jg(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(sn(),tr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(sn(),tr));return await p()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(bt(),rr));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(bt(),rr));return await p()}if(n.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Oo(),xo)),f=await p(process.cwd());return process.stdout.write(zg(f)),0}if(n.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Bo(),No));return await p(),0}if(n.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(Fo(),Go));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
|
|
130
|
+
`),2;let{renderShellInit:f}=await Promise.resolve().then(()=>(Vo(),qo));return process.stdout.write(f(p)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(K(),ys)),i=r(process.cwd(),process.env,n.storeUri),s=Cg(n.command);if(!i.enabled)return s?await Lg(n.positional):(process.stdout.write(`${Ri()}
|
|
131
|
+
`),0);if(n.command==="git"&&hi(n.positional)){let p=process.hrtime.bigint();return await C(n,await wi(),p,void 0,await vg(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>($e(),gt));if(n.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(Aa(),Ia)),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(`${Ri()}
|
|
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:E}=await Promise.resolve().then(()=>($e(),gt));return await E({...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(()=>($e(),gt)),w=n.command==="sweep"?await f(d):await p(d);return process.stdout.write(`${P(w)}
|
|
133
|
+
`),0}if(!n.storeUri&&i.storeUri.startsWith("file://")&&!u(l(i.storeUri)))return s?await Pg(n,i,d.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
|
|
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})),b=()=>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}),_=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(mn(),Tr));return await p.open({uri:i.storeUri,ttlDays:i.ttlDays,byteBudget:i.byteBudget})},T=()=>i.storeUri.endsWith("/red-skills.rdb")?m():_(),v;try{if(!n.command||n.command==="stats"){let p=await T();v=()=>p.close();let f=await p.stats(),w=xg(p)?await p.telemetryStats(pi(n.positional,30)):pc(pi(n.positional,30));return process.stdout.write(Gg(f,w,Ug(n.positional))),0}if(n.command==="gains"){let p=await T();if(v=()=>p.close(),!Og(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
|
|
135
|
+
`),1;let f=await p.telemetryGains(pi(n.positional,28));return process.stdout.write(Fg(f)),0}if(n.command==="git"){if(Me(b()),hi(n.positional)){let E=process.hrtime.bigint();return await C(n,await wi(),E,void 0,d.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(Be(),ti)),f=new Ce(()=>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"){Me(b());let{runGhWrapper:p}=await Promise.resolve().then(()=>(oi(),si)),f=new Ce(()=>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"){Me(b());let{runTestWrapper:p}=await Promise.resolve().then(()=>(ui(),ci)),f=new Ce(()=>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"){Me(b());let{runCatWrapper:p}=await Promise.resolve().then(()=>(mi(),fi)),f=new Ce(()=>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"){Me(b());let{runExecWrapper:p}=await Promise.resolve().then(()=>($n(),Dn)),f=new Ce(()=>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}
|
|
137
136
|
`),1):(process.stdout.write(`expired unknown \u2014 re-run: ${n.handle}
|
|
138
137
|
`),1)}return process.stdout.write(`error: usage rsp show el:<id>
|
|
139
|
-
`),2}catch(p){if(s)return await
|
|
138
|
+
`),2}catch(p){if(s)return await _i("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 hi(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function wi(){if(Tg(process.cwd()))return{stdout:Buffer.from(`git empty
|
|
140
139
|
`),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
|
|
141
140
|
`),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
|
|
142
|
-
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function
|
|
143
|
-
`;try{
|
|
144
|
-
`);let i=await dc(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Sn(),Kr));
|
|
145
|
-
`),await dc(e)}function
|
|
146
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function
|
|
141
|
+
`):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function vg(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>($e(),gt));return t(e).rootDir}catch{return e}}function Tg(e){try{return!yi(`${e}/.git`)||yi(`${e}/.git/index`)?!1:Rg(e).every(t=>t===".git")}catch{return!1}}function xg(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function Og(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Ce=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}},bi=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Pg(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let i=new bi,s=process.hrtime.bigint();try{if(e.command==="git"){if(hi(e.positional))return await C(e,await wi(),s,i,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Be(),ti)),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(()=>(oi(),si)),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(()=>(ui(),ci)),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(()=>(mi(),fi)),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(()=>($n(),Dn)),a=await o(e.positional,{level:e.level,store:i,heavyByteThreshold:t.heavyGitByteThreshold});return await C(e,a,s,i)}}catch(o){return await _i("wrapper failed",e.positional,o,n)}finally{await i.close()}return await _i("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?(Me(Ng(i,e,t,o,r.lastResponseMetrics())),s&&Dg(i,s)):Bg(i,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Dg(e,t){try{let n=Z(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=Eg(n),i=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Ag(n,Date.now()-i))return;let s=$g(e),o=Ig(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");hg(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 $g(e){let t=e;for(;;){if(yi(Z(t,".git")))return t;let n=lc(t);if(n===t)return e;t=n}}function Ig(e){let t=wg("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(kg(),`red-skills-${r}`,t)}function Ag(e,t){try{let n=_g(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 Ng(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(()=>(Sn(),Kr));await a(e,{collection:c,ts:new Date().toISOString(),command:fc(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 Bg(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:fc(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,wrapper_ms:r})}
|
|
142
|
+
`;try{uc(o,a,{encoding:"utf8",mode:384})}catch(c){if(c.code!=="ENOENT")return;bg(lc(o),{recursive:!0}),uc(o,a,{encoding:"utf8",mode:384})}}catch{}}async function _i(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
|
|
143
|
+
`);let i=await dc(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Sn(),Kr));Me(s(r,{collection:o,ts:new Date().toISOString(),command:mc(t),reason:e}))}return i}function Me(e){e.catch(()=>{})}async function Lg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ri()}, passing through
|
|
144
|
+
`),await dc(e)}function Ri(){return"rsp is not enabled in this directory; run /red-setup"}function Cg(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"}async function dc(e){if(e[0]==="exec")return await Mg(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)}
|
|
145
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}async function Mg(e){let t;try{let{parseExecCommandLine:i}=await Promise.resolve().then(()=>($n(),Dn));t=i(e)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
|
|
147
146
|
`),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)}
|
|
148
|
-
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function fc(e){return mc(e.positional)}function mc(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
|
|
149
|
-
`)}function
|
|
150
|
-
`}function
|
|
151
|
-
`)}import.meta.url===`file://${process.argv[1]}`&&
|
|
152
|
-
`),process.exit(1)});export{
|
|
147
|
+
`),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function fc(e){return mc(e.positional)}function mc(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 jg(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 pi(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 Ug(e){return e.includes("--full")}function Gg(e,t=pc(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: ${Jg(t.savings)}`,` dollars_saved_estimate_usd: ${qg(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:",...Vg(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...Hg(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Kg(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:",...Wg(t.health.by_reason),"latency:",` wrapper_ms_p50: ${gi(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${gi(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: ${gi(t.latency.store_elapsed_ms_avg)}`,""].join(`
|
|
148
|
+
`)}function Fg(e){return`${P(e)}
|
|
149
|
+
`}function Jg(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 qg(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?dt(e.dollars_saved_estimate_usd):`${dt(e.dollars_saved_low_usd)}-${dt(e.dollars_saved_high_usd)} (estimate_midpoint: ${dt(e.dollars_saved_estimate_usd)})`}function Vg(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Hg(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 Wg(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function gi(e){return e==null?"none":String(e)}function Kg(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function pc(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 zg(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
|
|
150
|
+
`)}import.meta.url===`file://${process.argv[1]}`&&Sg().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
|
|
151
|
+
`),process.exit(1)});export{Sg as main,zg as renderSetupResult,Gg as renderStats};
|