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