@reddb-io/red-skills 2.74.3 → 2.74.4

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.
@@ -1,90 +1,118 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Ld=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)Ld(e,n,{get:t[n],enumerable:!0})};async function Uo(e,t){return Md?Jd(e,t):jd?Gd(e,t):Ud(e,t)}async function Ud(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((i,o)=>{r.stdin.write(s,a=>a?o(a):i())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",i=>s(i??0))})}}}function Jd(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(s){r?await r.write(s):(n.stdin.write(s),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:Fd(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Fd(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 Gd(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:Hd(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Hd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Md,jd,Jo=E(()=>{Md=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",jd=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as qd}from"node:fs";import{join as Wd}from"node:path";function Fo(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 s=process.env?.[r];if(typeof s=="string"&&s!=="")return s;let i=Wd(n,"bin",t);if(qd(i))return i;throw new Error(`reddb: binary "${t}" not found.
3
+ var Rf=Object.defineProperty;var _=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)Rf(e,r,{get:t[r],enumerable:!0})};function R(e,t){return new or(e,t)}function D(e,t){return new ft(e,t)}function It(e){return e instanceof ft?e:e instanceof or?new ft(e.line,e.reason):new ft(0,String(e&&e.message?e.message:e))}var or,ft,ar=_(()=>{or=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},ft=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function tn(e){let t=e.split(`
4
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function ke(e){return R(e,"invalid quoted string")}function Ee(e,t){if(e==="")return"";if(e.startsWith('"'))return oa(e,t);if(e.includes('"'))throw ke(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Sf(e)?Number(e):e}function Le(e,t){let r=e.trim();if(r.startsWith('"'))return[oa(r,t),!0];if(r.includes('"')||/\s/.test(r))throw R(t,"expected non-empty field name");return[r,!1]}function oa(e,t){if(e[0]!=='"')throw ke(t);let r="",n=1;for(;n<e.length;){let s=e[n];if(n+=1,s==='"'){if(e.slice(n).trim()==="")return r;throw ke(t)}if(s==="\\"){let i=e[n];switch(n+=1,i){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
5
+ `;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let o=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw ke(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ke(t);r+=String.fromCharCode(a),n+=4;break}default:throw ke(t)}continue}if(s<" "&&s!==" ")throw ke(t);r+=s}throw ke(t)}function pt(e,t,r){if(e==="")return[];let n=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(n.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw ke(r);return n.push(e.slice(s).trim()),n}function X(e,t,r){let n=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&n)s=!0;else if(o==='"')n=!n;else if(o===t&&!n)return i}if(n||s)throw ke(r);return-1}function Sf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function xf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function kf(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw R(0,"number is not representable in TOON");return String(e)}function cr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Te(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return kf(e);if(typeof e=="string")return Tf(e,t);throw R(0,"not a primitive")}function Ef(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function pe(e){return Ef(e)?e:aa(e)}function Tf(e,t){return vf(e,t)?aa(e):e}function vf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||xf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function aa(e){let t='"';for(let r of e)switch(r){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
6
+ `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function At(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var A,ks=_(()=>{ar();A=","});function Of(e={}){return{indent:Math.max(1,e.indent??Ds),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Pf(e,t){let r=[],n=!1;return tn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(o,"invalid indentation");r.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function J(e,t){let r=Of(t),n=Pf(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let i=n.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ns(s.content,X(s.content,":",s.number))}catch(l){if(r.strict)throw Ps(l,s.number);u=void 0}if(u!==void 0)return If(u,n,r)}if(i&&X(s.content,":",s.number)===-1)return Ee(s.content.trim(),s.number);let o={index:0},a=Is(n,o,0,r),c=n[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Is(e,t,r,n){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<r)break;if(i.depth>r)throw R(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Cf(e,t,r,n);la(s,o,a,c,n,i.number)}return s}function Cf(e,t,r,n){let s=e[t.index],i=s.content,o=X(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=X(a,"[",s.number),l=X(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Lf(a)}catch(g){if(n.strict)throw Ps(g,s.number);t.index+=1;let w=Es(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let p=Df(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:p}}if(u!==-1){let h;try{h=Ns(a,o)}catch(g){if(n.strict)throw Ps(g,s.number);t.index+=1;let w=Es(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw R(s.number,"expected non-empty field name");let p=As(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:p}}let[f,d]=Le(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let m=Es(e,t,r,c,s.number,n);return{key:f,quoted:d,value:m}}function Es(e,t,r,n,s,i){let o=n.trim();if(o==="[]")return[];if(o!=="")return Ee(o,s);let a=e[t.index];return a!==void 0&&a.depth>r?Is(e,t,r+1,i):{}}function Df(e,t,r,n,s){let i={};for(r.index+=1;r.index<t.length;){let o=t[r.index];if(o.depth<n)break;if(o.depth>n)throw R(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw R(o.number,"blank line inside keyed map");let a=X(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[c,u]=Le(o.content.slice(0,a),o.number);if(c===""&&!u)throw R(o.number,"expected non-empty field name");let l=pt(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw R(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,m)=>{ur(f,d,Ee(l[m],o.number),s,o.number)}),la(i,c,u,f,s,o.number),r.index+=1}return i}function If(e,t,r){let n=t[0],s=X(n.content,":",n.number);if(s===-1)throw R(n.number,"expected `key: value`");let i=n.content.slice(s+1),o={index:0},a=As(e,i,t,o,0,r),c=t[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function As(e,t,r,n,s,i){let o=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw R(o,"expected tabular rows");return Af(e,e.fields,r,n,s+1,i)}if(a!==""){let c=pt(a,e.delimiter,o).map(u=>Ee(u,o));if(c.length!==e.len)throw R(o,"array length mismatch");return c}return Nf(e,r,n,s+1,i)}function Af(e,t,r,n,s,i){let o=[];for(;o.length<e.len;){let c=r[n.index];if(c===void 0)throw vs(r,n.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw R(c.number,"blank line inside array");if(!ca(c.content,e.delimiter,c.number))break;let u=pt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{ur(l,f,Ee(u[d],c.number),i,c.number)}),o.push(l),n.index+=1}if(o.length!==e.len)throw vs(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&ca(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function ca(e,t,r){let n=X(e,":",r);if(n===-1)return!0;let s=X(e,t,r);return s===-1?!1:s<n}function Nf(e,t,r,n,s){let i=[];for(;i.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw vs(t,r.index);if(a.depth>n)throw R(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw R(a.number,"blank line inside array");i.push($f(t,r,n,s))}let o=t[r.index];if(o!==void 0&&o.depth>=n)throw R(o.number,"array length mismatch");return i}function $f(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=X(i,":",s.number),a;try{a=Ns(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return As(a,c,e,t,r,n)}}if(X(i,":",s.number)!==-1){let o=[{number:s.number,depth:r+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;o.push(a),t.index+=1}return Is(o,{index:0},r+1,n)}return t.index+=1,Ee(i,s.number)}function vs(e,t){let r=e[t]??e[e.length-1];return R(r===void 0?1:r.number,"array length mismatch")}function Ns(e,t){if(t===-1)throw R(0,"array header missing colon");let r=e.slice(0,t),n=X(r,"[",0);if(n===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=Le(r.slice(0,n),0)}catch{throw R(0,"invalid array header")}let o=r.slice(n+1),a=o.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=o.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw R(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw R(0,"invalid array header")}let d=o.slice(a+1),m;if(d==="")m=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{m=ua(d.slice(1,-1),f)}catch(h){throw R(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:m}}function Lf(e){let t=X(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let r,n;try{[r,n]=Le(e.slice(0,t),0)}catch{throw R(0,"invalid keyed map header")}if(r===""&&!n)throw R(0,"expected non-empty field name");let s;try{s=ua(e.slice(t+1,-1),A)}catch(i){throw R(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:A,fields:s}}function ua(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw R(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){i();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[f]=Le(e.slice(l,n),0);if(f==="")throw R(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,f],!0),e[n]!=="}"||r.length===d)throw R(0,"invalid array header");n+=1}else r.push([...a,f]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw R(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw R(0,"invalid array header")}if(u===0)throw R(0,"invalid array header")}function i(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw R(0,"invalid array header");let o=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Bf(r[a],r[c])||Os(r[a],r[c])||Os(r[c],r[a]))throw R(0,"duplicate key");for(let a of r){let c=a.join("\0");if(o.has(c))throw R(0,"duplicate key");o.add(c)}return r}function Bf(e,t){return e.length===t.length&&Os(e,t)}function Os(e,t){return t.every((r,n)=>e[n]===r)}function Ps(e,t){return R(t,e.reason??String(e.message))}function la(e,t,r,n,s,i){if(s.expandPaths&&!r&&t.includes(".")){let o=t.split(".");if(o.every(Mf)){ur(e,o,n,s,i);return}}ur(e,[t],n,s,i)}function ur(e,t,r,n,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&n.strict)throw R(s,"duplicate key");At(e,i,r);return}if(o&&!Nt(e[i])){if(n.strict)throw R(s,"path expansion conflict");At(e,i,{})}else o||At(e,i,{});ur(e[i],t.slice(1),r,n,s)}function Mf(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?$s(n,void 0,e,0,!1,r):Nt(e)?da(n,e,0,r):n.push(Te(e,A)),n.join("")}function lr(e,t){e.push(" ".repeat(t*Ds))}function da(e,t,r,n){for(let[s,i]of Object.entries(t))lr(e,r),Cs(e,s,i,r,n)}function Cs(e,t,r,n,s){if(Array.isArray(r)){$s(e,t,r,n,!1,s);return}if(Nt(r)){let i=s.keyedMapCollapse?Uf(r,s):void 0;if(i!==void 0){e.push(pe(t),"{",i.fields.map(Ls).join(A),`}:
7
+ `);for(let[o,a]of Object.entries(r))lr(e,n+1),e.push(pe(o),": ",i.paths.map(c=>Te(ga(a,c),A)).join(A),`
8
+ `);return}e.push(pe(t),`:
9
+ `),da(e,r,n+1,s);return}e.push(pe(t),": ",Te(r,A),`
10
+ `)}function $s(e,t,r,n,s,i){if(r.length===0){t!==void 0?e.push(pe(t),`: []
11
+ `):s?e.push(`[0]:
12
+ `):e.push(`[]
13
+ `);return}if(r.every(cr)){Ts(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Te(a,A)).join(A)),e.push(`
14
+ `);return}let o=s?void 0:fa(r,i);if(o!==void 0){Ts(e,t,r.length,o.fields),e.push(`
15
+ `);for(let a of r)lr(e,n+1),e.push(o.paths.map(c=>Te(ga(a,c),A)).join(A)),e.push(`
16
+ `);return}Ts(e,t,r.length,void 0),e.push(`
17
+ `);for(let a of r)lr(e,n+1),jf(e,a,n+1,i)}function jf(e,t,r,n){if(Array.isArray(t)){e.push("- "),$s(e,void 0,t,r,!0,n);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
18
+ `);return}e.push("- "),Cs(e,s[0][0],s[0][1],r+1,n);for(let[i,o]of s.slice(1))lr(e,r+1),Cs(e,i,o,r+1,n);return}e.push("- ",Te(t,A),`
19
+ `)}function Ts(e,t,r,n){t!==void 0&&e.push(pe(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ls).join(A),"}"),e.push(":")}function fa(e,t){let r=pa(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:ma(r)}}function Uf(e,t){let r=Object.values(e);if(!(r.length<2))return fa(r,t)}function pa(e,t){let r=e[0]?.value;if(!Nt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!Nt(s)||Object.keys(s).length!==n.length||n.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of n){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>cr(a)))continue;if(!t.nestedTabularHeaders)return;let o=pa(i,t);if(o===void 0)return;s.children=o}return n}}function ma(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:ma(r.children,n)})}function ga(e,t){let r=e;for(let n of t)r=r[n];return r}function Ls(e){return e.children===void 0?pe(e.key):`${pe(e.key)}{${e.children.map(Ls).join(A)}}`}var Ds,dr=_(()=>{ar();ks();Ds=2});var ha=_(()=>{dr()});function Jf(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw D(t,"invalid trailer count");return Number.parseInt(r,10)}function va(e,t){if(!Ta.test(e))throw D(t,"invalid tag")}function Gf(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Ta.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw D(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Hf(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw D(t,"invalid header");let s=r.slice(0,n),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!ka.includes(o)&&o!=="")throw D(t,"invalid header delimiter");let a=o===""?A:o,c=r.slice(n+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw D(t,"invalid tag");if(u=c.slice(1,d),va(u,t),o!=="")throw D(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw D(t,"invalid header");let l=c.slice(1,-2),f;try{f=pt(l,a,t).map(d=>Le(d,t)[0])}catch(d){throw It(d)}if(f.length===0||f.some(d=>d===""))throw D(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function qf(e,t,r){if(e===null||e.delimiter===void 0)throw D(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw D(r,"continuation header mismatch")}function ya(e,t,r,n){let s;try{s=pt(e,t,n)}catch(i){throw It(i)}if(s.length!==r)throw D(n,"row arity mismatch");for(let i of s)try{Ee(i,n)}catch(o){throw It(o)}return s}function Wf(e,t,r){let n={};return e.forEach((s,i)=>{try{At(n,s,Ee(t[i],r))}catch(o){throw It(o)}}),n}function Vf(e,t,r){if(e.startsWith("- "))throw D(t,"reserved line prefix");let n=Jf(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw D(t,"trailer without header");if(r.rowCount!==n)throw D(t,"trailer count mismatch");return{kind:"trailer"}}let s=Hf(e,t);if(s!==null)return s.continuation?(qf(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=Gf(e,t);if(i!==null){let o=r?.taggedLanes?.get(i.tag);if(o===void 0)throw D(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:ya(i.cellsText,o.delimiter,o.fields.length,t)}}if(r===null||r.delimiter===void 0)throw D(t,"row before header");return{kind:"row",cells:ya(e,r.delimiter,r.fields.length,t)}}function zf(e,t={}){let r=[],n=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(m,h){let p=i.at(-1);if(p!==void 0&&p.lane===m.lane&&p.delimiter===m.delimiter&&p.fieldText===m.fieldText){p.rows.push(h);return}i.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function f(m,h,p){let g=n.get(m);if(g===void 0){if(n.size>=Ea)throw D(p,"too many tagged lanes");g={segments:[],current:null},n.set(m,g),r.push(m)}else g.current!==null&&g.segments.push(g.current);g.current={lane:m,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(tn(e).forEach((m,h)=>{let p=h+1;if(m==="")return;let g=o===null?{taggedLanes:n}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:n},w=Vf(m,p,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,p);return}if(w.kind==="header"){l(),a||(r.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=n.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw D(p,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of r){if(m===null){d.push(...s);continue}let h=n.get(m);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function rn(e){return zf(e).flatMap(t=>t.rows.map(r=>Wf(t.fields,r,0)))}function Kf(e){if(!ka.includes(e))throw D(0,"invalid header delimiter")}function wa(e,t,r=!1){return`[${`${r?"~":""}${e===A?"":e}`}]{${t}}:
20
+ `}function ba(e,t){return`[]<${e}>{${t}}:
21
+ `}function Bs(e,t){return t.map(pe).join(e)}function Yf(e){if(!Array.isArray(e)||e.length===0)throw D(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Le(String(t),0)}catch(n){throw It(n)}if(r==="")throw D(0,"TOONL header requires fields");return r})}function _a(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Ra(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw D(0,"TOONL continuation cadence must be positive")}function Qf(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Sa(e){if(e===null||typeof e!="object"||Array.isArray(e))throw D(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw D(0,"TOONL output requires object rows");if(t.some(r=>!cr(e[r])))throw D(0,"TOONL rows must be flat objects");return t}function Zf(e){return JSON.stringify([...e].sort())}function xa(e,t){let r=Zf(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function nn({delimiter:e=A,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Kf(e),Ra(r),Ra(n);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:r,continuationEveryBytes:n},m=()=>s===null||!t?"":`[=${a}]
22
+ `,h=()=>Qf(d,c,u)?(c=0,u=0,wa(e,i,!0)):"",p=g=>{va(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Ea)throw D(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw D(0,"TOONL encoder is closed");let w=xa(Sa(g),o),y="";(s===null||s.length!==w.length||s.some((O,B)=>O!==w[B]))&&(y+=m(),s=w,i=Bs(e,s),a=0,c=0,u=0,y+=wa(e,i));let v=s.map(O=>Te(g[O],e));y+=h();let E=`${v.join(e)}
23
+ `;return y+=E,a+=1,c+=1,u+=E.length,y},declareLane(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=Yf(w),v=Bs(A,y),E=p(g);return _a(E.fields,y)?"":(E.fields=y,ba(g,v))},pushTagged(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=p(g),v=xa(Sa(w),y.fieldsByShape),E=Bs(A,v),O=v.map(le=>Te(w[le],A)),B="";return _a(y.fields,v)||(y.fields=v,B+=ba(g,E)),`${B}${g}:${O.join(A)}
24
+ `},end(){return f?"":(f=!0,m())}}}var ka,Ea,Ta,xS,kS,Oa=_(()=>{ar();dr();ks();ka=[A,"|"," "],Ea=8,Ta=/^[A-Za-z0-9_-]+$/,xS=new TextEncoder,kS=new TextDecoder});var ee=_(()=>{ar();dr();dr();ha();Oa()});function Xf(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${C(Ms(e))}
25
+ `)}function Ms(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Xf(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ep(e.diagnostics,3)),t}function me(e,t,r){let s=([r,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:fr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:fr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:fr(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:fr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:fr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function sn(e,t,r,n){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function fr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function ep(e,t){return e.split(/\r?\n/).slice(0,t).join(`
26
+ `).trim()}var ve=_(()=>{"use strict";ee()});import{isAbsolute as ex,join as Lt,resolve as tx}from"node:path";function rp(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Aa(e){return Lt(rp(e),tp)}function Na(e){return Lt(Aa(e),"state")}function np(e){return Lt(Aa(e),"tmp")}function q(e){return Lt(Na(e),"rsp")}function sp(e){return Lt(Na(e),"red-skills.rdb")}function ip(e){return Lt(np(e),"red-skills.rdb")}function Ba(e,t){let r=sp(e);if(t(r))return r;let n=ip(e);if(t(n))throw op();return r}function op(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}var tp,$a,La,Be=_(()=>{tp=".red";$a=".red/state/red-skills.rdb";La=".red/tmp/red-skills.rdb"});function j(e){return C(e,{keyedMapCollapse:!0})}var ap,cp,ix,Me=_(()=>{ee();Be();ap=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],cp=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],ix=[...ap,...cp]});function mt(e){let t=[],r;for(let n=0;n<e.length;n++){let s=e[n];if(s==="--query"){r=e[++n];continue}if(s.startsWith("--query=")){r=s.slice(8);continue}t.push(s)}return{argv:t,query:r?.trim()||void 0}}function lp(e,t){if(!t)return!0;let r=Us(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function W(e,t){return t?e.filter(r=>lp(r,t)):[...e]}function je(e,t){return Fs(e,t,{includeLegacyHelp:!0})}function Fs(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Us(e){return Array.isArray(e)?e.map(Us).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Us).join(" "):String(e??"")}var pr=_(()=>{"use strict"});async function ja(e,t){return dp?mp(e,t):fp?hp(e,t):pp(e,t)}async function pp(e,t){let{spawn:r}=await import("node:child_process"),n=r(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((i,o)=>{n.stdin.write(s,a=>a?o(a):i())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",i=>s(i??0))})}}}function mp(e,t){let r=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),n=r.stdin.getWriter?r.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){n?await n.write(s):(r.stdin.write(s),await r.stdin.flush())},end(){n?n.close():r.stdin.end()}},stdout:gp(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*gp(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}async function hp(e,t){let n=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=n.stdin.getWriter();return{runtime:"deno",stdin:{async write(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:yp(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*yp(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var dp,fp,Ua=_(()=>{dp=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",fp=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as wp}from"node:fs";import{join as bp}from"node:path";function Fa(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:r,envVar:n}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[n];if(typeof s=="string"&&s!=="")return s;let i=bp(r,"bin",t);if(wp(i))return i;throw new Error(`reddb: binary "${t}" not found.
4
27
  expected at: ${i}
5
- override: set ${r}=/path/to/${t}
28
+ override: set ${n}=/path/to/${t}
6
29
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
7
- or check the postinstall log for a download error.`)}var Go=E(()=>{});import{fileURLToPath as Vd}from"node:url";import{dirname as zd,resolve as Kd,join as qR}from"node:path";function Zd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ho(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Fo({name:Zd(),packageRoot:Qd,envVar:"REDDB_BIN"})}var Yd,Qd,qo=E(()=>{Go();Yd=zd(Vd(import.meta.url)),Qd=Kd(Yd,"..")});var Xd,ef,k,Kn,He=E(()=>{Xd=new TextEncoder,ef=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Kn=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 k("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((i,o)=>{this.pending.set(r,{resolve:i,reject:o}),this.child.stdin.write(Xd.encode(s+`
8
- `)).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 s=0;for(let i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#n(ef.decode(o)),s=i+1}s>0&&(t=t.subarray(s))}}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(i){this.#e(`malformed server response: ${i.message}`);return}let r=n.id;if(r==null)return;let s=this.pending.get(r);s&&(this.pending.delete(r),n.error?s.reject(new k(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):s.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new k("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function fs(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:/"?tf(e):nf(e)}function tf(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(l){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),i=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=rf(s),a=n.port?Number(n.port):ds(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:i||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function nf(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(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):ds(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):ds(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 k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function rf(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 k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function ds(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 ms=E(()=>{He()});function of(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Wo(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Wo(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Wo(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 af(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 sf,tn,ps=E(()=>{He();sf=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&sf.has(this._transport))throw new k("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:af(r.value)}async put(t,n,r,s={}){this._guard("put");let i=of(r);await this._client.call("cache.put",{namespace:t,key:n,value:i,...s})}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 gs(e,t){return`${hs(e)}.${cf(t)}`}function hs(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function cf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function uf(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 Vo(e){return`'${String(e).replace(/'/g,"''")}'`}var Pt,ys=E(()=>{He();Pt=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Vo).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${gs(s,t)} = ${uf(n)}${o}${i}`})}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 ${gs(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let s of t)r.push(await this.get(s,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,s=await this.client.call("query",{sql:`KV DELETE ${gs(r,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>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 k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${hs(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Vo).join(", ")}] FROM ${hs(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new k("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,s=new URLSearchParams;n.sinceLsn!=null&&s.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&s.set("limit",String(n.limit));let i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
30
+ or check the postinstall log for a download error.`)}var Ja=_(()=>{});import{fileURLToPath as _p}from"node:url";import{dirname as Rp,resolve as Sp,join as gx}from"node:path";function Ep(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ga(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Fa({name:Ep(),packageRoot:kp,envVar:"REDDB_BIN"})}var xp,kp,Ha=_(()=>{Ja();xp=Rp(_p(import.meta.url)),kp=Sp(xp,"..")});var Tp,vp,k,an,Ke=_(()=>{Tp=new TextEncoder,vp=new TextDecoder("utf-8"),k=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},an=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new k("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((i,o)=>{this.pending.set(n,{resolve:i,reject:o}),this.child.stdin.write(Tp.encode(s+`
31
+ `)).catch(a=>{this.pending.delete(n),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 r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#r(vp.decode(o)),s=i+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(i){this.#e(`malformed server response: ${i.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new k(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new k("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function Gs(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:/"?Op(e):Pp(e)}function Op(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 r;try{r=new URL(t)}catch(l){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),i=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let o=Cp(s),a=r.port?Number(r.port):Js(o),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:o,host:r.hostname,port:a,path:i||void 0,username:c,password:u,token:n.get("token")??void 0,apiKey:n.get("apiKey")??n.get("api_key")??void 0,loginUrl:n.get("loginUrl")??n.get("login_url")??void 0,params:n,originalUri:e}}function Pp(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],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):Js(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Js(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 k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Cp(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 k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Js(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 Hs=_(()=>{Ke()});function Ip(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return qa(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return qa(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function qa(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function Ap(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}var Dp,mr,qs=_(()=>{Ke();Dp=new Set(["embedded"]),mr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Dp.has(this._transport))throw new k("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:Ap(n.value)}async put(t,r,n,s={}){this._guard("put");let i=Ip(n);await this._client.call("cache.put",{namespace:t,key:r,value:i,...s})}async exists(t,r){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:r}))?.status??"maybe"}async invalidate(t,r){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:r})}async invalidatePrefix(t,r){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:r}))?.removed??0}async invalidateTags(t,r){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:r}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function Ws(e,t){return`${Vs(e)}.${Np(t)}`}function Vs(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Np(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function $p(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 Wa(e){return`'${String(e).replace(/'/g,"''")}'`}var Mt,zs=_(()=>{Ke();Mt=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Wa).join(", ")}]`:"",o=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Ws(s,t)} = ${$p(r)}${o}${i}`})}set(t,r,n={}){return this.put(t,r,n)}async get(t,r={}){let n=r.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${Ws(n,t)}`}))?.rows?.[0]?.value??null}async getMany(t,r={}){let n=[];for(let s of t)n.push(await this.get(s,r));return n}async exists(t,r={}){return{exists:await this.get(t,r)!==null}}async delete(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${Ws(n,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Vs(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Wa).join(", ")}] FROM ${Vs(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new k("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
9
32
 
10
33
  `)){let l=u.split(`
11
- `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function lf(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=De(e),a=De(t),c=s!=null?` GROUP ${De(s)}`:"",u=i!=null?bs(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function De(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function bs(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function df(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ff(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${df(e.priority)}`),e.key!=null&&(t+=` KEY ${_s(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${_s(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function mf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?_s(e):JSON.stringify(e)}function _s(e){return`'${String(e).replace(/'/g,"''")}'`}function ws(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,Rs=E(()=>{He();nn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${De(t)}`})}push(t,n,r={}){let s=ff(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${mf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${bs(n)}`});return ws(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${bs(n)}`});return ws(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${De(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${De(t)}`})}async readWait(t,n,r={}){let s=lf(t,n,r),i=await this.client.call("query",{sql:s});return ws(i)}}});function zo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function pf(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function Yn(e){return String(e).split(".").map(Ko).join(".")}function Ko(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function gf(e){return Yo(JSON.stringify(e))}function hf(e){return JSON.stringify(e)}function yf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?gf(e):Yo(e)}function Yo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,Ss=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){zo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Yn(t)} DOCUMENT VALUES (${hf(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new k("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 k("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=pf(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 ${Yn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){zo(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Ko(c)} = ${yf(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Yn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new k("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 ${Yn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function wf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return _f(e)}function bf(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function qe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function _f(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qo(e)}function Qo(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,ks=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){bf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Qo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${wf(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${qe(r)} ${qe(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${qe(r)} ${qe(t)}`})}}});function Rf(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 Dt(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 Sf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zo(e)}function Zo(e){return`'${String(e).replace(/'/g,"''")}'`}var on,Es=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Rf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Zo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${Sf(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Dt(r)}.${Dt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Dt(r)}.${Dt(t)}`})}}});async function ea(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(kf)}async function ta(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${xf(t)}`)).rows??[]).some(r=>r.name===String(t))}function kf(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Xo(e){return String(e).split(".").map(Ef).join(".")}function Ef(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function xf(e){return`'${String(e).replace(/'/g,"''")}'`}var an,xs=E(()=>{He();an=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 k("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(Xo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Xo(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 Ct(e,t={}){let n=fs(e);if(Nf(n),n.kind==="embedded"){let r=If(n,t.auth);if(r.token||r.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Af(n),i=t.binary??Ho(),o=await Uo(i,s),a=new Kn(o);return await a.call("version",{}),new Ts(a,{transport:"embedded"})}}function ra(e){return Of(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:Df(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&$f(e)?{$uuid:e}:e}function Of(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("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 k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Pf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ra):e.map(ra)}function Df(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 Cf(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 $f(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Qn(e){if(Array.isArray(e))return e.map(Qn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Cf(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]=Qn(s);return n}return e}function Af(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function If(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 Nf(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",vf)}function Os(){return new k(na,`${na}: nested transactions are not supported on one connection`)}function ia(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Bf(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${sa} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Lf(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${sa} 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 k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var vf,Tf,sa,na,Zn,vs,Ts,Ps=E(()=>{Jo();qo();He();ms();ps();ys();Rs();Ss();ks();Es();xs();ps();ys();Rs();Ss();ks();Es();xs();ms();vf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Tf="1.0",sa="1.0.9",na="NESTED_TX_NOT_SUPPORTED";Zn=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 Os()}},vs=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Os();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 k("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 k("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 k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Zn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){ia(n,r)}throw n}}},Ts=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Tf,this.cache=new tn(t,this.transport),this.queue=new nn(t),this.queues=this.queue,this.documents=new rn(this);let r=new Pt(t);this.kv=Object.assign((s="kv_default")=>new Pt(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 sn(t,s),this.vault=(s="red.vault")=>new on(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Pf(n);return r==null?this.client.call("query",{sql:t}).then(Qn):this.client.call("query",{sql:t,params:r}).then(Qn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Bf(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 Lf(r,n.length)}tx(){return new vs(this)}async transaction(t){if(this.inTransaction)throw Os();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 Zn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){ia(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return ta(this,t)}list(){return ea(this)}from(t){return new an(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()}}});import{isAbsolute as CS,join as $t,resolve as $S}from"node:path";function jf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function oa(e){return $t(jf(e),Mf)}function aa(e){return $t(oa(e),"state")}function Uf(e){return $t(oa(e),"tmp")}function F(e){return $t(aa(e),"rsp")}function Jf(e){return $t(aa(e),"red-skills.rdb")}function Ff(e){return $t(Uf(e),"red-skills.rdb")}function la(e,t){let n=Jf(e);if(t(n))return n;let r=Ff(e);if(t(r))throw Gf();return n}function Gf(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}var Mf,ca,ua,Ce=E(()=>{Mf=".red";ca=".red/state/red-skills.rdb";ua=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function C(e,t){return new ot(e,t)}function At(e){return e instanceof ot?e:e instanceof cn?new ot(e.line,e.reason):new ot(0,String(e&&e.message?e.message:e))}var cn,ot,un=E(()=>{cn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},ot=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Xn(e){let t=e.split(`
12
- `);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function ye(e){return _(e,"invalid quoted string")}function we(e,t){if(e==="")return"";if(e.startsWith('"'))return da(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Hf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[da(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function da(e,t){if(e[0]!=='"')throw ye(t);let n="",r=1;for(;r<e.length;){let s=e[r];if(r+=1,s==='"'){if(e.slice(r).trim()==="")return n;throw ye(t)}if(s==="\\"){let i=e[r];switch(r+=1,i){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
13
- `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let o=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw ye(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ye(t);n+=String.fromCharCode(a),r+=4;break}default:throw ye(t)}continue}if(s<" "&&s!==" ")throw ye(t);n+=s}throw ye(t)}function at(e,t,n){if(e==="")return[];let r=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(r.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw ye(n);return r.push(e.slice(s).trim()),r}function Y(e,t,n){let r=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&r)s=!0;else if(o==='"')r=!r;else if(o===t&&!r)return i}if(r||s)throw ye(n);return-1}function Hf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function qf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Wf(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw _(0,"number is not representable in TOON");return String(e)}function ln(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function be(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Wf(e);if(typeof e=="string")return zf(e,t);throw _(0,"not a primitive")}function Vf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Vf(e)?e:fa(e)}function zf(e,t){return Kf(e,t)?fa(e):e}function Kf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||qf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function fa(e){let t='"';for(let n of e)switch(n){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
- `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:n<" "?t+=`\\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=n}return`${t}"`}function It(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var A,Ds=E(()=>{un();A=","});function Yf(e={}){return{indent:Math.max(1,e.indent??Ls),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Qf(e,t){let n=[],r=!1;return Xn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw _(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw _(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function j(e,t){let n=Yf(t),r=Qf(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw _(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Us(s.content,Y(s.content,":",s.number))}catch(l){if(n.strict)throw Ns(l,s.number);u=void 0}if(u!==void 0)return em(u,r,n)}if(i&&Y(s.content,":",s.number)===-1)return we(s.content.trim(),s.number);let o={index:0},a=Ms(r,o,0,n),c=r[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Ms(e,t,n,r){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<n)break;if(i.depth>n)throw _(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Zf(e,t,n,r);ga(s,o,a,c,r,i.number)}return s}function Zf(e,t,n,r){let s=e[t.index],i=s.content,o=Y(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=Y(a,"[",s.number),l=Y(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=sm(a)}catch(g){if(r.strict)throw Ns(g,s.number);t.index+=1;let w=Cs(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw _(s.number,"expected keyed map rows");let m=Xf(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Us(a,o)}catch(g){if(r.strict)throw Ns(g,s.number);t.index+=1;let w=Cs(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw _(s.number,"expected non-empty field name");let m=js(h,c,e,t,n,r);return{key:h.key,quoted:h.keyQuoted,value:m}}let[f,d]=$e(a,s.number);if(f===""&&!d)throw _(s.number,"expected non-empty field name");t.index+=1;let p=Cs(e,t,n,c,s.number,r);return{key:f,quoted:d,value:p}}function Cs(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return we(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Ms(e,t,n+1,i):{}}function Xf(e,t,n,r,s){let i={};for(n.index+=1;n.index<t.length;){let o=t[n.index];if(o.depth<r)break;if(o.depth>r)throw _(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw _(o.number,"blank line inside keyed map");let a=Y(o.content,":",o.number);if(a===-1)throw _(o.number,"expected `key: value`");let[c,u]=$e(o.content.slice(0,a),o.number);if(c===""&&!u)throw _(o.number,"expected non-empty field name");let l=at(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw _(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,p)=>{dn(f,d,we(l[p],o.number),s,o.number)}),ga(i,c,u,f,s,o.number),n.index+=1}return i}function em(e,t,n){let r=t[0],s=Y(r.content,":",r.number);if(s===-1)throw _(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=js(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function js(e,t,n,r,s,i){let o=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw _(o,"expected tabular rows");return tm(e,e.fields,n,r,s+1,i)}if(a!==""){let c=at(a,e.delimiter,o).map(u=>we(u,o));if(c.length!==e.len)throw _(o,"array length mismatch");return c}return nm(e,n,r,s+1,i)}function tm(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw As(n,r.index);if(c.depth<s)break;if(c.depth>s)throw _(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw _(c.number,"blank line inside array");if(!ma(c.content,e.delimiter,c.number))break;let u=at(c.content,e.delimiter,c.number);if(u.length!==t.length)throw _(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{dn(l,f,we(u[d],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw As(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&ma(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function ma(e,t,n){let r=Y(e,":",n);if(r===-1)return!0;let s=Y(e,t,n);return s===-1?!1:s<r}function nm(e,t,n,r,s){let i=[];for(;i.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw As(t,n.index);if(a.depth>r)throw _(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw _(a.number,"blank line inside array");i.push(rm(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw _(o.number,"array length mismatch");return i}function rm(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw _(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=Y(i,":",s.number),a;try{a=Us(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return js(a,c,e,t,n,r)}}if(Y(i,":",s.number)!==-1){let o=[{number:s.number,depth:n+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;o.push(a),t.index+=1}return Ms(o,{index:0},n+1,r)}return t.index+=1,we(i,s.number)}function As(e,t){let n=e[t]??e[e.length-1];return _(n===void 0?1:n.number,"array length mismatch")}function Us(e,t){if(t===-1)throw _(0,"array header missing colon");let n=e.slice(0,t),r=Y(n,"[",0);if(r===-1)throw _(0,"invalid array header");let s,i;try{[s,i]=$e(n.slice(0,r),0)}catch{throw _(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw _(0,"invalid array header");let c=o.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw _(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw _(0,"invalid array header")}let d=o.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=pa(d.slice(1,-1),f)}catch(h){throw _(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw _(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:p}}function sm(e){let t=Y(e,"{",0);if(t===-1||!e.endsWith("}"))throw _(0,"invalid keyed map header");let n,r;try{[n,r]=$e(e.slice(0,t),0)}catch{throw _(0,"invalid keyed map header")}if(n===""&&!r)throw _(0,"expected non-empty field name");let s;try{s=pa(e.slice(t+1,-1),A)}catch(i){throw _(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:A,fields:s}}function pa(e,t){let n=[],r=0;function s(a,c){let u=0;for(;r<e.length&&!(c&&e[r]==="}");){if(e[r]===t||e[r]==="}")throw _(0,"invalid array header");let l=r;for(;r<e.length;){let d=e[r];if(d==='"'){i();continue}if(d===t||d==="{"||d==="}")break;r+=1}let[f]=$e(e.slice(l,r),0);if(f==="")throw _(0,"invalid array header");if(u+=1,e[r]==="{"){r+=1;let d=n.length;if(s([...a,f],!0),e[r]!=="}"||n.length===d)throw _(0,"invalid array header");r+=1}else n.push([...a,f]);if(e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw _(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw _(0,"invalid array header")}if(u===0)throw _(0,"invalid array header")}function i(){for(r+=1;r<e.length;){let a=e[r];if(r+=1,a==="\\")r+=1;else if(a==='"')return}}if(s([],!1),r!==e.length)throw _(0,"invalid array header");let o=new Set;for(let a=0;a<n.length;a+=1)for(let c=a+1;c<n.length;c+=1)if(im(n[a],n[c])||Is(n[a],n[c])||Is(n[c],n[a]))throw _(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw _(0,"duplicate key");o.add(c)}return n}function im(e,t){return e.length===t.length&&Is(e,t)}function Is(e,t){return t.every((n,r)=>e[r]===n)}function Ns(e,t){return _(t,e.reason??String(e.message))}function ga(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(om)){dn(e,o,r,s,i);return}}dn(e,[t],r,s,i)}function dn(e,t,n,r,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&r.strict)throw _(s,"duplicate key");It(e,i,n);return}if(o&&!Nt(e[i])){if(r.strict)throw _(s,"path expansion conflict");It(e,i,{})}else o||It(e,i,{});dn(e[i],t.slice(1),n,r,s)}function om(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?Js(r,void 0,e,0,!1,n):Nt(e)?ha(r,e,0,n):r.push(be(e,A)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ls))}function ha(e,t,n,r){for(let[s,i]of Object.entries(t))fn(e,n),Bs(e,s,i,n,r)}function Bs(e,t,n,r,s){if(Array.isArray(n)){Js(e,t,n,r,!1,s);return}if(Nt(n)){let i=s.keyedMapCollapse?cm(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Fs).join(A),`}:
15
- `);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(_a(a,c),A)).join(A),`
16
- `);return}e.push(de(t),`:
17
- `),ha(e,n,r+1,s);return}e.push(de(t),": ",be(n,A),`
18
- `)}function Js(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(de(t),`: []
19
- `):s?e.push(`[0]:
20
- `):e.push(`[]
21
- `);return}if(n.every(ln)){$s(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>be(a,A)).join(A)),e.push(`
22
- `);return}let o=s?void 0:ya(n,i);if(o!==void 0){$s(e,t,n.length,o.fields),e.push(`
23
- `);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(_a(a,c),A)).join(A)),e.push(`
24
- `);return}$s(e,t,n.length,void 0),e.push(`
25
- `);for(let a of n)fn(e,r+1),am(e,a,r+1,i)}function am(e,t,n,r){if(Array.isArray(t)){e.push("- "),Js(e,void 0,t,n,!0,r);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
- `);return}e.push("- "),Bs(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))fn(e,n+1),Bs(e,i,o,n+1,r);return}e.push("- ",be(t,A),`
27
- `)}function $s(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Fs).join(A),"}"),e.push(":")}function ya(e,t){let n=wa(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ba(n)}}function cm(e,t){let n=Object.values(e);if(!(n.length<2))return ya(n,t)}function wa(e,t){let n=e[0]?.value;if(!Nt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!Nt(s)||Object.keys(s).length!==r.length||r.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of r){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>ln(a)))continue;if(!t.nestedTabularHeaders)return;let o=wa(i,t);if(o===void 0)return;s.children=o}return r}}function ba(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ba(n.children,r)})}function _a(e,t){let n=e;for(let r of t)n=n[r];return n}function Fs(e){return e.children===void 0?de(e.key):`${de(e.key)}{${e.children.map(Fs).join(A)}}`}var Ls,mn=E(()=>{un();Ds();Ls=2});var Ra=E(()=>{mn()});function lm(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw C(t,"invalid trailer count");return Number.parseInt(n,10)}function $a(e,t){if(!Ca.test(e))throw C(t,"invalid tag")}function dm(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Ca.test(r)){if(/^[A-Za-z0-9_-]/.test(r)&&/^[^,[\]|{}:\t ]+$/.test(r))throw C(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function fm(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw C(t,"invalid header");let s=n.slice(0,r),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!Pa.includes(o)&&o!=="")throw C(t,"invalid header delimiter");let a=o===""?A:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw C(t,"invalid tag");if(u=c.slice(1,d),$a(u,t),o!=="")throw C(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw C(t,"invalid header");let l=c.slice(1,-2),f;try{f=at(l,a,t).map(d=>$e(d,t)[0])}catch(d){throw At(d)}if(f.length===0||f.some(d=>d===""))throw C(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function mm(e,t,n){if(e===null||e.delimiter===void 0)throw C(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw C(n,"continuation header mismatch")}function Sa(e,t,n,r){let s;try{s=at(e,t,r)}catch(i){throw At(i)}if(s.length!==n)throw C(r,"row arity mismatch");for(let i of s)try{we(i,r)}catch(o){throw At(o)}return s}function pm(e,t,n){let r={};return e.forEach((s,i)=>{try{It(r,s,we(t[i],n))}catch(o){throw At(o)}}),r}function gm(e,t,n){if(e.startsWith("- "))throw C(t,"reserved line prefix");let r=lm(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw C(t,"trailer without header");if(n.rowCount!==r)throw C(t,"trailer count mismatch");return{kind:"trailer"}}let s=fm(e,t);if(s!==null)return s.continuation?(mm(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=dm(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw C(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:Sa(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw C(t,"row before header");return{kind:"row",cells:Sa(e,n.delimiter,n.fields.length,t)}}function hm(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(p,h){let m=i.at(-1);if(m!==void 0&&m.lane===p.lane&&m.delimiter===p.delimiter&&m.fieldText===p.fieldText){m.rows.push(h);return}i.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function f(p,h,m){let g=r.get(p);if(g===void 0){if(r.size>=Da)throw C(m,"too many tagged lanes");g={segments:[],current:null},r.set(p,g),n.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Xn(e).forEach((p,h)=>{let m=h+1;if(p==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},w=gm(p,m,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,m);return}if(w.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=r.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw C(m,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of n){if(p===null){d.push(...s);continue}let h=r.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function er(e){return hm(e).flatMap(t=>t.rows.map(n=>pm(t.fields,n,0)))}function ym(e){if(!Pa.includes(e))throw C(0,"invalid header delimiter")}function ka(e,t,n=!1){return`[${`${n?"~":""}${e===A?"":e}`}]{${t}}:
28
- `}function Ea(e,t){return`[]<${e}>{${t}}:
29
- `}function Gs(e,t){return t.map(de).join(e)}function wm(e){if(!Array.isArray(e)||e.length===0)throw C(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=$e(String(t),0)}catch(r){throw At(r)}if(n==="")throw C(0,"TOONL header requires fields");return n})}function xa(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function va(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw C(0,"TOONL continuation cadence must be positive")}function bm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Ta(e){if(e===null||typeof e!="object"||Array.isArray(e))throw C(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw C(0,"TOONL output requires object rows");if(t.some(n=>!ln(e[n])))throw C(0,"TOONL rows must be flat objects");return t}function _m(e){return JSON.stringify([...e].sort())}function Oa(e,t){let n=_m(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function tr({delimiter:e=A,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){ym(e),va(n),va(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},p=()=>s===null||!t?"":`[=${a}]
30
- `,h=()=>bm(d,c,u)?(c=0,u=0,ka(e,i,!0)):"",m=g=>{$a(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Da)throw C(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw C(0,"TOONL encoder is closed");let w=Oa(Ta(g),o),y="";(s===null||s.length!==w.length||s.some((O,L)=>O!==w[L]))&&(y+=p(),s=w,i=Gs(e,s),a=0,c=0,u=0,y+=ka(e,i));let T=s.map(O=>be(g[O],e));y+=h();let x=`${T.join(e)}
31
- `;return y+=x,a+=1,c+=1,u+=x.length,y},declareLane(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=wm(w),T=Gs(A,y),x=m(g);return xa(x.fields,y)?"":(x.fields=y,Ea(g,T))},pushTagged(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=m(g),T=Oa(Ta(w),y.fieldsByShape),x=Gs(A,T),O=T.map(ce=>be(w[ce],A)),L="";return xa(y.fields,T)||(y.fields=T,L+=Ea(g,x)),`${L}${g}:${O.join(A)}
32
- `},end(){return f?"":(f=!0,p())}}}var Pa,Da,Ca,qS,WS,Aa=E(()=>{un();mn();Ds();Pa=[A,"|"," "],Da=8,Ca=/^[A-Za-z0-9_-]+$/,qS=new TextEncoder,WS=new TextDecoder});var Q=E(()=>{un();mn();mn();Ra();Aa()});function G(e){return D(e,{keyedMapCollapse:!0})}var Rm,Sm,bk,pn=E(()=>{Q();Ce();Rm=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Sm=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],bk=[...Rm,...Sm]});function ct(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 Em(e,t){if(!t)return!0;let n=Hs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function H(e,t){return t?e.filter(n=>Em(n,t)):[...e]}function Ae(e,t){return qs(e,t,{includeLegacyHelp:!0})}function qs(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function Hs(e){return Array.isArray(e)?e.map(Hs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Hs).join(" "):String(e??"")}var gn=E(()=>{"use strict"});function Vs(e,t,n=Na){let r=Math.max(0,Math.floor(e)),s=n in Ba?n:Na,i=Ba[s],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:Ws(r,i),dollars_saved_low_usd:o==null?null:Ws(o,i),dollars_saved_high_usd:a==null?null:Ws(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:xm}}function Ws(e,t){return vm(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function vm(e){return Math.round(e*1e6)/1e6}var Na,Ba,xm,zs=E(()=>{"use strict";Na="gpt-5",Ba={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},xm="estimate derived from byte-based token estimate when token counts are estimated"});function Tm(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${D(Ks(e))}
33
- `)}function Ks(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Tm(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Om(e.diagnostics,3)),t}function fe(e,t,n){let s=([n,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:yn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:yn(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:yn(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:yn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function nr(e,t,n,r){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Om(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
- `).trim()}var ut=E(()=>{"use strict";Q()});import{existsSync as Pm,readFileSync as Tk}from"node:fs";import{dirname as Dm,join as Cm}from"node:path";function La(e,t){let n=e;for(let r=0;r<16;r++){let s=Cm(n,t);if(Pm(s))return s;let i=Dm(n);if(i===n)break;n=i}return null}function $m(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function rr(e,t){let n=[];for(let r of e.split(`
35
- `)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(f=>f.key).join(".")===t)return $m(u)}}var Ma=E(()=>{});import{createConnection as Am}from"node:net";async function Lt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Am(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
34
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Lp(e,t,r){let{waitMs:n,group:s=null,count:i=null}=r??{};if(!Number.isInteger(n)||n<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=Ue(e),a=Ue(t),c=s!=null?` GROUP ${Ue(s)}`:"",u=i!=null?Ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function Ue(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Ys(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Bp(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Mp(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Bp(e.priority)}`),e.key!=null&&(t+=` KEY ${Qs(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Qs(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function jp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Qs(e):JSON.stringify(e)}function Qs(e){return`'${String(e).replace(/'/g,"''")}'`}function Ks(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var gr,Zs=_(()=>{Ke();gr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ue(t)}`})}push(t,r,n={}){let s=Mp(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ue(t)} ${jp(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ue(t)}${Ys(r)}`});return Ks(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ue(t)}${Ys(r)}`});return Ks(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ue(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ue(t)}`})}async readWait(t,r,n={}){let s=Lp(t,r,n),i=await this.client.call("query",{sql:s});return Ks(i)}}});function Va(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function Up(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(za).join(".")}function za(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Fp(e){return Ka(JSON.stringify(e))}function Jp(e){return JSON.stringify(e)}function Gp(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Fp(e):Ka(e)}function Ka(e){return`'${String(e).replace(/'/g,"''")}'`}var hr,Xs=_(()=>{Ke();hr=class{constructor(t){this.db=t}async insert(t,r){Va(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${Jp(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new k("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new k("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=Up(r.limit),s=r.orderBy??r.order_by??"rid ASC",i=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${cn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Va(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${za(c)} = ${Gp(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${i} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new k("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${cn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function Hp(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${Ye(r)}.${Ye(n)})`}return Wp(e)}function qp(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Ye(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 Wp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ya(e)}function Ya(e){return`'${String(e).replace(/'/g,"''")}'`}var yr,ei=_(()=>{yr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){qp(n,"config");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ya).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Ye(s)} ${Ye(t)} = ${Hp(r,n)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Ye(n)} ${Ye(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Ye(n)} ${Ye(t)}`})}}});function Vp(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function jt(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 zp(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qa(e)}function Qa(e){return`'${String(e).replace(/'/g,"''")}'`}var wr,ti=_(()=>{wr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){Vp(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Qa).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${jt(s)}.${jt(t)} = ${zp(r)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${jt(n)}.${jt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${jt(n)}.${jt(t)}`})}}});async function Xa(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Kp)}async function ec(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Qp(t)}`)).rows??[]).some(n=>n.name===String(t))}function Kp(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Za(e){return String(e).split(".").map(Yp).join(".")}function Yp(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Qp(e){return`'${String(e).replace(/'/g,"''")}'`}var br,ri=_(()=>{Ke();br=class e{constructor(t,r,n=null,s=[],i=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=i}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new k("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Za).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Za(this.collection)}${r}`,i=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).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 Ut(e,t={}){let r=Gs(e);if(am(r),r.kind==="embedded"){let n=om(r,t.auth);if(n.token||n.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=im(r),i=t.binary??Ga(),o=await ja(i,s),a=new an(o);return await a.call("version",{}),new si(a,{transport:"embedded"})}}function rc(e){return em(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:rm(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&sm(e)?{$uuid:e}:e}function em(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("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 k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function tm(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(rc):e.map(rc)}function rm(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 r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function nm(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function sm(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return nm(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 n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=un(s);return r}return e}function im(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function om(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;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");r.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");r.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");r.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");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function am(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",Zp)}function ii(){return new k(tc,`${tc}: nested transactions are not supported on one connection`)}function sc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function cm(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${nc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function um(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${nc} 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 k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Zp,Xp,nc,tc,ln,ni,si,oi=_(()=>{Ua();Ha();Ke();Hs();qs();zs();Zs();Xs();ei();ti();ri();qs();zs();Zs();Xs();ei();ti();ri();Hs();Zp="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Xp="1.0",nc="1.0.9",tc="NESTED_TX_NOT_SUPPORTED";ln=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw ii()}},ni=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ii();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 k("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 k("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 k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new ln(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){sc(r,n)}throw r}}},si=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=Xp,this.cache=new mr(t,this.transport),this.queue=new gr(t),this.queues=this.queue,this.documents=new hr(this);let n=new Mt(t);this.kv=Object.assign((s="kv_default")=>new Mt(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new yr(t,s),this.vault=(s="red.vault")=>new wr(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=tm(r);return n==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:n}).then(un)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return cm(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return um(n,r.length)}tx(){return new ni(this)}async transaction(t){if(this.inTransaction)throw ii();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new ln(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){sc(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ec(this,t)}list(){return Xa(this)}from(t){return new br(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});function ci(e,t,r=ic){let n=Math.max(0,Math.floor(e)),s=r in oc?r:ic,i=oc[s],o=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:ai(n,i),dollars_saved_low_usd:o==null?null:ai(o,i),dollars_saved_high_usd:a==null?null:ai(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:lm}}function ai(e,t){return dm(Math.max(0,e)/1e6*t)}function _r(e){return`$${e.toFixed(6)}`}function dm(e){return Math.round(e*1e6)/1e6}var ic,oc,lm,ui=_(()=>{"use strict";ic="gpt-5",oc={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},lm="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as fm,readFileSync as r0}from"node:fs";import{dirname as pm,join as mm}from"node:path";function ac(e,t){let r=e;for(let n=0;n<16;n++){let s=mm(r,t);if(fm(s))return s;let i=pm(r);if(i===r)break;r=i}return null}function gm(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function dn(e,t){let r=[];for(let n of e.split(`
35
+ `)){let s=n.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(f=>f.key).join(".")===t)return gm(u)}}var cc=_(()=>{});import{createConnection as hm}from"node:net";async function Ft(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let i=hm(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},r);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
36
36
  `)}),i.on("data",l=>{a+=l.toString("utf8");let f=a.indexOf(`
37
- `);if(f<0)return;let d=a.slice(0,f);u(()=>{try{r(JSON.parse(d))}catch(p){s(p)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var Ys=E(()=>{});import{createHash as Im,randomUUID as Ga}from"node:crypto";import{spawn as Ha}from"node:child_process";import{constants as Qs}from"node:fs";import{readFileSync as Nm}from"node:fs";import{mkdir as sr,open as Bm,readFile as qa,rename as Lm,rm as _e,stat as Mm,writeFile as jm}from"node:fs/promises";import{tmpdir as Um}from"node:os";import{dirname as We,join as ie,resolve as ir}from"node:path";import{fileURLToPath as Wa}from"node:url";function Ve(e){let t=Zm(e)??ir(e),n=Qm(t),r=F(t);return{rootDir:t,socketPath:ie(n,"rsp.sock"),pidPath:ie(n,"rsp.pid"),lockPath:ie(n,"rsp.lock"),wakeLockPath:ie(t,".red","tmp","rsp.wake.lock"),summaryPath:ie(r,"rsp-status-summary.json"),registryPath:ie(r,"rsp-resident.pid.json")}}async function or(e,t){if(await sr(We(e.socketPath),{recursive:!0,mode:448}),await Ja(e.socketPath,t))return;await Ua(e,t);let n=await Qa(e.lockPath);if(n)try{if(await Ja(e.socketPath,t))return;await Ua(e,t),await Hm(e.socketPath);let r=qm(e,t);await ja(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await ja(e.socketPath)}async function lt(e,t=200){try{return await za(e,t)!=null}catch{return!1}}async function za(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ga(),op:"ping"});return n.ok?tc(n.value)?{version:np(n.value.version)}:{}:null}async function ar(e,t){if(await sr(We(e.socketPath),{recursive:!0,mode:448}),await lt(e.socketPath,50))return!1;let n=await Qa(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Xa(t);return Ha(r,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Ka(e,t){try{await or(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=zm(await qa(e,"utf8"));return rp(t)?t:null}catch{return null}}async function cr(e,t){let n={version:Va,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await sr(We(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await jm(r,`${D(n)}
38
- `,{encoding:"utf8",mode:384}),await Lm(r,e)}async function ur(e,t=process.pid){try{let n=await bn(e);if(n&&n.pid!==t)return;await _e(e,{force:!0})}catch{}}async function wn(e){let t=await bn(e.registryPath);if(!t)try{return await qa(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await lt(t.socket_path,100);return n&&await Ym(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function Ya(e){let t=await wn(e);return t.state==="registered-dead"||t.state==="invalid"?(await _e(e.registryPath,{force:!0}),await wn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Za(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function ja(e,t){let n=Date.now()+Gm(),r;for(;Date.now()<n;){if(await lt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Zs("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Zs("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Zs("resident rsp server did not start",t):"resident rsp server did not start")}function Gm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Fm}async function Hm(e){await _e(e,{force:!0})}async function Qa(e){await sr(We(e),{recursive:!0,mode:448});try{return await Bm(e,Qs.O_CREAT|Qs.O_EXCL|Qs.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function qm(e,t){let[n,r]=Xa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ha(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Vm(`${o}${c}`,Wm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Zs(e,t,n){let r=[e];n&&r.push(`error: ${n.message}`),t.child.exitCode!=null&&r.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&r.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&r.push(`stderr tail:
39
- ${s}`),r.join(`
40
- `)}function Vm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function zm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return j(t)}}async function Ua(e,t){try{let n=await bn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Mt(n.pid)){await _e(e.registryPath,{force:!0});return}if(await lt(n.socket_path,100))return;if(ec(t.clientVersion,n.resident_version)&&(await Km(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Za(n.pid),await _e(e.registryPath,{force:!0})}catch{}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Za(e){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Km(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Ym(e){if(!e.startsWith("file://"))return!1;try{return await Mm(Wa(e)),!1}catch(t){return t.code==="ENOENT"}}function Xa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?ir(process.argv[1]):Wa(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Qm(e){let t=Im("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ie(n,"red-skills",t);if(ie(s,"rsp.sock").length<Jm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Um(),`red-skills-${r}`,t)}function Zm(e){let t=ir(e);for(let n=0;n<32;n++){try{let s=Xs(ie(t,".git"));if(s!=null)return Xm(t,s)??t;if(Xs(ie(t,".git","HEAD"))!=null||Xs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Xm(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=ir(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Xs(e){try{return Nm(e,"utf8")}catch{return null}}async function Ja(e,t){let n=await za(e).catch(()=>null);return n?ec(t.clientVersion,n.version)?(await ep(e,t.clientVersion),await sp(e),!1):!0:!1}async function ep(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ga(),op:"handover",clientVersion:t})}catch{}}function ec(e,t){return!e||!t?!1:tp(e,t)>0}function tp(e,t){let n=Fa(e),r=Fa(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Fa(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function tc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function np(e){return typeof e=="string"&&e.length>0?e:void 0}function rp(e){return tc(e)&&e.version===Va&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function sp(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Jm,Va,Fm,Wm,lr=E(()=>{Q();Ce();Ys();Jm=108,Va=1,Fm=5e3;Wm=8*1024});var ac={};M(ac,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>mr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>oc,DEFAULT_RSP_STORE_PATH:()=>ei,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>fr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>rc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>sc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>dr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>ic,resolveRspConfig:()=>je});import{existsSync as ip,readFileSync as op}from"node:fs";import{join as ap,resolve as nc}from"node:path";function je(e,t,n){let r=La(nc(e),ap(".red","config.yaml")),s=r?op(r,"utf8"):"",i=rr(s,"rsp.enabled")==="true",o=rr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ie(me(s,"rsp.ttlDays"),Be),u=Ie(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ie(me(s,"rsp.byteBudget"),Me),f=Ie(me(s,"rsp.telemetryTtlDays"),dr),d=Ie(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),fr),p=Ie(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),rc),h=Ie(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),sc),m=cp(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),mr,ic),g=Ie(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=up(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),oc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${la(nc(y),ip)}`;return{enabled:i,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function me(e,t){let n=rr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ie(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function cp(e,t,n){let r=Ie(e,t);return Math.max(r,n)}function up(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function jt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ne,ei,Be,Le,Me,dr,fr,rc,sc,mr,ic,oc,Re=E(()=>{"use strict";Ma();Ce();lr();Ne=8*1024,ei=ca,Be=7,Le=6,Me=64*1024*1024,dr=90,fr=4*1024*1024,rc=3e4,sc=2e3,mr=5*6e4,ic=5e3,oc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Z,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>xc,storageClassForCommand:()=>ft});import{createHash as _r}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ii}from"node:fs";import{mkdir as yc,readFile as wc,readdir as bc,rename as hr,rm as _n,stat as ti,writeFile as lp}from"node:fs/promises";import{homedir as dp}from"node:os";import{basename as _c,dirname as Rc,join as Rn}from"node:path";import{fileURLToPath as fp}from"node:url";import{gunzipSync as mp,gzipSync as pp}from"node:zlib";function cc(e,t){return`el:${_r("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 dt(e){return`record:${e.slice(3)}`}function Ut(e){return`expired:${e.slice(3)}`}function ni(){return"index:v1"}function gp(e){return`blob:${e}`}function hp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ft(e){let t=e.trim().split(/\s+/).filter(Boolean),n=t[0]??"";if(n==="cat")return"derivable";if(n==="git"){let r=t[1]??"";return r==="log"||r==="diff"||r==="blame"||r==="show"?"derivable":Rr(t)?"re-executable":"ephemeral"}return"ephemeral"}function pr(e){return Sr(e.storage_class)?e.storage_class:ft(e.command)}function Sc(e){return Sr(e.storage_class)?e.storage_class:ft(e.command)}function uc(e){let t=Sp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=Sc(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function lc(e,t,n){let r=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let i=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:yp(i),storage_class:Sc(s),recover:`rsp show ${s.handle}`}})}function yp(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function dc(e,t,n,r){let s=t==="ephemeral"?r*60*60*1e3:n*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function Jt(e){let t=0,n=new Set;for(let r of e){if(r.blob_key){if(n.has(r.blob_key))continue;n.add(r.blob_key)}t+=r.bytes}return t}function fc(e,t){let n=process.cwd(),r=En("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=En("git",["hash-object","-w","--stdin"],{cwd:n,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:n,object_ids:[i],working_tree_fingerprint:wp(n),original_bytes:e.length}:null}function wp(e){let t=ri(e,["rev-parse","HEAD"])||"unborn",n=ri(e,["write-tree"])||"no-index",r=ri(e,["status","--porcelain=v1","-z"])||"";return _r("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ri(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function mc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!Rr(n))return null;let r=kc(process.cwd(),n,e.length);return!r||Ft(r)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:Ft(e)}}function Rr(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return _r("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function pc(e,t,n,r){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):n?Buffer.byteLength(JSON.stringify(n),"utf8"):r?r.stored_bytes:e.length}function gc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function hc(e,t,n){let r=pp(e);return{key:gp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function bp(e){try{let t=mp(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function _p(e){let t=e.object_ids[0];if(!t)return null;let n=En("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return n.status!==0||n.stdout.length!==e.original_bytes?null:n.stdout}function Rp(e){if(!Rr(e.argv))return null;let t=kc(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
- `,"utf8"),t]):null}function kc(e,t,n){let r=t[0];if(!r)return null;let s=En(r,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(n+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function Sp(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function wr(e){return/^el:[a-f0-9]{12}$/.test(e)}function br(e){return/^blob:[a-f0-9]{64}$/.test(e)}function kp(e){if(!Sn(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:Sn(e.scope)?e.scope:void 0,ranking:Sn(e.ranking)?e.ranking:void 0}}}function Ep(e){if(!Sn(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 Sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function xp(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 bc(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Rn(o,c.name);c.isDirectory()?await i(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await i(e),r}function vp(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=Sn(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(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function si(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function yr(e){if(!oe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Op(e.derivation_recipe),r=Pp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&br(s);return e.collection===Z&&typeof e.handle=="string"&&wr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ui(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&br(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Tp(e.loss)&&(e.storage_class===void 0||Sr(e.storage_class))}function Ec(e){return!oe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!oe(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&wr(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||Sr(t.storage_class))&&(n===void 0||typeof n=="string"&&br(n))})}function oi(e){return oe(e)&&typeof e.key=="string"&&br(e.key)&&ui(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function ai(e){return oe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Tp(e){return oe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Sr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Op(e){return oe(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function Pp(e){return oe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Rr(e.argv)&&typeof e.original_bytes=="number"&&ui(e.content_hash)}function ui(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Dp(e){try{let r=(await wc(e,"utf8")).trim();if(r==="")return gr();let s;try{s=JSON.parse(r)}catch{s=j(r)}if(Ap(s))return{...s,blobs:s.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=gr();return await kn(e,s),s}let r=gr();return await kn(e,r),r}let t=gr();return await kn(e,t),t}async function Cp(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function $p(e){return _c(e)==="red-skills.rdb"}async function xc(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Rn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Rn(dp(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await bc(t)}catch{return}n.sort().reverse();for(let r of n){let s=Rn(t,r,process.platform==="win32"?"red.exe":"red");if(ii(s)){process.env.REDDB_BIN=s;return}}}async function kn(e,t){await yc(Rc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await lp(n,`${D(ci(t))}
42
- `,"utf8"),await hr(n,e)}function ci(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>ci(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=ci(r));return t}return String(e)}function gr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Ap(e){return oe(e)&&e.version===1&&oe(e.records)&&Object.values(e.records).every(yr)&&(e.blobs===void 0||oe(e.blobs)&&Object.values(e.blobs).every(oi))&&oe(e.tombstones)&&Object.values(e.tombstones).every(ai)&&Ec(e.index)}function Ip(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return fp(e)}var Z,xn,ze=E(()=>{"use strict";Ps();Q();Re();Z="rsp_elisions_v1",xn=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=Ip(t.uri),r=await Cp(n),s=new e(r,{uri:t.uri,ttlDays:si(t.ttlDays,Be),ephemeralTtlHours:si(t.ephemeralTtlHours,Le),byteBudget:si(t.byteBudget,Me),now:t.now??(()=>new Date)});return $p(r)?(await xc(),await yc(Rc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Dp(s.path),s}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),s=this.opts.now(),i=s.toISOString(),o=cc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?fc(r,n.command):null,l=c==="re-executable"?mc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=dc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?hc(r,p,i):null,m=pc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:Z,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[Ut(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!wr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[dt(t)];if(!yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:dt(r.handle),bytes:gc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:pr(r),blob_key:r.blob_key},r.expires_at),await this.flush(),i}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:pr(r)}: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:Jt(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:uc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),lc(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=Jt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,n),i=Jt(s)}s.length<r.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ut(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ut(t)];return ai(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return _p(t.derivation_recipe);if(t.reexecution_recipe)return Rp(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return oi(n)?bp(n):null}return null}deleteUnreferencedLocalBlobs(t){let n=new Set(t.map(r=>r.blob_key).filter(r=>typeof r=="string"));for(let r of Object.keys(this.document.blobs))n.has(r)||(delete this.document.blobs[r],this.dirty=!0)}async flush(){this.dirty&&(await kn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await ti(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let n=this.readIndex().records,r=new Set(n.map(a=>a.key)),s=new Set(n.map(a=>a.blob_key).filter(a=>typeof a=="string")),i={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>r.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:n}},o=Buffer.byteLength(`${JSON.stringify(i)}
43
- `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await kn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Z)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(n=>n.name===Z);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Z}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Z}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=cc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?fc(r,n.command):null,l=c==="re-executable"?mc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=dc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?hc(r,p,i):null,m=pc(r,u,l,h);h&&!oi(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:Z,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(Ut(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return y.push({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!wr(t))return null;let n=await this.kvGet(Ut(t));if(ai(n))return n;let r=await this.kvGet(dt(t));if(!yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:dt(r.handle),bytes:gc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:pr(r),blob_key:r.blob_key},r.expires_at),i}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:pr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Jt(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:uc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return lc(n.records,this.opts.now(),t)}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=kp(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Ep(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 xp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await wc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=_c(s),c=_r("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),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"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=r.rows.map(o=>vp(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
44
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ni());return Ec(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ni(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=Jt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=Jt(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await ti(this.path).then(u=>u.size,()=>0);if(n<=this.opts.byteBudget)return;let r=await this.snapshotRedDbKvCollections(t);if(!r)return;let s=`${process.pid}.${Date.now()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await _n(i,{force:!0}),await _n(o,{force:!0});let a=await Ct(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${hp(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await ti(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await _n(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await hr(this.path,o),await hr(i,this.path),await _n(o,{force:!0})}catch(u){throw!ii(this.path)&&ii(o)&&await hr(o,this.path),await _n(i,{force:!0}),u}finally{this.db=await Ct(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.list();if(n.some(i=>i.model!=="kv"))return null;let r=[],s=!1;for(let i of n){let o=String(i.name??"").trim();if(o===Z){r.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;r.push({name:o,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:ni(),value:t}],r=new Set;for(let s of t.records)r.add(s.key),s.blob_key&&r.add(s.blob_key);for(let s of r){let i=await this.kvGet(s);i!=null&&n.push({key:s,value:i})}return{name:Z,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ut(t.handle),{status:"expired",expired_at:n,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let n=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),r=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of r.items)s.key.startsWith("blob:")&&!n.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(dt(t));if(!yr(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Pn={};M(Pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ae,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Mc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>jc,RSP_TELEMETRY_SPOOL_FILE:()=>Lc,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>gi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>hi,readTelemetryGainsReport:()=>yi,readTelemetryStats:()=>Tr,takeTelemetrySpool:()=>Jp,telemetryLegacySpoolPath:()=>vr,telemetrySpoolCorrectionsPath:()=>pi,telemetrySpoolPath:()=>Ue});import{randomUUID as di,createHash as Np}from"node:crypto";import{appendFileSync as $c,existsSync as Bp,mkdirSync as Ac}from"node:fs";import{mkdir as Ic,readdir as Lp,readFile as Nc,rename as Mp,rm as Bc,writeFile as fi}from"node:fs/promises";import{basename as li,dirname as Tn,join as Wt,resolve as vc}from"node:path";function xr(e){if(!e)return null;let t=vc(e);for(;;){if(Bp(Wt(t,".red")))return t;let n=vc(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(F(e),Lc)}function vr(e){return Wt(F(e),Mc)}function pi(e){return Wt(F(e),jc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=xr(e);if(!n)return;let r=Ue(n);Ac(Tn(r),{recursive:!0}),$c(r,Hp({spool_id:di(),event:Up(t)}),{encoding:"utf8",mode:384})}catch{}}function Up(e){return Tc(Tc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Tc(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=jp)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Jp(e){let t=xr(e);if(!t)return[];let n=Ue(t);await Ic(Tn(n),{recursive:!0}).catch(()=>{});let r=await Fc(t),s=[...await Gc(t),...await Wp(r)];return await Promise.all(r.map(i=>Bc(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function gi(e,t){let n=xr(e);if(!n)return;let r=Ue(n);await Ic(Tn(r),{recursive:!0}).catch(()=>{}),await qp(n);for(let s of await Fp(n))await Oc(n,s,t);for(let s of await Gc(n))await Uc(n,s,t,!0);for(let s of await Fc(n))await Oc(n,s,t)}async function Fp(e){let t=[Ue(e),vr(e)],n=Tn(t[0]);return(await Lp(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${li(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${li(c)}.`));if(!i)return!1;let o=`${li(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Gp(a))}).sort().map(s=>Wt(n,s))}function Gp(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Oc(e,t,n){try{let r=await Jc(t);for(let s of Hc(r))await Uc(e,s,n,!1)}finally{await Bc(t,{force:!0})}}async function Uc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Pc(e,{correction_id:di(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Pc(e,{correction_id:di(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function Jc(e){let t="";for(let n=0;n<5;n++){let r=await Nc(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function zt(e){try{let t=JSON.parse(e);return!Or(t)||t.collection!==ae&&t.collection!==X&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Hp(e){return tr().push(Kp(e))}function Pc(e,t){try{let n=xr(e);if(!n)return;let r=pi(n);Ac(Tn(r),{recursive:!0});let s=tr();$c(r,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function Fc(e){let t=[Ue(e),vr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Mp(r,s),await fi(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function qp(e){await Promise.all([fi(Ue(e),"",{flag:"a"}),fi(vr(e),"",{flag:"a"})]).catch(()=>{})}async function Wp(e){let t=[];for(let n of e)t.push(...Hc(await Jc(n)));return t}async function Gc(e){let t=await Nc(pi(e),"utf8").catch(()=>""),n=new Map;for(let r of Vp(t))n.set(r.target_spool_id,r);return[...n.values()].filter(r=>r.action==="retry"&&r.event_json).map(r=>({spool_id:r.target_spool_id,event:zt(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function Hc(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let i=JSON.parse(s);if(Or(i)){let o=zt(JSON.stringify(i));t.push(o?{spool_id:kr(JSON.stringify(i)),event:o}:{spool_id:kr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:kr(s),raw_line:s});continue}try{for(let i of er(`${n}
37
+ `);if(f<0)return;let d=a.slice(0,f);u(()=>{try{n(JSON.parse(d))}catch(m){s(m)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var li=_(()=>{});import{createHash as ym,randomUUID as pc}from"node:crypto";import{spawn as mc}from"node:child_process";import{constants as di}from"node:fs";import{readFileSync as wm}from"node:fs";import{mkdir as fn,open as bm,readFile as gc,rename as _m,rm as Oe,stat as Rm,writeFile as Sm}from"node:fs/promises";import{tmpdir as xm}from"node:os";import{dirname as Qe,join as oe,resolve as pn}from"node:path";import{fileURLToPath as hc}from"node:url";function Ze(e){let t=$m(e)??pn(e),r=Nm(t),n=q(t);return{rootDir:t,socketPath:oe(r,"rsp.sock"),pidPath:oe(r,"rsp.pid"),lockPath:oe(r,"rsp.lock"),wakeLockPath:oe(t,".red","tmp","rsp.wake.lock"),summaryPath:oe(n,"rsp-status-summary.json"),registryPath:oe(n,"rsp-resident.pid.json")}}async function mn(e,t){if(await fn(Qe(e.socketPath),{recursive:!0,mode:448}),await dc(e.socketPath,t))return;await lc(e,t);let r=await Rc(e.lockPath);if(r)try{if(await dc(e.socketPath,t))return;await lc(e,t),await vm(e.socketPath);let n=Om(e,t);await uc(e.socketPath,n);return}finally{await r.close(),await Oe(e.lockPath,{force:!0})}await uc(e.socketPath)}async function gt(e,t=200){try{return await wc(e,t)!=null}catch{return!1}}async function wc(e,t=200){let r=await Ft({socketPath:e,timeoutMs:t},{id:pc(),op:"ping"});return r.ok?Ec(r.value)?{version:jm(r.value.version)}:{}:null}async function gn(e,t){if(await fn(Qe(e.socketPath),{recursive:!0,mode:448}),await gt(e.socketPath,50))return!1;let r=await Rc(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=xc(t);return mc(n,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function bc(e,t){try{await mn(e,t)}finally{await Oe(e.wakeLockPath,{force:!0})}}async function Sr(e){try{let t=Dm(await gc(e,"utf8"));return Um(t)?t:null}catch{return null}}async function hn(e,t){let r={version:yc,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await fn(Qe(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Sm(n,`${C(r)}
38
+ `,{encoding:"utf8",mode:384}),await _m(n,e)}async function yn(e,t=process.pid){try{let r=await Sr(e);if(r&&r.pid!==t)return;await Oe(e,{force:!0})}catch{}}async function Rr(e){let t=await Sr(e.registryPath);if(!t)try{return await gc(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Jt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await gt(t.socket_path,100);return r&&await Am(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function _c(e){let t=await Rr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Oe(e.registryPath,{force:!0}),await Rr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Sc(t.entry.pid),await Oe(e.registryPath,{force:!0}),await Oe(t.entry.socket_path,{force:!0}),await Rr(e)):t}async function uc(e,t){let r=Date.now()+Tm(),n;for(;Date.now()<r;){if(await gt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(fi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(fi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?fi("resident rsp server did not start",t):"resident rsp server did not start")}function Tm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Em}async function vm(e){await Oe(e,{force:!0})}async function Rc(e){await fn(Qe(e),{recursive:!0,mode:448});try{return await bm(e,di.O_CREAT|di.O_EXCL|di.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Om(e,t){let[r,n]=xc(t),s=process.env.RSP_DEBUG==="1",i,o="",a=mc(r,[...n,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Cm(`${o}${c}`,Pm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function fi(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
39
+ ${s}`),n.join(`
40
+ `)}function Cm(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Dm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return J(t)}}async function lc(e,t){try{let r=await Sr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Jt(r.pid)){await Oe(e.registryPath,{force:!0});return}if(await gt(r.socket_path,100))return;if(kc(t.clientVersion,r.resident_version)&&(await Im(r.pid,1500),!Jt(r.pid))){await Oe(e.registryPath,{force:!0});return}await Sc(r.pid),await Oe(e.registryPath,{force:!0})}catch{}}function Jt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Sc(e){if(!Jt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Jt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Im(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Jt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Am(e){if(!e.startsWith("file://"))return!1;try{return await Rm(hc(e)),!1}catch(t){return t.code==="ENOENT"}}function xc(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?pn(process.argv[1]):hc(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Nm(e){let t=ym("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=oe(r,"red-skills",t);if(oe(s,"rsp.sock").length<km)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return oe(xm(),`red-skills-${n}`,t)}function $m(e){let t=pn(e);for(let r=0;r<32;r++){try{let s=pi(oe(t,".git"));if(s!=null)return Lm(t,s)??t;if(pi(oe(t,".git","HEAD"))!=null||pi(oe(t,".red","config.yaml"))!=null)return t}catch{}let n=Qe(t);if(n===t)return null;t=n}return null}function Lm(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=pn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Qe(Qe(Qe(n))):null}function pi(e){try{return wm(e,"utf8")}catch{return null}}async function dc(e,t){let r=await wc(e).catch(()=>null);return r?kc(t.clientVersion,r.version)?(await Bm(e,t.clientVersion),await Fm(e),!1):!0:!1}async function Bm(e,t){try{await Ft({socketPath:e,timeoutMs:200},{id:pc(),op:"handover",clientVersion:t})}catch{}}function kc(e,t){return!e||!t?!1:Mm(e,t)>0}function Mm(e,t){let r=fc(e),n=fc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function fc(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Ec(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jm(e){return typeof e=="string"&&e.length>0?e:void 0}function Um(e){return Ec(e)&&e.version===yc&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function Fm(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await gt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var km,yc,Em,Pm,wn=_(()=>{ee();Be();li();km=108,yc=1,Em=5e3;Pm=8*1024});var Dc={};M(Dc,{DEFAULT_RSP_BYTE_BUDGET:()=>be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>we,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Je,DEFAULT_RSP_IDLE_MS:()=>Rn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Cc,DEFAULT_RSP_STORE_PATH:()=>mi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>_n,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>vc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Oc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>bn,DEFAULT_RSP_TTL_DAYS:()=>ye,MIN_RSP_IDLE_MS:()=>Pc,resolveRspConfig:()=>Ge});import{existsSync as Jm,readFileSync as Gm}from"node:fs";import{join as Hm,resolve as Tc}from"node:path";function Ge(e,t,r){let n=ac(Tc(e),Hm(".red","config.yaml")),s=n?Gm(n,"utf8"):"",i=dn(s,"rsp.enabled")==="true",o=dn(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Fe(he(s,"rsp.ttlDays"),ye),u=Fe(Gt(t.RSP_EPHEMERAL_TTL_HOURS)??he(s,"rsp.ephemeralTtlHours"),we),l=Fe(he(s,"rsp.byteBudget"),be),f=Fe(he(s,"rsp.telemetryTtlDays"),bn),d=Fe(he(s,"rsp.telemetryByteBudget")??he(s,"rsp.byteBudget"),_n),m=Fe(Gt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??he(s,"rsp.telemetryDrainIntervalMs"),vc),h=Fe(Gt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??he(s,"rsp.telemetryDrainTimeoutMs"),Oc),p=qm(Gt(t.RSP_IDLE_MS)??he(s,"rsp.idleMs"),Rn,Pc),g=Fe(Gt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??he(s,"rsp.heavyGitByteThreshold"),Je),w=Wm(Gt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??he(s,"rsp.measurement.holdoutShare"),Cc),y=Ze(e).rootDir,v=r??t.RSP_STORE_URI??`file://${Ba(Tc(y),Jm)}`;return{enabled:i,proxyEnabled:a,storeUri:v,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:h,idleMs:p,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function he(e,t){let r=dn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Fe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function qm(e,t,r){let n=Fe(e,t);return Math.max(n,r)}function Wm(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Gt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Je,mi,ye,we,be,bn,_n,vc,Oc,Rn,Pc,Cc,Pe=_(()=>{"use strict";cc();Be();wn();Je=8*1024,mi=$a,ye=7,we=6,be=64*1024*1024,bn=90,_n=4*1024*1024,vc=3e4,Oc=2e3,Rn=5*6e4,Pc=5e3,Cc=0});var F,Sn=_(()=>{"use strict";Pe();F="rsp_elisions_v1"});import{spawnSync as Er}from"node:child_process";import{createHash as yi}from"node:crypto";import{existsSync as Vm}from"node:fs";import{mkdir as zm,readFile as Km,readdir as Ic,rename as Ym,writeFile as Qm}from"node:fs/promises";import{homedir as Zm}from"node:os";import{basename as Xm,dirname as eg,join as xr}from"node:path";import{fileURLToPath as tg}from"node:url";import{gunzipSync as rg,gzipSync as ng}from"node:zlib";function wi(e,t){return`el:${yi("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 Xe(e){return`record:${e.slice(3)}`}function yt(e){return`expired:${e.slice(3)}`}function En(){return"index:v1"}function sg(e){return`blob:${e}`}function Ac(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function He(e){let t=e.trim().split(/\s+/).filter(Boolean),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":Tn(t)?"re-executable":"ephemeral"}return"ephemeral"}function Tr(e){return Cn(e.storage_class)?e.storage_class:He(e.command)}function Nc(e){return Cn(e.storage_class)?e.storage_class:He(e.command)}function bi(e){let t=ag(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Nc(n);if(t[s].records+=1,t[s].raw_bytes+=n.raw_bytes??n.bytes,n.blob_key){if(r[s].has(n.blob_key))continue;r[s].add(n.blob_key)}t[s].bytes+=n.bytes}return t}function _i(e,t,r){let n=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let i=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:ig(i),storage_class:Nc(s),recover:`rsp show ${s.handle}`}})}function ig(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function Ri(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function wt(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function Si(e,t){let r=process.cwd(),n=Er("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=Er("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:r,object_ids:[i],working_tree_fingerprint:og(r),original_bytes:e.length}:null}function og(e){let t=gi(e,["rev-parse","HEAD"])||"unborn",r=gi(e,["write-tree"])||"no-index",n=gi(e,["status","--porcelain=v1","-z"])||"";return yi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function gi(e,t){let r=Er("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function xi(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!Tn(r))return null;let n=Mc(process.cwd(),r,e.length);return!n||ht(n)!==ht(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:ht(e)}}function Tn(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function ht(e){return yi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ki(e,t,r,n){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):r?Buffer.byteLength(JSON.stringify(r),"utf8"):n?n.stored_bytes:e.length}function Ei(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function Ti(e,t,r){let n=ng(e);return{key:sg(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function $c(e){try{let t=rg(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Lc(e){let t=e.object_ids[0];if(!t)return null;let r=Er("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function Bc(e){if(!Tn(e.argv))return null;let t=Mc(e.cwd,e.argv,e.original_bytes);return t?ht(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function Mc(e,t,r){let n=t[0];if(!n)return null;let s=Er(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function ag(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function vr(e){return/^el:[a-f0-9]{12}$/.test(e)}function kn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function jc(e){if(!kr(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 r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:kr(e.scope)?e.scope:void 0,ranking:kr(e.ranking)?e.ranking:void 0}}}function Uc(e){if(!kr(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 r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Fc(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function i(o){if(n.length>=t)return;let a=await Ic(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=xr(o,c.name);c.isDirectory()?await i(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await i(e),n}function Jc(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=kr(n)?n:{},i=String(e.label??e.LABEL??s.title??`memory-${r}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function vn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Or(e){if(!ae(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=ug(e.derivation_recipe),n=lg(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&kn(s);return e.collection===F&&typeof e.handle=="string"&&vr(e.handle)&&(t||r||n||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Oi(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&kn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&cg(e.loss)&&(e.storage_class===void 0||Cn(e.storage_class))}function vi(e){return!ae(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!ae(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&vr(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||Cn(t.storage_class))&&(r===void 0||typeof r=="string"&&kn(r))})}function On(e){return ae(e)&&typeof e.key=="string"&&kn(e.key)&&Oi(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function Pn(e){return ae(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function cg(e){return ae(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Cn(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function ug(e){return ae(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function lg(e){return ae(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Tn(e.argv)&&typeof e.original_bytes=="number"&&Oi(e.content_hash)}function Oi(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function ae(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Gc(e){try{let n=(await Km(e,"utf8")).trim();if(n==="")return xn();let s;try{s=JSON.parse(n)}catch{s=J(n)}if(dg(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=xn();return await Ht(e,s),s}let n=xn();return await Ht(e,n),n}let t=xn();return await Ht(e,t),t}async function Hc(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function qc(e){return Xm(e)==="red-skills.rdb"}async function Dn(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?xr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):xr(Zm(),".cache","red-skills","bundles")),t=xr(e,"reddb"),r;try{r=await Ic(t)}catch{return}r.sort().reverse();for(let n of r){let s=xr(t,n,process.platform==="win32"?"red.exe":"red");if(Vm(s)){process.env.REDDB_BIN=s;return}}}async function Ht(e,t){await zm(eg(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await Qm(r,`${C(hi(t))}
42
+ `,"utf8"),await Ym(r,e)}function hi(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>hi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=hi(n));return t}return String(e)}function xn(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function dg(e){return ae(e)&&e.version===1&&ae(e.records)&&Object.values(e.records).every(Or)&&(e.blobs===void 0||ae(e.blobs)&&Object.values(e.blobs).every(On))&&ae(e.tombstones)&&Object.values(e.tombstones).every(Pn)&&vi(e.index)}function Wc(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return tg(e)}var Pi=_(()=>{"use strict";ee();Sn()});import{createHash as fg}from"node:crypto";import{existsSync as Vc}from"node:fs";import{mkdir as pg,readFile as mg,rename as Ci,rm as Pr,stat as Di}from"node:fs/promises";import{basename as gg,dirname as hg}from"node:path";var qt,zc=_(()=>{"use strict";oi();Sn();Pi();qt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=Wc(t.uri),n=await Hc(r),s=new e(n,{uri:t.uri,ttlDays:vn(t.ttlDays,ye),ephemeralTtlHours:vn(t.ephemeralTtlHours,we),byteBudget:vn(t.byteBudget,be),now:t.now??(()=>new Date)});return qc(n)?(await Dn(),await pg(hg(n),{recursive:!0}),s.db=await Ut(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Gc(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=wi(n,r),a=Xe(o),c=He(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=ht(n),h=f==="ephemeral"?Ti(n,m,i):null,p=ki(n,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:F,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[yt(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!vr(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[Xe(t)];if(!Or(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:Xe(n.handle),bytes:Ei(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Tr(n),blob_key:n.blob_key},n.expires_at),await this.flush(),i}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:F,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Tr(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:wt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:bi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),_i(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let o of n.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=wt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,r),i=wt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[yt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[yt(t)];return Pn(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Lc(t.derivation_recipe);if(t.reexecution_recipe)return Bc(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return On(r)?$c(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Ht(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Di(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),i={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},o=Buffer.byteLength(`${JSON.stringify(i)}
43
+ `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await Ht(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(F)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===F);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${F}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${F}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${F}`),await this.db.query(`CREATE KV IF NOT EXISTS ${F}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=wi(n,r),a=Xe(o),c=He(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?xi(n,r.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=ht(n),h=f==="ephemeral"?Ti(n,m,i):null,p=ki(n,u,l,h);h&&!On(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:F,handle:o,original_bytes:n.length,stored_bytes:p,command:r.command,created_at:i,expires_at:d,loss:r.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(yt(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(v=>v.handle!==o);return y.push({handle:o,key:a,bytes:p,raw_bytes:n.length,command:r.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,p),o}async getRedDb(t){if(!vr(t))return null;let r=await this.kvGet(yt(t));if(Pn(r))return r;let n=await this.kvGet(Xe(t));if(!Or(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:Xe(n.handle),bytes:Ei(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Tr(n),blob_key:n.blob_key},n.expires_at),i}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:F,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Tr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:wt(t.records),oldest:t.records.reduce((r,n)=>r==null||n.created_at<r?n.created_at:r,null),budget:this.opts.byteBudget,storage_classes:bi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return _i(r.records,this.opts.now(),t)}async memory(t,r){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let n=jc(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Uc(r);return await this.memoryIngestRedDb(n)}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 r=await Fc(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let o=(await mg(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=gg(s),c=fg("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=n.rows.map(o=>Jc(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
44
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(En());return vi(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(En(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=wt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=wt(i)}let a={version:1,records:i};return(r||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await Di(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await Pr(i,{force:!0}),await Pr(o,{force:!0});let a=await Ut(`file://${i}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${Ac(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await Di(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Pr(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await Ci(this.path,o),await Ci(i,this.path),await Pr(o,{force:!0})}catch(u){throw!Vc(this.path)&&Vc(o)&&await Ci(o,this.path),await Pr(i,{force:!0}),u}finally{this.db=await Ut(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(i=>i.model!=="kv"))return null;let n=[],s=!1;for(let i of r){let o=String(i.name??"").trim();if(o===F){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:o,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:En(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let i=await this.kvGet(s);i!=null&&r.push({key:s,value:i})}return{name:F,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(yt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(Xe(t));if(!Or(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Wt={};M(Wt,{DEFAULT_RSP_BYTE_BUDGET:()=>be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>we,DEFAULT_RSP_TTL_DAYS:()=>ye,RSP_ELISION_COLLECTION:()=>F,RspElisionStore:()=>qt,ensureReddbBinaryFromWarmCache:()=>Dn,storageClassForCommand:()=>He});var et=_(()=>{"use strict";Sn();Pi();zc()});var Ii,Ai,Ni,te,G,ce,Ce,Cr,In=_(()=>{"use strict";Ii="rsp-telemetry.spool.toonl",Ai="rsp-telemetry.spool.jsonl",Ni="rsp-telemetry.spool.corrections.toonl",te="rsp_accounting_events_v1",G="rsp_decisions_v1",ce="rsp_telemetry_invocations_v1",Ce="rsp_telemetry_degradations_v1",Cr="rsp_telemetry_index_v1"});function Vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ue(e){return tt(e)??0}function tt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var $i=_(()=>{"use strict"});import{randomUUID as Bi,createHash as yg}from"node:crypto";import{appendFileSync as Xc,existsSync as wg,mkdirSync as eu}from"node:fs";import{mkdir as tu,readdir as bg,readFile as ru,rename as _g,rm as nu,writeFile as Mi}from"node:fs/promises";import{basename as Li,dirname as Dr,join as zt,resolve as Kc}from"node:path";function Nn(e){if(!e)return null;let t=Kc(e);for(;;){if(wg(zt(t,".red")))return t;let r=Kc(zt(t,".."));if(r===t)break;t=r}return null}function qe(e){return zt(q(e),Ii)}function $n(e){return zt(q(e),Ai)}function Ui(e){return zt(q(e),Ni)}async function We(e,t){rt(e,t)}function rt(e,t){try{let r=Nn(e);if(!r)return;let n=qe(r);eu(Dr(n),{recursive:!0}),Xc(n,Tg({spool_id:Bi(),event:Sg(t)}),{encoding:"utf8",mode:384})}catch{}}function Sg(e){return Yc(Yc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Yc(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Rg)return e;let i={...e};return delete i[t],ue(i[r])===0&&(i[r]=s),i.estimated=!0,i}async function xg(e){let t=Nn(e);if(!t)return[];let r=qe(t);await tu(Dr(r),{recursive:!0}).catch(()=>{});let n=await ou(t),s=[...await au(t),...await Og(n)];return await Promise.all(n.map(i=>nu(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function Fi(e,t){let r=Nn(e);if(!r)return;let n=qe(r);await tu(Dr(n),{recursive:!0}).catch(()=>{}),await vg(r);for(let s of await kg(r))await Qc(r,s,t);for(let s of await au(r))await su(r,s,t,!0);for(let s of await ou(r))await Qc(r,s,t)}async function kg(e){let t=[qe(e),$n(e)],r=Dr(t[0]);return(await bg(r).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${Li(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${Li(c)}.`));if(!i)return!1;let o=`${Li(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Eg(a))}).sort().map(s=>zt(r,s))}function Eg(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Qc(e,t,r){try{let n=await iu(t);for(let s of cu(n))await su(e,s,r,!1)}finally{await nu(t,{force:!0})}}async function su(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Zc(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Zc(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function iu(e){let t="";for(let r=0;r<5;r++){let n=await ru(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Kt(e){try{let t=JSON.parse(e);return!Vt(t)||t.collection!==te&&t.collection!==G&&t.collection!==ce&&t.collection!==Ce?null:t}catch{return null}}function Tg(e){return nn().push(Dg(e))}function Zc(e,t){try{let r=Nn(e);if(!r)return;let n=Ui(r);eu(Dr(n),{recursive:!0});let s=nn();Xc(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function ou(e){let t=[qe(e),$n(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await _g(n,s),await Mi(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return r}async function vg(e){await Promise.all([Mi(qe(e),"",{flag:"a"}),Mi($n(e),"",{flag:"a"})]).catch(()=>{})}async function Og(e){let t=[];for(let r of e)t.push(...cu(await iu(r)));return t}async function au(e){let t=await ru(Ui(e),"utf8").catch(()=>""),r=new Map;for(let n of Pg(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Kt(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function cu(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let i=JSON.parse(s);if(Vt(i)){let o=Kt(JSON.stringify(i));t.push(o?{spool_id:An(JSON.stringify(i)),event:o}:{spool_id:An(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:An(s),raw_line:s});continue}try{for(let i of rn(`${r}
45
45
  ${s}
46
- `))mi(i)&&Yp(i)&&t.push({spool_id:i.spool_id,event:qc(i)})}catch{s.startsWith("{")&&t.push({spool_id:kr(s),raw_line:s})}}}return t}function Vp(e){return zp(e).map(Qp).filter(t=>t!==null)}function zp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);mi(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of er(`${n}
46
+ `))ji(i)&&Ig(i)&&t.push({spool_id:i.spool_id,event:uu(i)})}catch{s.startsWith("{")&&t.push({spool_id:An(s),raw_line:s})}}}return t}function Pg(e){return Cg(e).map(Ag).filter(t=>t!==null)}function Cg(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let i=JSON.parse(s);ji(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let i of rn(`${r}
47
47
  ${s}
48
- `))mi(i)&&t.push(i)}catch{}}}return t}function kr(e){return`legacy:${Np("sha256").update(e).digest("hex").slice(0,24)}`}function Kp(e){let t={spool_id:e.spool_id};for(let[n,r]of Object.entries(e.event??{}))n!=="spool_id"&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null?t[n]=r:r!==void 0&&(t[n]=JSON.stringify(r)));return t}function qc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Yp(e){return typeof e.spool_id=="string"&&qc(e)!==null}function Qp(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function mi(e){return Or(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function Tr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Wc(e,s),o=(await vn(e,X)).filter(R=>qt(R)>=s),a=i.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=i.filter(R=>P(R.event_type)==="show"),u=i.filter(R=>P(R.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,w=[],y=0,T=0,x=0;for(let R of a){R.elided===!0&&l++;let $=Se(R.raw_bytes),Pe=Se(R.emitted_bytes),rt=Math.max(0,$-Pe),Tt=Vt(R,"raw"),b=Vt(R,"emitted"),v=Math.max(0,Tt.tokens-b.tokens);h||=(R.estimated===!0||Tt.estimated||b.estimated)&&v>0,f+=$,d+=Pe,p+=v;let st=pt(R).slice(0,10);st&&m.set(st,(m.get(st)??0)+v);let it=P(R.command)||"unknown",ue=g.get(it)??{command:it,invocations:0,bytes_saved:0,tokens_saved:0};ue.invocations++,ue.bytes_saved+=rt,ue.tokens_saved+=v,g.set(it,ue);let le=mt(R.wrapper_ms);le!=null&&w.push(le),y+=Se(R.store_open_count);let Ot=mt(R.store_elapsed_ms);Ot!=null&&(T+=Ot,x++)}let O=new Map,L=new Map,ce=[],he=null;for(let R of u){let $=P(R.degradation_reason)||P(R.reason)||"unknown",Pe=P(R.wrapper_family)||Er(P(R.command));O.set($,(O.get($)??0)+1),L.set(Pe,(L.get(Pe)??0)+1);let rt=pt(R);ce.push({timestamp:rt,family:Pe,command:P(R.command)||"unknown",reason:$,exit_code:mt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!he||rt>he.timestamp)&&(he={timestamp:rt,reason:$,command:P(R.command)||"unknown"})}let z=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,K=Vs(p,h),en=Zp(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:p,tokens_saved_estimated:K.tokens_saved_estimated,token_estimate_range_pct:K.token_estimate_range_pct,tokens_saved_low:K.tokens_saved_low,tokens_saved_high:K.tokens_saved_high,dollars_saved_estimate_usd:K.dollars_saved_estimate_usd,dollars_saved_low_usd:K.dollars_saved_low_usd,dollars_saved_high_usd:K.dollars_saved_high_usd,pricing_model_family:K.pricing_model_family,pricing_input_usd_per_million_tokens:K.pricing_input_usd_per_million_tokens,pricing_note:K.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[$])=>R.localeCompare($)).map(([R,$])=>({date:R,tokens_saved:$})),top_commands:[...g.values()].sort((R,$)=>$.bytes_saved-R.bytes_saved||$.tokens_saved-R.tokens_saved||R.command.localeCompare($.command))},health:{degradations:u.length,degradation_rate:z===0?0:u.length/z,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:q(Ge/c.length),by_reason:[...O.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({reason:R,count:$})),by_family:[...L.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({family:R,count:$})),recent_failures:ce.sort((R,$)=>$.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:he},latency:{wrapper_ms_p50:Ht(w,.5),wrapper_ms_p95:Ht(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:q(T),store_elapsed_ms_avg:x===0?null:q(T/x)},decisions:en}}function Zp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,Se(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:q(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function hi(e,t,n=new Date){let s=(await vn(e,ae)).filter(i=>qt(i)<=n.getTime()||pt(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=pt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:ag(s)}}async function yi(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),i=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await Wc(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(qt).filter(b=>Number.isFinite(b)&&b>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-p)/hg()))),m=[],g=new Map,w=new Map,y=new Map,T=new Map,x=new Map,O=new Map,L=0,ce=!1,he=0,z=null,Ge=0,K=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=Er(P(b.command)),le=Math.max(0,Vt(b,"raw").tokens-Vt(b,"emitted").tokens);L+=le,ce||=b.estimated===!0&&le>0;let Ot=Math.max(0,Se(b.raw_bytes)-Se(b.emitted_bytes)),cs=mt(b.wrapper_ms);if(cs!=null){m.push(cs);let jo=g.get(ue)??[];jo.push(cs),g.set(ue,jo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let us=dg(v);us&&T.set(us,(T.get(us)??0)+1);let ls=pg(v);ls&&x.set(ls,(x.get(ls)??0)+le);let zn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};zn.invocations++,zn.tokens_saved+=le,zn.bytes_saved+=Ot,O.set(ue,zn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&K++),le>0&&(!z||le>z.tokens_saved||le===z.tokens_saved&&Ot>z.bytes_saved)&&(z={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:Er(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,v)=>b.timestamp.localeCompare(v.timestamp)),R=new Map;for(let b of en)R.set(b.reason,(R.get(b.reason)??0)+1);let $=ng(en),Pe=tg(l),rt=sg([...O.values()],Pe,$),Tt=[...y.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:h,since:i,until:s,label:`window: ${r}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Cc(m),by_command_family:[...g.entries()].sort((b,v)=>v[1].length-b[1].length||b[0].localeCompare(v[0])).map(([b,v])=>({command_family:b,count:v.length,...Cc(v)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[v])=>b.localeCompare(v)).map(([b,v])=>({date:b,requests:v})),active_minute_avg:y.size===0?null:q([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:fg(T)},savings:{tokens:Vs(L,ce),measured_control_holdout:Xp(c,u),weekly_tokens_saved:gg(x),elision_rate:c.length===0?0:q(he/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,v)=>v.tokens_saved-b.tokens_saved||v.bytes_saved-b.bytes_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,v)=>v.invocations-b.invocations||v.tokens_saved-b.tokens_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),single_biggest_elision:z},health:{degradation_timeline:en,degradations_by_reason:[...R.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0])).map(([b,v])=>({reason:b,count:v})),cold_boots:Ge===0?null:K,warm_hits:Ge===0?null:Math.max(0,Ge-K)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Wc(e,t){let n=(await vn(e,ae)).filter(o=>qt(o)>=t),r=n.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await vn(e,ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await vn(e,Ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...n,...s,...i]}function Vt(e,t){let n=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Se(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Xp(e,t){let n=og(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Dc).filter(a=>a!=null),s=t.map(Dc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:q(ig(i));return{enabled:!0,holdout_share:q(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:eg(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Dc(e){let t=Vt(e,"raw").tokens;if(t<=0)return null;let n=Vt(e,"emitted").tokens;return Math.max(0,t-n)/t}function eg(e,t){if(e.length<=1)return{low:q(Math.max(0,t)),high:q(Math.min(1,t))};let n=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:q(Math.max(0,t-r)),high:q(Math.min(1,t+r))}}function tg(e){let t=new Map;for(let n of e){let r=Er(P(n.recovered_command)||P(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:q(n.show_hits/n.show_total)}))}function ng(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:rg(n)}))}function rg(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function sg(e,t,n){let r=[];for(let s of t.filter(i=>i.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(i=>i.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function ig(e){return e.reduce((t,n)=>t+n,0)/e.length}function og(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function ag(e){let t=ug();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=cg(n.storage_class)??ft(P(n.command));t[r].records+=1;let s=Se(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function cg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ug(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(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=>lg(r.value)).filter(r=>Or(r))}function lg(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function qt(e){let t=Date.parse(pt(e));return Number.isFinite(t)?t:0}function pt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Se(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ht(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return q(n[r])}function Cc(e){return{wrapper_ms_p50:Ht(e,.5),wrapper_ms_p90:Ht(e,.9),wrapper_ms_p95:Ht(e,.95),wrapper_ms_p99:Ht(e,.99)}}function q(e){return Math.round(e*100)/100}function Er(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 dg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${mg(t.getUTCDay())}:${t.getUTCHours()}`:null}function fg(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let s=e.get(`${n}:${r}`)??0;s>0&&t.push({weekday:n,hour:r,requests:s})}return t}function mg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function pg(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 gg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:q((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function hg(){return 24*60*60*1e3}function Or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lc,Mc,jc,ae,X,ke,Ke,On,jp,Ee=E(()=>{"use strict";Ce();Q();ze();zs();Lc="rsp-telemetry.spool.toonl",Mc="rsp-telemetry.spool.jsonl",jc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",X="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",jp=64*1024});var Vc=E(()=>{"use strict";Ys()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>or,kickResidentServer:()=>ar,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>ur,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>Ya,warmResidentServer:()=>Ka,writeResidentRegistry:()=>cr});import{randomUUID as yg}from"node:crypto";function zc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";Vc();lr();Dn=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let n=await this.request({op:"get",handle:t});return n?zc(n)&&n.status==="expired"?n:!zc(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await or(this.paths,this.config);let n=await Lt(this.paths,{...t,id:yg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Br={};M(Br,{RSP_WRAPPER_CAPABILITIES:()=>An,formatCodexHookDecision:()=>Xc,formatHookDecision:()=>Zc,hookDecisionFromClaudePreExecJson:()=>Sg,hookDecisionFromCodexPreExecJson:()=>kg,rewriteCommand:()=>Yc,rewriteTableFromCapabilities:()=>Kc,runClaudePreExecHook:()=>Eg,runCodexPreExecHook:()=>xg});import{readFileSync as $r}from"node:fs";import{existsSync as wg}from"node:fs";import{fileURLToPath as bg}from"node:url";function Kc(e){let t=new Map;for(let n of e)t.set(Gg(n.command),["rsp",...n.wrapper]);return t}function Yc(e){let t=Ig(e);if(t)return t;let n=$g(e);if(!n)return Dr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&lu(r[0]))return Dr(e);let s=Rg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Dr(e);let i=[...An].sort((c,u)=>u.command.length-c.command.length).find(c=>Ag(r,c.command));if(!i)return Dr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=iu(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function Rg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=iu(e.redirectSuffix);return n==="cat"&&t.length===2&&Pr(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Pr(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",$n(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Pr(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],$n(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Pr(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Pr(e){return!!e&&!e.startsWith("-")}async function Sg(e,t){return await Qc(e,t)}async function kg(e,t){return await Qc(e,t)}async function Qc(e,t){return(await bi(e,t,"pre-exec")).decision}async function bi(e,t,n){let r=du(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=pe(s,["cwd"])||pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??vg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:wi(s),decision:d,reason:"disabled"})}}let a=wi(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=je(i,process.env).proxyEnabled?Bg(a):(t.rewrite??Yc)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await Og(i,t.wakeResident??Tg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Zc(e){return e.kind==="rewrite"?eu(e.command):{stdout:"",status:0}}function Xc(e){return e.kind==="rewrite"?eu(e.command):{stdout:"",status:0}}function eu(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
- `,status:0}}async function Eg(e){let t="";try{t=e?$r(e,"utf8"):$r(0,"utf8");let n=await bi(t,{cwd:process.cwd()},"claude-pre-exec");Ar(n.telemetryRoot,n.event);let r=n.decision;nu("claude-pre-exec",r);let s=Zc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Ar(process.cwd(),tu("claude-pre-exec",t,n)),ru("claude-pre-exec",n),0}}async function xg(e){let t="";try{t=e?$r(e,"utf8"):$r(0,"utf8");let n=await bi(t,{cwd:process.cwd()},"codex-pre-exec");Ar(n.telemetryRoot,n.event);let r=n.decision;nu("codex-pre-exec",r);let s=Xc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Ar(process.cwd(),tu("codex-pre-exec",t,n)),ru("codex-pre-exec",n),0}}function Ar(e,t){Je(e,t).catch(()=>{})}function Cn(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:uu(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function tu(e,t,n){let r=du(t),s=r.ok?wi(r.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:uu(s),decision:"failed-open",reason:"hook-exception",error:_i(n)}}function vg(e){return je(e,process.env).enabled}async function Tg(e){let t=je(e,process.env);if(!t.enabled||!Cg(t))return;let n=Ve(e);await ar(n,Dg(t))}async function Og(e,t){try{await Promise.resolve(t(e))}catch(n){Pg(n)}}function nu(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
50
- `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
51
- `)}}function ru(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${_i(t)}
52
- `)}function Pg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${_i(e)}
53
- `)}function _i(e){return e instanceof Error?e.name||"Error":typeof e}function Dg(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function Cg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return wg(bg(e.storeUri))}catch{return!1}}function wi(e){return pe(e,["tool_input","command"])||pe(e,["tool_input","cmd"])||pe(e,["tool_input","args","command"])||pe(e,["input","command"])||pe(e,["input","cmd"])||pe(e,["arguments","command"])||pe(e,["arguments","cmd"])||pe(e,["command"])||pe(e,["cmd"])}function $g(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=su(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&lu(i.text)))return null;let r=[],s=[];for(let i of n){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}r.push(i)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function su(e){let t=[],n="",r=!1,s=null,i=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}if(/[ \t]/.test(a)){i();continue}n+=a}return s?[]:(i(),t)}function Ag(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Ig(e){let t=su(e.trim()).map(n=>n.text);return Cr(t)?{kind:"passthrough",reason:_g}:null}function Cr(e){return e[0]==="gh"&&e.some(Ng)}function Ng(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function iu(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?Ri(e):e}function Bg(e){let t=Lg(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Ri(e.trim())}`,capabilityId:"proxy:universal"}}function Lg(e){let t=e.trim();if(!t)return"missing-command";if(au(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Nr(Ir(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ou.has(n))return"interactive"}function Dr(e){let t=e.trim();return Mg(t)?{kind:"rewrite",command:`rsp exec -- ${Ri(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Mg(e){return!(!e||!jg(e)||!Ug(e)||au(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Jg(e,"rsp")||cu(e,ou)||Fg(e))}function jg(e){return/&&|[;|]/.test(e)}function au(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function Ug(e){return Ir(e).some(t=>{let n=Nr(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,s)=>s>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function cu(e,t){return Ir(e).some(n=>{let r=Nr(n)[0];return r?t.has(r):!1})}function Jg(e,t){return cu(e,new Set([t]))}function Fg(e){return Ir(e).some(t=>{let n=Nr(t);return n[0]==="grep"&&n.includes("-q")})}function Ir(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Nr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Ri(e){return`'${e.replace(/'/g,"'\\''")}'`}function uu(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Cr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Cr(t)&&t[1]?`gh ${t[1]} json-jq`:Cr(t)?"gh json-jq":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 lu(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Gg(e){return e.join("\0")}function du(e){try{let t=JSON.parse(e);return fu(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function pe(e,t){let n=e;for(let r of t){if(!fu(n))return"";n=n[r]}return typeof n=="string"?n:""}function fu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var An,x0,_g,ou,In=E(()=>{"use strict";Re();Fe();Ee();An=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],x0=Kc(An),_g="lossless-gh-json-jq";ou=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var xi={};M(xi,{NORMALIZATION_ALLOWLIST:()=>bu,NORMALIZE_ANSI:()=>Mr,NORMALIZE_BLANK_LINES:()=>Jr,NORMALIZE_CR_PROGRESS:()=>jr,NORMALIZE_JSON_TOON:()=>wu,NORMALIZE_TRAILING_WHITESPACE:()=>Ur,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Eu,formatNormalizeDecision:()=>ku,hookDecisionFromClaudePostExecJson:()=>_u,hookDecisionFromCodexPostExecJson:()=>Ru,normalizeOutput:()=>Fr,renderGenericJsonLane:()=>ki,runClaudePostExecHook:()=>Wg,runCodexPostExecHook:()=>Vg,transcodeJsonToToon:()=>yu});import{readFileSync as Lr}from"node:fs";function yu(e,t){let n=t?.encode??D,r=t?.decode??j,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=n(i)}catch{return e}let a;try{a=r(o)}catch{return e}return Si(i,a)?o.trimEnd():e}async function ki(e,t={}){let n=Qg(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:D(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=hu(t.minTokens,Hg),o=hu(t.maxItems,qg);if(!(s>o&&nh(e)>=i))return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Nn)(r,o)}catch(m){return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:rh(m)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=D(l).trimEnd();return{output:[f,p,h].filter(Boolean).join(`
54
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Nn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=Zg(e),s=new Set;r&&e.forEach((a,c)=>{Ei(a)!==r&&s.add(c)});let i=Xg(e,r);for(let a of s)n.add(a);for(let a of i)n.add(a);let o=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Fr(e){let t=e;for(let n of bu)t=n.apply(t);return t}async function _u(e,t){return await Su(e,t)}async function Ru(e,t){return await Su(e,t)}async function Su(e,t){let n=Yg(e),r=sh(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Kg)(r))return{kind:"passthrough",reason:"disabled"};let i=ih(n,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Fr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function ku(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Eu(e){return{stdout:"",status:0}}async function Wg(e){let t=e?Lr(e,"utf8"):Lr(0,"utf8"),n=await _u(t,{cwd:process.cwd()}),r=ku(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Vg(e){let t=e?Lr(e,"utf8"):Lr(0,"utf8"),n=await Ru(t,{cwd:process.cwd()}),r=Eu(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function zg(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let i=e.charCodeAt(n);if(i===7){n++;break}if(i===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&mu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&mu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function mu(e){return e>=32&&e<=63}function Kg(e){return je(e,process.env).enabled}function Yg(e){try{let t=JSON.parse(e);return Kt(t)?t:{}}catch{return{}}}function Qg(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Kt(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function Zg(e){let t=new Map;for(let s of e){let i=Ei(s);t.set(i,(t.get(i)??0)+1)}let[n,r]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Ei(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${pu(e[t])}`).join("|"):pu(e)}function Xg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Ei(s)!==t))for(let[o,a]of xu(s)){let c=r.get(o)??[];c.push({index:i,value:a}),r.set(o,c)}});for(let s of r.values()){for(let i of eh(s))n.add(i);for(let i of th(s))n.add(i)}return n}function eh(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=gu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=gu(s);if(i===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-r)>o).map(a=>a.index)}function th(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function xu(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Kt(e)?Object.entries(e).flatMap(([n,r])=>xu(r,t?`${t}.${n}`:n)):[]}function pu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function gu(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function nh(e){return Math.ceil(e.length/4)}function hu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function rh(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function sh(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function ih(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Si(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)=>Si(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&Si(n[o],r[o]))}var Mr,jr,Ur,Jr,wu,Hg,qg,bu,Bn=E(()=>{"use strict";Q();Re();Mr={id:"ansi",apply:zg},jr={id:"cr-progress",apply:e=>e.split(`
55
- `).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(`
56
- `)},Ur={id:"trailing-whitespace",apply:e=>e.split(`
48
+ `))ji(i)&&t.push(i)}catch{}}}return t}function An(e){return`legacy:${yg("sha256").update(e).digest("hex").slice(0,24)}`}function Dg(e){let t={spool_id:e.spool_id};for(let[r,n]of Object.entries(e.event??{}))r!=="spool_id"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"||n===null?t[r]=n:n!==void 0&&(t[r]=JSON.stringify(n)));return t}function uu(e){let{spool_id:t,...r}=e;return Kt(JSON.stringify(r))}function Ig(e){return typeof e.spool_id=="string"&&uu(e)!==null}function Ag(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function ji(e){return Vt(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Rg,lu=_(()=>{"use strict";Be();ee();In();$i();Rg=64*1024});async function Bn(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await pu(e,s),o=(await Ir(e,G)).filter(S=>Qt(S)>=s),a=i.filter(S=>P(S.event_type)!=="show"&&P(S.degradation_reason)===""),c=i.filter(S=>P(S.event_type)==="show"),u=i.filter(S=>P(S.degradation_reason)!==""),l=0,f=0,d=0,m=0,h=!1,p=new Map,g=new Map,w=[],y=0,v=0,E=0;for(let S of a){S.elided===!0&&l++;let I=ue(S.raw_bytes),$e=ue(S.emitted_bytes),ut=Math.max(0,I-$e),Ct=Zt(S,"raw"),b=Zt(S,"emitted"),T=Math.max(0,Ct.tokens-b.tokens);h||=(S.estimated===!0||Ct.estimated||b.estimated)&&T>0,f+=I,d+=$e,m+=T;let lt=bt(S).slice(0,10);lt&&p.set(lt,(p.get(lt)??0)+T);let dt=P(S.command)||"unknown",de=g.get(dt)??{command:dt,invocations:0,bytes_saved:0,tokens_saved:0};de.invocations++,de.bytes_saved+=ut,de.tokens_saved+=T,g.set(dt,de);let fe=tt(S.wrapper_ms);fe!=null&&w.push(fe),y+=ue(S.store_open_count);let Dt=tt(S.store_elapsed_ms);Dt!=null&&(v+=Dt,E++)}let O=new Map,B=new Map,le=[],xe=null;for(let S of u){let I=P(S.degradation_reason)||P(S.reason)||"unknown",$e=P(S.wrapper_family)||Ln(P(S.command));O.set(I,(O.get(I)??0)+1),B.set($e,(B.get($e)??0)+1);let ut=bt(S);le.push({timestamp:ut,family:$e,command:P(S.command)||"unknown",reason:I,exit_code:tt(S.wrapper_exit_code),stderr_head:P(S.stderr_head)||null}),(!xe||ut>xe.timestamp)&&(xe={timestamp:ut,reason:I,command:P(S.command)||"unknown"})}let Q=a.length+u.length,ze=c.filter(S=>S.hit===!0).length,Z=ci(m,h),ir=Ng(o);return{window_days:n,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:m,tokens_saved_estimated:Z.tokens_saved_estimated,token_estimate_range_pct:Z.token_estimate_range_pct,tokens_saved_low:Z.tokens_saved_low,tokens_saved_high:Z.tokens_saved_high,dollars_saved_estimate_usd:Z.dollars_saved_estimate_usd,dollars_saved_low_usd:Z.dollars_saved_low_usd,dollars_saved_high_usd:Z.dollars_saved_high_usd,pricing_model_family:Z.pricing_model_family,pricing_input_usd_per_million_tokens:Z.pricing_input_usd_per_million_tokens,pricing_note:Z.pricing_note,daily_tokens_saved:[...p.entries()].sort(([S],[I])=>S.localeCompare(I)).map(([S,I])=>({date:S,tokens_saved:I})),top_commands:[...g.values()].sort((S,I)=>I.bytes_saved-S.bytes_saved||I.tokens_saved-S.tokens_saved||S.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:Q===0?0:u.length/Q,show_total:c.length,show_hits:ze,show_misses:Math.max(0,c.length-ze),show_hit_rate:c.length===0?0:V(ze/c.length),by_reason:[...O.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({reason:S,count:I})),by_family:[...B.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({family:S,count:I})),recent_failures:le.sort((S,I)=>I.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:xe},latency:{wrapper_ms_p50:Yt(w,.5),wrapper_ms_p95:Yt(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:V(v),store_elapsed_ms_avg:E===0?null:V(v/E)},decisions:ir}}function Ng(e){let t=0,r=0,n=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,o.quota_free===!0&&(s+=Math.max(1,ue(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:V(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Ji(e,t,r=new Date){let s=(await Ir(e,te)).filter(i=>Qt(i)<=r.getTime()||bt(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=bt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Gg(s)}}async function Gi(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),i=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await pu(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(Qt).filter(b=>Number.isFinite(b)&&b>0),m=d.length===0?null:Math.min(...d),h=m==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-m)/Zg()))),p=[],g=new Map,w=new Map,y=new Map,v=new Map,E=new Map,O=new Map,B=0,le=!1,xe=0,Q=null,ze=0,Z=0;for(let b of c){let T=bt(b),lt=T.slice(0,10),dt=T.slice(0,16),de=Ln(P(b.command)),fe=Math.max(0,Zt(b,"raw").tokens-Zt(b,"emitted").tokens);B+=fe,le||=b.estimated===!0&&fe>0;let Dt=Math.max(0,ue(b.raw_bytes)-ue(b.emitted_bytes)),Rs=tt(b.wrapper_ms);if(Rs!=null){p.push(Rs);let ia=g.get(de)??[];ia.push(Rs),g.set(de,ia)}lt&&w.set(lt,(w.get(lt)??0)+1),dt&&y.set(dt,(y.get(dt)??0)+1);let Ss=Vg(T);Ss&&v.set(Ss,(v.get(Ss)??0)+1);let xs=Yg(T);xs&&E.set(xs,(E.get(xs)??0)+fe);let en=O.get(de)??{command_family:de,invocations:0,tokens_saved:0,bytes_saved:0};en.invocations++,en.tokens_saved+=fe,en.bytes_saved+=Dt,O.set(de,en),b.elided===!0&&xe++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(ze++,ue(b.store_open_count)>0&&Z++),fe>0&&(!Q||fe>Q.tokens_saved||fe===Q.tokens_saved&&Dt>Q.bytes_saved)&&(Q={timestamp:T,command_family:de,tokens_saved:fe,bytes_saved:Dt})}let ir=f.map(b=>({timestamp:bt(b),command_family:Ln(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,T)=>b.timestamp.localeCompare(T.timestamp)),S=new Map;for(let b of ir)S.set(b.reason,(S.get(b.reason)??0)+1);let I=Mg(ir),$e=Bg(l),ut=Ug([...O.values()],$e,I),Ct=[...y.entries()].sort((b,T)=>T[1]-b[1]||b[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:h,since:i,until:s,label:`window: ${n}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:fu(p),by_command_family:[...g.entries()].sort((b,T)=>T[1].length-b[1].length||b[0].localeCompare(T[0])).map(([b,T])=>({command_family:b,count:T.length,...fu(T)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[T])=>b.localeCompare(T)).map(([b,T])=>({date:b,requests:T})),active_minute_avg:y.size===0?null:V([...y.values()].reduce((b,T)=>b+T,0)/y.size),peak_minute:Ct?{minute:Ct[0],requests:Ct[1]}:null,hour_weekday_heatmap:zg(v)},savings:{tokens:ci(B,le),measured_control_holdout:$g(c,u),weekly_tokens_saved:Qg(E),elision_rate:c.length===0?0:V(xe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,T)=>T.tokens_saved-b.tokens_saved||T.bytes_saved-b.bytes_saved||b.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,T)=>T.invocations-b.invocations||T.tokens_saved-b.tokens_saved||b.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:Q},health:{degradation_timeline:ir,degradations_by_reason:[...S.entries()].sort((b,T)=>T[1]-b[1]||b[0].localeCompare(T[0])).map(([b,T])=>({reason:b,count:T})),cold_boots:ze===0?null:Z,warm_hits:ze===0?null:Math.max(0,ze-Z)},mining:{recovery_usage_by_family:$e,degradation_clusters:I,threshold_tuning_suggestions:ut}}}async function pu(e,t){let r=(await Ir(e,te)).filter(o=>Qt(o)>=t),n=r.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await Ir(e,ce)).filter(o=>Qt(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await Ir(e,Ce)).filter(o=>Qt(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...r,...s,...i]}function Zt(e,t){let r=tt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ue(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function $g(e,t){let r=Jg(t.map(a=>tt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(du).filter(a=>a!=null),s=t.map(du).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:V(Fg(i));return{enabled:!0,holdout_share:V(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Lg(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function du(e){let t=Zt(e,"raw").tokens;if(t<=0)return null;let r=Zt(e,"emitted").tokens;return Math.max(0,t-r)/t}function Lg(e,t){if(e.length<=1)return{low:V(Math.max(0,t)),high:V(Math.min(1,t))};let r=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:V(Math.max(0,t-n)),high:V(Math.min(1,t+n))}}function Bg(e){let t=new Map;for(let r of e){let n=Ln(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:V(r.show_hits/r.show_total)}))}function Mg(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:jg(r)}))}function jg(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function Ug(e,t,r){let n=[];for(let s of t.filter(i=>i.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(i=>i.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function Fg(e){return e.reduce((t,r)=>t+r,0)/e.length}function Jg(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Gg(e){let t=qg();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Hg(r.storage_class)??He(P(r.command));t[n].records+=1;let s=ue(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Hg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function qg(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function Ir(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>Wg(n.value)).filter(n=>Vt(n))}function Wg(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Qt(e){let t=Date.parse(bt(e));return Number.isFinite(t)?t:0}function bt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Yt(e,t){if(e.length===0)return null;let r=[...e].sort((s,i)=>s-i),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return V(r[n])}function fu(e){return{wrapper_ms_p50:Yt(e,.5),wrapper_ms_p90:Yt(e,.9),wrapper_ms_p95:Yt(e,.95),wrapper_ms_p99:Yt(e,.99)}}function V(e){return Math.round(e*100)/100}function Ln(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 Vg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Kg(t.getUTCDay())}:${t.getUTCHours()}`:null}function zg(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function Kg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Yg(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function Qg(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:V((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function Zg(){return 24*60*60*1e3}var mu=_(()=>{"use strict";et();ui();In();$i()});var Ar={};M(Ar,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>te,RSP_DECISIONS_COLLECTION:()=>G,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ce,RSP_TELEMETRY_INDEX_COLLECTION:()=>Cr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ce,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ai,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_FILE:()=>Ii,appendTelemetryEvent:()=>We,appendTelemetryEventSync:()=>rt,drainTelemetrySpool:()=>Fi,parseTelemetryEvent:()=>Kt,readAccountingLaneStats:()=>Ji,readTelemetryGainsReport:()=>Gi,readTelemetryStats:()=>Bn,takeTelemetrySpool:()=>xg,telemetryLegacySpoolPath:()=>$n,telemetrySpoolCorrectionsPath:()=>Ui,telemetrySpoolPath:()=>qe});var _e=_(()=>{"use strict";In();lu();mu()});var bu={};M(bu,{readGhConditionalJson:()=>re});import{spawn as sh}from"node:child_process";import{createHash as ih,randomUUID as oh}from"node:crypto";import{mkdir as ah,readFile as ch,rename as uh,writeFile as lh}from"node:fs/promises";import{dirname as dh,join as hu}from"node:path";async function re(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=mh(e.path,e.params),s=gh(n),i=await wh(r),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of yu(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await hh(a,t,e.env),u=yh(c.stdout);if(u.statusCode===304&&!!o)return await Yi(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let f=u.headers.get("etag");return f&&(i.entries[s]={key:s,request:n,etag:f,body:u.body,updated_at:new Date().toISOString()},await bh(r,i)),await Yi(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:f??void 0,quotaFree:!1}}return await Yi(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function yu(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function mh(e,t){return JSON.stringify({method:"GET",path:e,params:yu(t)})}function gh(e){return ih("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function hh(e,t,r){return await new Promise(n=>{let s=sh("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>n({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{n({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function yh(e){let t=e.replace(/\r\n/g,`
49
+ `),r=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(r.length===0)return{statusCode:0,headers:new Map,body:e};let n=r[r.length-1],s=Number(n[1]),i=n.index+n[0].length,o=t.indexOf(`
50
+
51
+ `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
52
+ `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function wh(e){for(let t of[wu(e),_h(e)])try{let r=Rh(await ch(t,"utf8"));if(Sh(r))return r}catch{}return{version:1,entries:{}}}async function bh(e,t){let r=wu(e);await ah(dh(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await lh(n,`${C(t)}
53
+ `,{encoding:"utf8",mode:384}),await uh(n,r)}function wu(e){return hu(q(e),fh)}function _h(e){return hu(q(e),ph)}function Rh(e){try{return JSON.parse(e)}catch{return J(e)}}async function Yi(e,t,r){await We(e,{collection:G,id:oh(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}function Sh(e){return Qi(e)&&e.version===1&&Qi(e.entries)&&Object.values(e.entries).every(xh)}function xh(e){return Qi(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Qi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fh,ph,jn=_(()=>{"use strict";Be();ee();_e();fh="gh-etag-cache.toon",ph="gh-etag-cache.json"});var oo={};M(oo,{listWaits:()=>ku,renderWaitHelp:()=>ro,runWait:()=>Ch});import{spawn as so}from"node:child_process";import{existsSync as to}from"node:fs";import{mkdir as kh,readdir as Eh,readFile as Th,rm as xu,writeFile as vh}from"node:fs/promises";import{join as Lr,resolve as Zi}from"node:path";import{randomUUID as Oh}from"node:crypto";async function Ch(e,t=process.cwd()){let r=Ih(e);if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(ro()),0;if(r.kind==="ls")return process.stdout.write(`${j({waits:await ku(t)})}
54
+ `),0;if(!Dh(r.kind))return process.stdout.write(ro()),2;let n=r.kind,s={id:Oh(),target:Wh(r),reason:r.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Ph[r.kind],status:"running"},i=Lr(await no(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await kh(await no(t),{recursive:!0}),await Eu(i,s),o=await Ah({...r,kind:n},t,i,s),process.stdout.write(`${j(qh(n,s,o))}
55
+ `),await Hh(r.options),o.exitCode}finally{await xu(i,{force:!0})}}function Dh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ro(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
56
+ `)}function Ih(e){let t=e[1],r={timeoutMs:_u.cmd,reason:"",signal:"SIGUSR1"},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t==="ls")return n;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};r.timeoutMs=_u[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?r.timeoutMs=Tu(e[++o]??""):a==="--reason"?r.reason=e[++o]??"":a==="--signal-pid"?r.signalPid=Number(e[++o]):a==="--signal"?r.signal=Kh(e[++o]??""):a==="--notify-cmd"?r.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?n.branch=e[++o]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++o]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Ah(e,t,r,n){switch(e.kind){case"cmd":return await Nh(e.commandLine??"",e.options.timeoutMs,t,r,n);case"pr":return await Xi($h(e.target??"",t,{emptyChecksGraceMs:Su("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Su("RSP_WAIT_PR_POLL_MS",15e3),r,n);case"run":return await Xi(()=>Bh(e,t),e.options.timeoutMs,15e3,r,n);case"release":return await Xi(()=>jh(e.tagGlob,new Date(n.started_at),t),e.options.timeoutMs,6e4,r,n)}}async function Nh(e,t,r,n,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=so(e,{cwd:r,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),$r(n,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${vu(t)}`})},t);c.once("error",l=>{clearTimeout(u),$r(n,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,f)=>{if(clearTimeout(u),o)return;let d=l===0;$r(n,s,d?"success":"failure"),a({status:d?"success":"failure",exitCode:d?0:1,summary:d?"command exited successfully":`command exited with ${f??l??"unknown"}`,details:{status:l??null,signal:f??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Xi(e,t,r,n,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await $r(n,s,a.status),a;let c=Math.min(r*4,Math.round(r*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Zh(Math.min(c,Math.max(0,i-Date.now())))}return await $r(n,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${vu(t)}`}}function $h(e,t,r){let n=Date.now();return()=>Lh(e,t,r,n)}async function Lh(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Fn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=io(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Vh),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return _t("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return _t("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let f=Date.now()-n;return a==="UNKNOWN"||f<r.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:f}}:_t("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:_t("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Bh(e,t){let r=e.target??(e.latest&&e.branch?await Mh(e.branch,t):"");if(!r)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let n=await Fn(["run","view",r,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh run view failed"};let s=io(n.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${r} is ${i||"pending"}`}:o==="success"?_t("success",`run ${r} succeeded`,Ru(s)):_t("failure",`run ${r} concluded ${o||"unknown"}`,Ru(s))}async function Mh(e,t){let r=await Fn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return Rt(s)&&s.databaseId!=null?String(s.databaseId):""}async function jh(e,t,r){let n=await Fn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return{status:"indeterminate",exitCode:2,summary:n.stderr||"gh release list failed"};let s=JSON.parse(n.stdout),o=(Array.isArray(s)?s.filter(Rt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Yh(e,c))&&u>=t});return o?_t("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function Fn(e,t){let r=await Uh(e,t);return r||await new Promise(n=>{let s=so("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>n({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{n({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function Uh(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Fh(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await re({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let n=er(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Nr(n,"database_id")||Nr(n,"id"),status:z(n,"status").toUpperCase(),conclusion:z(n,"conclusion").toUpperCase(),workflowName:z(n,"workflow_name")||z(n,"name"),headBranch:z(n,"head_branch"),url:z(n,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=eo(e,"--branch"),n=eo(e,"--limit")??"20",s=await re({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=Un(er(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Nr(o,"database_id")||Nr(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=eo(e,"--limit")??"20",n=await re({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Un(JSON.parse(n.stdout)).map(i=>({tagName:z(i,"tag_name"),publishedAt:z(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:n.stderr}}return null}async function Fh(e,t){let r=await re({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(r.status!==0)return r;let n=er(JSON.parse(r.stdout));if(Array.isArray(n.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let s=z(er(n.head),"sha"),[i,o]=s?await Promise.all([re({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),re({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?Un(er(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Un(er(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,o.stderr].filter(Boolean).join(`
57
+ `),stdout:JSON.stringify({number:Nr(n,"number"),state:z(n,"state").toUpperCase(),mergeable:Jh(n),statusCheckRollup:[...a.map(u=>({conclusion:z(u,"state").toUpperCase()})),...c.map(u=>({status:z(u,"status").toUpperCase(),conclusion:z(u,"conclusion").toUpperCase()}))],url:z(n,"html_url")})}}function Jh(e){let t=z(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function ku(e){let t=await no(e);if(!to(t))return[];let r=await Eh(t).catch(()=>[]),n=[];for(let s of r.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Lr(t,s),o=zh(await Th(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Qh(a)){await xu(i,{force:!0});continue}n.push(o)}return n}async function no(e){return Lr(await Gh(e),".red","tmp","waits")}async function Gh(e){let t=Zi(e);for(;;){if(to(Lr(t,".red"))||to(Lr(t,".git")))return t;let r=Zi(t,"..");if(r===t)return Zi(e);t=r}}async function $r(e,t,r){await Eu(e,{...t,status:r}).catch(()=>{})}async function Eu(e,t){await vh(e,`${j(t)}
58
+ `,"utf8")}async function Hh(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let r=so(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});r.once("error",()=>t()),r.once("close",()=>t())})}function qh(e,t,r){return{wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:r.exitCode,summary:r.summary,...r.details?{details:r.details}:{}}}}function _t(e,t,r){return{status:e,exitCode:e==="success"?0:1,summary:t,details:r}}function Wh(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function Vh(e){let t=Rt(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function Ru(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function io(e){let t=JSON.parse(e);if(!Rt(t))throw new Error("expected JSON object");return t}function zh(e){let t=e.trim();if(!t)return{};try{return io(t)}catch{let r=J(t);if(!Rt(r))throw new Error("expected structured object");return r}}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function er(e){return Rt(e)?e:{}}function Un(e){return Array.isArray(e)?e.filter(Rt):[]}function z(e,t){let r=e[t];return typeof r=="string"?r:""}function Nr(e,t){let r=e[t];return typeof r=="number"?r:0}function eo(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function Tu(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function Su(e,t){let r=process.env[e];if(!r)return t;try{return Tu(r)}catch{return t}}function Kh(e){return e.startsWith("SIG")?e:`SIG${e}`}function vu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Yh(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}function Qh(e){try{return process.kill(e,0),!0}catch{return!1}}async function Zh(e){await new Promise(t=>setTimeout(t,e))}var _u,Ph,ao=_(()=>{"use strict";ee();Me();jn();_u={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Ph={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Gn={};M(Gn,{parseProxyCommandLine:()=>Au,rewriteProxyCommandLine:()=>Iu,runProxy:()=>sy});import{spawn as ny}from"node:child_process";async function sy(e,t){let r="",n="",s=[],i=process.hrtime.bigint();try{if(r=Au(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Iu(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await iy(t.telemetryRoot,r,c),await Cu(r);throw c}for(let c of s)await oy(t.telemetryRoot,c);let o=await Cu(n||r),a=Number(process.hrtime.bigint()-i)/1e6;return await We(t.telemetryRoot,{collection:ce,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Iu(e,t="lossless"){let r=fy(e),n=[];return{commandLine:r.map((i,o)=>{if(i.kind==="operator"||dy(r,o)==="|")return i.text;let a=ay(i.text,t);return a?(n.push(a.match),a.text):i.text}).join(""),matches:n}}function Au(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp proxy -- <command line>");return n}async function iy(e,t,r){await We(e,{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:uo(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function oy(e,t){await We(e,{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Cu(e){let t=ny(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
59
+ `),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function ay(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=my(s);if(!i)return null;let o=ly(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(m=>m.value);if(Jn(c))return{text:e,match:{command:a.map(m=>m.raw).join(" "),commandFamily:uo(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=cy(a);if(!u)return null;let l=i.slice(0,o).map(m=>m.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(m=>m.raw).join(" "),commandFamily:uo(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function cy(e){let t=e.map(n=>n.value),r=e.map(n=>n.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:r}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:r}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:r}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:r}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:r}:uy(t,r)}function uy(e,t){return e[0]==="cat"&&e.length===2&&co(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&co(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&co(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function co(e){return!!e&&!e.startsWith("-")}function ly(e){let t=0;for(;t<e.length&&Du(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Du(e[t].value);)t+=1;return t}function dy(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function fy(e){let t=[],r=0,n,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(n){o===n&&(n=void 0);continue}if(o==="'"||o==='"'){n=o;continue}let a=py(e,i);a&&(i>r&&t.push({kind:"segment",text:e.slice(r,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,r=i+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function py(e,t){let r=e.slice(t,t+2);if(r==="&&"||r==="||")return r;let n=e[t];return n===";"||n==="|"?n:void 0}function my(e){let t=[],r="",n="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:r,value:n}),r="",n="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){r+=u,n+=u,i=!1,o=!0;continue}if(u==="\\"){r+=u,i=!0,o=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,o=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,o=!0}return s||i?null:(a(),t)}function uo(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Jn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Jn(t)&&t[1]?`gh ${t[1]} json-jq`:Jn(t)?"gh json-jq":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 Jn(e){return e[0]==="gh"&&e.some(gy)}function gy(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Du(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Hn=_(()=>{"use strict";_e()});function Lu(e,t={}){let r=hy(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))n.set(m,(n.get(m)??0)+1)}let i=r.map(d=>d.length),o=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=lo(i),u=lo(o),l=lo(a),f=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>Sy(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:fo(d.length,c)+fo(d.tokens.length,u)+fo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+_y(d.tokens,n,r.length)+Ry(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function hy(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(Nu(n++,r,i,e.slice(r,i).replace(/\r$/,""))),r=i+1}return(r<e.length||e.length===0)&&t.push(Nu(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Nu(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:yy(n),tokens:wy(n),numbers:by(n),length:n.length}}function yy(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function wy(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function by(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function _y(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(i=>Math.log2(r/Math.max(1,t.get(i)??r))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function Ry(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function lo(e){let t=$u(e),r=$u(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function fo(e,t){return Math.abs(e-t.median)/t.mad}function $u(e){let t=[...e].sort((n,s)=>n-s),r=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[r]:((t[r-1]??0)+(t[r]??0))/2}function Sy(e,t,r,n){return e<n&&r<t}var Bu=_(()=>{"use strict"});var po={};M(po,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Je,GIT_LOG_MACHINE_FIELDS:()=>ju,StructuredUsageError:()=>qn,cleanStatusPayload:()=>Gu,recoveryInstruction:()=>Re,renderGitContract:()=>Uu,runGitWrapper:()=>ky});import{spawn as xy}from"node:child_process";async function ky(e,t){let r=Fu(e),n=Ju(r.argv),s=await Oy(n,r.argv.slice(1));return Uu(e,s,t)}async function Uu(e,t,r){let n=Fu(e);if((t.status??0)!==0||t.signal){let f=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Ju(n.argv),i;try{i=Py(s,n.argv,t.stdout,n.query)}catch(f){if(f instanceof Wn)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let o=C(i);if(Ey(s,o,n.full,r))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=Vy(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await r.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${Re(u)}
60
+ `;return{stdout:Buffer.from(`${C(a.payload)}
61
+ ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function Re(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Fu(e){let t=mt(e),r=[],n=!1;for(let i of t.argv){if(i==="--full"){n=!0;continue}r.push(i)}let s=r.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new qn(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function Ey(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!Ty(e)||n.level!=="lossless")return!0;let s=Wy(n.heavyGitByteThreshold,Je);return Buffer.byteLength(t)<=s}function Ty(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ju(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function vy(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${ju.join("%x1f")}`,"-z",...r];case"diff":return["diff","--numstat","-z",...r];case"commit":return["commit",...r];case"push":return["push","--porcelain",...r];case"blame":return["blame","--line-porcelain",...r];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...r];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...r]}}async function Oy(e,t){let r=xy("git",vy(e,t),{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Py(e,t,r,n){switch(e){case"status":return Cy(t,r,n);case"log":return My(t,r,n);case"diff":return jy(t,r,n);case"commit":return nt(Uy(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return nt(Fy(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return Jy(t,r,n);case"branch":return Gy(t,r,n);case"show":return Hy(t,r,n)}}function Cy(e,t,r){let n="",s=[],i=!1,o=!1;for(let u of Dy(t)){if(!u)continue;if(o=!0,u.startsWith("# branch.head ")){n=u.slice(14),i=!0;continue}if(u.startsWith("# ")){i=!0;continue}if(u.startsWith("## ")){n=Ny(u),i=!0;continue}let l=Iy(u);if(l){i=!0,s.push(l);continue}let f=Ay(u);f&&(i=!0,s.push(f))}if(s.length===0){if(!o||i)return Gu(e.join(" "),n);throw new Wn("git-status-unparseable")}let a=W(s,r),c=Hu(a,"state");return nt({command:e.join(" "),branch:n,rows:a,summary:By(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Dy(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function Iy(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Br(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Br(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Br(t.slice(10).join(" "),r)}return e.startsWith("? ")?Br(e.slice(2),"??"):null}function Ay(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Br($y(e.slice(3),t),t):null}function Br(e,t){let r=Mu(t[0]??"."),n=Mu(t[1]??".");return{path:Ly(e),index:r,worktree:n,state:qy(`${r}${n}`)}}function Mu(e){return e===" "?".":e}function Ny(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function $y(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function Ly(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function By(e,t,r,n){let s=[];return r.renamed&&s.push(`${r.renamed} renamed`),r.untracked&&s.push(`${r.untracked} untracked`),r.changed&&s.push(`${r.changed} changed`),`${n?`${e}/${t}`:e} changes: ${r.added??0} added, ${r.modified??0} modified, ${r.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function Gu(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function My(e,t,r){let n=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=W(n,r);return nt({command:e.join(" "),commits:s,summary:`${r?`${s.length}/${n.length}`:s.length} commits`},r,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function jy(e,t,r){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),i=W(s,r),o=i.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 nt({command:e.join(" "),files:i,summary:`${r?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function Uy(e,t){let r=t.split(`
62
+ `)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function Fy(e,t){let r=t.split(`
63
+ `).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:n,refs:s,summary:`push already satisfied for ${o} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${o} -> ${n} +${a} commits`}}function Jy(e,t,r){let n=t.split(`
64
+ `),s=[],i=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=W(s,r),a=Hu(o,"author");return nt({command:e.join(" "),ranges:o,authors:a,summary:`${r?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function Gy(e,t,r){let n=t.split(`
65
+ `).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=W(n,r),i=s.find(o=>o.current)?.name??"";return nt({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${i?`, current ${i}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Hy(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,i=n>=0&&s>=0?t.slice(n+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=i.split(""),m=[];for(let y of o.split(`
66
+ `)){let v=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!v)continue;let E=v[3]??"";m.push({path:(v[1]??"").trim(),changed:Number(v[2]??0),added:[...E].filter(O=>O==="+").length,deleted:[...E].filter(O=>O==="-").length,binary:E.startsWith("Bin")})}let h=W(m,r),p=0,g=0,w=0;for(let y of h)p+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return nt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
67
+ `).length:0,files:h,summary:`${r?`${h.length}/${m.length}`:h.length} files, ${p} changed, +${g} -${w}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function nt(e,t,r){return t?je(e,r):e}function qy(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Hu(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function Wy(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vy(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}var ju,qn,Wn,St=_(()=>{"use strict";ee();Pe();pr();ve();Pe();ju=["%h","%an","%as","%s"];qn=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return sn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Wn=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var yo={};M(yo,{NORMALIZATION_ALLOWLIST:()=>Qu,NORMALIZE_ANSI:()=>zn,NORMALIZE_BLANK_LINES:()=>Qn,NORMALIZE_CR_PROGRESS:()=>Kn,NORMALIZE_JSON_TOON:()=>Yu,NORMALIZE_TRAILING_WHITESPACE:()=>Yn,crushJsonArrayItems:()=>Mr,formatCodexNormalizeDecision:()=>rl,formatNormalizeDecision:()=>tl,hookDecisionFromClaudePostExecJson:()=>Zu,hookDecisionFromCodexPostExecJson:()=>Xu,normalizeOutput:()=>Zn,renderGenericJsonLane:()=>go,runClaudePostExecHook:()=>Yy,runCodexPostExecHook:()=>Qy,transcodeJsonToToon:()=>Ku});import{readFileSync as Vn}from"node:fs";function Ku(e,t){let r=t?.encode??C,n=t?.decode??J,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=r(i)}catch{return e}let a;try{a=n(o)}catch{return e}return mo(i,a)?o.trimEnd():e}async function go(e,t={}){let r=tw(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,i=zu(t.minTokens,zy),o=zu(t.maxItems,Ky);if(!(s>o&&ow(e)>=i))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Mr)(n,o)}catch(p){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:aw(p)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=C(l).trimEnd();return{output:[f,m,h].filter(Boolean).join(`
68
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Mr(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=rw(e),s=new Set;n&&e.forEach((a,c)=>{ho(a)!==n&&s.add(c)});let i=nw(e,n);for(let a of s)r.add(a);for(let a of i)r.add(a);let o=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Zn(e){let t=e;for(let r of Qu)t=r.apply(t);return t}async function Zu(e,t){return await el(e,t)}async function Xu(e,t){return await el(e,t)}async function el(e,t){let r=ew(e),n=cw(r,["cwd"])||t.cwd;if(!await(t.isEnabled??Xy)(n))return{kind:"passthrough",reason:"disabled"};let i=uw(r,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Zn)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function tl(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function rl(e){return{stdout:"",status:0}}async function Yy(e){let t=e?Vn(e,"utf8"):Vn(0,"utf8"),r=await Zu(t,{cwd:process.cwd()}),n=tl(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function Qy(e){let t=e?Vn(e,"utf8"):Vn(0,"utf8"),r=await Xu(t,{cwd:process.cwd()}),n=rl(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function Zy(e){let t="",r=0;for(;r<e.length;){let n=e.charCodeAt(r);if(n===27){let s=e.charCodeAt(r+1);if(s===93){for(r+=2;r<e.length;){let i=e.charCodeAt(r);if(i===7){r++;break}if(i===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&qu(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&qu(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function qu(e){return e>=32&&e<=63}function Xy(e){return Ge(e,process.env).enabled}function ew(e){try{let t=JSON.parse(e);return tr(t)?t:{}}catch{return{}}}function tw(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return tr(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function rw(e){let t=new Map;for(let s of e){let i=ho(s);t.set(i,(t.get(i)??0)+1)}let[r,n]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function ho(e){return Array.isArray(e)?"array":tr(e)?Object.keys(e).sort().map(t=>`${t}:${Wu(e[t])}`).join("|"):Wu(e)}function nw(e,t){let r=new Set,n=new Map;e.forEach((s,i)=>{if(!(t&&ho(s)!==t))for(let[o,a]of nl(s)){let c=n.get(o)??[];c.push({index:i,value:a}),n.set(o,c)}});for(let s of n.values()){for(let i of sw(s))r.add(i);for(let i of iw(s))r.add(i)}return r}function sw(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let r=t.map(a=>a.value).sort((a,c)=>a-c),n=Vu(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),i=Vu(s);if(i===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-n)>o).map(a=>a.index)}function iw(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let n=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=n).map(s=>s.index)}function nl(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:tr(e)?Object.entries(e).flatMap(([r,n])=>nl(n,t?`${t}.${r}`:r)):[]}function Wu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Vu(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function ow(e){return Math.ceil(e.length/4)}function zu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function aw(e){let r=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function cw(e,t){let r=e;for(let n of t){if(!tr(r))return"";r=r[n]}return typeof r=="string"?r:""}function uw(e,t){let r=e[t];return tr(r)?r:null}function tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mo(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)=>mo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&mo(r[o],n[o]))}var zn,Kn,Yn,Qn,Yu,zy,Ky,Qu,jr=_(()=>{"use strict";ee();Pe();zn={id:"ansi",apply:Zy},Kn={id:"cr-progress",apply:e=>e.split(`
69
+ `).map(t=>{let r=t.endsWith("\r")?t.slice(0,-1):t,n=r.lastIndexOf("\r");return n>=0?r.slice(n+1):r}).join(`
70
+ `)},Yn={id:"trailing-whitespace",apply:e=>e.split(`
57
71
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
58
- `)},Jr={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
72
+ `)},Qn={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
59
73
 
60
- `)};wu={id:"json-to-toon",apply:e=>yu(e)},Hg=200,qg=15;bu=[Mr,jr,Ur,Jr,wu]});var $u={};M($u,{REPO_STORE_PATH:()=>Ti,mergeRspBlock:()=>Pu,provisionRspRepoStore:()=>gh});import{constants as oh}from"node:fs";import{access as ah,copyFile as ch,mkdir as vu,readFile as uh,rename as lh,writeFile as Tu}from"node:fs/promises";import{dirname as dh,join as Ln,resolve as fh}from"node:path";async function gh(e,t={}){let n=fh(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,Ti);await vu(r,{recursive:!0}),await vu(dh(i),{recursive:!0});let o="";try{o=await uh(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Pu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await Tu(s,a,"utf8");let u=!await vi(i),l=!1,f=!1;if(u){let p=Ln(n,mh),h=Ln(n,ph);if(await vi(p))await lh(p,i),f=!0;else if(await vi(h))await ch(h,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=hh(a,Ti);return d!==a&&await Tu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function Pu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Gr(t.ttlDays,Be)}`,` ephemeralTtlHours: ${Gr(t.ephemeralTtlHours,Le)}`,` byteBudget: ${Gr(t.byteBudget,Me)}`,` heavyGitByteThreshold: ${Gr(t.heavyGitByteThreshold,Ne)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
61
- `),s=Du(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
74
+ `)};Yu={id:"json-to-toon",apply:e=>Ku(e)},zy=200,Ky=15;Qu=[zn,Kn,Yn,Qn,Yu]});var Jr={};M(Jr,{parseExecCommandLine:()=>ul,renderExecContract:()=>cl,runExecWrapper:()=>mw});import{isUtf8 as lw}from"node:buffer";import{spawn as dw}from"node:child_process";async function mw(e,t){let r=ul(e),n=await gw(r);return await cl(r,n,t)}async function cl(e,t,r){let n=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=me(e,t.stdout,t.stderr);return{stdout:N(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:n}}if(n.length===0)return{stdout:n,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let i=hw(n),o=i.kind==="text"?Buffer.from(i.text):n,a=Lw(r.heavyByteThreshold,fw);if(o.length<=a&&r.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=i.kind==="text"?ww(i.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):bw(n,n.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:f.degradation}}function ul(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function gw(e){let t=dw(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(n).toString("binary"),status:o,signal:a})})})}function hw(e){return lw(e)?{kind:"text",text:yw(e.toString("utf8"))}:{kind:"bytes"}}function yw(e){let t=e;for(let r of[zn,Kn,Yn,Qn])t=r.apply(t);return t}function ww(e,t,r,n,s,i=Pw,o=Mr){let c=Math.max(1,Math.floor((n==="terse"?al:pw)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=Ow(e,c,l,i),d=_w(e),m=Rw(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=ll(s,d,t,$w(u),r,m.summary),p=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:hl(f.error)}:m.degradation;return{text:gl(h),degradation:p}}function bw(e,t,r,n){let s=Math.max(1,Math.floor(al/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:gl(ll(n,"bytes",t,0,r,i))}}function ll(e,t,r,n,s,i){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:i,recovery:{original:Re(s)}}}function _w(e){let t=e.trim();return t?fl(t)?"json":pl(e)?"jsonl":Cw(e)?"unified-diff":ml(e)?"tabular":Dw(e)?"log-like":Iw(e)?"prose":"untyped":"untyped"}function Rw(e,t,r,n,s,i,o=Mr){switch(e){case"json":return Sw(t,o);case"jsonl":return{summary:xw(t)};case"unified-diff":return{summary:kw(t)};case"tabular":return{summary:Ew(t)};case"log-like":return{summary:Tw(t,i)};case"prose":return{summary:vw(t)};case"bytes":return{summary:{}};case"untyped":return{summary:dl(r,n,s,i)}}}function Sw(e,t){let r=fl(e);if(Array.isArray(r)){if(r.length>15)try{let n=t(r,15);return{summary:{root_type:"array",total:n.total,kept:n.kept,dropped:n.dropped,shape_outliers:n.shapeOutliers,value_outliers:n.valueOutliers,items:n.items.map(st),item_keys:bo(r)}}}catch(n){return{summary:il(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:hl(n)}}}return{summary:il(r)}}if(Fr(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,i])=>[s,st(i)]))}}}return{summary:{root_type:typeof r,value:st(r)}}}function il(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(st),item_keys:bo(e)}}function xw(e){let t=pl(e)??[],r=Aw(t,"level");return{records:t.length,keys:bo(t),levels:r,first:st(t[0]),last:st(t.at(-1))}}function kw(e){let t=new Map,r="",n=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);if(a){r=a[2]??a[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0});continue}if(!r){let c=/^\+\+\+ b\/(.+)$/.exec(o);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,r&&t.get(r).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(n++,r&&t.get(r).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:n,deleted_lines:s}}function Ew(e){let t=ml(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:dl(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Tw(e,t){let r=Ur(e);return{entries:r.length,levels:Nw(r),first:xt(r[0]??""),last:xt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:xt(n.text)}))}}function vw(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:xt(t[0]??""),closing:xt(t.at(-1)??"")}}function dl(e,t,r,n){let s=ol(e.subarray(0,t)),i=ol(e.subarray(r));return{head:s,tail:i,outliers:n.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:xt(o.text)}))}}function Ow(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function Pw(e,t){return Lu(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function fl(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Fr(r)||Array.isArray(r)?r:null}catch{return null}}function pl(e){let t=Ur(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function Cw(e){let t=Ur(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return n&&s&&i}function ml(e){let t=Ur(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).map(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function Dw(e){let t=Ur(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function Iw(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function Ur(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function bo(e){let t=new Map;for(let r of e)if(Fr(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function Aw(e,t){let r=new Map;for(let n of e){if(!Fr(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();r.set(i,(r.get(i)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function Nw(e){let t=new Map;for(let r of e){let n=/\blevel=([A-Za-z]+)\b/.exec(r)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(r);if(!n)continue;let s=(n[1]??n[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}function st(e){return typeof e=="string"?xt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(st):Fr(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,st(r)])):String(e)}function xt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=sl?t:`${t.slice(0,sl-1)}\u2026`}function gl(e){let t=C(e).trimEnd(),r=J(t);if(!wo(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
75
+ `}function wo(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)=>wo(a,o[c]))}let r=e,n=t,s=Object.keys(r),i=Object.keys(n);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(n,o)&&wo(r[o],n[o]))}function Fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hl(e){let r=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return r.length<=240?r:`${r.slice(0,239)}\u2026`}function ol(e){return e.toString("utf8").replace(/�$/g,"")}function $w(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function Lw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var fw,pw,al,sl,Gr=_(()=>{"use strict";ee();Bu();St();jr();ve();fw=8*1024,pw=2*1024,al=1024,sl=240});var kl=_(()=>{"use strict";li()});var kt={};M(kt,{ResidentRspElisionStore:()=>Wr,ensureResidentServer:()=>mn,kickResidentServer:()=>gn,pingResident:()=>gt,readResidentRegistry:()=>Sr,removeResidentRegistry:()=>yn,residentRegistryStatus:()=>Rr,resolveResidentPaths:()=>Ze,sweepResidentRegistry:()=>_c,warmResidentServer:()=>bc,writeResidentRegistry:()=>hn});import{randomUUID as Hw}from"node:crypto";function El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Wr,Ve=_(()=>{"use strict";kl();wn();Wr=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?El(r)&&r.status==="expired"?r:!El(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}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,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await mn(this.paths,this.config);let r=await Ft(this.paths,{...t,id:Hw()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var cs={};M(cs,{RSP_WRAPPER_CAPABILITIES:()=>Kr,formatCodexHookDecision:()=>Cl,formatHookDecision:()=>Pl,hookDecisionFromClaudePreExecJson:()=>Kw,hookDecisionFromCodexPreExecJson:()=>Yw,rewriteCommand:()=>vl,rewriteTableFromCapabilities:()=>Tl,runClaudePreExecHook:()=>Qw,runCodexPreExecHook:()=>Zw});import{readFileSync as ss}from"node:fs";import{existsSync as qw}from"node:fs";import{fileURLToPath as Ww}from"node:url";function Tl(e){let t=new Map;for(let r of e)t.set(hb(r.command),["rsp",...r.wrapper]);return t}function vl(e){let t=ab(e);if(t)return t;let r=ib(e);if(!r)return rs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&Fl(n[0]))return rs(e);let s=zw(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return rs(e);let i=[...Kr].sort((c,u)=>u.command.length-c.command.length).find(c=>ob(n,c.command));if(!i)return rs(e);let o=["rsp",...i.wrapper,...n.slice(i.command.length)],a=Ll(r.redirectSuffix);return{kind:"rewrite",command:[...o.map(zr),...a].join(" "),capabilityId:i.id}}function zw(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Ll(e.redirectSuffix);return r==="cat"&&t.length===2&&ts(t[1])?{kind:"rewrite",command:["rsp","cat",zr(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&ts(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",zr(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&ts(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],zr(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&ts(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),zr(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function ts(e){return!!e&&!e.startsWith("-")}async function Kw(e,t){return await Ol(e,t)}async function Yw(e,t){return await Ol(e,t)}async function Ol(e,t){return(await So(e,t,"pre-exec")).decision}async function So(e,t,r){let n=Jl(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:Vr({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,i=Se(s,["cwd"])||Se(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Xw)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:Ro(s),decision:d,reason:"disabled"})}}let a=Ro(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=Ge(i,process.env).proxyEnabled?ub(a):(t.rewrite??vl)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:Vr({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await tb(i,t.wakeResident??eb),{decision:l,telemetryRoot:i,event:Vr({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Pl(e){return e.kind==="rewrite"?Dl(e.command):{stdout:"",status:0}}function Cl(e){return e.kind==="rewrite"?Dl(e.command):{stdout:"",status:0}}function Dl(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
76
+ `,status:0}}async function Qw(e){let t="";try{t=e?ss(e,"utf8"):ss(0,"utf8");let r=await So(t,{cwd:process.cwd()},"claude-pre-exec");is(r.telemetryRoot,r.event);let n=r.decision;Al("claude-pre-exec",n);let s=Pl(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return is(process.cwd(),Il("claude-pre-exec",t,r)),Nl("claude-pre-exec",r),0}}async function Zw(e){let t="";try{t=e?ss(e,"utf8"):ss(0,"utf8");let r=await So(t,{cwd:process.cwd()},"codex-pre-exec");is(r.telemetryRoot,r.event);let n=r.decision;Al("codex-pre-exec",n);let s=Cl(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return is(process.cwd(),Il("codex-pre-exec",t,r)),Nl("codex-pre-exec",r),0}}function is(e,t){We(e,t).catch(()=>{})}function Vr(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Ul(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Il(e,t,r){let n=Jl(t),s=n.ok?Ro(n.payload):"";return{collection:G,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Ul(s),decision:"failed-open",reason:"hook-exception",error:xo(r)}}function Xw(e){return Ge(e,process.env).enabled}async function eb(e){let t=Ge(e,process.env);if(!t.enabled||!sb(t))return;let r=Ze(e);await gn(r,nb(t))}async function tb(e,t){try{await Promise.resolve(t(e))}catch(r){rb(r)}}function Al(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
77
+ `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
78
+ `)}}function Nl(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${xo(t)}
79
+ `)}function rb(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${xo(e)}
80
+ `)}function xo(e){return e instanceof Error?e.name||"Error":typeof e}function nb(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function sb(e){if(!e.storeUri.startsWith("file://"))return!0;try{return qw(Ww(e.storeUri))}catch{return!1}}function Ro(e){return Se(e,["tool_input","command"])||Se(e,["tool_input","cmd"])||Se(e,["tool_input","args","command"])||Se(e,["input","command"])||Se(e,["input","cmd"])||Se(e,["arguments","command"])||Se(e,["arguments","cmd"])||Se(e,["command"])||Se(e,["cmd"])}function ib(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=$l(t);if(r.length===0||r[0]?.quoted||r.some(i=>/[()$`]/.test(i.text))||r.some(i=>i.text.includes("=")&&Fl(i.text)))return null;let n=[],s=[];for(let i of r){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}n.push(i)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function $l(e){let t=[],r="",n=!1,s=null,i=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,r+=e[o];continue}if(/[ \t]/.test(a)){i();continue}r+=a}return s?[]:(i(),t)}function ob(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function ab(e){let t=$l(e.trim()).map(r=>r.text);return ns(t)?{kind:"passthrough",reason:Vw}:null}function ns(e){return e[0]==="gh"&&e.some(cb)}function cb(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ll(e){return e.map(t=>t.text)}function zr(e){return/[^\w@%+=:,./-]/.test(e)?ko(e):e}function ub(e){let t=lb(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${ko(e.trim())}`,capabilityId:"proxy:universal"}}function lb(e){let t=e.trim();if(!t)return"missing-command";if(Ml(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=as(os(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Bl.has(r))return"interactive"}function rs(e){let t=e.trim();return db(t)?{kind:"rewrite",command:`rsp exec -- ${ko(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function db(e){return!(!e||!fb(e)||!pb(e)||Ml(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||mb(e,"rsp")||jl(e,Bl)||gb(e))}function fb(e){return/&&|[;|]/.test(e)}function Ml(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function pb(e){return os(e).some(t=>{let r=as(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function jl(e,t){return os(e).some(r=>{let n=as(r)[0];return n?t.has(n):!1})}function mb(e,t){return jl(e,new Set([t]))}function gb(e){return os(e).some(t=>{let r=as(t);return r[0]==="grep"&&r.includes("-q")})}function os(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function as(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ko(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ul(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:ns(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:ns(t)&&t[1]?`gh ${t[1]} json-jq`:ns(t)?"gh json-jq":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 Fl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function hb(e){return e.join("\0")}function Jl(e){try{let t=JSON.parse(e);return Gl(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Se(e,t){let r=e;for(let n of t){if(!Gl(r))return"";r=r[n]}return typeof r=="string"?r:""}function Gl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Kr,bE,Vw,Bl,Yr=_(()=>{"use strict";Pe();Ve();_e();Kr=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],bE=Tl(Kr),Vw="lossless-gh-json-jq";Bl=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Yl={};M(Yl,{fastTelemetryRoot:()=>To,isFastGitStatus:()=>us,runFastGitStatus:()=>ls});import{spawnSync as zl}from"node:child_process";import{existsSync as Kl,readdirSync as kb}from"node:fs";function us(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ls(){if(Eb(process.cwd()))return{stdout:Eo(),stderr:Buffer.alloc(0),status:0,signal:null};if(zl("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Eo(),stderr:Buffer.alloc(0),status:0,signal:null};let t=zl("git",["status","--porcelain=v1"],{encoding:"buffer"});if((t.status??0)!==0)return{stdout:t.stdout,stderr:t.stderr,status:t.status??1,signal:t.signal};let r=t.stdout.length===0?Eo():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function To(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ve(),kt));return t(e).rootDir}catch{return e}}function Eo(){return Buffer.from(`${j({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
81
+ `)}function Eb(e){try{return!Kl(`${e}/.git`)||Kl(`${e}/.git/index`)?!1:kb(e).every(t=>t===".git")}catch{return!1}}var vo=_(()=>{"use strict";Me()});var $o={};M($o,{renderGhContract:()=>nd,runGhWrapper:()=>qb});import{spawn as Ub}from"node:child_process";async function qb(e,t){let r=sd(e),n=await Vb(r);return nd(e,n,t)}async function nd(e,t,r){if((t.status??0)!==0||t.signal){let m=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let n=sd(e),s=Qr(t.stdout),i=t_(n,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=u_(i);if(o){if(!r.store)throw new Error("truncated gh output requires an elision store");let m=await r.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:o.bytes}});o.target.truncated.handle=m}let a=o?.target.truncated.handle||void 0,c=C(i);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=l_(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(c),f=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Re(f)}
82
+ `;return{stdout:Buffer.from(`${C(u.payload)}
83
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function sd(e){let t=mt(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let i=r,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let m=0;m<l.length;m+=1){let h=l[m]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Xl(l[++m]??""):h.startsWith("--fields=")?u=Xl(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return Wb(d),d}function Zl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?Jb[t]:Fb[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Xl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function Wb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new fs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=Hb[t];for(let n of e.fields)if(!r.includes(n))throw new fs(e,`unknown field: ${n}`,r)}async function Vb(e){if(e.action==="combined")return await zb(e);let t=Kb(e);if(!t)return await e_(Zl(e));let r=await re({...t,command:["gh",...Zl(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await Yb(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function zb(e){let t=e.target??"",[r,n,s]=await Promise.all([re({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),re({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),re({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[r,n,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=od(Qr(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:ie(Qr(s.stdout)).map(Zb)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function Kb(e){let t=ad(e.passthrough),r=Xb(e.passthrough,"--limit")??30,n=Ie(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:Ie(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function Yb(e,t){let r=Qr(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ie(r).map(id);case"pr:view":return od(r);case"issue:list":return ie(r).filter(n=>!Tt(n.pull_request)).map(ed);case"issue:view":return ed(r);case"run:list":return{items:ie($(r).workflow_runs).map(td),total:ne($(r),"total_count")};case"run:view":{let n=td(r),s=ad(e.passthrough);if(!s)return n;let i=await re({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:i.status===0?ie($(Qr(i.stdout)).jobs).map(Qb):[]}}default:return r}}function id(e){let t=$(e);return{number:ne(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Ao(t.user),labels:ie(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x($(t.base),"ref"),headRefName:x($(t.head),"ref")}}function od(e){return id(e)}function ed(e){let t=$(e);return{number:ne(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:ie(t.labels).map(r=>({name:x(r,"name")})),author:Ao(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function td(e){let t=$(e);return{databaseId:ne(t,"database_id")||ne(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function Qb(e){let t=$(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function Zb(e){let t=$(e);return{author:Ao(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Ao(e){let t=$(e);return{login:x(t,"login")}}function ad(e){return e.find(t=>!t.startsWith("-"))}function Ie(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function Xb(e,t){let r=Ie(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function e_(e){let t=Ub("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:o,signal:a})})})}function t_(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Oo(r,"prs"),i=s.rows.map(c=>cd(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):nr({...n,prs:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} ${rd(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return nr({...n,pr:ud($(r),e),summary:`PR #${ne($(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return r_(e,t,$(r));case"issue:list":{let s=Oo(r,"issues"),i=s.rows.map(c=>ld(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):nr({...n,issues:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} ${rd(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return nr({...n,issue:a_($(r),e),summary:`issue #${ne($(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Oo(r,"runs"),i=s.rows.map(c=>dd(c,e)),o=W(i,e.query),a=Po(o.length,i.length,s.total,e.query);return o.length===0?Co(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):nr({...n,runs:o,aggregate:a,summary:`${Do(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return nr({...n,run:c_($(r),e),summary:`run ${ne($(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function r_(e,t,r){let n=ud($(r.view),{...e,action:"view",wide:!0}),s=W(ie(r.checks).map(n_),e.query),i=$(r.comments).comments,o=W(ie(i).map(s_).slice(-3),e.query);return je({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${ne($(r.view),"number")}: ${s.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 n_(e){return{name:x(e,"name"),state:Zr(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function s_(e){return{author:pd(e.author),body:ps(e,"body",Io,!1),created:x(e,"createdAt")}}function Oo(e,t){if(Array.isArray(e))return{rows:ie(e)};let r=$(e),n=ne(r,"total")||ne(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ie(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ie(r.workflow_runs),total:n}:{rows:[]}}function Po(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Co(e,t,r,n,s){return je({...e,empty:!0,scope:i_(t),[r]:[],aggregate:n,summary:`0 ${o_(t)}`},s)}function i_(e){let t=Ie(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let i=Ie(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${r}`}let n=Ie(e.passthrough,"--branch")??Ie(e.passthrough,"-b"),s=Ie(e.passthrough,"--workflow")??Ie(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function o_(e){let t=Ie(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function cd(e,t){let r={number:ne(e,"number"),title:x(e,"title"),state:Zr(e),draft:!!e.isDraft};return No(r,e,t,["author","labels","url","updated"]),r}function ud(e,t){let r=cd(e,t);return r.body=ps(e,"body",Io,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function ld(e,t){let r={number:ne(e,"number"),title:x(e,"title"),state:Zr(e),labels:fd(e.labels)};return No(r,e,t,["author","url","updated"]),r}function a_(e,t){let r=ld(e,t);return r.body=ps(e,"body",Io,t.full),r}function dd(e,t){let r={id:ne(e,"databaseId"),name:x(e,"name"),status:Zr(e),conclusion:x(e,"conclusion")};return No(r,e,t,["event","branch","workflow","created"]),r}function c_(e,t){let r=dd(e,t),n=ie(e.jobs).map(s=>({name:x(s,"name"),status:Zr(s),conclusion:x(s,"conclusion"),log:ps(s,"log",Gb,t.full)}));return r.jobs=n,r}function ps(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let i=s.slice(0,r),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function u_(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Tt(r)){if(Tt(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function l_(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function rd(e,t){return e.every(r=>r.state===t)?t:"returned"}function Do(e,t,r){return r?`${e}/${t}`:String(e)}function nr(e,t,r){return t.query?je(e,r):e}function Zr(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function No(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=pd(t.author):s==="labels"?e.labels=fd(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function fd(e){return Array.isArray(e)?e.map(t=>Tt(t)?x(t,"name"):String(t)).filter(Boolean):[]}function pd(e){return Tt(e)?x(e,"login"):""}function Qr(e){return e.trim()?JSON.parse(e):null}function ie(e){return Array.isArray(e)?e.filter(Tt):[]}function $(e){return Tt(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function ne(e,t){let r=e[t];return typeof r=="number"?r:0}function Tt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fb,Jb,Io,Gb,Hb,fs,Lo=_(()=>{"use strict";ee();jn();St();pr();ve();Fb={"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"]},Jb={"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"]},Io=160,Gb=160,Hb={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};fs=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var jo={};M(jo,{renderTestContract:()=>md,runTestWrapper:()=>g_});import{spawn as d_}from"node:child_process";async function g_(e,t){let r=mt(e),n=await __(r.argv);return await md(e,n,t)}async function md(e,t,r){let n=mt(e),i=gd(n.argv)==="vitest"?R_(t.stdout):S_(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${E_(i.durationSeconds)}`,c=W(i.failures,n.query);if(r.level==="terse")return await h_(n.argv,t,{...i,failures:c},o,a,r,n.query);let u=[],l,f=0;for(let h of c){let p=await x_(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:p.text}),l??=p.handle,f+=p.bytesElided}let d={exit_code:o,summary:n.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let m=n.query?je(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function h_(e,t,r,n,s,i,o){let a=y_(r.failures),c={exit_code:n,summary:o?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?je(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),f=Math.max(0,r.failures.length-a.length),d=a.some((v,E)=>v.excerpt!==r.failures[E].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:u};let m={exit_code:n,summary:s};r.failures.length>0&&(m.failures=r.failures.map(v=>({suite:v.suite,name:v.name,excerpt:v.excerpt})));let h=C(m),p=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:p}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${p}) \u2014 ${Re(g)}`;return{stdout:Buffer.from(`${l}
84
+ ${y}`),stderr:Buffer.from(t.stderr),status:Mo(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:p,rowsElided:f,rawOutput:Buffer.from(h)}}function Mo(e){return e===0||e===null?0:1}function y_(e){let t=[],r=p_;for(let n of e.slice(0,m_)){let s=w_(n.excerpt,Math.min(f_,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function w_(e,t){if(t<=0)return"";let r=e.split(`
85
+ `),n=r.length<=2?e:`${r[0]}
86
+ \u2026
87
+ ${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function gd(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 b_(e){if(gd(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let r=e.slice(1);return{executable:"cargo",args:r.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?r:["test","--message-format=json",...r.slice(1)]}}async function __(e){let t=b_(e),r=d_(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",i=>n.push(i)),r.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{r.on("error",o),r.on("close",(a,c)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function R_(e){let t=hd(e);if(!ot(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=at(t.numTotalTests),i=at(t.numFailedTests),o=T_(at(t.startTime),at(t.endTime));for(let a of r){if(!ot(a))continue;let c=Ae(a.name)||Ae(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)ot(l)&&l.status==="failed"&&n.push({suite:c,name:Ae(l.fullName)||Ae(l.title)||Ae(l.name),excerpt:k_(l.failureMessages)||Ae(l.failureMessage)})}return s||=r.reduce((a,c)=>!ot(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=n.length,o||=r.reduce((a,c)=>ot(c)?a+at(c.perfStats&&ot(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:r.length||1,durationSeconds:o,failures:n}}function S_(e){let t=e.split(`
88
+ `).filter(Boolean).map(c=>hd(c)).filter(ot);if(t.length===0)return null;let r=[],n=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,n+=at(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=at(c.failed),o+=at(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ae(c.name).split("::").slice(0,-1).join("::"),name:Ae(c.name),excerpt:Ae(c.stdout)});continue}if(c.reason==="compiler-message"&&ot(c.message)){let u=Ae(c.message.rendered);u&&a.push(u)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
89
+ `)}),i||=1,n||=1,s||=1),s||=r.length,i||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:i,durationSeconds:o,failures:r}}async function x_(e,t,r){let n=Buffer.from(e);if(n.length<=Bo)return{text:e,bytesElided:0};if(!r)throw new Error("over-limit test failure excerpt requires an elision store");let s=await r.mint(n,{command:t,loss:{level:"brief",bytes_elided:n.length}}),i=n.subarray(0,Bo).toString("utf8").replace(/\uFFFD$/,""),o=n.length-Buffer.byteLength(i);return{text:`${i}
90
+ \u2026 elided ${o} bytes (+${n.length}) \u2014 ${Re(s)}`,handle:s,bytesElided:n.length}}function hd(e){try{return JSON.parse(e)}catch{return null}}function k_(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
91
+ `):""}function E_(e){return`${Number(e.toFixed(1))}s`}function T_(e,t){return e>0&&t>e?(t-e)/1e3:0}function at(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ae(e){return typeof e=="string"?e:""}function ot(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Bo,f_,p_,m_,Uo=_(()=>{"use strict";ee();St();pr();ve();Bo=320,f_=160,p_=Bo,m_=3});var Go={};M(Go,{parseCatCommand:()=>Jo,renderCatContract:()=>N_,runCatWrapper:()=>A_});import{isUtf8 as v_}from"node:buffer";import{readFile as O_}from"node:fs/promises";import{extname as P_}from"node:path";async function A_(e,t){let r=Jo(e),n;try{n=await O_(r.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=me(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${r.file}`}),stderr:Buffer.from(`${i}
92
+ `),status:1,signal:null}}return Sd(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Rd(e,r,n,t)}async function N_(e,t,r){if((t.status??0)!==0||t.signal){let o=me(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let n=Jo(e),s=Buffer.from(t.stdout,"utf8");return Sd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Rd(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Jo(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=_d(t[++o],Fo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=_d(u,Fo);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function Rd(e,t,r,n){let s=r.toString("utf8"),i=B_(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let o=n.level!=="lossless"||r.length>bd(n.heavyByteThreshold,yd)||i.truncated;if(!wd(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=wd(t.file)?$_(e,t.file,r,s,n.level,i):L_(e,t.file,r,s,i),c=`${C(a)}
93
+ `;if(!o&&Buffer.byteLength(c)<=bd(n.heavyByteThreshold,yd))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:r};let u=await n.store?.mint(r,{command:e.join(" "),loss:{level:n.level==="lossless"?"terse":n.level,bytes_elided:r.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${r.length}) \u2014 ${Re(u)}
94
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function $_(e,t,r,n,s,i){let o=ms(n),a=s==="terse"?D_:C_,c=ms(i.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:r.length,lines:o.length,symbols:M_(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function L_(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ms(n).length,content:ms(s.text),truncated:s.truncated}}function B_(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
95
+ `),n=r.at(-1)==="",s=n?r.slice(0,-1):r,i=t.limit??Fo,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
96
+ `)}${n&&o.length>0?`
97
+ `:""}`,truncated:o.length<s.length}}function M_(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:r+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[1],line:r+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!j_(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ms(e){let t=e.split(`
98
+ `);return t.at(-1)===""?t.slice(0,-1):t}function Sd(e){return e.includes(0)||!v_(e)}function wd(e){return I_.has(P_(e).toLowerCase())}function j_(e){return["for","if","switch","while"].includes(e)}function bd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function _d(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var yd,Fo,C_,D_,I_,Ho=_(()=>{"use strict";ee();St();ve();yd=8*1024,Fo=10,C_=8,D_=2,I_=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Cd={};M(Cd,{REPO_STORE_PATH:()=>Vo,mergeRspBlock:()=>vd,provisionRspRepoStore:()=>K_});import{constants as U_}from"node:fs";import{access as F_,copyFile as J_,mkdir as kd,readFile as G_,rename as H_,writeFile as Ed}from"node:fs/promises";import{dirname as q_,join as Xr,resolve as W_}from"node:path";async function K_(e,t={}){let r=W_(e),n=Xr(r,".red"),s=Xr(n,"config.yaml"),i=Xr(r,Vo);await kd(n,{recursive:!0}),await kd(q_(i),{recursive:!0});let o="";try{o=await G_(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=vd(o,{enabled:!0,ttlDays:t.ttlDays??ye,ephemeralTtlHours:t.ephemeralTtlHours??we,byteBudget:t.byteBudget??be,heavyGitByteThreshold:t.heavyGitByteThreshold??Je}),c=a!==o;c&&await Ed(s,a,"utf8");let u=!await Wo(i),l=!1,f=!1;if(u){let m=Xr(r,V_),h=Xr(r,z_);if(await Wo(m))await H_(m,i),f=!0;else if(await Wo(h))await J_(h,i),l=!0;else{let{RspElisionStore:p}=await Promise.resolve().then(()=>(et(),Wt)),g=process.env.REDDB_BIN;try{await(await p.open({uri:`file://${i}`,ttlDays:t.ttlDays??ye,ephemeralTtlHours:t.ephemeralTtlHours??we,byteBudget:t.byteBudget??be,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Y_(a,Vo);return d!==a&&await Ed(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function vd(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${gs(t.ttlDays,ye)}`,` ephemeralTtlHours: ${gs(t.ephemeralTtlHours,we)}`,` byteBudget: ${gs(t.byteBudget,be)}`,` heavyGitByteThreshold: ${gs(t.heavyGitByteThreshold,Je)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
99
+ `),s=Od(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
62
100
  `)}
63
- `}let i=Oi(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
101
+ `}let i=zo(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(i)].join(`
64
102
  `)}
65
- `}function Du(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Di(r)&&Pi(r)===0&&Cu(r)===t)return n}return-1}function Oi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Di(e[s])&&Pi(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Pi(e){return(e.match(/^ */)?.[0]??"").length}function Di(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Cu(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Gr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
66
- `),r=Du(n,"plugins");if(r===-1)return e;let s=Oi(n,r,0),i=Ou(n,"memory",r+1,s,2);if(i===-1)return e;let o=Oi(n,i,2),a=[...n],c=Ou(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
103
+ `}function Od(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Yo(n)&&Ko(n)===0&&Pd(n)===t)return r}return-1}function zo(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Yo(e[s])&&Ko(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ko(e){return(e.match(/^ */)?.[0]??"").length}function Yo(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Pd(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function gs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Y_(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
104
+ `),n=Od(r,"plugins");if(n===-1)return e;let s=zo(r,n,0),i=Td(r,"memory",n+1,s,2);if(i===-1)return e;let o=zo(r,i,2),a=[...r],c=Td(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
67
105
  `)}
68
- `}function Ou(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Di(o)&&Pi(o)===s&&Cu(o)===t)return i}return-1}async function vi(e){try{return await ah(e,oh.F_OK),!0}catch{return!1}}var Ti,mh,ph,Au=E(()=>{"use strict";Ce();Re();Ti=ei,mh=ua,ph=".red/memory/graph.rdb"});var Mu={};M(Mu,{runRspMcpServer:()=>wh});import{createInterface as yh}from"node:readline";async function wh(){let e=je(process.cwd(),process.env),t=yh({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let s=await bh(r,e);Bu({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Bu({jsonrpc:"2.0",id:typeof Lu(n)?.id>"u"?null:Lu(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function bh(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 accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Nu(t)}]};if(!t.enabled)return{content:[{type:"text",text:Nu(t)}],isError:!0};let r=Th(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:yt({tool:"rsp_stats",...await r.accountingStats(t.telemetryByteBudget)})}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:yt({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:yt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:yt(_h(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await Rh(n.arguments,r)}]}}return{}}function yt(e){return`${G(e)}
69
- `}function _h(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function Rh(e,t){let n=Sh(e?.payload),r=kh(e?.level),s=await ki(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return xh(s.output);let i=Fr(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return yt({tool:"rsp_compress",level:r,detected:"text",bytes:Buffer.byteLength(n),text:i});let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return Eh(i,o.length,a,r)}function Sh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function kh(e){return e==="terse"?"terse":"brief"}function Eh(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Iu(i.subarray(0,o)),c=Iu(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:vh(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function xh(e){return e.endsWith(`
106
+ `}function Td(e,t,r,n,s){for(let i=r;i<n;i++){let o=e[i];if(Yo(o)&&Ko(o)===s&&Pd(o)===t)return i}return-1}async function Wo(e){try{return await F_(e,U_.F_OK),!0}catch{return!1}}var Vo,V_,z_,Dd=_(()=>{"use strict";Be();Pe();Vo=mi,V_=La,z_=".red/memory/graph.rdb"});var Ld={};M(Ld,{runRspMcpServer:()=>Z_});import{createInterface as Q_}from"node:readline";async function Z_(){let e=Ge(process.cwd(),process.env),t=Q_({input:process.stdin,crlfDelay:1/0});for await(let r of t){if(!r.trim())continue;let n;try{n=JSON.parse(r);let s=await X_(n,e);Nd({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Nd({jsonrpc:"2.0",id:typeof $d(r)?.id>"u"?null:$d(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function X_(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 accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let r=e.params;if(r?.name==="rsp_status")return{content:[{type:"text",text:Ad(t)}]};if(!t.enabled)return{content:[{type:"text",text:Ad(t)}],isError:!0};let n=aR(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:vt({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),i=await n.get(s);return i?"status"in i?{content:[{type:"text",text:vt({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:vt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:vt(eR(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await tR(r.arguments,n)}]}}return{}}function vt(e){return`${j(e)}
107
+ `}function eR(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function tR(e,t){let r=rR(e?.payload),n=nR(e?.level),s=await go(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return iR(s.output);let i=Zn(r);if(n==="brief"&&Buffer.byteLength(i)<=2*1024)return vt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(r),text:i});let o=Buffer.from(r),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:n,bytes_elided:o.length}});return sR(i,o.length,a,n)}function rR(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function nR(e){return e==="terse"?"terse":"brief"}function sR(e,t,r,n){let s=n==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Id(i.subarray(0,o)),c=Id(i.subarray(Math.max(0,i.length-o)));return vt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:oR(i),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function iR(e){return e.endsWith(`
70
108
  `)?e:`${e}
71
- `}function Iu(e){return e.toString("utf8").replace(/�$/g,"")}function vh(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function Th(e){return new Dn(Ve(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Nu(e){return yt({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function Bu(e){process.stdout.write(`${JSON.stringify(e)}
72
- `)}function Lu(e){try{return JSON.parse(e)}catch{return null}}var ju=E(()=>{"use strict";pn();Re();Bn();Fe()});var Gu={};M(Gu,{readGhConditionalJson:()=>ee});import{spawn as Oh}from"node:child_process";import{createHash as Ph,randomUUID as Dh}from"node:crypto";import{mkdir as Ch,readFile as $h,rename as Ah,writeFile as Ih}from"node:fs/promises";import{dirname as Nh,join as Uu}from"node:path";async function ee(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Mh(e.path,e.params),s=jh(r),i=await Fh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of Ju(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Uh(a,t,e.env),u=Jh(c.stdout);if(u.statusCode===304&&!!o)return await Ci(n,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let f=u.headers.get("etag");return f&&(i.entries[s]={key:s,request:r,etag:f,body:u.body,updated_at:new Date().toISOString()},await Gh(n,i)),await Ci(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:f??void 0,quotaFree:!1}}return await Ci(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Ju(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Mh(e,t){return JSON.stringify({method:"GET",path:e,params:Ju(t)})}function jh(e){return Ph("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Uh(e,t,n){return await new Promise(r=>{let s=Oh("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function Jh(e){let t=e.replace(/\r\n/g,`
73
- `),n=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(n.length===0)return{statusCode:0,headers:new Map,body:e};let r=n[n.length-1],s=Number(r[1]),i=r.index+r[0].length,o=t.indexOf(`
74
-
75
- `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
76
- `)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function Fh(e){for(let t of[Fu(e),Hh(e)])try{let n=qh(await $h(t,"utf8"));if(Wh(n))return n}catch{}return{version:1,entries:{}}}async function Gh(e,t){let n=Fu(e);await Ch(Nh(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Ih(r,`${D(t)}
77
- `,{encoding:"utf8",mode:384}),await Ah(r,n)}function Fu(e){return Uu(F(e),Bh)}function Hh(e){return Uu(F(e),Lh)}function qh(e){try{return JSON.parse(e)}catch{return j(e)}}async function Ci(e,t,n){await Je(e,{collection:X,id:Dh(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}function Wh(e){return $i(e)&&e.version===1&&$i(e.entries)&&Object.values(e.entries).every(Vh)}function Vh(e){return $i(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Bh,Lh,Hr=E(()=>{"use strict";Ce();Q();Ee();Bh="gh-etag-cache.toon",Lh="gh-etag-cache.json"});var Ji={};M(Ji,{listWaits:()=>zu,renderWaitHelp:()=>Li,runWait:()=>ey});import{spawn as ji}from"node:child_process";import{existsSync as Bi}from"node:fs";import{mkdir as zh,readdir as Kh,readFile as Yh,rm as Vu,writeFile as Qh}from"node:fs/promises";import{join as Un,resolve as Ai}from"node:path";import{randomUUID as Zh}from"node:crypto";async function ey(e,t=process.cwd()){let n=ny(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Li()),0;if(n.kind==="ls")return process.stdout.write(`${G({waits:await zu(t)})}
78
- `),0;if(!ty(n.kind))return process.stdout.write(Li()),2;let r=n.kind,s={id:Zh(),target:hy(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Xh[n.kind],status:"running"},i=Un(await Mi(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await zh(await Mi(t),{recursive:!0}),await Ku(i,s),o=await ry({...n,kind:r},t,i,s),process.stdout.write(`${G(gy(r,s,o))}
79
- `),await py(n.options),o.exitCode}finally{await Vu(i,{force:!0})}}function ty(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Li(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
80
- `)}function ny(e){let t=e[1],n={timeoutMs:Hu.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Hu[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?n.timeoutMs=Yu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=by(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function ry(e,t,n,r){switch(e.kind){case"cmd":return await sy(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ii(iy(e.target??"",t,{emptyChecksGraceMs:Wu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Wu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Ii(()=>ay(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ii(()=>uy(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function sy(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=ji(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),jn(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Qu(t)}`})},t);c.once("error",l=>{clearTimeout(u),jn(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,f)=>{if(clearTimeout(u),o)return;let d=l===0;jn(r,s,d?"success":"failure"),a({status:d?"success":"failure",exitCode:d?0:1,summary:d?"command exited successfully":`command exited with ${f??l??"unknown"}`,details:{status:l??null,signal:f??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Ii(e,t,n,r,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await jn(r,s,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Sy(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Qu(t)}`}}function iy(e,t,n){let r=Date.now();return()=>oy(e,t,n,r)}async function oy(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Wr(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=Ui(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(yy),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return wt("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return wt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let f=Date.now()-r;return a==="UNKNOWN"||f<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:f}}:wt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:wt("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function ay(e,t){let n=e.target??(e.latest&&e.branch?await cy(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await Wr(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let s=Ui(r.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${i||"pending"}`}:o==="success"?wt("success",`run ${n} succeeded`,qu(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,qu(s))}async function cy(e,t){let n=await Wr(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return bt(s)&&s.databaseId!=null?String(s.databaseId):""}async function uy(e,t,n){let r=await Wr(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let s=JSON.parse(r.stdout),o=(Array.isArray(s)?s.filter(bt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||_y(e,c))&&u>=t});return o?wt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function Wr(e,t){let n=await ly(e,t);return n||await new Promise(r=>{let s=ji("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function ly(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await dy(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ee({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Mn(r,"database_id")||Mn(r,"id"),status:W(r,"status").toUpperCase(),conclusion:W(r,"conclusion").toUpperCase(),workflowName:W(r,"workflow_name")||W(r,"name"),headBranch:W(r,"head_branch"),url:W(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ni(e,"--branch"),r=Ni(e,"--limit")??"20",s=await ee({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=qr(Yt(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Mn(o,"database_id")||Mn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Ni(e,"--limit")??"20",r=await ee({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=qr(JSON.parse(r.stdout)).map(i=>({tagName:W(i,"tag_name"),publishedAt:W(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function dy(e,t){let n=await ee({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=W(Yt(r.head),"sha"),[i,o]=s?await Promise.all([ee({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),ee({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?qr(Yt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?qr(Yt(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
81
- `),stdout:JSON.stringify({number:Mn(r,"number"),state:W(r,"state").toUpperCase(),mergeable:fy(r),statusCheckRollup:[...a.map(u=>({conclusion:W(u,"state").toUpperCase()})),...c.map(u=>({status:W(u,"status").toUpperCase(),conclusion:W(u,"conclusion").toUpperCase()}))],url:W(r,"html_url")})}}function fy(e){let t=W(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function zu(e){let t=await Mi(e);if(!Bi(t))return[];let n=await Kh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=wy(await Yh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Ry(a)){await Vu(i,{force:!0});continue}r.push(o)}return r}async function Mi(e){return Un(await my(e),".red","tmp","waits")}async function my(e){let t=Ai(e);for(;;){if(Bi(Un(t,".red"))||Bi(Un(t,".git")))return t;let n=Ai(t,"..");if(n===t)return Ai(e);t=n}}async function jn(e,t,n){await Ku(e,{...t,status:n}).catch(()=>{})}async function Ku(e,t){await Qh(e,`${G(t)}
82
- `,"utf8")}async function py(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=ji(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function gy(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function wt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function hy(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function yy(e){let t=bt(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function qu(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function Ui(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function wy(e){let t=e.trim();if(!t)return{};try{return Ui(t)}catch{let n=j(t);if(!bt(n))throw new Error("expected structured object");return n}}function bt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yt(e){return bt(e)?e:{}}function qr(e){return Array.isArray(e)?e.filter(bt):[]}function W(e,t){let n=e[t];return typeof n=="string"?n:""}function Mn(e,t){let n=e[t];return typeof n=="number"?n:0}function Ni(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Yu(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Wu(e,t){let n=process.env[e];if(!n)return t;try{return Yu(n)}catch{return t}}function by(e){return e.startsWith("SIG")?e:`SIG${e}`}function Qu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function _y(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Ry(e){try{return process.kill(e,0),!0}catch{return!1}}async function Sy(e){await new Promise(t=>setTimeout(t,e))}var Hu,Xh,Fi=E(()=>{"use strict";Q();pn();Hr();Hu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Xh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Xu={};M(Xu,{renderShellInit:()=>ky});function ky(e,t=An){if(e==="fish")return Ey(t);if(e==="bash"||e==="zsh")return xy(e,t);throw new Error(`unsupported shell: ${e}`)}function Ey(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(zr))].map(n=>` abbr --add --position command -- ${n} '${Py(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
83
- `)}function xy(e,t){let n=Ty(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Vr("git",n.get("git")??[]),...Vr("gh",n.get("gh")??[]),...Vr("vitest",n.get("vitest")??[]),...Vr("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
84
- `)}function Vr(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(zr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(zr)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let i=n.map(o=>Zu(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of vy(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Oy(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Zu(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function vy(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Ty(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!zr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function zr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Zu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Oy(e){return e.replace(/'/g,"'\\''")}function Py(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var el=E(()=>{"use strict";In()});function Gi(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&Dy(t.chosenOption)&&Cy(t.outcome)&&$y(t.cost)}function Dy(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Cy(e){return e==="success"||e==="failure"||e==="escalated"}function $y(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var tl=E(()=>{});import{createHash as Ay}from"node:crypto";function ml(e,t){return new qi(e,t)}function nl(e){let t=Number(e.red_entity_id??e.rid),n=Wi(e.properties??e.PROPERTIES),r=pl(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let s=String(n.id??e.label??e.LABEL??t),i=String(n.title??e.label??e.LABEL??s),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:r,properties:{...n,id:s,title:i,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function rl(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),s=gl(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:s,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Wi(e.properties??e.PROPERTIES)}}function By(e){let t=Number(e.red_entity_id??e.rid),n=Wi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Gi(n)?null:{rid:t,event:n}}function Wi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Kr(e)?e:{}}function pl(e){let t=e==="contact"?"person":e;if(Iy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function gl(e){if(Ny.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Ly(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function sl(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return Kr(e)?e:{}}function il(e,t){return Rt(e)[t]}function ol(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function al(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function cl(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function te(e){return typeof e=="string"&&e.length>0?e:void 0}function Kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hi(e){return e!=null}function My(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function jy(e){return Ay("sha256").update(JSON.stringify(e)).digest("hex")}function Uy(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ul(e){return`artifact-hash:${e}`}function ll(e,t,n){return`connection:${e}:${t}:${n}`}function dl(){return"model-tier-bandit:v1"}function Jy(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function fl(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function hl(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+fl(n,a)*3+fl(r,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function Fy(e,t,n,r){let s=0;for(let i of n){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=yl({...hl(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function yl(e){return{...e,lexical:_t(e.lexical),tags:_t(e.tags),kind:_t(e.kind),connections:_t(e.connections),vector:_t(e.vector),total:_t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _t(e){return Math.round(e*1e3)/1e3}function Gy(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(i=>n.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function Hy(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:n,missing_evidence:r}}function qy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Iy,Ny,qi,wl=E(()=>{"use strict";tl();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Iy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ny=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),qi=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Rt(n));if(t==="getArtifact")return await this.getArtifact(il(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(ol(r,"query"),al(r,"limit")??10,cl(r.options))}if(t==="think"){let r=Rt(n);return await this.think(ol(r,"query"),al(r,"limit")??8,cl(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(il(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Rt(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:qy(t.map(r=>r.kind))}}async capture(t){let n=te(t.title)||"Untitled artifact",r=te(t.content);if(!r)throw new Error("brain capture requires content");let s=pl(te(t.kind)||"note"),i=My(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=jy([s,n,r,i,te(t.sourcePath),te(t.sourceSession)]),c=await this.kv().get(ul(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Uy(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:te(t.sourceAgent),source_runner:te(t.sourceRunner),source_session:te(t.sourceSession),source_path:te(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Kr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=nl(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ul(a),p.rid),await this.materializeTagConnections(p),p}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${xe.artifacts}`)).rows.map(nl).filter(Hi)}async search(t,n,r={}){let s=Jy(t),i=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=hl(u,s),f=yl({...l,connections:Fy(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:Gy(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return Hy(t,s)}async link(t){let n=await this.getArtifact(sl(t.from)),r=await this.getArtifact(sl(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=gl(te(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:te(t.reason),confidence:te(t.confidence)||"explicit",created_at:Date.now(),metadata:Kr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=rl(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ll(n.rid,r.rid,s),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${xe.connections}`)).rows.map(rl).filter(Hi)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Ly(te(t.interval)||"day"),s=te(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:s,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Gi(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${xe.outcomeEvents}`)).rows.map(By).filter(Hi).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(dl());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(dl(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let s=await this.kv().get(ll(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Cl={};M(Cl,{runResidentServer:()=>Xy});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Wy,spawn as Vy}from"node:child_process";import{existsSync as zy}from"node:fs";import{mkdir as xl,rename as Ky,rm as bl,writeFile as vl}from"node:fs/promises";import{createServer as Yy}from"node:net";import{dirname as Yi,join as Yr}from"node:path";import{fileURLToPath as Qy,pathToFileURL as Zy}from"node:url";async function Xy(e){await xl(Yi(e.socketPath),{recursive:!0});let t=fw();dw();let n=e.telemetryDrainTimeoutMs??Tl,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??mr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Yy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),bw(x,async O=>{h();let L=await _w(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ce={id:O.id,ok:!0,value:L,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Dl(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=lw(c),d.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{Qr(),d.close();for(let L of l)L.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(z=>setTimeout(z,O));let L=await xn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ce=Number(process.hrtime.bigint()-x)/1e6,he=new Ki(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??dr,byteBudget:e.telemetryByteBudget??e.byteBudget??fr});if(i){await L.close();return}if(await Vi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let z=r.kind==="ready"?r:void 0;z&&Vi(z.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await vl(e.pidPath,`${process.pid}
85
- `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Yr(F(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await cr(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await bl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await Vi(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),Qr(),e.pidPath&&await bl(e.pidPath,{force:!0}),await ur(y)}async function iw(e,t,n=new Date){let r=await Tr(e,1,n),s=n.toISOString().slice(0,10),i=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=r.savings.tokens_saved>0?i/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Yr(F(t),rw),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*1e6)/1e6,show_total_today:r.health.show_total,updated_at:n.toISOString()};r.health.show_total>0&&(u.show_hit_rate=r.health.show_hit_rate),r.decisions.seen>0&&(u.decisions={seen:r.decisions.seen,contributed:r.decisions.contributed}),await xl(Yi(a),{recursive:!0}),await vl(c,`${G(u)}
86
- `,{encoding:"utf8",mode:384}),await Ky(c,a)}async function Vi(e,t=Tl,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Pl(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
87
- `)}}async function ow(e){let t=[];for(let n of sw){let r=await aw(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await cw(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ol(n)}`))}return t}async function aw(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let s=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw n}}async function cw(e,t,n){let r=uw(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Ol(t)}`)}function uw(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function Ol(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function lw(e){return e&&clearTimeout(e),setTimeout(()=>{Qr(),process.exit(0)},nw)}function dw(){_l||(_l=!0,process.on("exit",()=>Qr()))}function fw(){if(process.platform==="win32")return;let t=Vy(process.execPath,["-e",`
109
+ `}function Id(e){return e.toString("utf8").replace(/�$/g,"")}function oR(e){if(e.length===0)return 0;let t=0;for(let r of e)r===10&&t++;return e[e.length-1]===10?t:t+1}function aR(e){return new Wr(Ze(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Ad(e){return vt({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function Nd(e){process.stdout.write(`${JSON.stringify(e)}
110
+ `)}function $d(e){try{return JSON.parse(e)}catch{return null}}var Bd=_(()=>{"use strict";Me();Pe();jr();Ve()});var jd={};M(jd,{renderShellInit:()=>cR});function cR(e,t=Kr){if(e==="fish")return uR(t);if(e==="bash"||e==="zsh")return lR(e,t);throw new Error(`unsupported shell: ${e}`)}function uR(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(r=>r.command[0]).filter(ys))].map(r=>` abbr --add --position command -- ${r} '${mR(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
111
+ `)}function lR(e,t){let r=fR(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...hs("git",r.get("git")??[]),...hs("gh",r.get("gh")??[]),...hs("vitest",r.get("vitest")??[]),...hs("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
112
+ `)}function hs(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(ys),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(ys)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let i=r.map(o=>Md(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of dR(n)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${pR(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Md(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function dR(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function fR(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ys(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ys(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Md(e){return e.replace(/[\\|)&;]/g,"\\$&")}function pR(e){return e.replace(/'/g,"'\\''")}function mR(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ud=_(()=>{"use strict";Yr()});function Qo(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&gR(t.chosenOption)&&hR(t.outcome)&&yR(t.cost)}function gR(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function hR(e){return e==="success"||e==="failure"||e==="escalated"}function yR(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var Fd=_(()=>{});import{createHash as wR}from"node:crypto";function Xd(e,t){return new Xo(e,t)}function Jd(e){let t=Number(e.red_entity_id??e.rid),r=ea(e.properties??e.PROPERTIES),n=ef(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),i=String(r.title??e.label??e.LABEL??s),o=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:i,content:o,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Gd(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=tf(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:ea(e.properties??e.PROPERTIES)}}function RR(e){let t=Number(e.red_entity_id??e.rid),r=ea(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Qo(r)?null:{rid:t,event:r}}function ea(e){return e==null?{}:typeof e=="string"?JSON.parse(e):ws(e)?e:{}}function ef(e){let t=e==="contact"?"person":e;if(bR.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function tf(e){if(_R.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function SR(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Hd(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Pt(e){return ws(e)?e:{}}function qd(e,t){return Pt(e)[t]}function Wd(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Vd(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function zd(e){let t=Pt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function se(e){return typeof e=="string"&&e.length>0?e:void 0}function ws(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zo(e){return e!=null}function xR(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function kR(e){return wR("sha256").update(JSON.stringify(e)).digest("hex")}function ER(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Kd(e){return`artifact-hash:${e}`}function Yd(e,t,r){return`connection:${e}:${t}:${r}`}function Qd(){return"model-tier-bandit:v1"}function TR(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Zd(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function rf(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+Zd(r,a)*3+Zd(n,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function vR(e,t,r,n){let s=0;for(let i of r){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=n.get(o);if(!a)continue;let c=nf({...rf(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Ot(s)}function nf(e){return{...e,lexical:Ot(e.lexical),tags:Ot(e.tags),kind:Ot(e.kind),connections:Ot(e.connections),vector:Ot(e.vector),total:Ot(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ot(e){return Math.round(e*1e3)/1e3}function OR(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(i=>r.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function PR(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function CR(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ne,bR,_R,Xo,sf=_(()=>{"use strict";Fd();Ne={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},bR=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),_R=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Xo=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Pt(r));if(t==="getArtifact")return await this.getArtifact(qd(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Pt(r);return await this.search(Wd(n,"query"),Vd(n,"limit")??10,zd(n.options))}if(t==="think"){let n=Pt(r);return await this.think(Wd(n,"query"),Vd(n,"limit")??8,zd(n.options))}if(t==="link")return await this.link(Pt(r));if(t==="backlinks")return await this.backlinks(qd(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Pt(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ne.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ne.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ne.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:CR(t.map(n=>n.kind))}}async capture(t){let r=se(t.title)||"Untitled artifact",n=se(t.content);if(!n)throw new Error("brain capture requires content");let s=ef(se(t.kind)||"note"),i=xR(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=kR([s,r,n,i,se(t.sourcePath),se(t.sourceSession)]),c=await this.kv().get(Kd(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${ER(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:i,source_agent:se(t.sourceAgent),source_runner:se(t.sourceRunner),source_session:se(t.sourceSession),source_path:se(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:ws(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ne.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let m=Jd(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Kd(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Ne.artifacts}`)).rows.map(Jd).filter(Zo)}async search(t,r,n={}){let s=TR(t),i=new Set(n.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=rf(u,s),f=nf({...l,connections:vR(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:OR(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return PR(t,s)}async link(t){let r=await this.getArtifact(Hd(t.from)),n=await this.getArtifact(Hd(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=tf(se(t.kind)||"related_to"),i=await this.findConnection(r.rid,n.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:se(t.reason),confidence:se(t.confidence)||"explicit",created_at:Date.now(),metadata:ws(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ne.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Gd(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Yd(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${Ne.connections}`)).rows.map(Gd).filter(Zo)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=SR(se(t.interval)||"day"),s=se(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Qo(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ne.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${Ne.outcomeEvents}`)).rows.map(RR).filter(Zo).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Qd());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Qd(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(Yd(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ne.kv)}}});var wf={};M(wf,{runResidentServer:()=>MR});import{randomUUID as sr}from"node:crypto";import{execFileSync as DR,spawn as IR}from"node:child_process";import{existsSync as AR}from"node:fs";import{mkdir as ff,rename as NR,rm as of,writeFile as pf}from"node:fs/promises";import{createServer as $R}from"node:net";import{dirname as sa,join as bs}from"node:path";import{fileURLToPath as LR,pathToFileURL as BR}from"node:url";async function MR(e){await ff(sa(e.socketPath),{recursive:!0});let t=QR();YR();let r=e.telemetryDrainTimeoutMs??mf,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Rn,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=$R(E=>{l.add(E),E.once("close",()=>l.delete(E)),h(),sS(E,async O=>{h();let B=await iS(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),le={id:O.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};yf(E,le),O.op==="handover"&&setImmediate(()=>m())})});function m(){i=!0,u=!0,c=KR(c),d.close();for(let E of l)E.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(E=>{let O=()=>{_s(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(E,O),{signal:E,handler:O}});await new Promise((E,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),E()})}),(async()=>{let E=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(Q=>setTimeout(Q,O));let B=await qt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),le=Number(process.hrtime.bigint()-E)/1e6,xe=new na(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??bn,byteBudget:e.telemetryByteBudget??e.byteBudget??_n});if(i){await B.close();return}if(await ta(xe,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:xe,storeOpenCount:1,storeElapsedMs:le},s=setInterval(()=>{let Q=n.kind==="ready"?n:void 0;Q&&ta(Q.telemetry,r)},f),s.unref(),h()})().catch(E=>{n={kind:"failed",error:E instanceof Error?E:new Error(String(E))},h()}),e.pidPath&&await pf(e.pidPath,`${process.pid}
113
+ `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??bs(q(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await hn(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(E=>d.once("close",E)),a&&clearTimeout(a),s&&clearInterval(s),await of(e.socketPath,{force:!0});let v=n;v.kind==="ready"&&(await ta(v.telemetry,r,u),await v.store.close()),c&&clearTimeout(c);for(let{signal:E,handler:O}of g)process.off(E,O);t?.kill("SIGTERM"),_s(),e.pidPath&&await of(e.pidPath,{force:!0}),await yn(y)}async function HR(e,t,r=new Date){let n=await Bn(e,1,r),s=r.toISOString().slice(0,10),i=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=n.savings.tokens_saved>0?i/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=bs(q(t),JR),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*1e6)/1e6,show_total_today:n.health.show_total,updated_at:r.toISOString()};n.health.show_total>0&&(u.show_hit_rate=n.health.show_hit_rate),n.decisions.seen>0&&(u.decisions={seen:n.decisions.seen,contributed:n.decisions.contributed}),await ff(sa(a),{recursive:!0}),await pf(c,`${j(u)}
114
+ `,{encoding:"utf8",mode:384}),await NR(c,a)}async function ta(e,t=mf,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await hf(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
115
+ `)}}async function qR(e){let t=[];for(let r of GR){let n=await WR(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await VR(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${gf(r)}`))}return t}async function WR(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(r){let n=r instanceof Error?r.message:String(r);if(/\bnot found\b/i.test(n))return{ok:!1,previousModel:null};let s=n.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(n))return{ok:!1,previousModel:"collection"};let i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw r}}async function VR(e,t,r){let n=zR(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${gf(t)}`)}function zR(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function gf(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function KR(e){return e&&clearTimeout(e),setTimeout(()=>{_s(),process.exit(0)},FR)}function YR(){af||(af=!0,process.on("exit",()=>_s()))}function QR(){if(process.platform==="win32")return;let t=IR(process.execPath,["-e",`
88
116
  const { execFileSync } = require("node:child_process");
89
117
  const parentPid = Number(process.argv[1]);
90
118
  const known = new Set();
@@ -125,52 +153,24 @@ const timer = setInterval(() => {
125
153
  clearInterval(timer);
126
154
  process.exit(0);
127
155
  }, 500);
128
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Qr(){for(let e of mw())try{process.kill(e,"SIGTERM")}catch{}}function mw(){if(process.platform==="win32")return[];let e="";try{e=Wy("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),i=Number(r[2]),o=r[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function pw(e){if(e.collection!==ke)return e;let t=await Rl(e.raw_text,kl(e.raw_bytes)),n=await Rl(e.emitted_text,kl(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 Rl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=ew)try{return await Pl((async()=>({tokens:(await gw())("cl100k_base").encode(e).length,estimated:!1}))(),tw,"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 gw(){return Sl??=import(Zy(hw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Sl}function hw(){let e=Yi(Qy(import.meta.url)),n=[Yr(e,"..","node_modules","js-tiktoken","dist","index.js"),Yr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>zy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function kl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function U(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function zi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Pl(e,t,n){let r;try{return await Promise.race([e,new Promise((s,i)=>{r=setTimeout(()=>i(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function yw(e){try{return JSON.parse(e)}catch{return e}}function ww(e){return El(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>El(t)&&(t.collection===ae||t.collection===X||t.collection===ke||t.collection===Ke)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bw(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
129
- `);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 u={id:o?.id??Qt(),ok:!1,error:a instanceof Error?a.message:String(a)};Dl(e,u)}finally{e.end()}})()})}function Dl(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
130
- `)}catch{}}async function _w(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await hi(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await Tr(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await yi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Sw(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Rw(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Rw(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ml(s,t).request(n,r)}function Sw(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var ew,tw,Tl,nw,rw,sw,Ki,_l,Sl,$l=E(()=>{"use strict";Ce();lr();pn();ze();wl();Ee();Re();ew=256*1024,tw=500,Tl=2e3,nw=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),rw="rsp-status-summary.json",sw=[ae,X,ke,Ke,On],Ki=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await ow(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,i=[...r.records];for(let a of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await gi(this.opts.rootDir,async a=>{let c=zt(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:U(c.command)||"unknown",source_id:U(c.id),source_collection:U(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await iw(t,this.opts.rootDir)}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:Qt(),a={...await pw(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:n.collection===ae?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===ae||n.accounting_recorded===!0?null:n.collection===ke?await this.writeEvent(t,{collection:ae,id:`mirror:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:zi(U(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Ke?await this.writeEvent(t,{collection:ae,id:`mirror:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:zi(U(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:U(n.reason)||"unknown",wrapper_family:U(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:U(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ke,id:Qt(),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});return await this.writeEvent(t,{collection:ae,id:`mirror:${Qt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:zi(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(On).get("index:v1"),r=typeof n=="string"?yw(n):n;return ww(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(On).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),i=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||i.length<n.records.length)&&await this.writeIndex(t,{version:1,records:i})}};_l=!1});var Xr={};M(Xr,{parseProxyCommandLine:()=>Bl,rewriteProxyCommandLine:()=>Nl,runProxy:()=>Ew});import{spawn as kw}from"node:child_process";async function Ew(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Bl(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Nl(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await xw(t.telemetryRoot,n,c),await Al(n);throw c}for(let c of s)await vw(t.telemetryRoot,c);let o=await Al(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Je(t.telemetryRoot,{collection:ke,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Nl(e,t="lossless"){let n=$w(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Cw(n,o)==="|")return i.text;let a=Tw(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Bl(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function xw(e,t,n){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Zi(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function vw(e,t){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Al(e){let t=kw(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
131
- `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Tw(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Iw(s);if(!i)return null;let o=Dw(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(p=>p.value);if(Zr(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Zi(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Ow(a);if(!u)return null;let l=i.slice(0,o).map(p=>p.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${n}${d}${r}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Zi(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Ow(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:Pw(t,n)}function Pw(e,t){return e[0]==="cat"&&e.length===2&&Qi(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Qi(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Qi(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Qi(e){return!!e&&!e.startsWith("-")}function Dw(e){let t=0;for(;t<e.length&&Il(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Il(e[t].value);)t+=1;return t}function Cw(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function $w(e){let t=[],n=0,r,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(r){o===r&&(r=void 0);continue}if(o==="'"||o==='"'){r=o;continue}let a=Aw(e,i);a&&(i>n&&t.push({kind:"segment",text:e.slice(n,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,n=i+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function Aw(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function Iw(e){let t=[],n="",r="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:n,value:r}),n="",r="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){n+=u,r+=u,i=!1,o=!0;continue}if(u==="\\"){n+=u,i=!0,o=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,o=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,o=!0}return s||i?null:(a(),t)}function Zi(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zr(t)&&t[1]?`gh ${t[1]} json-jq`:Zr(t)?"gh json-jq":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 Zr(e){return e[0]==="gh"&&e.some(Nw)}function Nw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Il(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var es=E(()=>{"use strict";Ee()});var Xi={};M(Xi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Ml,StructuredUsageError:()=>ts,cleanStatusPayload:()=>Fl,recoveryInstruction:()=>ge,renderGitContract:()=>jl,runGitWrapper:()=>Lw});import{spawn as Bw}from"node:child_process";async function Lw(e,t){let n=Ul(e),r=Jl(n.argv),s=await Jw(r,n.argv.slice(1));return jl(e,s,t)}async function jl(e,t,n){let r=Ul(e);if((t.status??0)!==0||t.signal){let f=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Jl(r.argv),i;try{i=Fw(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ns)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let o=D(i);if(Mw(s,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=ob(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${ge(u)}
132
- `;return{stdout:Buffer.from(`${D(a.payload)}
133
- ${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function ge(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ul(e){let t=ct(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}let s=n.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new ts(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Mw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!jw(e)||r.level!=="lossless")return!0;let s=ib(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function jw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Jl(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function Uw(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Ml.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function Jw(e,t){let n=Bw("git",Uw(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Fw(e,t,n,r){switch(e){case"status":return Gw(t,n,r);case"log":return Qw(t,n,r);case"diff":return Zw(t,n,r);case"commit":return Ye(Xw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(eb(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return tb(t,n,r);case"branch":return nb(t,n,r);case"show":return rb(t,n,r)}}function Gw(e,t,n){let r="",s=[],i=!1,o=!1;for(let u of Hw(t)){if(!u)continue;if(o=!0,u.startsWith("# branch.head ")){r=u.slice(14),i=!0;continue}if(u.startsWith("# ")){i=!0;continue}if(u.startsWith("## ")){r=Vw(u),i=!0;continue}let l=qw(u);if(l){i=!0,s.push(l);continue}let f=Ww(u);f&&(i=!0,s.push(f))}if(s.length===0){if(!o||i)return Fl(e.join(" "),r);throw new ns("git-status-unparseable")}let a=H(s,n),c=Gl(a,"state");return Ye({command:e.join(" "),branch:r,rows:a,summary:Yw(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Hw(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function qw(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return Jn(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return Jn(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return Jn(t.slice(10).join(" "),n)}return e.startsWith("? ")?Jn(e.slice(2),"??"):null}function Ww(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Jn(zw(e.slice(3),t),t):null}function Jn(e,t){let n=Ll(t[0]??"."),r=Ll(t[1]??".");return{path:Kw(e),index:n,worktree:r,state:sb(`${n}${r}`)}}function Ll(e){return e===" "?".":e}function Vw(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function zw(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function Kw(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function Yw(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function Fl(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function Qw(e,t,n){let r=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=H(r,n);return Ye({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function Zw(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),i=H(s,n),o=i.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 Ye({command:e.join(" "),files:i,summary:`${n?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function Xw(e,t){let n=t.split(`
134
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function eb(e,t){let n=t.split(`
135
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${o} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function tb(e,t,n){let r=t.split(`
136
- `),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=H(s,n),a=Gl(o,"author");return Ye({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function nb(e,t,n){let r=t.split(`
137
- `).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=H(r,n),i=s.find(o=>o.current)?.name??"";return Ye({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${i?`, current ${i}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function rb(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=i.split(""),p=[];for(let y of o.split(`
138
- `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!T)continue;let x=T[3]??"";p.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let h=H(p,n),m=0,g=0,w=0;for(let y of h)m+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return Ye({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
139
- `).length:0,files:h,summary:`${n?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${w}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ye(e,t,n){return t?Ae(e,n):e}function sb(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Gl(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function ib(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ob(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var Ml,ts,ns,St=E(()=>{"use strict";Q();Re();gn();ut();Re();Ml=["%h","%an","%as","%s"];ts=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return nr(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ns=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var ao={};M(ao,{renderGhContract:()=>Kl,runGhWrapper:()=>fb});import{spawn as ab}from"node:child_process";async function fb(e,t){let n=Yl(e),r=await pb(n);return Kl(e,r,t)}async function Kl(e,t,n){if((t.status??0)!==0||t.signal){let p=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let r=Yl(e),s=Fn(t.stdout),i=Sb(r,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=Db(i);if(o){if(!n.store)throw new Error("truncated gh output requires an elision store");let p=await n.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:r.full?"brief":n.level,bytes_elided:o.bytes}});o.target.truncated.handle=p}let a=o?.target.truncated.handle||void 0,c=D(i);if(n.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=Cb(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(c),f=await n.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${ge(f)}
140
- `;return{stdout:Buffer.from(`${D(u.payload)}
141
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Yl(e){let t=ct(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 s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=n,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=ql(l[++p]??""):h.startsWith("--fields=")?u=ql(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return mb(d),d}function Hl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?ub[t]:cb[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function ql(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function mb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new rs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=db[t];for(let r of e.fields)if(!n.includes(r))throw new rs(e,`unknown field: ${r}`,n)}async function pb(e){if(e.action==="combined")return await gb(e);let t=hb(e);if(!t)return await Rb(Hl(e));let n=await ee({...t,command:["gh",...Hl(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await yb(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function gb(e){let t=e.target??"",[n,r,s]=await Promise.all([ee({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ee({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ee({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[n,r,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=Zl(Fn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Fn(s.stdout)).map(bb)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function hb(e){let t=Xl(e.passthrough),n=_b(e.passthrough,"--limit")??30,r=ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:r,per_page:n}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:r,labels:ve(e.passthrough,"--label"),per_page:n}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:n}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function yb(e,t){let n=Fn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(Ql);case"pr:view":return Zl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Wl);case"issue:view":return Wl(n);case"run:list":return{items:re(I(n).workflow_runs).map(Vl),total:ne(I(n),"total_count")};case"run:view":{let r=Vl(n),s=Xl(e.passthrough);if(!s)return r;let i=await ee({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?re(I(Fn(i.stdout)).jobs).map(wb):[]}}default:return n}}function Ql(e){let t=I(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:io(t.user),labels:re(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(I(t.base),"ref"),headRefName:S(I(t.head),"ref")}}function Zl(e){return Ql(e)}function Wl(e){let t=I(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:io(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Vl(e){let t=I(e);return{databaseId:ne(t,"database_id")||ne(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function wb(e){let t=I(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function bb(e){let t=I(e);return{author:io(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function io(e){let t=I(e);return{login:S(t,"login")}}function Xl(e){return e.find(t=>!t.startsWith("-"))}function ve(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function _b(e,t){let n=ve(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function Rb(e){let t=ab("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function Sb(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=eo(n,"prs"),i=s.rows.map(c=>ed(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${ro(o.length,i.length,e.query)} ${zl(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:td(I(n),e),summary:`PR #${ne(I(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return kb(e,t,I(n));case"issue:list":{let s=eo(n,"issues"),i=s.rows.map(c=>nd(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Zt({...r,issues:o,aggregate:a,summary:`${ro(o.length,i.length,e.query)} ${zl(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:Ob(I(n),e),summary:`issue #${ne(I(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=eo(n,"runs"),i=s.rows.map(c=>rd(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Zt({...r,runs:o,aggregate:a,summary:`${ro(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Zt({...r,run:Pb(I(n),e),summary:`run ${ne(I(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function kb(e,t,n){let r=td(I(n.view),{...e,action:"view",wide:!0}),s=H(re(n.checks).map(Eb),e.query),i=I(n.comments).comments,o=H(re(i).map(xb).slice(-3),e.query);return Ae({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ne(I(n.view),"number")}: ${s.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 Eb(e){return{name:S(e,"name"),state:Gn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function xb(e){return{author:id(e.author),body:ss(e,"body",so,!1),created:S(e,"createdAt")}}function eo(e,t){if(Array.isArray(e))return{rows:re(e)};let n=I(e),r=ne(n,"total")||ne(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:re(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:re(n.workflow_runs),total:r}:{rows:[]}}function to(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function no(e,t,n,r,s){return Ae({...e,empty:!0,scope:vb(t),[n]:[],aggregate:r,summary:`0 ${Tb(t)}`},s)}function vb(e){let t=ve(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let i=ve(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${n}`}let r=ve(e.passthrough,"--branch")??ve(e.passthrough,"-b"),s=ve(e.passthrough,"--workflow")??ve(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function Tb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function ed(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Gn(e),draft:!!e.isDraft};return oo(n,e,t,["author","labels","url","updated"]),n}function td(e,t){let n=ed(e,t);return n.body=ss(e,"body",so,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function nd(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Gn(e),labels:sd(e.labels)};return oo(n,e,t,["author","url","updated"]),n}function Ob(e,t){let n=nd(e,t);return n.body=ss(e,"body",so,t.full),n}function rd(e,t){let n={id:ne(e,"databaseId"),name:S(e,"name"),status:Gn(e),conclusion:S(e,"conclusion")};return oo(n,e,t,["event","branch","workflow","created"]),n}function Pb(e,t){let n=rd(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Gn(s),conclusion:S(s,"conclusion"),log:ss(s,"log",lb,t.full)}));return n.jobs=r,n}function ss(e,t,n,r){let s=S(e,t);if(r||Buffer.byteLength(s)<=n)return s;let i=s.slice(0,n),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function Db(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(kt(n)){if(kt(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 Cb(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 zl(e,t){return e.every(n=>n.state===t)?t:"returned"}function ro(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ae(e,n):e}function Gn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function oo(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=id(t.author):s==="labels"?e.labels=sd(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function sd(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function id(e){return kt(e)?S(e,"login"):""}function Fn(e){return e.trim()?JSON.parse(e):null}function re(e){return Array.isArray(e)?e.filter(kt):[]}function I(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function ne(e,t){let n=e[t];return typeof n=="number"?n:0}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var cb,ub,so,lb,db,rs,co=E(()=>{"use strict";Q();Hr();St();gn();ut();cb={"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"]},ub={"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"]},so=160,lb=160,db={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};rs=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var fo={};M(fo,{renderTestContract:()=>od,runTestWrapper:()=>Bb});import{spawn as $b}from"node:child_process";async function Bb(e,t){let n=ct(e),r=await Jb(n.argv);return await od(e,r,t)}async function od(e,t,n){let r=ct(e),i=ad(r.argv)==="vitest"?Fb(t.stdout):Gb(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Wb(i.durationSeconds)}`,c=H(i.failures,r.query);if(n.level==="terse")return await Lb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Hb(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=r.query?Ae(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(D(p)),stderr:Buffer.from(t.stderr),status:lo(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Lb(e,t,n,r,s,i,o){let a=Mb(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?Ae(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=D(u),f=Math.max(0,n.failures.length-a.length),d=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:lo(t.status),signal:t.signal,payload:u};let p={exit_code:r,summary:s};n.failures.length>0&&(p.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=D(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ge(g)}`;return{stdout:Buffer.from(`${l}
142
- ${y}`),stderr:Buffer.from(t.stderr),status:lo(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function lo(e){return e===0||e===null?0:1}function Mb(e){let t=[],n=Ib;for(let r of e.slice(0,Nb)){let s=jb(r.excerpt,Math.min(Ab,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function jb(e,t){if(t<=0)return"";let n=e.split(`
143
- `),r=n.length<=2?e:`${n[0]}
144
- \u2026
145
- ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function ad(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 Ub(e){if(ad(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let n=e.slice(1);return{executable:"cargo",args:n.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function Jb(e){let t=Ub(e),n=$b(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Fb(e){let t=cd(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=Vb(Ze(t.startTime),Ze(t.endTime));for(let a of n){if(!Qe(a))continue;let c=Te(a.name)||Te(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Qe(l)&&l.status==="failed"&&r.push({suite:c,name:Te(l.fullName)||Te(l.title)||Te(l.name),excerpt:qb(l.failureMessages)||Te(l.failureMessage)})}return s||=n.reduce((a,c)=>!Qe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Qe(c)?a+Ze(c.perfStats&&Qe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Gb(e){let t=e.split(`
146
- `).filter(Boolean).map(c=>cd(c)).filter(Qe);if(t.length===0)return null;let n=[],r=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,r+=Ze(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ze(c.failed),o+=Ze(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Te(c.name).split("::").slice(0,-1).join("::"),name:Te(c.name),excerpt:Te(c.stdout)});continue}if(c.reason==="compiler-message"&&Qe(c.message)){let u=Te(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
147
- `)}),i||=1,r||=1,s||=1),s||=n.length,i||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:i,durationSeconds:o,failures:n}}async function Hb(e,t,n){let r=Buffer.from(e);if(r.length<=uo)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let s=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),i=r.subarray(0,uo).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
148
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${ge(s)}`,handle:s,bytesElided:r.length}}function cd(e){try{return JSON.parse(e)}catch{return null}}function qb(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
149
- `):""}function Wb(e){return`${Number(e.toFixed(1))}s`}function Vb(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ze(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Te(e){return typeof e=="string"?e:""}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var uo,Ab,Ib,Nb,mo=E(()=>{"use strict";Q();St();gn();ut();uo=320,Ab=160,Ib=uo,Nb=3});var ho={};M(ho,{parseCatCommand:()=>go,renderCatContract:()=>t_,runCatWrapper:()=>e_});import{isUtf8 as zb}from"node:buffer";import{readFile as Kb}from"node:fs/promises";import{extname as Yb}from"node:path";async function e_(e,t){let n=go(e),r;try{r=await Kb(n.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=fe(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${n.file}`}),stderr:Buffer.from(`${i}
150
- `),status:1,signal:null}}return pd(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await md(e,n,r,t)}async function t_(e,t,n){if((t.status??0)!==0||t.signal){let o=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let r=go(e),s=Buffer.from(t.stdout,"utf8");return pd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await md(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function go(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){n=a.slice(2),r=fd(t[++o],po);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=fd(u,po);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function md(e,t,n,r){let s=n.toString("utf8"),i=s_(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let o=r.level!=="lossless"||n.length>dd(r.heavyByteThreshold,ud)||i.truncated;if(!ld(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ld(t.file)?n_(e,t.file,n,s,r.level,i):r_(e,t.file,n,s,i),c=`${D(a)}
151
- `;if(!o&&Buffer.byteLength(c)<=dd(r.heavyByteThreshold,ud))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${ge(u)}
152
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function n_(e,t,n,r,s,i){let o=is(r),a=s==="terse"?Zb:Qb,c=is(i.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:i_(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function r_(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:is(r).length,content:is(s.text),truncated:s.truncated}}function s_(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
153
- `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??po,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
154
- `)}${r&&o.length>0?`
155
- `:""}`,truncated:o.length<s.length}}function i_(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:n+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!o_(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function is(e){let t=e.split(`
156
- `);return t.at(-1)===""?t.slice(0,-1):t}function pd(e){return e.includes(0)||!zb(e)}function ld(e){return Xb.has(Yb(e).toLowerCase())}function o_(e){return["for","if","switch","while"].includes(e)}function dd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fd(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var ud,po,Qb,Zb,Xb,yo=E(()=>{"use strict";Q();St();ut();ud=8*1024,po=10,Qb=8,Zb=2,Xb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function yd(e,t={}){let n=a_(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let p of new Set(d.tokens))r.set(p,(r.get(p)??0)+1)}let i=n.map(d=>d.length),o=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=wo(i),u=wo(o),l=wo(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>m_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:bo(d.length,c)+bo(d.tokens.length,u)+bo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+d_(d.tokens,r,n.length)+f_(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function a_(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(gd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(gd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function gd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:c_(r),tokens:u_(r),numbers:l_(r),length:r.length}}function c_(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function u_(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function l_(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function d_(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(i=>Math.log2(n/Math.max(1,t.get(i)??n))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function f_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function wo(e){let t=hd(e),n=hd(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function bo(e,t){return Math.abs(e-t.median)/t.mad}function hd(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function m_(e,t,n,r){return e<r&&n<t}var wd=E(()=>{"use strict"});var Wn={};M(Wn,{parseExecCommandLine:()=>Ed,renderExecContract:()=>kd,runExecWrapper:()=>w_});import{isUtf8 as p_}from"node:buffer";import{spawn as g_}from"node:child_process";async function w_(e,t){let n=Ed(e),r=await b_(n);return await kd(n,r,t)}async function kd(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=fe(e,t.stdout,t.stderr);return{stdout:N(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=__(r),o=i.kind==="text"?Buffer.from(i.text):r,a=U_(n.heavyByteThreshold,h_);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=i.kind==="text"?S_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):k_(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Ed(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function b_(e){let t=g_(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function __(e){return p_(e)?{kind:"text",text:R_(e.toString("utf8"))}:{kind:"bytes"}}function R_(e){let t=e;for(let n of[Mr,jr,Ur,Jr])t=n.apply(t);return t}function S_(e,t,n,r,s,i=A_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?Sd:y_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=$_(e,c,l,i),d=E_(e),p=x_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=xd(s,d,t,j_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Cd(f.error)}:p.degradation;return{text:Dd(h),degradation:m}}function k_(e,t,n,r){let s=Math.max(1,Math.floor(Sd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Dd(xd(r,"bytes",t,0,n,i))}}function xd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function E_(e){let t=e.trim();return t?Td(t)?"json":Od(e)?"jsonl":I_(e)?"unified-diff":Pd(e)?"tabular":N_(e)?"log-like":B_(e)?"prose":"untyped":"untyped"}function x_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return v_(t,o);case"jsonl":return{summary:T_(t)};case"unified-diff":return{summary:O_(t)};case"tabular":return{summary:P_(t)};case"log-like":return{summary:D_(t,i)};case"prose":return{summary:C_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:vd(n,r,s,i)}}}function v_(e,t){let n=Td(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(Xe),item_keys:Ro(n)}}}catch(r){return{summary:_d(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Cd(r)}}}return{summary:_d(n)}}if(qn(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,i])=>[s,Xe(i)]))}}}return{summary:{root_type:typeof n,value:Xe(n)}}}function _d(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:Ro(e)}}function T_(e){let t=Od(e)??[],n=L_(t,"level");return{records:t.length,keys:Ro(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function O_(e){let t=new Map,n="",r=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(o);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,n&&t.get(n).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(r++,n&&t.get(n).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:r,deleted_lines:s}}function P_(e){let t=Pd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:vd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function D_(e,t){let n=Hn(e);return{entries:n.length,levels:M_(n),first:Et(n[0]??""),last:Et(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:Et(r.text)}))}}function C_(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:Et(t[0]??""),closing:Et(t.at(-1)??"")}}function vd(e,t,n,r){let s=Rd(e.subarray(0,t)),i=Rd(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Et(o.text)}))}}function $_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function A_(e,t){return yd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Td(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return qn(n)||Array.isArray(n)?n:null}catch{return null}}function Od(e){let t=Hn(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function I_(e){let t=Hn(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return r&&s&&i}function Pd(e){let t=Hn(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function N_(e){let t=Hn(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function B_(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function Hn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Ro(e){let t=new Map;for(let n of e)if(qn(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function L_(e,t){let n=new Map;for(let r of e){if(!qn(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();n.set(i,(n.get(i)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function M_(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function Xe(e){return typeof e=="string"?Et(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Xe):qn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Xe(n)])):String(e)}function Et(e){let t=e.replace(/\s+/g," ").trim();return t.length<=bd?t:`${t.slice(0,bd-1)}\u2026`}function Dd(e){let t=D(e).trimEnd(),n=j(t);if(!_o(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
157
- `}function _o(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)=>_o(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&_o(n[o],r[o]))}function qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cd(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Rd(e){return e.toString("utf8").replace(/�$/g,"")}function j_(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function U_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var h_,y_,Sd,bd,Vn=E(()=>{"use strict";Q();wd();St();Bn();ut();h_=8*1024,y_=2*1024,Sd=1024,bd=240});Ps();Ce();pn();import{spawn as To}from"node:child_process";import{createHash as J_}from"node:crypto";import{existsSync as vt,readFileSync as F_,readdirSync as G_,statSync as H_}from"node:fs";import{tmpdir as q_}from"node:os";import{dirname as W_,join as tt}from"node:path";import{fileURLToPath as as}from"node:url";function Ia(e){let t={app:e,version:km(Bt("__RED_BUILD_VERSION__",()=>"2.74.3")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"b9b49639d7935823de2d5943316e09ce6b9d5faa")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-18T19:22:05-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function km(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}gn();zs();ut();Ee();async function V_(e=process.argv.slice(2)){let t=Ia("rsp");if(vR(e))return process.stdout.write(TR(e)),0;let n=PR(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(In(),Br));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(In(),Br));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Bn(),xi));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),xi));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Au(),$u)),g=await m(process.cwd());return process.stdout.write(LR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(ju(),Mu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Fi(),Ji));return await m(n.positional)}if(n.command==="shell-init"){let m=n.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="zsh")return process.stdout.write(N({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(el(),Xu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),ac)),s=r(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(Fe(),ht)),g=m(process.cwd()),w=await nR(s,g,Eo(n.positional,1));return process.stdout.write(cR(w)),w.exitCode}let i=ER(n.command);if(!s.enabled)return i?await kR(n.positional):(process.stdout.write(`${$o()}
158
- `),0);if(n.command==="git"&&Oo(n.positional)){let m=process.hrtime.bigint();return await se(n,await Po(),m,void 0,await Z_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&Y_(s.measurementHoldoutShare))return await z_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>($l(),Cl)),g=o(process.cwd()),w=Oe(n.positional,"--socket")??g.socketPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));return y.enabled?(await m({socketPath:w,pidPath:Oe(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(n.positional,"--idle-ms")??y.idleMs,residentVersion:Oe(n.positional,"--resident-version")??t.version,registryPath:Oe(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${$o()}
159
- `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Oe(n.positional,"--socket")??m.socketPath,w=Oe(n.positional,"--wake-lock")??m.wakeLockPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(Fe(),ht));return await T({...m,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(n.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(es(),Xr));return await m(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(Fe(),ht)),w=n.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${G(w)}
160
- `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Hr(),Gu)),g=DR(n.positional);if(!g)return process.stdout.write(N({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let w=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
161
- `),w.status}if(!n.command){let m=await uR(s);return process.stdout.write(dR(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(as(s.storeUri)))return i?await tR(n,s,u.rootDir):(process.stdout.write(N({command:nt(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(m=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:m})),f=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(n.command==="stats"){let{stats:m,telemetry:g}=await Bo(s,Eo(n.positional,30));return process.stdout.write($R(m,g,CR(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!eR(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
162
- `),1;let g=await m.telemetryGains(Eo(n.positional,28));return process.stdout.write(AR(g)),0}if(n.command==="git"){if(et(f()),Oo(n.positional)){let T=process.hrtime.bigint();return await se(n,await Po(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Xi)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="gh"){et(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(co(),ao)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){et(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(mo(),fo)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="cat"){et(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(yo(),ho)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="exec"){et(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(Vn(),Wn)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="show"&&n.handle){let m=await p();h=()=>m.close();let g=await m.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await ko(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await ko(u.rootDir,n.handle,!1,y.length),1}let w=N({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(w),await ko(u.rootDir,n.handle,!1,w.length),1}return process.stdout.write(N({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(Lo(m))return process.stdout.write(m.render()),2;if(i)return await Co("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function z_(e,t,n){let r=process.hrtime.bigint(),s=await K_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return Q_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function K_(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(es(),Xr)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Vn(),Wn)).then(o=>o.parseExecCommandLine(e));n=To(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=To(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",i=>{r+=i.length,process.stdout.write(i)}),n.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{n.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
- `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(o,a)=>i({stdoutBytes:r,stderrBytes:s,status:o,signal:a}))})}function Y_(e){return e>0&&Math.random()<e}function Q_(e,t,n,r,s){let i=n.stdoutBytes+n.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:r};gt(e,{collection:"rsp_accounting_events_v1",...o}),gt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function Oe(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function J(e,t){let n=Oe(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Oo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Po(){if(X_(process.cwd()))return{stdout:So(),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:So(),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?So():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function So(){return Buffer.from(`${G({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
164
- `)}async function Z_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function X_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:G_(e).every(t=>t===".git")}catch{return!1}}function eR(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var xt=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Do=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function tR(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new Do,i=process.hrtime.bigint();try{if(e.command==="git"){if(Oo(e.positional))return await se(e,await Po(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Xi)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(co(),ao)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(mo(),fo)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(yo(),ho)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Vn(),Wn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s)}}catch(o){return Lo(o)?(process.stdout.write(o.render()),2):await Co("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Co("wrapper failed",e.positional,r,n)}async function Bo(e,t){let n={stats:BR(e.telemetryByteBudget),telemetry:No(t)};if(!e.storeUri.startsWith("file://"))return n;let r=as(e.storeUri);if(!vt(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(ze(),Gt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:No(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(ze(),Gt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(Ee(),Pn)),a=await Ct(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function nR(e,t,n){let r=[],s=!e.enabled;if(r.push(s?V("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):V("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(V("hook_wiring","skipped because rsp is disabled"),V("proxy_mode","skipped because rsp is disabled"),V("resident_liveness","skipped because rsp is disabled"),V("store_provisioning","skipped because rsp is disabled"),V("recent_degradation_rate","skipped because rsp is disabled")),$d("disabled",r,n);r.push(await rR(e)),r.push(e.proxyEnabled?V("proxy_mode","proxy routing enabled for pre-exec rewrites"):Xt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Fe(),ht));if(r.push(sR(await i(t))),r.push(iR(e)),Id(e)){let{telemetry:o}=await Bo(e,n);r.push(oR(o,n))}else r.push(V("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return $d(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function rR(e){try{if(e.proxyEnabled)return V("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(In(),Br)),n=t("git status");return n.kind==="rewrite"?V("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):Xt("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Xt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?os(t.message):"unknown error"}`,"rsp setup")}}function sR(e){return e.state==="registered-alive-socket-healthy"?V("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function iR(e){return e.storeUri.startsWith("file://")?Id(e)?V("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):V("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function oR(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return V("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",i=n?.count??r;return Xt("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,aR(s,t))}function aR(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Id(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(as(e.storeUri))}catch{return!1}}function V(e,t){return{name:e,pass:!0,finding:t}}function Xt(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:Ks({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function $d(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}function cR(e){let{exitCode:t,...n}=e;return`${G({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
165
- `}async function uR(e){let{stats:t,telemetry:n}=await Bo(e,30),[r,s]=await Promise.all([lR(e),Promise.resolve().then(()=>(Fi(),Ji)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function lR(e){if(!e.storeUri.startsWith("file://"))return[];let t=as(e.storeUri);if(!vt(t))return[];let{RspElisionStore:n}=await Promise.resolve().then(()=>(ze(),Gt)),r=await n.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await r.recoveryHandles(5)}finally{await r.close()}}function dR(e){let t=Bd(e.stats,e.telemetry,!1),n=qs({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??Mo()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},fR(e));return`${G(n)}
166
- `}function fR(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}async function se(e,t,n,r,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(et(yR(s,e,t,o,r.lastResponseMetrics())),i&&mR(s,i)):wR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function mR(e,t){try{let n=Ue(e),r=H_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!hR(n,Date.now()-s))return;let i=pR(e),o=gR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(F(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");To(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function pR(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=W_(t);if(n===t)return e;t=n}}function gR(e){let t=J_("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=tt(n,"red-skills",t);if(tt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return tt(q_(),`red-skills-${r}`,t)}function hR(e,t){try{let n=F_(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function yR(e,t,n,r,s){let i=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(Ee(),Pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:nt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),n.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:nt(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function wR(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:nt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r,accounting_recorded:!0})}catch{}}async function Co(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
167
- `);let s=await Nd(t);if(r){let i=bR(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ee(),Pn));et(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Ao(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),et(o(r,{collection:c,ts:new Date().toISOString(),command:Ao(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function bR(e,t,n){let r=t[0]??"unknown",s=_R(n)||e;return{reason:Ad(n)==="ENOENT"||Ad(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:SR(n)??1,stderrHead:RR(s,240)}}function _R(e){return e instanceof Error?os(e.message):os(String(e??""))}function os(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function RR(e,t){let n=os(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Ad(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function SR(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function et(e){e.catch(()=>{})}async function ko(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(Ee(),Pn));await s(e,{collection:i,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:n,loss:"lossless",raw_bytes:n?r:0,emitted_bytes:r})}async function kR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${$o()}, passing through
168
- `),await Nd(e)}function $o(){return"rsp is not enabled in this directory; run /red-setup"}function ER(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function Nd(e){if(e[0]==="exec"||e[0]==="proxy")return await xR(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(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
169
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function xR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(es(),Xr));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Vn(),Wn));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
170
- `),2}let{spawn:n}=await import("node:child_process"),r=n(t,{shell:!0,stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
171
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function nt(e){return Ao(e.positional)}function Ao(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function vR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function TR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${OR(t).join(`
156
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function _s(){for(let e of ZR())try{process.kill(e,"SIGTERM")}catch{}}function ZR(){if(process.platform==="win32")return[];let e="";try{e=DR("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let r of e.split(/\n/)){let n=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(r);if(!n)continue;let s=Number(n[1]),i=Number(n[2]),o=n[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function XR(e){if(e.collection!==ce)return e;let t=await cf(e.raw_text,lf(e.raw_bytes)),r=await cf(e.emitted_text,lf(e.emitted_bytes)),{raw_text:n,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function cf(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=jR)try{return await hf((async()=>({tokens:(await eS())("cl100k_base").encode(e).length,estimated:!1}))(),UR,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(r/4),estimated:!0}}return{tokens:Math.ceil(r/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function eS(){return uf??=import(BR(tS()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await uf}function tS(){let e=sa(LR(import.meta.url)),r=[bs(e,"..","node_modules","js-tiktoken","dist","index.js"),bs(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>AR(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function lf(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function H(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function ra(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function hf(e,t,r){let n;try{return await Promise.race([e,new Promise((s,i)=>{n=setTimeout(()=>i(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function rS(e){try{return JSON.parse(e)}catch{return e}}function nS(e){return df(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>df(t)&&(t.collection===te||t.collection===G||t.collection===ce||t.collection===Ce)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function df(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sS(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
157
+ `);if(s<0)return;let i=r.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??sr(),ok:!1,error:a instanceof Error?a.message:String(a)};yf(e,u)}finally{e.end()}})()})}function yf(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
158
+ `)}catch{}}async function iS(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await Ji(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await Bn(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await Gi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return aS(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await oS(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function oS(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Xd(s,t).request(r,n)}function aS(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var jR,UR,mf,FR,JR,GR,na,af,uf,bf=_(()=>{"use strict";Be();wn();Me();et();sf();_e();Pe();jR=256*1024,UR=500,mf=2e3,FR=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),JR="rsp-status-summary.json",GR=[te,G,ce,Ce,Cr],na=class{constructor(t,r){this.store=t;this.opts=r;this.pendingHeals=[...r.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let r=await qR(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,i=[...n.records];for(let a of r)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await Fi(this.opts.rootDir,async a=>{let c=Kt(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:H(c.command)||"unknown",source_id:H(c.id),source_collection:H(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await HR(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof r.id=="string"&&r.id.trim()!==""?r.id:sr(),a={...await XR(r),id:o,created_at:s,expires_at:i};return await t.kv(r.collection).put(o,a),{collection:r.collection,key:o,created_at:s,expires_at:i,bytes:r.collection===te?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===te||r.accounting_recorded===!0?null:r.collection===ce?await this.writeEvent(t,{collection:te,id:`mirror:${H(r.id)||sr()}`,created_at:H(r.created_at)||H(r.ts)||new Date().toISOString(),event_type:"invocation",command:H(r.command)||"unknown",command_class:ra(H(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===Ce?await this.writeEvent(t,{collection:te,id:`mirror:${H(r.id)||sr()}`,created_at:H(r.created_at)||H(r.ts)||new Date().toISOString(),event_type:"invocation",command:H(r.command)||"unknown",command_class:ra(H(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:H(r.reason)||"unknown",wrapper_family:H(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:H(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Ce,id:sr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:te,id:`mirror:${sr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:ra(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(Cr).get("index:v1"),n=typeof r=="string"?rS(r):r;return nS(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(Cr).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),i=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||i.length<r.records.length)&&await this.writeIndex(t,{version:1,records:i})}};af=!1});ve();function ge(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=ge(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function Pa(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function Ca(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new js(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var js=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return sn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function $t(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function Da(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let i=e[++n]??"",o=i.indexOf("=");o<=0||(r[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:r}}function on(e,t){let r=ge(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!r)return t;let n=/^(\d+)(d)?$/.exec(r);if(!n)return t;let s=Number(n[1]);return Number.isFinite(s)&&s>0?s:t}function Ia(e){return e.includes("--full")}Me();import{existsSync as cS}from"node:fs";import{fileURLToPath as uS}from"node:url";function Ma(e){let t={app:e,version:up(Bt("__RED_BUILD_VERSION__",()=>"2.74.4")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"0d89149390402d75c73523f1168c7f829b273ab0")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-18T23:03:35-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function up(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}ve();Me();pr();import{existsSync as Xh}from"node:fs";import{fileURLToPath as ey}from"node:url";oi();Me();ui();import{existsSync as Xg}from"node:fs";import{fileURLToPath as eh}from"node:url";async function Xt(e,t){let r={stats:th(e.telemetryByteBudget),telemetry:Wi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=eh(e.storeUri);if(!Xg(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(et(),Wt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Wi(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(et(),Wt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(_e(),Ar)),a=await Ut(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}function Vi(e,t=Wi(30),r=!1){return`${j(zi(e,t,r))}
159
+ `}function zi(e,t,r){let n=t.savings.top_commands.slice(0,r?10:3),s=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Mn(),o=t.health.recent_failures.slice(0,r?20:5),a=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:rh(t.savings),dollars_saved_estimate_usd_display:nh(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:n,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-n.length)},health:{...t.health,degradation_rate_display:qi(t.health.degradation_rate),show_hit_rate_display:qi(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-o.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:qi(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:Hi(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Hi(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Hi(t.latency.store_elapsed_ms_avg)}}}function gu(e){return`${j(e)}
160
+ `}function Wi(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],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},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function th(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Mn()}}function Mn(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Ki(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
161
+ `)}function rh(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function nh(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?_r(e.dollars_saved_estimate_usd):`${_r(e.dollars_saved_low_usd)}-${_r(e.dollars_saved_high_usd)} (estimate_midpoint: ${_r(e.dollars_saved_estimate_usd)})`}function Hi(e){return e==null?"none":String(e)}function qi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Ou(e){let{stats:t,telemetry:r}=await Xt(e,30),[n,s]=await Promise.all([ty(e),Promise.resolve().then(()=>(ao(),oo)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function Pu(e){let t=zi(e.stats,e.telemetry,!1),r=Fs({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??Mn()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},ry(e));return`${j(r)}
162
+ `}async function ty(e){if(!e.storeUri.startsWith("file://"))return[];let t=ey(e.storeUri);if(!Xh(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(et(),Wt)),n=await r.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await n.recoveryHandles(5)}finally{await n.close()}}function ry(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}Me();ve();import{existsSync as yb}from"node:fs";import{fileURLToPath as wb}from"node:url";_e();import{spawn as Xn}from"node:child_process";async function bl(e,t,r){let n=process.hrtime.bigint(),s=await Bw(e.positional),i=Number(process.hrtime.bigint()-n)/1e6;return Mw(t,e,s,i,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Bw(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(Hn(),Gn)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Gr(),Jr)).then(o=>o.parseExecCommandLine(e));r=Xn(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Xn(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",i=>{n+=i.length,process.stdout.write(i)}),r.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{r.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(o,a)=>i({stdoutBytes:n,stderrBytes:s,status:o,signal:a}))})}function _l(e){return e>0&&Math.random()<e}async function qr(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
164
+ `);let s=await xl(t);if(n){let i=jw(e,t,r),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(_e(),Ar));wl(o(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:_o(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),wl(o(n,{collection:c,ts:new Date().toISOString(),command:_o(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}async function Rl(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${es()}, passing through
165
+ `),await xl(e)}function es(){return"rsp is not enabled in this directory; run /red-setup"}function Sl(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function De(e){return _o(e.positional)}function _o(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function Hr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Mw(e,t,r,n,s){let i=r.stdoutBytes+r.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:n};rt(e,{collection:"rsp_accounting_events_v1",...o}),rt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function jw(e,t,r){let n=t[0]??"unknown",s=Uw(r)||e;return{reason:yl(r)==="ENOENT"||yl(r)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:n,exitCode:Jw(r)??1,stderrHead:Fw(s,240)}}function Uw(e){return e instanceof Error?Hr(e.message):Hr(String(e??""))}function Fw(e,t){let r=Hr(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function yl(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function Jw(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r}return null}function wl(e){e.catch(()=>{})}async function xl(e){if(e[0]==="exec"||e[0]==="proxy")return await Gw(e);let t=e[0];if(!t)return 2;let r=Xn(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
166
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function Gw(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Hn(),Gn));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(Gr(),Jr));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
167
+ `),2}let r=Xn(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
168
+ `),n(127)}),r.on("close",(s,i)=>{if(i){process.kill(process.pid,i),n(128);return}n(s??0)})})}async function ql(e,t,r){let n=[],s=!e.enabled;if(n.push(s?K("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):K("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(K("hook_wiring","skipped because rsp is disabled"),K("proxy_mode","skipped because rsp is disabled"),K("resident_liveness","skipped because rsp is disabled"),K("store_provisioning","skipped because rsp is disabled"),K("recent_degradation_rate","skipped because rsp is disabled")),Hl("disabled",n,r);n.push(await bb(e)),n.push(e.proxyEnabled?K("proxy_mode","proxy routing enabled for pre-exec rewrites"):rr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Ve(),kt));if(n.push(_b(await i(t))),n.push(Rb(e)),Vl(e)){let{telemetry:o}=await Xt(e,r);n.push(Sb(o,r))}else n.push(K("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Hl(n.some(o=>!o.pass)?"fail":"pass",n,r)}function Wl(e){let{exitCode:t,...r}=e;return`${j({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
169
+ `}async function bb(e){try{if(e.proxyEnabled)return K("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Yr(),cs)),r=t("git status");return r.kind==="rewrite"?K("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):rr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return rr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Hr(t.message):"unknown error"}`,"rsp setup")}}function _b(e){return e.state==="registered-alive-socket-healthy"?K("resident_liveness","resident registry points at a healthy socket"):rr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function Rb(e){return e.storeUri.startsWith("file://")?Vl(e)?K("store_provisioning","rsp store exists for this directory"):rr("store_provisioning","rsp store is not provisioned","rsp setup"):K("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Sb(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return K("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let n=e.health.degradations,s=r?.reason??e.health.most_recent?.reason??"unknown",i=r?.count??n;return rr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,xb(s,t))}function xb(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Vl(e){if(!e.storeUri.startsWith("file://"))return!0;try{return yb(wb(e.storeUri))}catch{return!1}}function K(e,t){return{name:e,pass:!0,finding:t}}function rr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Ms({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Hl(e,t,r){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:r,probes:t,errors:t.map(n=>n.error).filter(n=>!!n)}}vo();function Ql(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${Tb(t).join(`
172
170
  `)}
173
- `}function OR(e){switch(e){case"stats":return B("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return B("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return B("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return B("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return B("rsp gh <pr|issue|run> <list|view> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return B("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return B("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return B("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return B('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return B("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return B("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return B("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return B("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}function PR(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];if(s==="--store-uri")t.storeUri=e[++r];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++r];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(n.length===0&&s.startsWith("--"))throw new Io(s);n.push(s)}}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}var Io=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return nr("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Lo(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function DR(e){let t=e[1];if(!t)return null;let n={};for(let r=2;r<e.length;r++){let s=e[r];if(s!=="-f"&&s!=="-F")continue;let i=e[++r]??"",o=i.indexOf("=");o<=0||(n[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:n}}function Eo(e,t){let n=Oe(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let s=Number(r[1]);return Number.isFinite(s)&&s>0?s:t}function CR(e){return e.includes("--full")}function $R(e,t=No(30),n=!1){return`${G(Bd(e,t,n))}
174
- `}function Bd(e,t,n){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Mo(),o=t.health.recent_failures.slice(0,n?20:5),a=t.decisions.top_pass_reasons.slice(0,n?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:IR(t.savings),dollars_saved_estimate_usd_display:NR(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:r,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-r.length)},health:{...t.health,degradation_rate_display:vo(t.health.degradation_rate),show_hit_rate_display:vo(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-o.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:vo(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:xo(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:xo(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:xo(t.latency.store_elapsed_ms_avg)}}}function AR(e){return`${G(e)}
175
- `}function IR(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function NR(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?hn(e.dollars_saved_estimate_usd):`${hn(e.dollars_saved_low_usd)}-${hn(e.dollars_saved_high_usd)} (estimate_midpoint: ${hn(e.dollars_saved_estimate_usd)})`}function xo(e){return e==null?"none":String(e)}function vo(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function No(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],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},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function BR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Mo()}}function Mo(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function LR(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
176
- `)}import.meta.url===`file://${process.argv[1]}`&&V_().then(e=>process.exit(e),e=>{Lo(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{V_ as main,LR as renderSetupResult,$R as renderStats};
171
+ `}function Tb(e){switch(e){case"stats":return L("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return L("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return L("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return L("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return L("rsp gh <pr|issue|run> <list|view> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return L("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return L("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return L("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return L('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return L("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return L("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return L("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return L("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return L("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return L("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return L("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return L("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return L("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return L("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return L("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return L(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function L(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}Be();_e();import{spawn as vb}from"node:child_process";import{createHash as Ob}from"node:crypto";import{existsSync as Pb,readFileSync as Cb,statSync as Db}from"node:fs";import{tmpdir as Ib}from"node:os";import{dirname as Ab,join as it}from"node:path";async function Y(e,t,r,n,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-r)/1e6;return n?(Et(Mb(s,e,t,o,n.lastResponseMetrics())),i&&Nb(s,i)):jb(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Et(e){e.catch(()=>{})}async function ds(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(_e(),Ar));await s(e,{collection:i,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function Nb(e,t){try{let r=qe(e),n=Db(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!Bb(r,Date.now()-s))return;let i=$b(e),o=Lb(i),a=it(o,"rsp.sock"),c=it(o,"rsp.pid"),u=it(q(i),"rsp-resident.pid.json"),l=it(i,".red","tmp","rsp.wake.lock");vb(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function $b(e){let t=e;for(;;){if(Pb(it(t,".git")))return t;let r=Ab(t);if(r===t)return e;t=r}}function Lb(e){let t=Ob("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=it(r,"red-skills",t);if(it(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return it(Ib(),`red-skills-${n}`,t)}function Bb(e,t){try{let r=Cb(e,"utf8");for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function Mb(e,t,r,n,s){let i=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(_e(),Ar));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:De(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:De(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function jb(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);rt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:De(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n}),rt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:De(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},qo=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function xd(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new qo,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(vo(),Yl));if(o(e.positional))return await Y(e,await a(),i,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(St(),po)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await Y(e,u,i,s,r,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Lo(),$o)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Uo(),jo)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,r,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Ho(),Go)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s,r,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Gr(),Jr)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s)}}catch(o){return $t(o)?(process.stdout.write(o.render()),2):await qr("wrapper failed",e.positional,o,r)}finally{await s.close()}return await qr("wrapper failed",e.positional,n,r)}async function _f(e=process.argv.slice(2)){let t=Ma("rsp");if(Pa(e))return process.stdout.write(Ql(e)),0;let r=Ca(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(Yr(),cs));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(Yr(),cs));return await p()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(jr(),yo));return await p()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(jr(),yo));return await p()}if(r.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Dd(),Cd)),g=await p(process.cwd());return process.stdout.write(Ki(g)),0}if(r.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Bd(),Ld));return await p(),0}if(r.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(ao(),oo));return await p(r.positional)}if(r.command==="shell-init"){let p=r.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(N({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(Ud(),jd));return process.stdout.write(g(p)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Pe(),Dc)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:p}=await Promise.resolve().then(()=>(Ve(),kt)),g=p(process.cwd()),w=await ql(s,g,on(r.positional,1));return process.stdout.write(Wl(w)),w.exitCode}let i=Sl(r.command);if(!s.enabled)return i?await Rl(r.positional):(process.stdout.write(`${es()}
172
+ `),0);if(r.command==="git"&&us(r.positional)){let p=process.hrtime.bigint();return await Y(r,await ls(),p,void 0,await To(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ve(),kt)),u=o(process.cwd());if(i&&_l(s.measurementHoldoutShare))return await bl(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(bf(),wf)),g=o(process.cwd()),w=ge(r.positional,"--socket")??g.socketPath,y=n(process.cwd(),process.env,r.storeUri??ge(r.positional,"--store-uri"));return y.enabled?(await p({socketPath:w,pidPath:ge(r.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:U(r.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??y.idleMs,residentVersion:ge(r.positional,"--resident-version")??t.version,registryPath:ge(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${es()}
173
+ `),0)}if(r.command==="warm-resident"){let p=o(process.cwd()),g=ge(r.positional,"--socket")??p.socketPath,w=ge(r.positional,"--wake-lock")??p.wakeLockPath,y=n(process.cwd(),process.env,r.storeUri??ge(r.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Ve(),kt));return await v({...p,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:U(r.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:p}=await Promise.resolve().then(()=>(Hn(),Gn));return await p(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(Ve(),kt)),w=r.command==="sweep"?await g(u):await p(u);return process.stdout.write(`${j(w)}
174
+ `),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:p}=await Promise.resolve().then(()=>(jn(),bu)),g=Da(r.positional);if(!g)return process.stdout.write(N({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let w=await p({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
175
+ `),w.status}if(!r.command){let p=await Ou(s);return process.stdout.write(Pu(p)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!cS(uS(s.storeUri)))return i?await xd(r,s,u.rootDir):(process.stdout.write(N({command:De(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(p=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:p})),f=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(et(),Wt));return await p.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},m=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:p,telemetry:g}=await Xt(s,on(r.positional,30));return process.stdout.write(Vi(p,g,Ia(r.positional))),0}if(r.command==="gains"){let p=await m();if(h=()=>p.close(),!lS(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
176
+ `),1;let g=await p.telemetryGains(on(r.positional,28));return process.stdout.write(gu(g)),0}if(r.command==="git"){if(Et(f()),us(r.positional)){let v=process.hrtime.bigint();return await Y(r,await ls(),v,void 0,u.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(St(),po)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="gh"){Et(f());let{runGhWrapper:p}=await Promise.resolve().then(()=>(Lo(),$o)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g});return await Y(r,y,w,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Et(f());let{runTestWrapper:p}=await Promise.resolve().then(()=>(Uo(),jo)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g});return await Y(r,y,w,g,u.rootDir)}if(r.command==="cat"){Et(f());let{runCatWrapper:p}=await Promise.resolve().then(()=>(Ho(),Go)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="exec"){Et(f());let{runExecWrapper:p}=await Promise.resolve().then(()=>(Gr(),Jr)),g=new ct(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await p(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(r,y,w,g,u.rootDir)}if(r.command==="show"&&r.handle){let p=await m();h=()=>p.close();let g=await p.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await ds(u.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await ds(u.rootDir,r.handle,!1,y.length),1}let w=N({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(w),await ds(u.rootDir,r.handle,!1,w.length),1}return process.stdout.write(N({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(p){if($t(p))return process.stdout.write(p.render()),2;if(i)return await qr("wrapper failed",r.positional,p,u.rootDir);throw p}finally{await h?.()}}function lS(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}ve();import.meta.url===`file://${process.argv[1]}`&&_f().then(e=>process.exit(e),e=>{$t(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{_f as main,Ki as renderSetupResult,Vi as renderStats};