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